• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/odhcpd/CMakeLists.txt

  1 cmake_minimum_required(VERSION 3.13)
  2 cmake_policy(SET CMP0015 NEW)
  3 
  4 
  5 # Project Definition
  6 project(odhcpd LANGUAGES C)
  7 add_executable(${PROJECT_NAME})
  8 target_sources(${PROJECT_NAME} PRIVATE
  9         src/odhcpd.c
 10         src/config.c
 11         src/dhcpv6.c
 12         src/dhcpv6-ia.c
 13         src/dhcpv6-pxe.c
 14         src/ndp.c
 15         src/netlink.c
 16         src/router.c
 17 )
 18 
 19 
 20 # Compiler Options
 21 set_target_properties(${PROJECT_NAME} PROPERTIES C_STANDARD 11)
 22 target_compile_definitions(${PROJECT_NAME} PRIVATE _GNU_SOURCE)
 23 target_compile_options(${PROJECT_NAME} PRIVATE -g3)
 24 target_compile_options(${PROJECT_NAME} PRIVATE -Os)
 25 target_compile_options(${PROJECT_NAME} PRIVATE -Wall)
 26 target_compile_options(${PROJECT_NAME} PRIVATE -Werror)
 27 target_compile_options(${PROJECT_NAME} PRIVATE -Wextra)
 28 target_compile_options(${PROJECT_NAME} PRIVATE -Werror=implicit-function-declaration)
 29 target_compile_options(${PROJECT_NAME} PRIVATE -Wformat)
 30 target_compile_options(${PROJECT_NAME} PRIVATE -Werror=format-security)
 31 target_compile_options(${PROJECT_NAME} PRIVATE -Werror=format-nonliteral)
 32 target_compile_options(${PROJECT_NAME} PRIVATE -Wno-unused-parameter)
 33 target_compile_options(${PROJECT_NAME} PRIVATE -Wmissing-declarations)
 34 
 35 
 36 # Libraries
 37 target_link_libraries(${PROJECT_NAME} PRIVATE resolv)
 38 
 39 find_path(uci_include_dir uci.h)
 40 target_include_directories(${PROJECT_NAME} PRIVATE ${uci_include_dir})
 41 find_library(libuci uci)
 42 target_link_libraries(${PROJECT_NAME} PRIVATE ${libuci})
 43 
 44 find_path(ubox_include_dir uloop.h PATH_SUFFIXES libubox)
 45 target_include_directories(${PROJECT_NAME} PRIVATE ${ubox_include_dir})
 46 find_library(libubox ubox)
 47 target_link_libraries(${PROJECT_NAME} PRIVATE ${libubox})
 48 
 49 find_path(libnl-tiny_include_dir netlink-generic.h PATH_SUFFIXES libnl-tiny)
 50 target_include_directories(${PROJECT_NAME} PRIVATE ${libnl-tiny_include_dir})
 51 find_library(libnl nl-tiny)
 52 target_link_libraries(${PROJECT_NAME} PRIVATE ${libnl})
 53 
 54 find_path(json_include_dir json.h PATH_SUFFIXES json-c)
 55 target_include_directories(${PROJECT_NAME} PRIVATE ${json_include_dir})
 56 find_library(libjson json-c)
 57 target_link_libraries(${PROJECT_NAME} PRIVATE ${libjson})
 58 
 59 
 60 # Optional Features
 61 if (${EXT_CER_ID})
 62         target_compile_definitions(${PROJECT_NAME} PRIVATE EXT_CER_ID=${EXT_CER_ID})
 63 endif(${EXT_CER_ID})
 64 
 65 if(${UBUS})
 66         target_compile_definitions(${PROJECT_NAME} PRIVATE WITH_UBUS)
 67         target_sources(${PROJECT_NAME} PRIVATE src/ubus.c)
 68         find_path(ubus_include_dir libubus.h)
 69         target_include_directories(${PROJECT_NAME} PRIVATE ${ubus_include_dir})
 70         find_library(libubus ubus)
 71         target_link_libraries(${PROJECT_NAME} PRIVATE ${libubus})
 72 endif(${UBUS})
 73 
 74 if(${DHCPV4_SUPPORT})
 75         target_compile_definitions(${PROJECT_NAME} PRIVATE DHCPV4_SUPPORT)
 76         target_sources(${PROJECT_NAME} PRIVATE src/dhcpv4.c)
 77 endif(${DHCPV4_SUPPORT})
 78 
 79 
 80 # Installation
 81 install(TARGETS ${PROJECT_NAME} DESTINATION sbin/)
 82 
 83 
 84 # Packaging Information
 85 set(CPACK_PACKAGE_VERSION "1")
 86 set(CPACK_PACKAGE_CONTACT "Steven Barth <steven@midlink.org>")
 87 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}")
 88 set(CPACK_GENERATOR "DEB;RPM;STGZ")
 89 set(CPACK_STRIP_FILES true)
 90 set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
 91 set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}")
 92 include(CPack)

This page was automatically generated by LXR 0.3.1.  •  OpenWrt