cmake: Use `add_enclave_library` consistently (#2960)

This commit is contained in:
Maik Riechert 2021-09-07 20:36:36 +01:00 коммит произвёл GitHub
Родитель b0ef1b3f49
Коммит 425692fdce
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 19 добавлений и 52 удалений

Просмотреть файл

@ -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