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 ") 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)