|
1 | | -cmake_minimum_required(VERSION 3.3) |
| 1 | +cmake_minimum_required(VERSION 3.10) |
2 | 2 | project(iprange C) |
3 | 3 |
|
4 | | -find_package (Threads) |
| 4 | +find_package(Threads REQUIRED) |
5 | 5 |
|
6 | | -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wformat-signedness -Werror=format-security") |
| 6 | +include(CheckTypeSize) |
| 7 | +check_type_size("__uint128_t" UINT128_SIZE LANGUAGE C) |
| 8 | +if(NOT HAVE_UINT128_SIZE) |
| 9 | + message(FATAL_ERROR "Compiler does not support __uint128_t, required for IPv6") |
| 10 | +endif() |
7 | 11 |
|
8 | | -set(SOURCE_FILES |
9 | | - src/iprange.c src/iprange.h src/iprange6.h src/iprange6_main.c |
10 | | - src/ipset.c src/ipset.h |
11 | | - src/ipset6.c src/ipset6.h |
12 | | - src/ipset6_binary.c src/ipset6_binary.h |
13 | | - src/ipset6_combine.c src/ipset6_common.c src/ipset6_copy.c |
14 | | - src/ipset6_diff.c src/ipset6_exclude.c |
15 | | - src/ipset6_load.c src/ipset6_load.h |
16 | | - src/ipset6_merge.c src/ipset6_optimize.c |
17 | | - src/ipset6_print.c src/ipset6_print.h |
18 | | - src/ipset_binary.c src/ipset_binary.h |
19 | | - src/ipset_combine.c src/ipset_combine.h |
20 | | - src/ipset_common.c src/ipset_common.h |
21 | | - src/ipset_copy.c src/ipset_copy.h |
22 | | - src/ipset_diff.c src/ipset_diff.h |
23 | | - src/ipset_exclude.c src/ipset_exclude.h |
24 | | - src/ipset_load.c src/ipset_load.h |
25 | | - src/ipset_merge.c src/ipset_merge.h |
26 | | - src/ipset_optimize.c src/ipset_optimize.h |
27 | | - src/ipset_print.c src/ipset_print.h |
28 | | - src/ipset_reduce.c src/ipset_reduce.h) |
| 12 | +# Generate config.h with the defines the source expects |
| 13 | +include(CheckIncludeFile) |
| 14 | +check_include_file(inttypes.h HAVE_INTTYPES_H) |
| 15 | +check_include_file(stdint.h HAVE_STDINT_H) |
29 | 16 |
|
30 | | -include_directories(AFTER ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src) |
31 | | -add_definitions("-DHAVE_CONFIG_H") |
| 17 | +configure_file( |
| 18 | + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.in |
| 19 | + ${CMAKE_CURRENT_BINARY_DIR}/config.h |
| 20 | +) |
32 | 21 |
|
33 | | -add_executable(iprange_git ${SOURCE_FILES}) |
| 22 | +set(SOURCES |
| 23 | + src/iprange.c |
| 24 | + src/iprange6_main.c |
| 25 | + src/ipset.c |
| 26 | + src/ipset6.c |
| 27 | + src/ipset6_binary.c |
| 28 | + src/ipset6_combine.c |
| 29 | + src/ipset6_common.c |
| 30 | + src/ipset6_copy.c |
| 31 | + src/ipset6_diff.c |
| 32 | + src/ipset6_dns.c |
| 33 | + src/ipset6_exclude.c |
| 34 | + src/ipset6_load.c |
| 35 | + src/ipset6_merge.c |
| 36 | + src/ipset6_optimize.c |
| 37 | + src/ipset6_print.c |
| 38 | + src/ipset_binary.c |
| 39 | + src/ipset_combine.c |
| 40 | + src/ipset_common.c |
| 41 | + src/ipset_copy.c |
| 42 | + src/ipset_diff.c |
| 43 | + src/ipset_dns.c |
| 44 | + src/ipset_exclude.c |
| 45 | + src/ipset_load.c |
| 46 | + src/ipset_merge.c |
| 47 | + src/ipset_optimize.c |
| 48 | + src/ipset_print.c |
| 49 | + src/ipset_reduce.c |
| 50 | +) |
| 51 | + |
| 52 | +add_executable(iprange ${SOURCES}) |
| 53 | +target_include_directories(iprange PRIVATE |
| 54 | + ${CMAKE_CURRENT_BINARY_DIR} |
| 55 | + ${CMAKE_CURRENT_SOURCE_DIR}/src |
| 56 | +) |
| 57 | +target_compile_definitions(iprange PRIVATE |
| 58 | + HAVE_CONFIG_H |
| 59 | + COMPARE_WITH_COMMON=1 |
| 60 | + VERSION="${PROJECT_VERSION}" |
| 61 | +) |
| 62 | +target_compile_options(iprange PRIVATE |
| 63 | + -Wall -Wextra -Wformat-signedness -Werror=format-security |
| 64 | +) |
| 65 | +target_link_libraries(iprange Threads::Threads) |
0 commit comments