From 4c56df46de18da692785ed337910ab852c34e0ce Mon Sep 17 00:00:00 2001 From: kinichiro Date: Sun, 2 May 2021 15:50:37 +0900 Subject: Statically link libcrypto/ssl into libtls with cmake --- CMakeLists.txt | 3 ++- apps/nc/CMakeLists.txt | 2 +- crypto/CMakeLists.txt | 2 ++ tests/CMakeLists.txt | 8 ++++---- tls/CMakeLists.txt | 16 +++++++++++++--- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4183499..838b7e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -331,7 +331,8 @@ if(SIZEOF_TIME_T STREQUAL "4") endif() add_definitions(-DSIZEOF_TIME_T=${SIZEOF_TIME_T}) -set(OPENSSL_LIBS tls ssl crypto ${PLATFORM_LIBS}) +set(OPENSSL_LIBS ssl crypto ${PLATFORM_LIBS}) +set(LIBTLS_LIBS tls ${PLATFORM_LIBS}) add_subdirectory(crypto) add_subdirectory(ssl) diff --git a/apps/nc/CMakeLists.txt b/apps/nc/CMakeLists.txt index cc34ef3..f21c869 100644 --- a/apps/nc/CMakeLists.txt +++ b/apps/nc/CMakeLists.txt @@ -44,7 +44,7 @@ endif() add_executable(nc ${NC_SRC}) target_include_directories(nc PRIVATE . ./compat ../../include/compat) -target_link_libraries(nc tls ${OPENSSL_LIBS}) +target_link_libraries(nc ${LIBTLS_LIBS}) if(ENABLE_NC) if(ENABLE_LIBRESSL_INSTALL) diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 46db626..b1ded85 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -968,6 +968,8 @@ if(EXTRA_EXPORT) endforeach() endif() +set(LIBTLS_EXTRA_EXPORT ${EXTRA_EXPORT} PARENT_SCOPE) + add_library(crypto_obj OBJECT ${CRYPTO_SRC}) target_include_directories(crypto_obj PRIVATE diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d74cfbc..d0280f7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -144,7 +144,7 @@ add_test(cmstest cmstest) # configtest add_executable(configtest configtest.c) -target_link_libraries(configtest ${OPENSSL_LIBS}) +target_link_libraries(configtest ${LIBTLS_LIBS}) add_test(configtest configtest) # constraints @@ -276,7 +276,7 @@ if(NOT BUILD_SHARED_LIBS) add_test(key_schedule key_schedule) add_executable(keypairtest keypairtest.c) - target_link_libraries(keypairtest ${OPENSSL_LIBS}) + target_link_libraries(keypairtest ${LIBTLS_LIBS}) add_test(keypairtest keypairtest ${CMAKE_CURRENT_SOURCE_DIR}/ca.pem ${CMAKE_CURRENT_SOURCE_DIR}/server.pem @@ -502,7 +502,7 @@ else() endif() add_executable(tlstest ${TLSTEST_SRC}) -target_link_libraries(tlstest ${OPENSSL_LIBS}) +target_link_libraries(tlstest ${LIBTLS_LIBS}) if(NOT MSVC) add_test(NAME tlstest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tlstest.sh) else() @@ -541,7 +541,7 @@ endif() # verifytest if(NOT BUILD_SHARED_LIBS) add_executable(verifytest verifytest.c) - target_link_libraries(verifytest ${OPENSSL_LIBS}) + target_link_libraries(verifytest ${LIBTLS_LIBS}) add_test(verifytest verifytest) endif() diff --git a/tls/CMakeLists.txt b/tls/CMakeLists.txt index 286d499..9aa10e1 100644 --- a/tls/CMakeLists.txt +++ b/tls/CMakeLists.txt @@ -29,6 +29,15 @@ else() add_definitions(-DTLS_DEFAULT_CA_FILE=\"${CMAKE_INSTALL_PREFIX}/etc/ssl/cert.pem\") endif() +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/tls.sym DESTINATION + ${CMAKE_CURRENT_BINARY_DIR}) +if(LIBTLS_EXTRA_EXPORT) + list(SORT LIBTLS_EXTRA_EXPORT) + foreach(SYM IN LISTS LIBTLS_EXTRA_EXPORT) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/tls.sym "${SYM}\n") + endforeach() +endif() + add_library(tls_obj OBJECT ${TLS_SRC}) target_include_directories(tls_obj PRIVATE @@ -37,7 +46,8 @@ target_include_directories(tls_obj PUBLIC ../include) -add_library(tls $) +add_library(tls $ $ + $) target_include_directories(tls PRIVATE . @@ -45,8 +55,8 @@ target_include_directories(tls PUBLIC ../include) -export_symbol(tls ${CMAKE_CURRENT_SOURCE_DIR}/tls.sym) -target_link_libraries(tls ssl crypto ${PLATFORM_LIBS}) +export_symbol(tls ${CMAKE_CURRENT_BINARY_DIR}/tls.sym) +target_link_libraries(tls ${PLATFORM_LIBS}) if (WIN32) set(TLS_POSTFIX -${TLS_MAJOR_VERSION}) endif() -- cgit v1.2.3-55-g6feb