[PAL] Fix out-of-tree build for PAL

This commit is contained in:
Chia-Che Tsai
2019-09-22 22:44:53 -05:00
parent 3ce7eb0264
commit d03ec8bcfe
4 changed files with 40 additions and 33 deletions
+21 -17
View File
@@ -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})
+6 -3
View File
@@ -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
)
+2 -2
View File
@@ -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}")
+11 -11
View File
@@ -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