igmpgen/CMakeLists.txt
Glenn Y. Rolland 4fead7bfcb
All checks were successful
continuous-integration/drone/push Build is passing
fix: add version number for dependencies
2023-12-27 14:57:06 +01:00

84 lines
2.6 KiB
CMake

cmake_minimum_required(VERSION 3.25)
# Set the project name and version
project(igmpgen VERSION 1.0)
# Specify the C standard
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED True)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb -Wall -Werror -D_GNU_SOURCE -pedantic")
# Add the executable
add_executable(
igmpgen
src/main.c
src/usage.c
)
# Detect the net library
find_library(LIBNET_LIBRARY NAMES net libnet libnet1 REQUIRED)
message(STATUS "libnet detected as ${LIBNET_LIBRARY}")
# Add the directories where the compiler can find the libnet headers
target_include_directories(igmpgen PRIVATE /usr/include)
# Add the directories where the compiler can find the libnet libraries
target_link_directories(igmpgen PRIVATE /usr/lib)
# Link the executable to the libnet library
target_link_libraries(igmpgen ${LIBNET_LIBRARY})
# Installation instructions
install(TARGETS igmpgen DESTINATION bin)
# Install the man page
include(GNUInstallDirs)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/misc/)
file(
ARCHIVE_CREATE
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/misc/igmpgen.1.gz
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/misc/igmpgen.man.1
FORMAT raw
COMPRESSION GZip
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/misc/igmpgen.1.gz
TYPE MAN
)
# Include CPack for packaging
include(InstallRequiredSystemLibraries)
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
set(CPACK_PACKAGE_VERSION_MAJOR "${igmpgen_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${igmpgen_VERSION_MINOR}")
# CPack RPM specific settings
set(CPACK_RPM_FILE_NAME RPM-DEFAULT)
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
set(CPACK_RPM_PACKAGE_SUMMARY "IGMP Packet Generator")
set(CPACK_RPM_PACKAGE_NAME "igmpgen")
set(CPACK_RPM_PACKAGE_VERSION "${igmpgen_VERSION}")
set(CPACK_RPM_PACKAGE_RELEASE 1)
set(CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64")
set(CPACK_RPM_PACKAGE_GROUP "Network")
set(CPACK_RPM_PACKAGE_VENDOR "Your Company/Organization")
set(CPACK_RPM_PACKAGE_DESCRIPTION "A tool for generating IGMP packets.")
set(CPACK_RPM_PACKAGE_LICENSE "LGPL-3.0-or-later")
set(CPACK_RPM_PACKAGE_LICENSE "libnet (>= 1.3-1)")
# CPack DEB specific settings
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Glenn Y. Rolland <glenux@glenux.net>")
set(CPACK_DEBIAN_PACKAGE_NAME "igmpgen")
set(CPACK_DEBIAN_PACKAGE_VERSION "${igmpgen_VERSION}")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
set(CPACK_DEBIAN_PACKAGE_SECTION "net")
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "A tool for generating IGMP packets.")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libnet1 (>= 1.1.6)")
set(CPACK_GENERATOR "TGZ;RPM;DEB")
include(CPack)