File: FindBerkeleyDB.cmake

package info (click to toggle)
mapcache 1.4.1-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,892 kB
  • ctags: 2,572
  • sloc: ansic: 25,570; xml: 367; sh: 92; makefile: 66; python: 48
file content (87 lines) | stat: -rw-r--r-- 3,653 bytes parent folder | download | duplicates (6)
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
set(BERKELEYDB_FOUND TRUE)

# set the search path

if (WIN32)
    file(GLOB BERKELEYDB_SEARCH_PATH "C:/Program Files/Oracle/Berkeley DB*")
    if (NOT BERKELEYDB_SEARCH_PATH)
    file(GLOB BERKELEYDB_SEARCH_PATH "C:/Program Files (x86)/Oracle/Berkeley DB*")
    endif (NOT BERKELEYDB_SEARCH_PATH)
else (WIN32)
   file(GLOB BERKELEYDB_SEARCH_PATH "/usr/local/BerkeleyDB*")
   file(GLOB BERKELEYDB_INC_SEARCH_PATH "/usr/local/BerkeleyDB*/include")
   file(GLOB BERKELEYDB_LIB_SEARCH_PATH "/usr/local/BerkeleyDB*/lib")
endif (WIN32)

# search for header
find_path(BERKELEYDB_INCLUDE_DIR
          NAMES "db.h"
          HINTS ${BERKELEYDB_SEARCH_PATH}
          ${BERKELEYDB_INC_SEARCH_PATH}
          )

# header is found

if (BERKELEYDB_INCLUDE_DIR)

    # retrieve version information from the header
    file(READ "${BERKELEYDB_INCLUDE_DIR}/db.h" DB_H_FILE)

    string(REGEX REPLACE ".*#define[ \t]+DB_VERSION_STRING[ \t]+\"([^\"]+)\".*" "\\1" BERKELEYDB_VERSION       "${DB_H_FILE}")
    string(REGEX REPLACE ".*#define[ \t]+DB_VERSION_MAJOR[ \t]+([0-9]+).*"      "\\1" BERKELEYDB_VERSION_MAJOR "${DB_H_FILE}")
    string(REGEX REPLACE ".*#define[ \t]+DB_VERSION_MINOR[ \t]+([0-9]+).*"      "\\1" BERKELEYDB_VERSION_MINOR "${DB_H_FILE}")
    string(REGEX REPLACE ".*#define[ \t]+DB_VERSION_PATCH[ \t]+([0-9]+).*"      "\\1" BERKELEYDB_VERSION_PATCH "${DB_H_FILE}")

    # search for library
    if (WIN32)
        file(GLOB BERKELEYDB_LIBRARIES
             "${DBROOTDIR}/lib/libdb${BERKELEYDB_VERSION_MAJOR}${BERKELEYDB_VERSION_MINOR}.lib"
             "${BERKELEYDB_SEARCH_PATH}/lib/libdb${BERKELEYDB_VERSION_MAJOR}${BERKELEYDB_VERSION_MINOR}.lib")

    else (WIN32)
        find_library(BERKELEYDB_LIBRARY
                     NAMES "db-${BERKELEYDB_VERSION_MAJOR}.${BERKELEYDB_VERSION_MINOR}" db
                     HINTS ${BERKELEYDB_SEARCH_PATH}
                           ${BERKELEYDB_LIB_SEARCH_PATH}
                  )
    endif (WIN32)

endif (BERKELEYDB_INCLUDE_DIR)

# header is not found

if (NOT BERKELEYDB_INCLUDE_DIR OR NOT BERKELEYDB_LIBRARY)
   set(BERKELEYDB_FOUND_TMP FALSE)
else (NOT BERKELEYDB_INCLUDE_DIR OR NOT BERKELEYDB_LIBRARY)
   set(BERKELEYDB_FOUND_TMP TRUE)
endif (NOT BERKELEYDB_INCLUDE_DIR OR NOT BERKELEYDB_LIBRARY)

# check found version

if (BERKELEYDB_FIND_VERSION AND BERKELEYDB_FOUND_TMP)

    set(BERKELEYDB_FOUND_VERSION "${BERKELEYDB_VERSION_MAJOR}.${BERKELEYDB_VERSION_MINOR}.${BERKELEYDB_VERSION_PATCH}")

    if (BERKELEYDB_FIND_VERSION_EXACT)
        if (NOT ${BERKELEYDB_FOUND_VERSION} VERSION_EQUAL ${BERKELEYDB_FIND_VERSION})
           set(BERKELEYDB_FOUND_TMP FALSE)
        endif (NOT ${BERKELEYDB_FOUND_VERSION} VERSION_EQUAL ${BERKELEYDB_FIND_VERSION})
    else (BERKELEYDB_FIND_VERSION_EXACT)
        if (${BERKELEYDB_FOUND_VERSION} VERSION_LESS ${BERKELEYDB_FIND_VERSION})
           set(BERKELEYDB_FOUND_TMP FALSE)
        endif (${BERKELEYDB_FOUND_VERSION} VERSION_LESS ${BERKELEYDB_FIND_VERSION})
    endif (BERKELEYDB_FIND_VERSION_EXACT)

    if (NOT BERKELEYDB_FOUND_TMP)
       message(SEND_ERROR "Berkeley DB library found, but with wrong version v${BERKELEYDB_FIND_VERSION} (${BERKELEYDB_FOUND_VERSION} was found)")
       unset(BERKELEYDB_INCLUDE_DIR)
       unset(BERKELEYDB_LIBRARY)
    endif (NOT BERKELEYDB_FOUND_TMP)

endif (BERKELEYDB_FIND_VERSION AND BERKELEYDB_FOUND_TMP)

set(BERKELEYDB_INCLUDE_DIRS ${BERKELEYDB_INCLUDE_DIR})
set(BERKELEYDB_LIBRARIES ${BERKELEYDB_LIBRARY})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(BERKELEYDB DEFAULT_MSG BERKELEYDB_LIBRARY BERKELEYDB_INCLUDE_DIR)
mark_as_advanced(BERKELEYDB_LIBRARY BERKELEYDB_INCLUDE_DIR)