diff --git a/Pal/src/host/Linux-SGX/CMakeLists.txt b/Pal/src/host/Linux-SGX/CMakeLists.txt index aa03df4a..cf24cf04 100644 --- a/Pal/src/host/Linux-SGX/CMakeLists.txt +++ b/Pal/src/host/Linux-SGX/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.8) -project(graphene_pal_linux C ASM) +project(graphene_pal_linux_sgx C ASM) string(CONCAT CMAKE_C_FLAGS "-Wall -Wextra -O2 -std=c11 -maes -U_FORTIFY_SOURCE -fno-stack-protector " @@ -12,8 +12,8 @@ string(CONCAT CMAKE_ASM_FLAGS string(CONCAT CMAKE_SHARED_LINKER_FLAGS "-Wl,-nostdlib -Wl,-z,combreloc -Wl,-z,defs -Wl,-z,relro -Wl,-z,now " "-Wl,--hash-style=gnu " - "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/pal.map " - "-Wl,-T,${CMAKE_CURRENT_SOURCE_DIR}/enclave.lds") + "-Wl,--version-script,${PROJECT_BINARY_DIR}/pal.map " + "-Wl,-T,${PROJECT_SOURCE_DIR}/enclave.lds") string(CONCAT CMAKE_EXE_LINKER_FLAGS "-Wl,-z,relro -Wl,-z,now") @@ -22,7 +22,7 @@ include_directories(include) include_directories(quote) include_directories(sgx-driver) include_directories(.) -include_directories(${CMAKE_CURRENT_BINARY_DIR}) # Required for asm-offsets.h +include_directories(${PROJECT_BINARY_DIR}) # Required for asm-offsets.h set(CRYPTO_PROVIDER "mbedtls") @@ -60,24 +60,26 @@ set_property(SOURCE ${PAL_LINUX_ENCLAVE_SOURCE} PROPERTY COMPILE_FLAGS -DIN_ENCL file(DOWNLOAD https://certificates.trustedservices.intel.com/Intel_SGX_Attestation_RootCA.pem - ${CMAKE_CURRENT_BINARY_DIR}/quote/Intel_SGX_Attestation_RootCA.pem) + ${PROJECT_BINARY_DIR}/quote/Intel_SGX_Attestation_RootCA.pem) add_library(pal-Linux-SGX SHARED ${PAL_GENERIC_SOURCE} ${COMMON_LIB_SOURCE} ${PAL_LINUX_ENCLAVE_SOURCE} - ${CMAKE_CURRENT_BINARY_DIR}/asm-offsets.h - ${CMAKE_CURRENT_BINARY_DIR}/pal.map) + ${PROJECT_BINARY_DIR}/asm-offsets.h + ${PROJECT_BINARY_DIR}/pal.map) + +install(TARGETS pal-Linux-SGX LIBRARY DESTINATION ${GRAPHENE_RUNTIME_DIR}) add_custom_command( OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/quote/aesm.pb-c.c + ${PROJECT_BINARY_DIR}/quote/aesm.pb-c.c COMMAND - protoc-c --c_out=${CMAKE_CURRENT_BINARY_DIR}/quote - --proto_path=${CMAKE_CURRENT_SOURCE_DIR}/quote - ${CMAKE_CURRENT_SOURCE_DIR}/quote/aesm.proto + protoc-c --c_out=${PROJECT_BINARY_DIR}/quote + --proto_path=${PROJECT_SOURCE_DIR}/quote + ${PROJECT_SOURCE_DIR}/quote/aesm.proto DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/quote/aesm.proto + ${PROJECT_SOURCE_DIR}/quote/aesm.proto ) set(PAL_LINUX_UNTRUST_SOURCE @@ -95,9 +97,9 @@ set(PAL_LINUX_UNTRUST_SOURCE add_executable(pal-sgx ${COMMON_LIB_SOURCE} ${PAL_LINUX_UNTRUST_SOURCE} - ${CMAKE_CURRENT_BINARY_DIR}/asm-offsets.h - ${CMAKE_CURRENT_BINARY_DIR}/quote/aesm.pb-c.c - ${CMAKE_CURRENT_SOURCE_DIR}/sgx-driver/isgx_version.h) + ${PROJECT_BINARY_DIR}/asm-offsets.h + ${PROJECT_BINARY_DIR}/quote/aesm.pb-c.c + ${PROJECT_SOURCE_DIR}/sgx-driver/isgx_version.h) set_property(TARGET pal-sgx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -107,7 +109,9 @@ target_link_libraries(pal-sgx protobuf-c) add_custom_command( OUTPUT - ${CMAKE_CURRENT_SOURCE_DIR}/sgx-driver/isgx_version.h + ${PROJECT_SOURCE_DIR}/sgx-driver/isgx_version.h COMMAND - make -C ${CMAKE_CURRENT_SOURCE_DIR}/sgx-driver isgx_version.h + make -C ${PROJECT_SOURCE_DIR}/sgx-driver isgx_version.h ) + +install(PROGRAMS pal-sgx DESTINATION ${GRAPHENE_RUNTIME_DIR}) diff --git a/Pal/src/pal.cmake b/Pal/src/pal.cmake index abe84665..3f18bfad 100644 --- a/Pal/src/pal.cmake +++ b/Pal/src/pal.cmake @@ -29,9 +29,12 @@ prepend_list(PAL_GENERIC_SOURCE ${CMAKE_CURRENT_LIST_DIR}/ ${PAL_GENERIC_SOURCE_ add_custom_command( OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/pal.map + ${PROJECT_BINARY_DIR}/pal.map COMMAND - ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_LIST_DIR}/symbols.cmake + ${CMAKE_COMMAND} + -D INPUT_FILE=${PROJECT_SOURCE_DIR}/pal.map.template + -D OUTPUT_FILE=${PROJECT_BINARY_DIR}/pal.map + -P ${CMAKE_CURRENT_LIST_DIR}/symbols.cmake DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/pal.map.template + ${PROJECT_SOURCE_DIR}/pal.map.template ) diff --git a/Pal/src/symbols.cmake b/Pal/src/symbols.cmake index c6c47cc8..a11bbf9d 100644 --- a/Pal/src/symbols.cmake +++ b/Pal/src/symbols.cmake @@ -50,6 +50,6 @@ set(PAL_SYMBOL_LIST pal_printf pal_control_addr) -file(READ ${CMAKE_CURRENT_SOURCE_DIR}/pal.map.template PAL_MAP_TEMPLATE) +file(READ ${INPUT_FILE} PAL_MAP_TEMPLATE) string(REPLACE "$(PAL_SYMBOLS)" "${PAL_SYMBOL_LIST};" PAL_MAP "${PAL_MAP_TEMPLATE}") -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pal.map "${PAL_MAP}") +file(WRITE ${OUTPUT_FILE} "${PAL_MAP}") diff --git a/rules.cmake b/rules.cmake index 13c21e89..93ccc3cd 100644 --- a/rules.cmake +++ b/rules.cmake @@ -17,27 +17,27 @@ endfunction(append_list) # May need to change this to allow installation under any prefixes set(GRAPHENE_RUNTIME_DIR "${CMAKE_CURRENT_LIST_DIR}/Runtime") -if (EXISTS generated-offsets.c) - add_library(generated-offsets OBJECT generated-offsets.c) +if (EXISTS ${PROJECT_SOURCE_DIR}/generated-offsets.c) + add_library(generated-offsets OBJECT ${PROJECT_SOURCE_DIR}/generated-offsets.c) # Generate generated-offsets.s from generated-offsets.c - set_property(SOURCE generated-offsets.c PROPERTY + set_property(SOURCE ${PROJECT_SOURCE_DIR}/generated-offsets.c PROPERTY COMPILE_FLAGS - "-Wa,-adhln=${CMAKE_CURRENT_BINARY_DIR}/generated-offsets.s") + "-Wa,-adhln=${PROJECT_BINARY_DIR}/generated-offsets.s") # Ensure that generated-offsets.s is cleaned up set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES - ${CMAKE_CURRENT_BINARY_DIR}/generated-offsets.s APPEND) + ${PROJECT_BINARY_DIR}/generated-offsets.s APPEND) add_custom_command( PRE_BUILD OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/asm-offsets.h + ${PROJECT_BINARY_DIR}/asm-offsets.h COMMAND ${CMAKE_COMMAND} -D FORMAT=C - -D INPUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/generated-offsets.s - -D OUTPUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/asm-offsets.h + -D INPUT_FILE=${PROJECT_BINARY_DIR}/generated-offsets.s + -D OUTPUT_FILE=${PROJECT_BINARY_DIR}/asm-offsets.h -P ${CMAKE_CURRENT_LIST_DIR}/generate_offsets.cmake DEPENDS generated-offsets @@ -46,11 +46,11 @@ if (EXISTS generated-offsets.c) add_custom_command( PRE_BUILD OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/generated_offsets.py + ${PROJECT_BINARY_DIR}/generated_offsets.py COMMAND ${CMAKE_COMMAND} -D FORMAT=python - -D INPUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/generated-offsets.s - -D OUTPUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/generated_offsets.py + -D INPUT_FILE=${PROJECT_BINARY_DIR}/generated-offsets.s + -D OUTPUT_FILE=${PROJECT_BINARY_DIR}/generated_offsets.py -P ${CMAKE_CURRENT_LIST_DIR}/generate_offsets.cmake DEPENDS generated-offsets