Use header versions and install nw-prefixed tools

This commit is contained in:
OpenAI Build Bot
2026-06-05 14:37:36 +00:00
committed by Mario Fetka
parent c9ccdc8983
commit e0b14faf0d

View File

@@ -7,6 +7,7 @@ option(NWFLAIM_BUILD_SHARED "Build shared nwflaim libraries" ON)
option(NWFLAIM_BUILD_STATIC "Build static nwflaim libraries" OFF)
option(NWFLAIM_BUILD_SQL "Build SQL FLAIM library" ON)
option(NWFLAIM_BUILD_XFLAIM "Build XML FLAIM library" ON)
option(NWFLAIM_BUILD_TOOLS "Build installable FLAIM command line tools with nw-prefixed names" ON)
option(NWFLAIM_WITH_OPENSSL "Build FTK legacy OpenSSL/TLS helpers" ON)
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")
@@ -17,11 +18,11 @@ set(NWFLAIM_LIBRARY_PREFIX nw CACHE STRING "Library output prefix used to avoid
# 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_VERSION 4.62 CACHE STRING "FLAIM library version from flaim/src/flaim.h")
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_VERSION 6.00 CACHE STRING "SQL FLAIM library version from sql/src/flaimsql.h")
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_VERSION 5.12 CACHE STRING "XFLAIM library version from xflaim/src/xflaim.h")
set(NWFLAIM_XFLAIM_LIBRARY_SOVERSION 5 CACHE STRING "XFLAIM ABI version")
if(NOT NWFLAIM_BUILD_SHARED AND NOT NWFLAIM_BUILD_STATIC)
@@ -44,6 +45,9 @@ find_package(Threads REQUIRED)
find_library(NWFLAIM_RT_LIBRARY rt)
find_library(NWFLAIM_DL_LIBRARY dl)
find_package(Curses QUIET)
if(NWFLAIM_BUILD_TOOLS AND NOT CURSES_FOUND)
message(FATAL_ERROR "NWFLAIM_BUILD_TOOLS requires curses/ncurses")
endif()
set(_nwflaim_ssl_target "")
if(NWFLAIM_WITH_OPENSSL)
@@ -367,6 +371,46 @@ function(nwflaim_common_target target_name public_include_dir install_include_di
endif()
endfunction()
function(nwflaim_common_private_target target_name)
target_compile_features(${target_name} PRIVATE cxx_std_98)
target_compile_definitions(${target_name} PRIVATE ${_nwflaim_common_defs})
target_include_directories(${target_name}
PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/ftk/src"
"${CMAKE_CURRENT_SOURCE_DIR}/flaim/src"
"${CMAKE_CURRENT_SOURCE_DIR}/flaim/util"
"${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})
elseif(CURSES_INCLUDE_DIR)
target_include_directories(${target_name} PRIVATE ${CURSES_INCLUDE_DIR})
endif()
if(CURSES_LIBRARIES)
target_link_libraries(${target_name} PRIVATE ${CURSES_LIBRARIES})
endif()
if(NWFLAIM_RT_LIBRARY)
target_link_libraries(${target_name} PRIVATE "${NWFLAIM_RT_LIBRARY}")
endif()
if(NWFLAIM_DL_LIBRARY)
target_link_libraries(${target_name} PRIVATE "${NWFLAIM_DL_LIBRARY}")
endif()
endfunction()
function(nwflaim_add_tool target_name output_name library_target)
add_executable(${target_name} ${ARGN})
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME "${output_name}")
nwflaim_common_private_target(${target_name})
target_link_libraries(${target_name} PRIVATE ${library_target})
install(TARGETS ${target_name} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endfunction()
function(nwflaim_add_library logical_name output_base public_include_dir install_include_dir library_version library_soversion)
if(NWFLAIM_BUILD_SHARED)
add_library(${logical_name} SHARED ${ARGN})
@@ -421,6 +465,72 @@ if(NWFLAIM_BUILD_XFLAIM)
endif()
endif()
if(NWFLAIM_BUILD_TOOLS)
add_library(flaim_util_objects OBJECT
flaim/util/flm_dlst.cpp
flaim/util/flm_lutl.cpp
flaim/util/sharutil.cpp)
nwflaim_common_private_target(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
$<TARGET_OBJECTS:flaim_util_objects>)
nwflaim_add_tool(flmrebuild_tool nwflmrebuild flaim
flaim/util/rebuild.cpp
$<TARGET_OBJECTS:flaim_util_objects>)
nwflaim_add_tool(flmgigatest_tool nwflmgigatest flaim
flaim/util/gigatest.cpp
$<TARGET_OBJECTS:flaim_util_objects>)
nwflaim_add_tool(flmview_tool nwflmview flaim
flaim/util/viewblk.cpp
flaim/util/view.cpp
flaim/util/viewdisp.cpp
flaim/util/viewedit.cpp
flaim/util/viewfhdr.cpp
flaim/util/viewlfil.cpp
flaim/util/viewlhdr.cpp
flaim/util/viewmenu.cpp
flaim/util/viewsrch.cpp
$<TARGET_OBJECTS:flaim_util_objects>)
nwflaim_add_tool(flmdbshell_tool nwflmdbshell flaim
flaim/util/dbshell.cpp
flaim/util/flm_edit.cpp
$<TARGET_OBJECTS:flaim_util_objects>)
if(NWFLAIM_BUILD_XFLAIM)
add_library(xflaim_util_objects OBJECT
xflaim/util/flm_dlst.cpp
xflaim/util/flm_lutl.cpp
xflaim/util/sharutil.cpp)
nwflaim_common_private_target(xflaim_util_objects)
target_include_directories(xflaim_util_objects PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/xflaim/util")
nwflaim_add_tool(xflmcheckdb_tool nwxflmcheckdb xflaim
xflaim/util/checkdb.cpp
$<TARGET_OBJECTS:xflaim_util_objects>)
nwflaim_add_tool(xflmrebuild_tool nwxflmrebuild xflaim
xflaim/util/rebuild.cpp
$<TARGET_OBJECTS:xflaim_util_objects>)
nwflaim_add_tool(xflmview_tool nwxflmview xflaim
xflaim/util/viewblk.cpp
xflaim/util/view.cpp
xflaim/util/viewdisp.cpp
xflaim/util/viewedit.cpp
xflaim/util/viewhdr.cpp
xflaim/util/viewlfil.cpp
xflaim/util/viewmenu.cpp
xflaim/util/viewsrch.cpp
$<TARGET_OBJECTS:xflaim_util_objects>)
nwflaim_add_tool(xflmdbshell_tool nwxflmdbshell xflaim
xflaim/util/fdomedt.cpp
xflaim/util/fshell.cpp
xflaim/util/xshell.cpp
$<TARGET_OBJECTS:xflaim_util_objects>)
endif()
endif()
# Install public headers below nw-prefixed include directories so they do not
# conflict with any system or distro FLAIM headers.
set(NWFLAIM_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/nwflaim")