Skip to content

Commit

Permalink
CMake: Fix shared library dependencies
Browse files Browse the repository at this point in the history
libsofthsm.so does not link to OpenSSL (unlike the OpenSSL builds). This
results in failure to load the library in a PKCS opendnssec#11 application.
Fix this by adding OpenSSL as dependency for the softhsm_crypto object
library and subsequently propagate this to the softhsm library. Remove
unused static library files while at it.

This requires CMake 3.12, older versions do not allow targets to be
linked with object libraries via target_link_libraries. (If this version
bump is not desired, a workaround needs to be created for
softhsm_objectstore and softhsm_crypto).
  • Loading branch information
Lekensteyn committed Dec 11, 2018
1 parent f3b8a96 commit e088d35
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 35 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.12)

project(softhsm2 C CXX)

Expand Down
31 changes: 11 additions & 20 deletions src/lib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,30 +32,21 @@ set(SOURCES access.cpp
SoftHSM.cpp
)

set(DEPENDENCIES softhsm_common-obj
softhsm_crypto-obj
softhsm_datamgr-obj
softhsm_handlemgr-obj
softhsm_objectstore-obj
softhsm_sessionmgr-obj
softhsm_slotmgr-obj
)

set(OBJECT_FILES $<TARGET_OBJECTS:softhsm_common-obj>
$<TARGET_OBJECTS:softhsm_crypto-obj>
$<TARGET_OBJECTS:softhsm_datamgr-obj>
$<TARGET_OBJECTS:softhsm_handlemgr-obj>
$<TARGET_OBJECTS:softhsm_objectstore-obj>
$<TARGET_OBJECTS:softhsm_sessionmgr-obj>
$<TARGET_OBJECTS:softhsm_slotmgr-obj>
set(STATIC_FILES softhsm_common
softhsm_crypto
softhsm_datamgr
softhsm_handlemgr
softhsm_objectstore
softhsm_sessionmgr
softhsm_slotmgr
)


###############################################################################
# Static Library Config
###############################################################################
add_library(${PROJECT_NAME}-static STATIC ${SOURCES} ${OBJECT_FILES})
add_dependencies(${PROJECT_NAME}-static ${DEPENDENCIES})
add_library(${PROJECT_NAME}-static STATIC ${SOURCES})
target_link_libraries(${PROJECT_NAME}-static ${STATIC_FILES})
set_target_properties(${PROJECT_NAME}-static
PROPERTIES OUTPUT_NAME ${PROJECT_NAME}
)
Expand All @@ -64,8 +55,8 @@ generate_export_header(${PROJECT_NAME}-static)
###############################################################################
# Shared Library Config
###############################################################################
add_library(${PROJECT_NAME} SHARED ${SOURCES} ${OBJECT_FILES})
add_dependencies(${PROJECT_NAME} ${DEPENDENCIES})
add_library(${PROJECT_NAME} SHARED ${SOURCES})
target_link_libraries(${PROJECT_NAME} ${STATIC_FILES})
generate_export_header(${PROJECT_NAME})

###############################################################################
Expand Down
3 changes: 1 addition & 2 deletions src/lib/common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ set(SOURCES Configuration.cpp

include_directories(${INCLUDE_DIRS})

add_library(${PROJECT_NAME}-obj OBJECT ${SOURCES})
add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}-obj>)
add_library(${PROJECT_NAME} OBJECT ${SOURCES})

set(softhsmtokendir ${DEFAULT_TOKENDIR})
set(default_softhsm2_conf ${CMAKE_INSTALL_FULL_SYSCONFDIR}/softhsm2.conf)
Expand Down
3 changes: 1 addition & 2 deletions src/lib/crypto/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,7 @@ endif(WITH_BOTAN)

include_directories(${INCLUDE_DIRS})

add_library(${PROJECT_NAME}-obj OBJECT ${SOURCES})
add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}-obj>)
add_library(${PROJECT_NAME} OBJECT ${SOURCES})
target_link_libraries(${PROJECT_NAME} ${CRYPTO_LIBS})

if(BUILD_TESTS)
Expand Down
3 changes: 1 addition & 2 deletions src/lib/data_mgr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ set(SOURCES ByteString.cpp

include_directories(${INCLUDE_DIRS})

add_library(${PROJECT_NAME}-obj OBJECT ${SOURCES})
add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}-obj>)
add_library(${PROJECT_NAME} OBJECT ${SOURCES})

if(BUILD_TESTS)
add_subdirectory(test)
Expand Down
3 changes: 1 addition & 2 deletions src/lib/handle_mgr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ set(SOURCES HandleManager.cpp

include_directories(${INCLUDE_DIRS})

add_library(${PROJECT_NAME}-obj OBJECT ${SOURCES})
add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}-obj>)
add_library(${PROJECT_NAME} OBJECT ${SOURCES})

if(BUILD_TESTS)
add_subdirectory(test)
Expand Down
3 changes: 1 addition & 2 deletions src/lib/object_store/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ endif(WITH_OBJECTSTORE_BACKEND_DB)

include_directories(${INCLUDE_DIRS})

add_library(${PROJECT_NAME}-obj OBJECT ${SOURCES})
add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}-obj>)
add_library(${PROJECT_NAME} OBJECT ${SOURCES})
target_link_libraries(${PROJECT_NAME} ${SQLITE3_LIBS})

if(BUILD_TESTS)
Expand Down
3 changes: 1 addition & 2 deletions src/lib/session_mgr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ set(SOURCES SessionManager.cpp

include_directories(${INCLUDE_DIRS})

add_library(${PROJECT_NAME}-obj OBJECT ${SOURCES})
add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}-obj>)
add_library(${PROJECT_NAME} OBJECT ${SOURCES})

if(BUILD_TESTS)
add_subdirectory(test)
Expand Down
3 changes: 1 addition & 2 deletions src/lib/slot_mgr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ set(SOURCES SlotManager.cpp

include_directories(${INCLUDE_DIRS})

add_library(${PROJECT_NAME}-obj OBJECT ${SOURCES})
add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}-obj>)
add_library(${PROJECT_NAME} OBJECT ${SOURCES})

if(BUILD_TESTS)
add_subdirectory(test)
Expand Down

0 comments on commit e088d35

Please sign in to comment.