blob: b4702ae129a955687bdf3df7353d191cb9aa1076 [file] [log] [blame]
set(MESATEE_PROJECT_ROOT ${PROJECT_SOURCE_DIR})
set(MESATEE_BUILD_ROOT ${PROJECT_BINARY_DIR})
set(MESATEE_OUT_DIR ${PROJECT_BINARY_DIR}/intermediate)
set(MESATEE_INSTALL_DIR ${PROJECT_SOURCE_DIR}/release)
set(MESATEE_SERVICE_INSTALL_DIR ${MESATEE_INSTALL_DIR}/services)
set(MESATEE_EXAMPLE_INSTALL_DIR ${MESATEE_INSTALL_DIR}/examples)
set(MESATEE_BIN_INSTALL_DIR ${MESATEE_INSTALL_DIR}/bin)
set(MESATEE_LIB_INSTALL_DIR ${MESATEE_INSTALL_DIR}/lib)
set(MESATEE_DOC_INSTALL_DIR ${MESATEE_INSTALL_DIR}/docs)
set(MESATEE_TEST_INSTALL_DIR ${MESATEE_INSTALL_DIR}/tests)
set(MESATEE_AUDITORS_DIR ${MESATEE_SERVICE_INSTALL_DIR}/auditors)
set(MESATEE_EXAMPLE_AUDITORS_DIR ${MESATEE_EXAMPLE_INSTALL_DIR}/auditors)
set(MESATEE_TARGET_DIR ${PROJECT_BINARY_DIR}/target)
set(THIRD_PARTY_DIR ${PROJECT_SOURCE_DIR}/third_party)
set(UNTRUSTED_TARGET_DIR ${MESATEE_TARGET_DIR}/untrusted)
set(UNIX_TARGET_DIR ${MESATEE_TARGET_DIR}/unix)
set(TRUSTED_TARGET_DIR ${MESATEE_TARGET_DIR}/trusted)
# build.rs will read ENV{ENCLAVE_OUT_DIR} for linking
set(ENCLAVE_OUT_DIR ${MESATEE_OUT_DIR})
set(RUST_SGX_SDK ${PROJECT_SOURCE_DIR}/third_party/rust-sgx-sdk)
set(MT_SCRIPT_DIR ${PROJECT_SOURCE_DIR}/cmake/scripts)
set(MT_UNIX_TOML_DIR ${PROJECT_BINARY_DIR}/cmake_tomls/unix_app)
set(MT_SGXLIB_TOML_DIR ${PROJECT_BINARY_DIR}/cmake_tomls/sgx_trusted_lib)
set(MT_SGXAPP_TOML_DIR ${PROJECT_BINARY_DIR}/cmake_tomls/sgx_untrusted_app)
set(MT_EDL_FILE ${PROJECT_SOURCE_DIR}/teaclave_binder/Enclave.edl)
set(SGX_EDGER8R ${SGX_SDK}/bin/x64/sgx_edger8r)
set(SGX_ENCLAVE_SIGNER ${SGX_SDK}/bin/x64/sgx_sign)
set(SGX_LIBRARY_PATH ${SGX_SDK}/lib64)
set(SGX_COMMON_CFLAGS -m64 -O2)
set(SGX_UNTRUSTED_CFLAGS ${SGX_COMMON_CFLAGS} -fPIC -Wno-attributes
-I${SGX_SDK}/include -I${RUST_SGX_SDK}/edl)
set(SGX_TRUSTED_CFLAGS ${SGX_COMMON_CFLAGS} -nostdinc -fvisibility=hidden
-fpie -fstack-protector
-I${RUST_SGX_SDK}/edl -I${RUST_SGX_SDK}/common/inc
-I${SGX_SDK}/include -I${SGX_SDK}/include/tlibc
-I${SGX_SDK}/include/stlport -I${SGX_SDK}/include/epid)
join_string("${SGX_COMMON_CFLAGS}" " " STR_SGX_COMMON_CFLAGS)
join_string("${SGX_UNTRUSTED_CFLAGS}" " " STR_SGX_UNTRUSTED_CFLAGS)
join_string("${SGX_TRUSTED_CFLAGS}" " " STR_SGX_TRUSTED_CFLAGS)
if (NOT "${SGX_MODE}" STREQUAL "HW")
set(Trts_Library_Name sgx_trts_sim)
set(Service_Library_Name sgx_tservice_sim)
else()
set(Trts_Library_Name sgx_trts)
set(Service_Library_Name sgx_tservice)
endif()
set(SGX_ENCLAVE_FEATURES -Z package-features --features mesalock_sgx)
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
if (CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
set(TARGET debug)
set(CARGO_BUILD_FLAGS "")
if (COV)
check_exe_dependencies(lcov llvm-cov)
set(SGX_ENCLAVE_FEATURES -Z package-features --features "mesalock_sgx cov")
set(CARGO_INCREMENTAL 0)
set(RUSTFLAGS "${RUSTFLAGS} -D warnings -Zprofile -Ccodegen-units=1 \
-Cllvm_args=-inline-threshold=0 -Coverflow-checks=off -Zno-landing-pads")
endif()
else()
set(TARGET release)
set(CARGO_BUILD_FLAGS --release)
endif()
if (OFFLINE)
set(EXTRA_CARGO_FLAGS "--offline")
endif()
execute_process (
COMMAND bash -c "cat ${PROJECT_SOURCE_DIR}/third_party/rust-sgx-sdk/rust-toolchain"
OUTPUT_VARIABLE RUSTUP_TOOLCHAIN
)
string(STRIP ${RUSTUP_TOOLCHAIN} RUSTUP_TOOLCHAIN)
set(RUSTUP_TOOLCHAIN ${RUSTUP_TOOLCHAIN})
set(UNIXAPP_PREFIX "unixapp")
set(UNIXLIB_PREFIX "unixlib")
set(SGXAPP_PREFIX "sgxapp")
set(SGXLIB_PREFIX "sgxlib")
set(SGX_MODULES ${SGX_APPS})
# generate SGXLIB_TARGETS (sgxlib-fns sgxlib-kms ...)
new_list_with_prefix(SGXLIB_TARGETS "${SGXLIB_PREFIX}-" ${SGX_MODULES})
set(MESATEE_COMMON_ENVS
MESATEE_PROJECT_ROOT=${MESATEE_PROJECT_ROOT}
MESATEE_BUILD_ROOT=${MESATEE_BUILD_ROOT}
MESATEE_OUT_DIR=${MESATEE_OUT_DIR}
MESATEE_SERVICE_INSTALL_DIR=${MESATEE_SERVICE_INSTALL_DIR}
MESATEE_EXAMPLE_INSTALL_DIR=${MESATEE_EXAMPLE_INSTALL_DIR}
MESATEE_BIN_INSTALL_DIR=${MESATEE_BIN_INSTALL_DIR}
MESATEE_LIB_INSTALL_DIR=${MESATEE_LIB_INSTALL_DIR}
MESATEE_DOC_INSTALL_DIR=${MESATEE_DOC_INSTALL_DIR}
MESATEE_TEST_INSTALL_DIR=${MESATEE_TEST_INSTALL_DIR}
MESATEE_AUDITORS_DIR=${MESATEE_AUDITORS_DIR}
MESATEE_EXAMPLE_AUDITORS_DIR=${MESATEE_EXAMPLE_AUDITORS_DIR}
MESATEE_TARGET_DIR=${MESATEE_TARGET_DIR}
MESATEE_CFG_DIR=${PROJECT_SOURCE_DIR}
MESATEE_BUILD_CFG_DIR=${PROJECT_SOURCE_DIR}
SGX_SDK=${SGX_SDK}
SGX_MODE=${SGX_MODE}
ENCLAVE_OUT_DIR=${ENCLAVE_OUT_DIR}
RUSTUP_TOOLCHAIN=${RUSTUP_TOOLCHAIN}
RUST_SGX_SDK=${RUST_SGX_SDK}
MT_SCRIPT_DIR=${MT_SCRIPT_DIR}
CARGO_INCREMENTAL=${CARGO_INCREMENTAL}
CMAKE_C_COMPILER=${CMAKE_C_COMPILER}
CC=${MT_SCRIPT_DIR}/cc_wrapper.sh
MT_RUSTC_WRAPPER=${MT_SCRIPT_DIR}/rustc_wrapper.sh
)
set(TARGET_PREP_ENVS
${MESATEE_COMMON_ENVS}
CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}
CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
MESAPY_VERSION=${MESAPY_VERSION}
SGX_EDGER8R=${SGX_EDGER8R}
MT_EDL_FILE=${MT_EDL_FILE}
CMAKE_AR=${CMAKE_AR}
)
set(TARGET_SGXLIB_ENVS
${MESATEE_COMMON_ENVS}
SGX_LIBRARY_PATH=${SGX_LIBRARY_PATH}
SGX_ENCLAVE_SIGNER=${SGX_ENCLAVE_SIGNER}
Service_Library_Name=${Service_Library_Name}
Trts_Library_Name=${Trts_Library_Name}
TRUSTED_TARGET_DIR=${TRUSTED_TARGET_DIR}
TARGET=${TARGET}
)
message("SGX_SDK=${SGX_SDK}")
message("SGX_MODE=${SGX_MODE}")
message("RUSTUP_TOOLCHAIN=${RUSTUP_TOOLCHAIN}")
message("BUILD TYPE=${TARGET}")