Use header versions and install nw-prefixed tools
This commit is contained in:
committed by
Mario Fetka
parent
c9ccdc8983
commit
e0b14faf0d
116
CMakeLists.txt
116
CMakeLists.txt
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user