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