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/statefiles.c 17 src/router.c 18 ) 19 20 21 # Compiler Options 22 set_target_properties(${PROJECT_NAME} PROPERTIES C_STANDARD 11) 23 target_compile_definitions(${PROJECT_NAME} PRIVATE _GNU_SOURCE) 24 target_compile_options(${PROJECT_NAME} PRIVATE -g3) 25 target_compile_options(${PROJECT_NAME} PRIVATE -Os) 26 target_compile_options(${PROJECT_NAME} PRIVATE -Wall) 27 target_compile_options(${PROJECT_NAME} PRIVATE -Werror) 28 target_compile_options(${PROJECT_NAME} PRIVATE -Wextra) 29 target_compile_options(${PROJECT_NAME} PRIVATE -Werror=implicit-function-declaration) 30 target_compile_options(${PROJECT_NAME} PRIVATE -Wformat) 31 target_compile_options(${PROJECT_NAME} PRIVATE -Werror=format-security) 32 target_compile_options(${PROJECT_NAME} PRIVATE -Werror=format-nonliteral) 33 target_compile_options(${PROJECT_NAME} PRIVATE -Wimplicit-fallthrough=5) 34 target_compile_options(${PROJECT_NAME} PRIVATE -Wno-unused-parameter) 35 target_compile_options(${PROJECT_NAME} PRIVATE -Wmissing-declarations) 36 37 38 # Libraries 39 target_link_libraries(${PROJECT_NAME} PRIVATE resolv) 40 41 find_path(uci_include_dir uci.h) 42 target_include_directories(${PROJECT_NAME} PRIVATE ${uci_include_dir}) 43 find_library(libuci uci) 44 target_link_libraries(${PROJECT_NAME} PRIVATE ${libuci}) 45 46 find_path(ubox_include_dir uloop.h PATH_SUFFIXES libubox) 47 target_include_directories(${PROJECT_NAME} PRIVATE ${ubox_include_dir}) 48 find_library(libubox ubox) 49 target_link_libraries(${PROJECT_NAME} PRIVATE ${libubox}) 50 51 find_path(libnl-tiny_include_dir netlink-generic.h PATH_SUFFIXES libnl-tiny) 52 target_include_directories(${PROJECT_NAME} PRIVATE ${libnl-tiny_include_dir}) 53 find_library(libnl nl-tiny) 54 target_link_libraries(${PROJECT_NAME} PRIVATE ${libnl}) 55 56 find_path(json_include_dir json.h PATH_SUFFIXES json-c) 57 target_include_directories(${PROJECT_NAME} PRIVATE ${json_include_dir}) 58 find_library(libjson json-c) 59 target_link_libraries(${PROJECT_NAME} PRIVATE ${libjson}) 60 61 62 # Optional Features 63 if(${UBUS}) 64 target_compile_definitions(${PROJECT_NAME} PRIVATE WITH_UBUS) 65 target_sources(${PROJECT_NAME} PRIVATE src/ubus.c) 66 find_path(ubus_include_dir libubus.h) 67 target_include_directories(${PROJECT_NAME} PRIVATE ${ubus_include_dir}) 68 find_library(libubus ubus) 69 target_link_libraries(${PROJECT_NAME} PRIVATE ${libubus}) 70 endif(${UBUS}) 71 72 if(${DHCPV4_SUPPORT}) 73 target_compile_definitions(${PROJECT_NAME} PRIVATE DHCPV4_SUPPORT) 74 target_sources(${PROJECT_NAME} PRIVATE src/dhcpv4.c) 75 endif(${DHCPV4_SUPPORT}) 76 77 78 # Installation 79 install(TARGETS ${PROJECT_NAME} DESTINATION sbin/) 80 81 82 # Packaging Information 83 set(CPACK_PACKAGE_VERSION "1") 84 set(CPACK_PACKAGE_CONTACT "Steven Barth <steven@midlink.org>") 85 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}") 86 set(CPACK_GENERATOR "DEB;RPM;STGZ") 87 set(CPACK_STRIP_FILES true) 88 set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}) 89 set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}") 90 include(CPack)
This page was automatically generated by LXR 0.3.1. • OpenWrt