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-shadow=compatible-local) 35 target_compile_options(${PROJECT_NAME} PRIVATE -Wno-unused-parameter) 36 target_compile_options(${PROJECT_NAME} PRIVATE -Wmissing-declarations) 37 target_compile_options(${PROJECT_NAME} PRIVATE -Wshadow=local) 38 39 40 # Libraries 41 target_link_libraries(${PROJECT_NAME} PRIVATE resolv) 42 43 find_path(uci_include_dir uci.h) 44 target_include_directories(${PROJECT_NAME} PRIVATE ${uci_include_dir}) 45 find_library(libuci uci) 46 target_link_libraries(${PROJECT_NAME} PRIVATE ${libuci}) 47 48 find_path(ubox_include_dir uloop.h PATH_SUFFIXES libubox) 49 target_include_directories(${PROJECT_NAME} PRIVATE ${ubox_include_dir}) 50 find_library(libubox ubox) 51 target_link_libraries(${PROJECT_NAME} PRIVATE ${libubox}) 52 53 find_path(libnl-tiny_include_dir netlink-generic.h PATH_SUFFIXES libnl-tiny) 54 target_include_directories(${PROJECT_NAME} PRIVATE ${libnl-tiny_include_dir}) 55 find_library(libnl nl-tiny) 56 target_link_libraries(${PROJECT_NAME} PRIVATE ${libnl}) 57 58 find_path(json_include_dir json.h PATH_SUFFIXES json-c) 59 target_include_directories(${PROJECT_NAME} PRIVATE ${json_include_dir}) 60 find_library(libjson json-c) 61 target_link_libraries(${PROJECT_NAME} PRIVATE ${libjson}) 62 63 64 # Optional Features 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