Statically link libcrypto/ssl into libtls with cmake

This commit is contained in:
kinichiro 2021-05-02 15:50:37 +09:00
parent 9971b0820c
commit 4c56df46de
5 changed files with 22 additions and 9 deletions

View File

@ -331,7 +331,8 @@ if(SIZEOF_TIME_T STREQUAL "4")
endif() endif()
add_definitions(-DSIZEOF_TIME_T=${SIZEOF_TIME_T}) 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(crypto)
add_subdirectory(ssl) add_subdirectory(ssl)

View File

@ -44,7 +44,7 @@ endif()
add_executable(nc ${NC_SRC}) add_executable(nc ${NC_SRC})
target_include_directories(nc PRIVATE . ./compat ../../include/compat) 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_NC)
if(ENABLE_LIBRESSL_INSTALL) if(ENABLE_LIBRESSL_INSTALL)

View File

@ -968,6 +968,8 @@ if(EXTRA_EXPORT)
endforeach() endforeach()
endif() endif()
set(LIBTLS_EXTRA_EXPORT ${EXTRA_EXPORT} PARENT_SCOPE)
add_library(crypto_obj OBJECT ${CRYPTO_SRC}) add_library(crypto_obj OBJECT ${CRYPTO_SRC})
target_include_directories(crypto_obj target_include_directories(crypto_obj
PRIVATE PRIVATE

View File

@ -144,7 +144,7 @@ add_test(cmstest cmstest)
# configtest # configtest
add_executable(configtest configtest.c) add_executable(configtest configtest.c)
target_link_libraries(configtest ${OPENSSL_LIBS}) target_link_libraries(configtest ${LIBTLS_LIBS})
add_test(configtest configtest) add_test(configtest configtest)
# constraints # constraints
@ -276,7 +276,7 @@ if(NOT BUILD_SHARED_LIBS)
add_test(key_schedule key_schedule) add_test(key_schedule key_schedule)
add_executable(keypairtest keypairtest.c) add_executable(keypairtest keypairtest.c)
target_link_libraries(keypairtest ${OPENSSL_LIBS}) target_link_libraries(keypairtest ${LIBTLS_LIBS})
add_test(keypairtest keypairtest add_test(keypairtest keypairtest
${CMAKE_CURRENT_SOURCE_DIR}/ca.pem ${CMAKE_CURRENT_SOURCE_DIR}/ca.pem
${CMAKE_CURRENT_SOURCE_DIR}/server.pem ${CMAKE_CURRENT_SOURCE_DIR}/server.pem
@ -502,7 +502,7 @@ else()
endif() endif()
add_executable(tlstest ${TLSTEST_SRC}) add_executable(tlstest ${TLSTEST_SRC})
target_link_libraries(tlstest ${OPENSSL_LIBS}) target_link_libraries(tlstest ${LIBTLS_LIBS})
if(NOT MSVC) if(NOT MSVC)
add_test(NAME tlstest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tlstest.sh) add_test(NAME tlstest COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tlstest.sh)
else() else()
@ -541,7 +541,7 @@ endif()
# verifytest # verifytest
if(NOT BUILD_SHARED_LIBS) if(NOT BUILD_SHARED_LIBS)
add_executable(verifytest verifytest.c) add_executable(verifytest verifytest.c)
target_link_libraries(verifytest ${OPENSSL_LIBS}) target_link_libraries(verifytest ${LIBTLS_LIBS})
add_test(verifytest verifytest) add_test(verifytest verifytest)
endif() endif()

View File

@ -29,6 +29,15 @@ else()
add_definitions(-DTLS_DEFAULT_CA_FILE=\"${CMAKE_INSTALL_PREFIX}/etc/ssl/cert.pem\") add_definitions(-DTLS_DEFAULT_CA_FILE=\"${CMAKE_INSTALL_PREFIX}/etc/ssl/cert.pem\")
endif() 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}) add_library(tls_obj OBJECT ${TLS_SRC})
target_include_directories(tls_obj target_include_directories(tls_obj
PRIVATE PRIVATE
@ -37,7 +46,8 @@ target_include_directories(tls_obj
PUBLIC PUBLIC
../include) ../include)
add_library(tls $<TARGET_OBJECTS:tls_obj>) add_library(tls $<TARGET_OBJECTS:tls_obj> $<TARGET_OBJECTS:ssl_obj>
$<TARGET_OBJECTS:crypto_obj>)
target_include_directories(tls target_include_directories(tls
PRIVATE PRIVATE
. .
@ -45,8 +55,8 @@ target_include_directories(tls
PUBLIC PUBLIC
../include) ../include)
export_symbol(tls ${CMAKE_CURRENT_SOURCE_DIR}/tls.sym) export_symbol(tls ${CMAKE_CURRENT_BINARY_DIR}/tls.sym)
target_link_libraries(tls ssl crypto ${PLATFORM_LIBS}) target_link_libraries(tls ${PLATFORM_LIBS})
if (WIN32) if (WIN32)
set(TLS_POSTFIX -${TLS_MAJOR_VERSION}) set(TLS_POSTFIX -${TLS_MAJOR_VERSION})
endif() endif()