diff options
author | Allen Winter <allen.winter@kdab.com> | 2022-06-07 13:29:41 -0400 |
---|---|---|
committer | Allen Winter <allen.winter@kdab.com> | 2022-06-07 13:29:41 -0400 |
commit | 98780805c4e1a520d42a0ad4046cd76f84c17909 (patch) | |
tree | 9a18264c7e789c130c0432f555bbfc45c0bb093a /cmake/modules | |
parent | 3396cf5a3d2a4a40292a76e758bc6f55cb567528 (diff) | |
download | libical-git-98780805c4e1a520d42a0ad4046cd76f84c17909.tar.gz |
buildsystem - full cmake-lint coverage
Diffstat (limited to 'cmake/modules')
-rw-r--r-- | cmake/modules/FindBerkeleyDB.cmake | 186 |
1 files changed, 93 insertions, 93 deletions
diff --git a/cmake/modules/FindBerkeleyDB.cmake b/cmake/modules/FindBerkeleyDB.cmake index 8a818465..63ffe9dc 100644 --- a/cmake/modules/FindBerkeleyDB.cmake +++ b/cmake/modules/FindBerkeleyDB.cmake @@ -26,64 +26,63 @@ endif() # Allow user to pass a path instead of guessing if(BerkeleyDB_ROOT_DIR) - set(_BERKELEYDB_PATHS "${BerkeleyDB_ROOT_DIR}") + set(_BERKELEYDB_PATHS "${BerkeleyDB_ROOT_DIR}") elseif(CMAKE_SYSTEM_NAME MATCHES ".*[wW]indows.*") - # MATCHES is used to work on any devies with windows in the name - # Shameless copy-paste from FindOpenSSL.cmake v3.8 - file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles) - list(APPEND _BERKELEYDB_PATHS "${_programfiles}") - - # There's actually production release and version numbers in the file path. - # For example, if they're on v6.2.32: C:/Program Files/Oracle/Berkeley DB 12cR1 6.2.32/ - # But this still works to find it, so I'm guessing it can accept partial path matches. - - foreach(_TARGET_BERKELEYDB_PATH "Oracle/Berkeley DB" "Berkeley DB") - list(APPEND _BERKELEYDB_PATHS - "${_programfiles}/${_TARGET_BERKELEYDB_PATH}" - "C:/Program Files (x86)/${_TARGET_BERKELEYDB_PATH}" - "C:/Program Files/${_TARGET_BERKELEYDB_PATH}" - "C:/${_TARGET_BERKELEYDB_PATH}" - ) - endforeach() + # MATCHES is used to work on any devies with windows in the name + # Shameless copy-paste from FindOpenSSL.cmake v3.8 + file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles) + list(APPEND _BERKELEYDB_PATHS "${_programfiles}") + + # There's actually production release and version numbers in the file path. + # For example, if they're on v6.2.32: C:/Program Files/Oracle/Berkeley DB 12cR1 6.2.32/ + # But this still works to find it, so I'm guessing it can accept partial path matches. + + foreach(_target_berkeleydb_path "Oracle/Berkeley DB" "Berkeley DB") + list(APPEND _BERKELEYDB_PATHS + "${_programfiles}/${_target_berkeleydb_path}" + "C:/Program Files (x86)/${_target_berkeleydb_path}" + "C:/Program Files/${_target_berkeleydb_path}" + "C:/${_target_berkeleydb_path}" + ) + endforeach() else() - # Paths for anything other than Windows - # Cellar/berkeley-db is for macOS from homebrew installation - list(APPEND _BERKELEYDB_PATHS - "/usr" - "/usr/local" - "/usr/local/Cellar/berkeley-db" - "/opt" - "/opt/local" - ) + # Paths for anything other than Windows + # Cellar/berkeley-db is for macOS from homebrew installation + list(APPEND _BERKELEYDB_PATHS + "/usr" + "/usr/local" + "/usr/local/Cellar/berkeley-db" + "/opt" + "/opt/local" + ) endif() # Find includes path find_path(BerkeleyDB_INCLUDE_DIRS - NAMES "db.h" - HINTS ${_BERKELEYDB_PATHS} - PATH_SUFFIXES "include" "includes" + NAMES "db.h" + HINTS ${_BERKELEYDB_PATHS} + PATH_SUFFIXES "include" "includes" ) # Checks if the version file exists, save the version file to a var, and fail if there's no version file if(BerkeleyDB_INCLUDE_DIRS) - # Read the version file db.h into a variable - file(READ "${BerkeleyDB_INCLUDE_DIRS}/db.h" _BERKELEYDB_DB_HEADER) - # Parse the DB version into variables to be used in the lib names - string(REGEX REPLACE ".*DB_VERSION_MAJOR ([0-9]+).*" "\\1" BerkeleyDB_VERSION_MAJOR "${_BERKELEYDB_DB_HEADER}") - string(REGEX REPLACE ".*DB_VERSION_MINOR ([0-9]+).*" "\\1" BerkeleyDB_VERSION_MINOR "${_BERKELEYDB_DB_HEADER}") - # Patch version example on non-crypto installs: x.x.xNC - string(REGEX REPLACE ".*DB_VERSION_PATCH ([0-9]+(NC)?).*" "\\1" BerkeleyDB_VERSION_PATCH "${_BERKELEYDB_DB_HEADER}") + # Read the version file db.h into a variable + file(READ "${BerkeleyDB_INCLUDE_DIRS}/db.h" _BERKELEYDB_DB_HEADER) + # Parse the DB version into variables to be used in the lib names + string(REGEX REPLACE ".*DB_VERSION_MAJOR ([0-9]+).*" "\\1" BerkeleyDB_VERSION_MAJOR "${_BERKELEYDB_DB_HEADER}") + string(REGEX REPLACE ".*DB_VERSION_MINOR ([0-9]+).*" "\\1" BerkeleyDB_VERSION_MINOR "${_BERKELEYDB_DB_HEADER}") + # Patch version example on non-crypto installs: x.x.xNC + string(REGEX REPLACE ".*DB_VERSION_PATCH ([0-9]+(NC)?).*" "\\1" BerkeleyDB_VERSION_PATCH "${_BERKELEYDB_DB_HEADER}") else() - if(BerkeleyDB_FIND_REQUIRED) - # If the find_package(BerkeleyDB REQUIRED) was used, fail since we couldn't find the header - message(FATAL_ERROR "Failed to find Berkeley DB's header file \"db.h\"! Try setting \"BerkeleyDB_ROOT_DIR\" when initiating Cmake.") - #elseif(NOT BerkeleyDB_FIND_QUIETLY) - # message(WARNING "Failed to find Berkeley DB's header file \"db.h\"! Try setting \"BerkeleyDB_ROOT_DIR\" when initiating Cmake.") - endif() - # Set some garbage values to the versions since we didn't find a file to read - set(BerkeleyDB_VERSION_MAJOR "0") - set(BerkeleyDB_VERSION_MINOR "0") - set(BerkeleyDB_VERSION_PATCH "0") + if(BerkeleyDB_FIND_REQUIRED) + # If the find_package(BerkeleyDB REQUIRED) was used, fail since we couldn't find the header + message(FATAL_ERROR + "Failed to find Berkeley DB's header file \"db.h\"! Try setting \"BerkeleyDB_ROOT_DIR\" when initiating Cmake.") + endif() + # Set some garbage values to the versions since we didn't find a file to read + set(BerkeleyDB_VERSION_MAJOR "0") + set(BerkeleyDB_VERSION_MINOR "0") + set(BerkeleyDB_VERSION_PATCH "0") endif() # The actual returned/output version variable (the others can be used if needed) @@ -91,33 +90,34 @@ set(BerkeleyDB_VERSION "${BerkeleyDB_VERSION_MAJOR}.${BerkeleyDB_VERSION_MINOR}. set(BerkeleyDB_LIBRARIES "") # Finds the target library for berkeley db, since they all follow the same naming conventions -macro(findpackage_berkeleydb_get_lib _BERKELEYDB_OUTPUT_VARNAME _TARGET_BERKELEYDB_LIB) - # Different systems sometimes have a version in the lib name... - # and some have a dash or underscore before the versions. - # CMake recommends to put unversioned names before versioned names - find_library(${_BERKELEYDB_OUTPUT_VARNAME} - NAMES - "${_TARGET_BERKELEYDB_LIB}" - "lib${_TARGET_BERKELEYDB_LIB}" - "lib${_TARGET_BERKELEYDB_LIB}${BerkeleyDB_VERSION_MAJOR}.${BerkeleyDB_VERSION_MINOR}" - "lib${_TARGET_BERKELEYDB_LIB}-${BerkeleyDB_VERSION_MAJOR}.${BerkeleyDB_VERSION_MINOR}" - "lib${_TARGET_BERKELEYDB_LIB}_${BerkeleyDB_VERSION_MAJOR}.${BerkeleyDB_VERSION_MINOR}" - "lib${_TARGET_BERKELEYDB_LIB}${BerkeleyDB_VERSION_MAJOR}${BerkeleyDB_VERSION_MINOR}" - "lib${_TARGET_BERKELEYDB_LIB}-${BerkeleyDB_VERSION_MAJOR}${BerkeleyDB_VERSION_MINOR}" - "lib${_TARGET_BERKELEYDB_LIB}_${BerkeleyDB_VERSION_MAJOR}${BerkeleyDB_VERSION_MINOR}" - "lib${_TARGET_BERKELEYDB_LIB}${BerkeleyDB_VERSION_MAJOR}" - "lib${_TARGET_BERKELEYDB_LIB}-${BerkeleyDB_VERSION_MAJOR}" - "lib${_TARGET_BERKELEYDB_LIB}_${BerkeleyDB_VERSION_MAJOR}" - HINTS ${_BERKELEYDB_PATHS} - PATH_SUFFIXES "lib" "lib64" "libs" "libs64" - ) - # If the library was found, add it to our list of libraries - if(${_BERKELEYDB_OUTPUT_VARNAME}) - # If found, append to our libraries variable - # The ${{}} is because the first expands to target the real variable, the second expands the variable's contents... - # and the real variable's contents is the path to the lib. Thus, it appends the path of the lib to BerkeleyDB_LIBRARIES. - list(APPEND BerkeleyDB_LIBRARIES "${${_BERKELEYDB_OUTPUT_VARNAME}}") - endif() +macro(findpackage_berkeleydb_get_lib _berkeleydb_output_varname _target_berkeleydb_lib) + # Different systems sometimes have a version in the lib name... + # and some have a dash or underscore before the versions. + # CMake recommends to put unversioned names before versioned names + find_library(${_berkeleydb_output_varname} + NAMES + "${_target_berkeleydb_lib}" + "lib${_target_berkeleydb_lib}" + "lib${_target_berkeleydb_lib}${BerkeleyDB_VERSION_MAJOR}.${BerkeleyDB_VERSION_MINOR}" + "lib${_target_berkeleydb_lib}-${BerkeleyDB_VERSION_MAJOR}.${BerkeleyDB_VERSION_MINOR}" + "lib${_target_berkeleydb_lib}_${BerkeleyDB_VERSION_MAJOR}.${BerkeleyDB_VERSION_MINOR}" + "lib${_target_berkeleydb_lib}${BerkeleyDB_VERSION_MAJOR}${BerkeleyDB_VERSION_MINOR}" + "lib${_target_berkeleydb_lib}-${BerkeleyDB_VERSION_MAJOR}${BerkeleyDB_VERSION_MINOR}" + "lib${_target_berkeleydb_lib}_${BerkeleyDB_VERSION_MAJOR}${BerkeleyDB_VERSION_MINOR}" + "lib${_target_berkeleydb_lib}${BerkeleyDB_VERSION_MAJOR}" + "lib${_target_berkeleydb_lib}-${BerkeleyDB_VERSION_MAJOR}" + "lib${_target_berkeleydb_lib}_${BerkeleyDB_VERSION_MAJOR}" + HINTS ${_BERKELEYDB_PATHS} + PATH_SUFFIXES "lib" "lib64" "libs" "libs64" + ) + # If the library was found, add it to our list of libraries + if(${_berkeleydb_output_varname}) + # If found, append to our libraries variable + # The ${{}} is because the first expands to target the real variable, the second expands + # the variable's contents... and the real variable's contents is the path to the lib. Thus, + # it appends the path of the lib to BerkeleyDB_LIBRARIES. + list(APPEND BerkeleyDB_LIBRARIES "${${_berkeleydb_output_varname}}") + endif() endmacro() # Find and set the paths of the specific library to the variable @@ -132,37 +132,37 @@ findpackage_berkeleydb_get_lib(BerkeleyDB_Stl_LIBRARY "db_stl") include(FindPackageHandleStandardArgs) # Fails if required vars aren't found, or if the version doesn't meet specifications. find_package_handle_standard_args(BerkeleyDB - FOUND_VAR BerkeleyDB_FOUND - REQUIRED_VARS - BerkeleyDB_INCLUDE_DIRS - BerkeleyDB_LIBRARY - VERSION_VAR BerkeleyDB_VERSION + FOUND_VAR BerkeleyDB_FOUND + REQUIRED_VARS + BerkeleyDB_INCLUDE_DIRS + BerkeleyDB_LIBRARY + VERSION_VAR BerkeleyDB_VERSION ) # Create an imported lib for easy linking by external projects if(BerkeleyDB_FOUND AND BerkeleyDB_LIBRARIES AND NOT TARGET Oracle::BerkeleyDB) - add_library(Oracle::BerkeleyDB UNKNOWN IMPORTED) - set_target_properties(Oracle::BerkeleyDB PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${BerkeleyDB_INCLUDE_DIRS}" - IMPORTED_LOCATION "${BerkeleyDB_LIBRARY}" - INTERFACE_LINK_LIBRARIES "${BerkeleyDB_LIBRARIES}" - ) + add_library(Oracle::BerkeleyDB UNKNOWN IMPORTED) + set_target_properties(Oracle::BerkeleyDB PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${BerkeleyDB_INCLUDE_DIRS}" + IMPORTED_LOCATION "${BerkeleyDB_LIBRARY}" + INTERFACE_LINK_LIBRARIES "${BerkeleyDB_LIBRARIES}" + ) endif() # Only show the includes path and libraries in the GUI if they click "advanced". # Does nothing when using the CLI mark_as_advanced(FORCE - BerkeleyDB_INCLUDE_DIRS - BerkeleyDB_LIBRARIES - BerkeleyDB_LIBRARY - BerkeleyDB_Cxx_LIBRARY - BerkeleyDB_Sql_LIBRARY - BerkeleyDB_Stl_LIBRARY + BerkeleyDB_INCLUDE_DIRS + BerkeleyDB_LIBRARIES + BerkeleyDB_LIBRARY + BerkeleyDB_Cxx_LIBRARY + BerkeleyDB_Sql_LIBRARY + BerkeleyDB_Stl_LIBRARY ) include(FindPackageMessage) # A message that tells the user what includes/libs were found, and obeys the QUIET command. find_package_message(BerkeleyDB - "Found BerkeleyDB libraries: ${BerkeleyDB_LIBRARIES}" - "[${BerkeleyDB_LIBRARIES}[${BerkeleyDB_INCLUDE_DIRS}]]" + "Found BerkeleyDB libraries: ${BerkeleyDB_LIBRARIES}" + "[${BerkeleyDB_LIBRARIES}[${BerkeleyDB_INCLUDE_DIRS}]]" ) |