diff --git a/CMakeLists.txt b/CMakeLists.txt index 403d666..4542d57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,8 +12,17 @@ option(NWFLAIM_USE_NICI "Build FLAIM NICI/CCS encrypted-storage path" OFF) set(NWFLAIM_SSL_TARGET "" CACHE STRING "Optional SSL/Crypto target, for example mars_nwe::ssl") set(NWFLAIM_NICI_INCLUDE_DIR "" CACHE PATH "Optional private NICI/CCS compatibility include directory") set(NWFLAIM_LIBRARY_PREFIX nw CACHE STRING "Library output prefix used to avoid system FLAIM collisions") -set(NWFLAIM_LIBRARY_VERSION 1.0 CACHE STRING "Hard-coded FLAIM library version from configure.ac") -set(NWFLAIM_LIBRARY_SOVERSION 1 CACHE STRING "Hard-coded FLAIM ABI version") +# Hard-coded from the individual upstream configure.ac files. FLAIM is +# effectively frozen, so keep this simple and explicit instead of parsing +# autotools metadata during the CMake configure step. +set(NWFLAIM_FTK_LIBRARY_VERSION 1.2 CACHE STRING "FTK library version from ftk/configure.ac") +set(NWFLAIM_FTK_LIBRARY_SOVERSION 1 CACHE STRING "FTK ABI version") +set(NWFLAIM_FLAIM_LIBRARY_VERSION 4.10 CACHE STRING "FLAIM library version from flaim/configure.ac") +set(NWFLAIM_FLAIM_LIBRARY_SOVERSION 4 CACHE STRING "FLAIM ABI version") +set(NWFLAIM_SQL_LIBRARY_VERSION 6.0 CACHE STRING "SQL FLAIM library version from sql/configure.ac") +set(NWFLAIM_SQL_LIBRARY_SOVERSION 6 CACHE STRING "SQL FLAIM ABI version") +set(NWFLAIM_XFLAIM_LIBRARY_VERSION 5.2 CACHE STRING "XFLAIM library version from xflaim/configure.ac") +set(NWFLAIM_XFLAIM_LIBRARY_SOVERSION 5 CACHE STRING "XFLAIM ABI version") if(NOT NWFLAIM_BUILD_SHARED AND NOT NWFLAIM_BUILD_STATIC) message(FATAL_ERROR "Enable at least one of NWFLAIM_BUILD_SHARED or NWFLAIM_BUILD_STATIC") @@ -358,14 +367,14 @@ function(nwflaim_common_target target_name public_include_dir) endif() endfunction() -function(nwflaim_add_library logical_name output_base public_include_dir) +function(nwflaim_add_library logical_name output_base public_include_dir library_version library_soversion) if(NWFLAIM_BUILD_SHARED) add_library(${logical_name} SHARED ${ARGN}) add_library(NWFlaim::${logical_name} ALIAS ${logical_name}) set_target_properties(${logical_name} PROPERTIES OUTPUT_NAME "${NWFLAIM_LIBRARY_PREFIX}${output_base}" - VERSION "${NWFLAIM_LIBRARY_VERSION}" - SOVERSION "${NWFLAIM_LIBRARY_SOVERSION}") + VERSION "${library_version}" + SOVERSION "${library_soversion}") nwflaim_common_target(${logical_name} ${public_include_dir}) endif() if(NWFLAIM_BUILD_STATIC) @@ -376,7 +385,7 @@ function(nwflaim_add_library logical_name output_base public_include_dir) endif() endfunction() -nwflaim_add_library(flaimtk flaimtk ftk/src ${NWFLAIM_FTK_SOURCES}) +nwflaim_add_library(flaimtk flaimtk ftk/src "${NWFLAIM_FTK_LIBRARY_VERSION}" "${NWFLAIM_FTK_LIBRARY_SOVERSION}" ${NWFLAIM_FTK_SOURCES}) if(TARGET flaimtk AND NWFLAIM_WITH_OPENSSL) target_link_libraries(flaimtk PUBLIC ${_nwflaim_ssl_target}) endif() @@ -384,7 +393,7 @@ if(TARGET flaimtk_static AND NWFLAIM_WITH_OPENSSL) target_link_libraries(flaimtk_static PUBLIC ${_nwflaim_ssl_target}) endif() -nwflaim_add_library(flaim flaim flaim/src ${NWFLAIM_FLAIM_SOURCES}) +nwflaim_add_library(flaim flaim flaim/src "${NWFLAIM_FLAIM_LIBRARY_VERSION}" "${NWFLAIM_FLAIM_LIBRARY_SOVERSION}" ${NWFLAIM_FLAIM_SOURCES}) if(TARGET flaim) target_link_libraries(flaim PUBLIC flaimtk) endif() @@ -393,7 +402,7 @@ if(TARGET flaim_static) endif() if(NWFLAIM_BUILD_SQL) - nwflaim_add_library(flaimsql flaimsql sql/src ${NWFLAIM_SQL_SOURCES}) + nwflaim_add_library(flaimsql flaimsql sql/src "${NWFLAIM_SQL_LIBRARY_VERSION}" "${NWFLAIM_SQL_LIBRARY_SOVERSION}" ${NWFLAIM_SQL_SOURCES}) if(TARGET flaimsql) target_link_libraries(flaimsql PUBLIC flaimtk) endif() @@ -403,7 +412,7 @@ if(NWFLAIM_BUILD_SQL) endif() if(NWFLAIM_BUILD_XFLAIM) - nwflaim_add_library(xflaim xflaim xflaim/src ${NWFLAIM_XFLAIM_SOURCES}) + nwflaim_add_library(xflaim xflaim xflaim/src "${NWFLAIM_XFLAIM_LIBRARY_VERSION}" "${NWFLAIM_XFLAIM_LIBRARY_SOVERSION}" ${NWFLAIM_XFLAIM_SOURCES}) if(TARGET xflaim) target_link_libraries(xflaim PUBLIC flaimtk) endif()