# Copyright (c) Open Enclave SDK contributors. # Licensed under the MIT License. cmake_minimum_required(VERSION 3.11) if (LVI_MITIGATION MATCHES ControlFlow) # Configure the cmake to use customized compilation toolchain. # This package has to be added before `project()`. find_package(OpenEnclave-LVI-Mitigation CONFIG REQUIRED) else () # Setting the cmake compiler when LVI mitigation is not enabled. If the CC # environment variable has been specified or the if CMAKE_C_COMPILER cmake # variable has been passed to cmake, use the C compiler that has been specified. # Otherwise, prefer clang. Same for C++ compiler. This must be done before # the `project` command. if (UNIX) if (NOT DEFINED ENV{CC} AND NOT DEFINED CMAKE_C_COMPILER) find_program(CMAKE_C_COMPILER clang-10 clang) endif () if (NOT DEFINED ENV{CXX} AND NOT DEFINED CMAKE_CXX_COMPILER) find_program(CMAKE_CXX_COMPILER clang++-10 clang++) endif () endif () endif () project("Libdogecoin Sample" LANGUAGES C CXX) # Currently the `OpenEnclave` package depends on `project()`. find_package(OpenEnclave CONFIG REQUIRED) set(CMAKE_CXX_STANDARD 11) set(OE_CRYPTO_LIB mbedtls CACHE STRING "Crypto library used by enclaves.") add_subdirectory(enclave) add_subdirectory(host) if (NOT DEFINED ENV{GITHUB_ACTIONS}) # Generate key add_custom_command( OUTPUT private.pem public.pem COMMAND openssl genrsa -out private.pem -3 3072 COMMAND openssl rsa -in private.pem -pubout -out public.pem) endif () # Sign enclave add_custom_command( OUTPUT enclave/enclave.signed DEPENDS enclave enclave/libdogecoin.conf private.pem COMMAND openenclave::oesign sign -e $ -c ${CMAKE_SOURCE_DIR}/enclave/libdogecoin.conf -k private.pem COMMENT "Signing enclave" ) add_custom_target(sign ALL DEPENDS enclave/enclave.signed) if ((NOT DEFINED ENV{OE_SIMULATION}) OR (NOT $ENV{OE_SIMULATION})) add_custom_target( run DEPENDS host sign COMMAND host ${CMAKE_BINARY_DIR}/enclave/enclave.signed ) endif() add_custom_target( simulate DEPENDS host sign COMMAND host ${CMAKE_BINARY_DIR}/enclave/enclave.signed --simulate )