зеркало из https://github.com/microsoft/CCF.git
cmake: Use `add_enclave_library` consistently (#2960)
This commit is contained in:
Родитель
b0ef1b3f49
Коммит
425692fdce
|
@ -74,15 +74,10 @@ set(CCF_IMPL_SOURCE
|
|||
|
||||
if("sgx" IN_LIST COMPILE_TARGETS)
|
||||
# enclave version
|
||||
add_library(
|
||||
ccf.enclave STATIC ${CCF_IMPL_SOURCE} ${CCF_GENERATED_DIR}/ccf_t.cpp
|
||||
add_enclave_library(
|
||||
ccf.enclave ${CCF_IMPL_SOURCE} ${CCF_GENERATED_DIR}/ccf_t.cpp
|
||||
)
|
||||
|
||||
target_compile_definitions(
|
||||
ccf.enclave PUBLIC INSIDE_ENCLAVE _LIBCPP_HAS_THREAD_API_PTHREAD
|
||||
)
|
||||
|
||||
target_compile_options(ccf.enclave PUBLIC -nostdinc -nostdinc++)
|
||||
add_warning_checks(ccf.enclave)
|
||||
|
||||
target_include_directories(
|
||||
|
@ -97,19 +92,10 @@ if("sgx" IN_LIST COMPILE_TARGETS)
|
|||
)
|
||||
|
||||
target_link_libraries(
|
||||
ccf.enclave
|
||||
PUBLIC ${OE_TARGET_ENCLAVE_AND_STD}
|
||||
-lgcc
|
||||
quickjs.enclave
|
||||
ccfcrypto.enclave
|
||||
http_parser.enclave
|
||||
aft.enclave
|
||||
sss.enclave
|
||||
ccf_endpoints.enclave
|
||||
ccf.enclave PUBLIC quickjs.enclave ccfcrypto.enclave http_parser.enclave
|
||||
aft.enclave sss.enclave ccf_endpoints.enclave
|
||||
)
|
||||
|
||||
set_property(TARGET ccf.enclave PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
enable_quote_code(ccf.enclave)
|
||||
|
||||
add_lvi_mitigations(ccf.enclave)
|
||||
|
|
|
@ -5,17 +5,7 @@
|
|||
set(AFT_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/consensus/aft/impl/execution.cpp)
|
||||
|
||||
if("sgx" IN_LIST COMPILE_TARGETS)
|
||||
add_library(aft.enclave STATIC ${AFT_SRC})
|
||||
target_compile_options(aft.enclave PRIVATE -nostdinc)
|
||||
target_compile_definitions(
|
||||
aft.enclave PRIVATE INSIDE_ENCLAVE _LIBCPP_HAS_THREAD_API_PTHREAD
|
||||
__USE_SYSTEM_ENDIAN_H__
|
||||
)
|
||||
set_property(TARGET aft.enclave PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
target_include_directories(
|
||||
aft.enclave PRIVATE ${CCF_DIR}/src/ds ${OE_TARGET_LIBC}
|
||||
${PARSED_ARGS_INCLUDE_DIRS}
|
||||
)
|
||||
add_enclave_library(aft.enclave ${AFT_SRC})
|
||||
use_oe_mbedtls(aft.enclave)
|
||||
install(
|
||||
TARGETS aft.enclave
|
||||
|
@ -24,8 +14,6 @@ if("sgx" IN_LIST COMPILE_TARGETS)
|
|||
)
|
||||
endif()
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
if("virtual" IN_LIST COMPILE_TARGETS)
|
||||
|
||||
add_library(aft.virtual STATIC ${AFT_SRC})
|
||||
|
|
|
@ -221,7 +221,9 @@ endfunction()
|
|||
|
||||
# Convenience wrapper to build C-libraries that can be linked in enclave, ie. in
|
||||
# a CCF application.
|
||||
function(add_enclave_library_c name files)
|
||||
function(add_enclave_library_c name)
|
||||
cmake_parse_arguments(PARSE_ARGV 1 PARSED_ARGS "" "" "")
|
||||
set(files ${PARSED_ARGS_UNPARSED_ARGUMENTS})
|
||||
add_library(${name} STATIC ${files})
|
||||
target_compile_options(${name} PRIVATE -nostdinc)
|
||||
target_link_libraries(${name} PRIVATE ${OE_TARGET_LIBC})
|
||||
|
@ -230,7 +232,9 @@ endfunction()
|
|||
|
||||
# Convenience wrapper to build C++-libraries that can be linked in enclave, ie.
|
||||
# in a CCF application.
|
||||
function(add_enclave_library name files)
|
||||
function(add_enclave_library name)
|
||||
cmake_parse_arguments(PARSE_ARGV 1 PARSED_ARGS "" "" "")
|
||||
set(files ${PARSED_ARGS_UNPARSED_ARGUMENTS})
|
||||
add_library(${name} ${files})
|
||||
target_compile_options(${name} PUBLIC -nostdinc -nostdinc++)
|
||||
target_compile_definitions(
|
||||
|
@ -240,7 +244,9 @@ function(add_enclave_library name files)
|
|||
set_property(TARGET ${name} PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
endfunction()
|
||||
|
||||
function(add_host_library name files)
|
||||
function(add_host_library name)
|
||||
cmake_parse_arguments(PARSE_ARGV 1 PARSED_ARGS "" "" "")
|
||||
set(files ${PARSED_ARGS_UNPARSED_ARGUMENTS})
|
||||
add_library(${name} ${files})
|
||||
target_compile_options(${name} PUBLIC ${COMPILE_LIBCXX})
|
||||
target_link_libraries(${name} PUBLIC ${LINK_LIBCXX} -lgcc openenclave::oehost)
|
||||
|
|
|
@ -26,18 +26,8 @@ set(CCFCRYPTO_SRC
|
|||
)
|
||||
|
||||
if("sgx" IN_LIST COMPILE_TARGETS)
|
||||
add_library(ccfcrypto.enclave STATIC ${CCFCRYPTO_SRC})
|
||||
target_compile_definitions(
|
||||
ccfcrypto.enclave PRIVATE INSIDE_ENCLAVE _LIBCPP_HAS_THREAD_API_PTHREAD
|
||||
)
|
||||
target_compile_options(ccfcrypto.enclave PRIVATE -nostdinc++)
|
||||
target_link_libraries(
|
||||
ccfcrypto.enclave
|
||||
PRIVATE -nostdlib -nodefaultlibs -nostartfiles -Wl,--no-undefined
|
||||
-Wl,-Bstatic,-Bsymbolic,--export-dynamic,-pie
|
||||
)
|
||||
add_enclave_library(ccfcrypto.enclave ${CCFCRYPTO_SRC})
|
||||
use_oe_mbedtls(ccfcrypto.enclave)
|
||||
set_property(TARGET ccfcrypto.enclave PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
install(
|
||||
TARGETS ccfcrypto.enclave
|
||||
|
|
|
@ -28,17 +28,15 @@ message(STATUS "QuickJS prefix: ${QUICKJS_PREFIX} version: ${QUICKJS_VERSION}")
|
|||
# We need two versions of libquickjs, because it depends on libc
|
||||
|
||||
if("sgx" IN_LIST COMPILE_TARGETS)
|
||||
add_library(
|
||||
quickjs.enclave STATIC ${QUICKJS_SRC} ${CCF_DIR}/src/enclave/stub_time.c
|
||||
add_enclave_library_c(
|
||||
quickjs.enclave ${QUICKJS_SRC} ${CCF_DIR}/src/enclave/stub_time.c
|
||||
)
|
||||
target_compile_options(
|
||||
quickjs.enclave
|
||||
PUBLIC -nostdinc -DCONFIG_VERSION="${QUICKJS_VERSION}" -DEMSCRIPTEN
|
||||
PUBLIC -DCONFIG_VERSION="${QUICKJS_VERSION}" -DEMSCRIPTEN
|
||||
-DCONFIG_STACK_CHECK -DCONFIG_BIGNUM
|
||||
PRIVATE $<$<CONFIG:Debug>:-DDUMP_LEAKS>
|
||||
)
|
||||
target_link_libraries(quickjs.enclave PUBLIC ${OE_TARGET_LIBC})
|
||||
set_property(TARGET quickjs.enclave PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
target_include_directories(
|
||||
quickjs.enclave
|
||||
PUBLIC $<BUILD_INTERFACE:${CCF_3RD_PARTY_EXPORTED_DIR}/quickjs>
|
||||
|
|
|
@ -12,8 +12,7 @@ set(SSS_SRC ${SSS_PREFIX}/sss.c ${SSS_PREFIX}/hazmat.c
|
|||
)
|
||||
|
||||
if("sgx" IN_LIST COMPILE_TARGETS)
|
||||
add_library(sss.enclave STATIC ${SSS_SRC})
|
||||
set_property(TARGET sss.enclave PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
add_enclave_library_c(sss.enclave ${SSS_SRC})
|
||||
install(
|
||||
TARGETS sss.enclave
|
||||
EXPORT ccf
|
||||
|
|
Загрузка…
Ссылка в новой задаче