mirror of
https://github.com/clearlinux/graphene.git
synced 2026-09-05 21:31:36 +00:00
[PAL] Fix out-of-tree build for PAL
This commit is contained in:
@@ -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
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user