mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
4.9 KiB
159 lines
4.9 KiB
# Copyright (c) 2023-present The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or https://opensource.org/license/mit/.
|
|
|
|
#[=======================================================================[
|
|
FindBerkeleyDB
|
|
--------------
|
|
|
|
Finds the Berkeley DB headers and library.
|
|
|
|
Imported Targets
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module provides imported target ``BerkeleyDB::BerkeleyDB``, if
|
|
Berkeley DB has been found.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module defines the following variables:
|
|
|
|
``BerkeleyDB_FOUND``
|
|
"True" if Berkeley DB found.
|
|
|
|
``BerkeleyDB_VERSION``
|
|
The MAJOR.MINOR version of Berkeley DB found.
|
|
|
|
#]=======================================================================]
|
|
|
|
set(_BerkeleyDB_homebrew_prefix)
|
|
if(CMAKE_HOST_APPLE)
|
|
find_program(HOMEBREW_EXECUTABLE brew)
|
|
if(HOMEBREW_EXECUTABLE)
|
|
# The Homebrew package manager installs the berkeley-db* packages as
|
|
# "keg-only", which means they are not symlinked into the default prefix.
|
|
# To find such a package, the find_path() and find_library() commands
|
|
# need additional path hints that are computed by Homebrew itself.
|
|
execute_process(
|
|
COMMAND ${HOMEBREW_EXECUTABLE} --prefix berkeley-db@5.3
|
|
OUTPUT_VARIABLE _BerkeleyDB_homebrew_prefix
|
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
find_path(
|
|
BerkeleyDB_INCLUDE_DIR
|
|
NAMES db.h
|
|
HINTS ${_BerkeleyDB_homebrew_prefix}/include
|
|
PATH_SUFFIXES
|
|
4.8
|
|
48
|
|
db4.8
|
|
4
|
|
db4
|
|
5.3
|
|
db5.3
|
|
5
|
|
db5
|
|
)
|
|
mark_as_advanced(BerkeleyDB_INCLUDE_DIR)
|
|
unset(_BerkeleyDB_homebrew_prefix)
|
|
|
|
if(NOT BerkeleyDB_LIBRARY)
|
|
if(VCPKG_TARGET_TRIPLET)
|
|
# The vcpkg package manager installs the berkeleydb package with the same name
|
|
# of release and debug libraries. Therefore, the default search paths set by
|
|
# vcpkg's toolchain file cannot be used to search libraries as the debug one
|
|
# will always be found.
|
|
set(CMAKE_FIND_USE_CMAKE_PATH FALSE)
|
|
endif()
|
|
|
|
get_filename_component(_BerkeleyDB_lib_hint "${BerkeleyDB_INCLUDE_DIR}" DIRECTORY)
|
|
|
|
find_library(
|
|
BerkeleyDB_LIBRARY_RELEASE
|
|
NAMES db48 db53 db NAMES_PER_DIR
|
|
HINTS ${_BerkeleyDB_lib_hint}
|
|
PATH_SUFFIXES lib
|
|
)
|
|
mark_as_advanced(BerkeleyDB_LIBRARY_RELEASE)
|
|
|
|
find_library(
|
|
BerkeleyDB_LIBRARY_DEBUG
|
|
NAMES db48 db53 db NAMES_PER_DIR
|
|
HINTS ${_BerkeleyDB_lib_hint}
|
|
PATH_SUFFIXES debug/lib
|
|
)
|
|
mark_as_advanced(BerkeleyDB_LIBRARY_DEBUG)
|
|
|
|
unset(_BerkeleyDB_lib_hint)
|
|
unset(CMAKE_FIND_USE_CMAKE_PATH)
|
|
|
|
include(SelectLibraryConfigurations)
|
|
select_library_configurations(BerkeleyDB)
|
|
# The select_library_configurations() command sets BerkeleyDB_FOUND, but we
|
|
# want the one from the find_package_handle_standard_args() command below.
|
|
unset(BerkeleyDB_FOUND)
|
|
endif()
|
|
|
|
if(BerkeleyDB_INCLUDE_DIR)
|
|
file(STRINGS "${BerkeleyDB_INCLUDE_DIR}/db.h" _BerkeleyDB_version_strings
|
|
REGEX "^#define[\t ]+DB_VERSION_(MAJOR|MINOR|PATCH)[ \t]+[0-9]+.*"
|
|
)
|
|
string(REGEX REPLACE ".*#define[\t ]+DB_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1"
|
|
_BerkeleyDB_version_major "${_BerkeleyDB_version_strings}"
|
|
)
|
|
string(REGEX REPLACE ".*#define[\t ]+DB_VERSION_MINOR[ \t]+([0-9]+).*" "\\1"
|
|
_BerkeleyDB_version_minor "${_BerkeleyDB_version_strings}"
|
|
)
|
|
string(REGEX REPLACE ".*#define[\t ]+DB_VERSION_PATCH[ \t]+([0-9]+).*" "\\1"
|
|
_BerkeleyDB_version_patch "${_BerkeleyDB_version_strings}"
|
|
)
|
|
unset(_BerkeleyDB_version_strings)
|
|
# The MAJOR.MINOR.PATCH version will be logged in the following find_package_handle_standard_args() command.
|
|
set(_BerkeleyDB_full_version
|
|
${_BerkeleyDB_version_major}.${_BerkeleyDB_version_minor}.${_BerkeleyDB_version_patch}
|
|
)
|
|
set(BerkeleyDB_VERSION ${_BerkeleyDB_version_major}.${_BerkeleyDB_version_minor})
|
|
unset(_BerkeleyDB_version_major)
|
|
unset(_BerkeleyDB_version_minor)
|
|
unset(_BerkeleyDB_version_patch)
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(
|
|
BerkeleyDB
|
|
REQUIRED_VARS BerkeleyDB_LIBRARY BerkeleyDB_INCLUDE_DIR
|
|
VERSION_VAR _BerkeleyDB_full_version
|
|
)
|
|
unset(_BerkeleyDB_full_version)
|
|
|
|
if(BerkeleyDB_FOUND AND NOT TARGET BerkeleyDB::BerkeleyDB)
|
|
add_library(BerkeleyDB::BerkeleyDB UNKNOWN IMPORTED)
|
|
set_target_properties(
|
|
BerkeleyDB::BerkeleyDB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${BerkeleyDB_INCLUDE_DIR}"
|
|
)
|
|
if(BerkeleyDB_LIBRARY_RELEASE)
|
|
set_property(
|
|
TARGET BerkeleyDB::BerkeleyDB
|
|
APPEND
|
|
PROPERTY IMPORTED_CONFIGURATIONS RELEASE
|
|
)
|
|
set_target_properties(
|
|
BerkeleyDB::BerkeleyDB PROPERTIES IMPORTED_LOCATION_RELEASE "${BerkeleyDB_LIBRARY_RELEASE}"
|
|
)
|
|
endif()
|
|
if(BerkeleyDB_LIBRARY_DEBUG)
|
|
set_property(
|
|
TARGET BerkeleyDB::BerkeleyDB
|
|
APPEND
|
|
PROPERTY IMPORTED_CONFIGURATIONS DEBUG
|
|
)
|
|
set_target_properties(
|
|
BerkeleyDB::BerkeleyDB PROPERTIES IMPORTED_LOCATION_DEBUG "${BerkeleyDB_LIBRARY_DEBUG}"
|
|
)
|
|
endif()
|
|
endif()
|