summaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindMaxMindDB.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/FindMaxMindDB.cmake')
-rw-r--r--cmake/modules/FindMaxMindDB.cmake75
1 files changed, 75 insertions, 0 deletions
diff --git a/cmake/modules/FindMaxMindDB.cmake b/cmake/modules/FindMaxMindDB.cmake
new file mode 100644
index 0000000..5de81a1
--- /dev/null
+++ b/cmake/modules/FindMaxMindDB.cmake
@@ -0,0 +1,75 @@
+#
+# - Try to find libmaxminddb.
+# Once done this will define
+# MAXMINDDB_FOUND - System has libmaxminddb
+# MAXMINDDB_INCLUDE_DIRS - The libmaxminddb include directories
+# MAXMINDDB_LIBRARIES - The libraries needed to use libmaxminddb
+# MAXMINDDB_DEFINITIONS - Compiler switches required for using libmaxminddb
+# MAXMINDDB_DLL_DIR - (Windows) Path to the MaxMindDB DLL.
+# MAXMINDDB_DLL - (Windows) Name of the MaxMindDB DLL.
+
+IF (MAXMINDDB_INCLUDE_DIRS)
+ # Already in cache, be silent
+ SET(MAXMINDDB_FIND_QUIETLY TRUE)
+ENDIF (MAXMINDDB_INCLUDE_DIRS)
+
+INCLUDE(FindWSWinLibs)
+FindWSWinLibs("libmaxminddb-.*" "MAXMINDDB_HINTS")
+
+IF (NOT USE_REPOSITORY)
+ find_package(PkgConfig)
+ pkg_check_modules(PC_LIBMAXMINDDB QUIET libmaxminddb)
+ set(MAXMINDDB_DEFINITIONS ${PC_LIBMAXMINDDB_CFLAGS_OTHER})
+endif()
+
+FIND_PATH(MAXMINDDB_INCLUDE_DIR maxminddb.h
+ HINTS
+ ${PC_LIBMAXMINDDB_INCLUDEDIR} ${PC_LIBMAXMINDDB_INCLUDE_DIRS}
+ "${MAXMINDDB_HINTS}/include"
+ PATH_SUFFIXES maxminddb
+)
+
+find_library(MAXMINDDB_LIBRARY
+ NAMES
+ maxminddb libmaxminddb libmaxminddb-0
+ HINTS
+ ${PC_LIBMAXMINDDB_LIBDIR} ${PC_LIBMAXMINDDB_LIBRARY_DIRS}
+ "${MAXMINDDB_HINTS}/lib"
+)
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set MAXMINDDB_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(MaxMindDB DEFAULT_MSG
+ MAXMINDDB_LIBRARY MAXMINDDB_INCLUDE_DIR)
+
+IF(MAXMINDDB_FOUND)
+ INCLUDE(CMakePushCheckState)
+ CMAKE_PUSH_CHECK_STATE()
+ SET(MAXMINDDB_LIBRARIES ${MAXMINDDB_LIBRARY} )
+ SET(MAXMINDDB_INCLUDE_DIRS ${MAXMINDDB_INCLUDE_DIR} )
+ INCLUDE(CheckFunctionExists)
+ SET(CMAKE_REQUIRED_INCLUDES ${MAXMINDDB_INCLUDE_DIRS})
+ SET(CMAKE_REQUIRED_LIBRARIES ${MAXMINDDB_LIBRARIES})
+ CMAKE_POP_CHECK_STATE()
+ if (WIN32)
+ set ( MAXMINDDB_DLL_DIR "${MAXMINDDB_HINTS}/bin"
+ CACHE PATH "Path to the MaxMindDB DLL"
+ )
+ file( GLOB _MAXMINDDB_dll RELATIVE "${MAXMINDDB_DLL_DIR}"
+ "${MAXMINDDB_DLL_DIR}/libmaxminddb*.dll"
+ )
+ set ( MAXMINDDB_DLL ${_MAXMINDDB_dll}
+ # We're storing filenames only. Should we use STRING instead?
+ CACHE FILEPATH "MaxMindDB DLL file name"
+ )
+ mark_as_advanced( MAXMINDDB_DLL_DIR MAXMINDDB_DLL )
+ endif()
+ELSE(MAXMINDDB_FOUND)
+ SET(MAXMINDDB_LIBRARIES )
+ SET(MAXMINDDB_INCLUDE_DIRS )
+ SET(MAXMINDDB_DLL_DIR )
+ SET(MAXMINDDB_DLL )
+ENDIF(MAXMINDDB_FOUND)
+
+MARK_AS_ADVANCED( MAXMINDDB_LIBRARIES MAXMINDDB_INCLUDE_DIRS )