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