diff --git a/CMakeLists.txt b/CMakeLists.txt index 71df5c0..65576c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,9 +38,12 @@ set(_nwflaim_common_defs if(CMAKE_SIZEOF_VOID_P EQUAL 8) list(APPEND _nwflaim_common_defs FLM_64BIT) endif() -if(NWFLAIM_USE_NICI) - list(APPEND _nwflaim_common_defs FLM_USE_NICI) -endif() +# FLM_USE_NICI is intentionally not part of the global/default define set. +# Classic FLAIM and its own tools use the NICI/CCS encrypted-storage path, +# but XFLAIM has a separate NICI implementation with a different historical +# API surface. Enabling FLM_USE_NICI globally makes xflaim/src/f_nici.cpp +# compile against the classic compatibility headers and breaks the default +# mars-nwe build. find_package(Threads REQUIRED) find_library(NWFLAIM_RT_LIBRARY rt) @@ -367,6 +370,16 @@ set(NWFLAIM_XFLAIM_SOURCES xflaim/src/scache.cpp xflaim/src/translog.cpp) + +function(nwflaim_enable_classic_nici target_name) + if(NWFLAIM_USE_NICI AND TARGET ${target_name}) + target_compile_definitions(${target_name} PRIVATE FLM_USE_NICI) + if(NOT NWFLAIM_NICI_INCLUDE_DIR STREQUAL "") + target_include_directories(${target_name} PRIVATE "${NWFLAIM_NICI_INCLUDE_DIR}") + endif() + endif() +endfunction() + function(nwflaim_common_target target_name public_include_dir install_include_dir) target_compile_features(${target_name} PUBLIC cxx_std_98) target_compile_definitions(${target_name} PRIVATE ${_nwflaim_common_defs}) @@ -379,9 +392,6 @@ function(nwflaim_common_target target_name public_include_dir install_include_di "${CMAKE_CURRENT_SOURCE_DIR}/flaim/src" "${CMAKE_CURRENT_SOURCE_DIR}/sql/src" "${CMAKE_CURRENT_SOURCE_DIR}/xflaim/src") - if(NWFLAIM_USE_NICI AND NOT NWFLAIM_NICI_INCLUDE_DIR STREQUAL "") - target_include_directories(${target_name} PRIVATE "${NWFLAIM_NICI_INCLUDE_DIR}") - endif() target_link_libraries(${target_name} PUBLIC Threads::Threads) if(CURSES_INCLUDE_DIRS) target_include_directories(${target_name} PRIVATE ${CURSES_INCLUDE_DIRS}) @@ -411,9 +421,6 @@ function(nwflaim_common_private_target target_name) "${CMAKE_CURRENT_SOURCE_DIR}/sql/src" "${CMAKE_CURRENT_SOURCE_DIR}/xflaim/src" "${CMAKE_CURRENT_SOURCE_DIR}/xflaim/util") - if(NWFLAIM_USE_NICI AND NOT NWFLAIM_NICI_INCLUDE_DIR STREQUAL "") - target_include_directories(${target_name} PRIVATE "${NWFLAIM_NICI_INCLUDE_DIR}") - endif() target_link_libraries(${target_name} PRIVATE Threads::Threads) if(CURSES_INCLUDE_DIRS) target_include_directories(${target_name} PRIVATE ${CURSES_INCLUDE_DIRS}) @@ -478,9 +485,11 @@ endif() nwflaim_add_library(flaim flaim flaim/src "${CMAKE_INSTALL_INCLUDEDIR}/nwflaim" "${NWFLAIM_FLAIM_LIBRARY_VERSION}" "${NWFLAIM_FLAIM_LIBRARY_SOVERSION}" ${NWFLAIM_FLAIM_SOURCES}) if(TARGET flaim) target_link_libraries(flaim PUBLIC flaimtk) + nwflaim_enable_classic_nici(flaim) endif() if(TARGET flaim_static) target_link_libraries(flaim_static PUBLIC flaimtk_static) + nwflaim_enable_classic_nici(flaim_static) endif() if(NWFLAIM_BUILD_SQL) @@ -510,17 +519,21 @@ if(NWFLAIM_BUILD_TOOLS) flaim/util/flm_lutl.cpp flaim/util/sharutil.cpp) nwflaim_common_private_target(flaim_util_objects) + nwflaim_enable_classic_nici(flaim_util_objects) target_include_directories(flaim_util_objects PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/flaim/util") nwflaim_add_tool(flmcheckdb_tool nwflmcheckdb flaim flaim/util/checkdb.cpp $) + nwflaim_enable_classic_nici(flmcheckdb_tool) nwflaim_add_tool(flmrebuild_tool nwflmrebuild flaim flaim/util/rebuild.cpp $) + nwflaim_enable_classic_nici(flmrebuild_tool) nwflaim_add_tool(flmgigatest_tool nwflmgigatest flaim flaim/util/gigatest.cpp $) + nwflaim_enable_classic_nici(flmgigatest_tool) nwflaim_add_tool(flmview_tool nwflmview flaim flaim/util/viewblk.cpp flaim/util/view.cpp @@ -532,10 +545,12 @@ if(NWFLAIM_BUILD_TOOLS) flaim/util/viewmenu.cpp flaim/util/viewsrch.cpp $) + nwflaim_enable_classic_nici(flmview_tool) nwflaim_add_tool(flmdbshell_tool nwflmdbshell flaim flaim/util/dbshell.cpp flaim/util/flm_edit.cpp $) + nwflaim_enable_classic_nici(flmdbshell_tool) if(NWFLAIM_BUILD_XFLAIM) add_library(xflaim_util_objects OBJECT