summaryrefslogtreecommitdiffstats
path: root/src/fluent-bit/plugins/filter_geoip2/libmaxminddb/CMakeLists.txt
blob: 2ed068af2106ff19efd816206c8b387bbef6a19a (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
93
94
95
96
97
98
99
100
101
project(maxminddb
  LANGUAGES C
)
set(MAXMINDDB_SOVERSION 0.0.7)

option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" OFF)
option(BUILD_TESTING "Build test programs" ON)

include(CheckTypeSize)
check_type_size("unsigned __int128" UINT128)
check_type_size("unsigned int __attribute__((mode(TI)))" UINT128_USING_MODE)
if(HAVE_UINT128)
  set(MMDB_UINT128_USING_MODE 0)
  set(MMDB_UINT128_IS_BYTE_ARRAY 0)
elseif(HAVE_UINT128_USING_MODE)
  set(MMDB_UINT128_USING_MODE 1)
  set(MMDB_UINT128_IS_BYTE_ARRAY 0)
else()
  set(MMDB_UINT128_USING_MODE 0)
  set(MMDB_UINT128_IS_BYTE_ARRAY 1)
endif()

include (TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)

if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()

configure_file(${PROJECT_SOURCE_DIR}/include/maxminddb_config.h.cmake.in 
               ${PROJECT_SOURCE_DIR}/include/maxminddb_config.h)

add_library(maxminddb STATIC
  src/maxminddb.c
  src/data-pool.c
)
add_library(maxminddb::maxminddb ALIAS maxminddb)

set_target_properties(maxminddb PROPERTIES VERSION ${MAXMINDDB_SOVERSION})

target_compile_definitions(maxminddb PUBLIC PACKAGE_VERSION="${PROJECT_VERSION}")

if(NOT IS_BIG_ENDIAN)
  target_compile_definitions(maxminddb PRIVATE MMDB_LITTLE_ENDIAN=1)
endif()

if(MSVC)
  target_compile_definitions(maxminddb PRIVATE _CRT_SECURE_NO_WARNINGS)
endif()

if(WIN32)
  target_link_libraries(maxminddb ws2_32)
endif()

set(CMAKE_SHARED_LIBRARY_PREFIX lib)
set(CMAKE_STATIC_LIBRARY_PREFIX lib)

set(MAXMINDB_INCLUDE_DIR
  .
  include
)



#
# NOTE: This function call was modified for Fluent Bit.
# The original first argument was the following:
#
# $<BUILD_INTERFACE:${MAXMINDB_INCLUDE_DIR}>
#
target_include_directories(maxminddb PUBLIC
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  $<INSTALL_INTERFACE:include>
)

set(MAXMINDB_HEADERS
  include/maxminddb.h
  include/maxminddb_config.h
)
set_target_properties(maxminddb PROPERTIES PUBLIC_HEADER "${MAXMINDB_HEADERS}")

#install(TARGETS maxminddb
#        EXPORT maxminddb
#        ARCHIVE DESTINATION lib
#        PUBLIC_HEADER DESTINATION include/
#)
#
## This is required to work with FetchContent
#install(EXPORT maxminddb
#        FILE maxminddb-config.cmake
#        NAMESPACE maxminddb::
#        DESTINATION lib/cmake/maxminddb)

# We always want to build mmdblookup
add_subdirectory(bin)

if (BUILD_TESTING)
  enable_testing()
  add_subdirectory(t)
endif()