1
0
mirror of https://github.com/rtbrick/bngblaster.git synced 2024-05-06 15:54:57 +00:00
rtbrick-bngblaster/CMakeLists.txt
Istvan Ruzman e579504693 DO NOT set CMAKE_INSTALL_PREFIX unconditionally
The CMakeLists.txt set the CMAKE_INSTALL_PREFIX Parameter forcefully to
"/usr". This breaks any usage of the cmake DESTDIR parameter or similar
attempts to change the install directory via environment or command line
parameters.

This patch will hide the setting of CMAKE_INSTALL_PREFIX behind th
CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT flag to make the currently
forced "/usr" install directory in the project default value, but allow
users to overwrite the variable.

CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT is introduced in cmake 3.7.1
and since already cmake 3.10 is required, this change should not be
breaking in any way.
2021-10-06 16:28:14 +02:00

85 lines
2.6 KiB
CMake

# BNG Blaster
#
# For Debug Build Try below command
#cmake -DCMAKE_BUILD_TYPE=Debug .
cmake_minimum_required (VERSION 3.10)
project(bngblaster LANGUAGES C VERSION 0.0.0)
option(BNGBLASTER_TESTS "Build unit tests (requires cmocka)" OFF)
option(BNGBLASTER_NETMAP "Build with netmap support" OFF)
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in"
"${CMAKE_CURRENT_SOURCE_DIR}/src/config.h")
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
message("Debug Build")
set(CMAKE_BUILD_TYPE Debug)
add_definitions(-DBBL_DEBUG)
else()
message("Release Build")
set(CMAKE_BUILD_TYPE Release)
endif()
FILE(GLOB BBL_SOURCES src/*.c)
list(SORT BBL_SOURCES)
# Deterministic randomness for symbol name creation
foreach(_file ${BBL_SOURCES})
file(SHA1 ${_file} checksum)
string(SUBSTRING ${checksum} 0 8 checksum)
set_property(SOURCE ${_file} APPEND_STRING PROPERTY COMPILE_FLAGS "-frandom-seed=0x${checksum}")
endforeach()
add_executable(bngblaster ${BBL_SOURCES})
# libdict will be statically linked
find_library(libdict NAMES libdict.a REQUIRED)
set(CURSES_NEED_NCURSES TRUE)
include(FindCurses)
target_link_libraries(bngblaster ${CURSES_LIBRARIES} crypto jansson ${libdict} m)
set(PLATFORM_SPECIFIC_LIBS "-lpthread")
string(APPEND CMAKE_C_FLAGS "-pthread")
# add experimental netmap support
if(BNGBLASTER_NETMAP)
add_definitions(-DBNGBLASTER_NETMAP)
target_link_libraries(bngblaster netmap)
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0)
target_compile_options(bngblaster PUBLIC "-ffile-prefix-map=${CMAKE_SOURCE_DIR}=.")
endif()
target_compile_options(bngblaster PRIVATE -Werror -Wall -Wextra -m64 -mtune=generic)
set_property(TARGET bngblaster PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
# Build tests only if required
if(BNGBLASTER_TESTS)
message("Build Tests")
enable_testing()
add_subdirectory(test)
endif()
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE)
endif()
install(TARGETS bngblaster DESTINATION sbin)
install(PROGRAMS bngblaster-cli DESTINATION sbin)
set(CPACK_GENERATOR "DEB")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libssl1.1, libncurses5, libjansson4")
set(CPACK_DEBIAN_LIB_PACKAGE_NAME "bngblaster")
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "RtBrick BNG Blaster")
set(CPACK_PACKAGE_CONTACT "RtBrick <bngblaster@rtbrick.com>")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/rtbrick/bngblaster")
if (NOT DEFINED BNGBLASTER_VERSION)
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
else()
set(CPACK_PACKAGE_VERSION ${BNGBLASTER_VERSION})
endif()
include(CPack)