Skip to content

Commit 6452175

Browse files
committed
Update CMakeLists.txt to build with current source files
- Add missing ipset_dns.c/h and ipset6_dns.c/h - Link pthreads properly via Threads::Threads - Generate config.h from cmake/config.h.in template - Check for __uint128_t at configure time - Enable COMPARE_WITH_COMMON and compiler warnings - Fix target name to 'iprange' (was 'iprange_git')
1 parent 97bcd44 commit 6452175

2 files changed

Lines changed: 72 additions & 27 deletions

File tree

CMakeLists.txt

Lines changed: 59 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,65 @@
1-
cmake_minimum_required(VERSION 3.3)
1+
cmake_minimum_required(VERSION 3.10)
22
project(iprange C)
33

4-
find_package (Threads)
4+
find_package(Threads REQUIRED)
55

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()
711

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)
2916

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+
)
3221

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)

cmake/config.h.in

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/* config.h.in — generated by CMake */
2+
3+
#cmakedefine HAVE_INTTYPES_H 1
4+
#cmakedefine HAVE_STDINT_H 1
5+
6+
/* gcc branch optimization */
7+
#ifdef __GNUC__
8+
#define likely(x) __builtin_expect(!!(x), 1)
9+
#define unlikely(x) __builtin_expect(!!(x), 0)
10+
#else
11+
#define likely(x) (x)
12+
#define unlikely(x) (x)
13+
#endif

0 commit comments

Comments
 (0)