qtbase/cmake/FindMySQL.cmake
Christian Ehrlicher 5e8feb69df CMake/sql find modules: read foo_ROOT env var if available
Even though we set foo_ROOT in the provisioning scripts and CMake is
picking it up as the base dir, we should also use it as CMake variable
so we can look in other directories below foo_ROOT.

Change-Id: I193d8ff1c216a669162569d71891c3eb7b9b030f
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit c68277c41b99d6791e3c1a5998b70c6cbbf6dc15)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2024-10-05 19:54:43 +00:00

105 lines
3.5 KiB
CMake

# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
#.rst:
# FindMySQL
# ---------
#
# Try to locate the mysql client library.
#
# By default, pkg-config is used, if available.
# If pkg-config is not available or if you want to disable it, set the ``MySQL_ROOT`` variable.
# The following variables can be set to control the behavior of this find module.
#
# ``MySQL_ROOT``
# The root directory of the mysql client library's installation.
# ``MySQL_INCLUDE_DIR``
# The directory containing the include files of the mysql client library.
# If not set, the directory is detected within ``MySQL_ROOT`` using find_path.
# ``MySQL_LIBRARY_DIR``
# The directory containing the binaries of the mysql client library.
# This is used to detect ``MySQL_LIBRARY`` and passed as HINT to find_library.
# ``MySQL_LIBRARY``
# The file path to the mysql client library.
# ``MySQL_LIBRARY_DEBUG``
# The file path to the mysql client library for the DEBUG configuration.
#
# If the mysql client library is found, this will define the following variables:
#
# ``MySQL_FOUND``
# True if the mysql library is available
# ``MySQL_INCLUDE_DIRS``
# The mysql include directories
# ``MySQL_LIBRARIES``
# The mysql libraries for linking
#
# If ``MySQL_FOUND`` is TRUE, it will also define the following
# imported target:
#
# ``MySQL::MySQL``
# The mysql client library
if(NOT DEFINED MySQL_ROOT)
if(DEFINED ENV{MySQL_ROOT})
set(MySQL_ROOT "$ENV{MySQL_ROOT}")
else()
find_package(PkgConfig QUIET)
endif()
endif()
if(PkgConfig_FOUND AND NOT DEFINED MySQL_ROOT)
pkg_check_modules(PC_MySQL QUIET "mysqlclient")
set(MySQL_include_dir_hints ${PC_MySQL_INCLUDEDIR})
set(MySQL_library_hints ${PC_MySQL_LIBDIR})
set(MySQL_library_hints_debug "")
else()
set(MySQL_include_dir_hints "${MySQL_ROOT}" "${MySQL_ROOT}/include")
if(NOT DEFINED MySQL_LIBRARY_DIR)
set(MySQL_LIBRARY_DIR "${MySQL_ROOT}/lib")
endif()
set(MySQL_library_hints "${MySQL_LIBRARY_DIR}")
set(MySQL_library_hints_debug "${MySQL_LIBRARY_DIR}/debug")
endif()
find_path(MySQL_INCLUDE_DIR
NAMES mysql.h
HINTS "${MySQL_include_dir_hints}"
PATH_SUFFIXES mysql mariadb)
find_library(MySQL_LIBRARY
NO_PACKAGE_ROOT_PATH
NAMES libmysql mysql mysqlclient libmariadb mariadb
HINTS ${MySQL_library_hints})
if(MySQL_library_hints_debug)
find_library(MySQL_LIBRARY_DEBUG
NO_PACKAGE_ROOT_PATH
NAMES libmysql mysql mysqlclient libmariadb mariadb
HINTS ${MySQL_library_hints_debug})
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MySQL DEFAULT_MSG MySQL_LIBRARY MySQL_INCLUDE_DIR)
if(MySQL_FOUND)
set(MySQL_INCLUDE_DIRS "${MySQL_INCLUDE_DIR}")
set(MySQL_LIBRARIES "${MySQL_LIBRARY}")
if(NOT TARGET MySQL::MySQL)
add_library(MySQL::MySQL UNKNOWN IMPORTED)
set_target_properties(MySQL::MySQL PROPERTIES
IMPORTED_LOCATION "${MySQL_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${MySQL_INCLUDE_DIRS}")
if(MySQL_LIBRARY_DEBUG)
set_target_properties(MySQL::MySQL PROPERTIES
IMPORTED_LOCATION_DEBUG "${MySQL_LIBRARY_DEBUG}")
endif()
endif()
endif()
mark_as_advanced(MySQL_INCLUDE_DIR MySQL_LIBRARY)
include(FeatureSummary)
set_package_properties(MySQL PROPERTIES
URL "https://www.mysql.com"
DESCRIPTION "MySQL client library")