
OBJECT collections in CMake don't generate any artifacts so these are safe to hoist out and define globally. library OBJECT targets are just a list of filenames. It can be useful for other projects to include lists of sources directly regardless of build mode (shared, static, or library).
53 lines
1.2 KiB
CMake
53 lines
1.2 KiB
CMake
include_directories(
|
|
.
|
|
../include
|
|
../include/compat
|
|
)
|
|
|
|
set(
|
|
TLS_SRC
|
|
tls.c
|
|
tls_bio_cb.c
|
|
tls_client.c
|
|
tls_config.c
|
|
tls_conninfo.c
|
|
tls_server.c
|
|
tls_ocsp.c
|
|
tls_peer.c
|
|
tls_util.c
|
|
tls_verify.c
|
|
)
|
|
|
|
|
|
if(NOT HAVE_STRSEP)
|
|
set(TLS_SRC ${TLS_SRC} strsep.c)
|
|
endif()
|
|
|
|
if(NOT "${OPENSSLDIR}" STREQUAL "")
|
|
add_definitions(-D_PATH_SSL_CA_FILE=\"${OPENSSLDIR}/cert.pem\")
|
|
else()
|
|
add_definitions(-D_PATH_SSL_CA_FILE=\"${CMAKE_INSTALL_PREFIX}/etc/ssl/cert.pem\")
|
|
endif()
|
|
|
|
add_library(tls-objects OBJECT ${TLS_SRC})
|
|
if (BUILD_SHARED)
|
|
add_library(tls STATIC $<TARGET_OBJECTS:tls-objects>)
|
|
add_library(tls-shared SHARED $<TARGET_OBJECTS:tls-objects>)
|
|
if (WIN32)
|
|
target_sources(tls-shared PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tls.def)
|
|
target_link_libraries(tls-shared ssl-shared crypto-shared Ws2_32.lib)
|
|
set(TLS_POSTFIX -${TLS_MAJOR_VERSION})
|
|
endif()
|
|
set_target_properties(tls-shared PROPERTIES
|
|
OUTPUT_NAME tls${TLS_POSTFIX}
|
|
ARCHIVE_OUTPUT_NAME tls${TLS_POSTFIX})
|
|
set_target_properties(tls-shared PROPERTIES VERSION ${TLS_VERSION}
|
|
SOVERSION ${TLS_MAJOR_VERSION})
|
|
install(TARGETS tls tls-shared DESTINATION lib)
|
|
else()
|
|
add_library(tls STATIC ${TLS_SRC})
|
|
install(TARGETS tls DESTINATION lib)
|
|
endif()
|
|
|