aboutsummaryrefslogtreecommitdiff
path: root/cmake/macros
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-08-20 14:23:34 +0200
committerShauren <shauren.trinity@gmail.com>2024-08-20 14:23:34 +0200
commitab046bdc327374878b3bede39f2d519d0aef3493 (patch)
treed9a1ba54ede9b24c8641067c5b54e3c575f8a5f1 /cmake/macros
parent8f95c84a0814b9d48a6d3db00f7dcfe5b1574d3b (diff)
Build: Replace hardcoded mysql search paths with pattern based approach
Diffstat (limited to 'cmake/macros')
-rw-r--r--cmake/macros/FindMySQL.cmake59
1 files changed, 34 insertions, 25 deletions
diff --git a/cmake/macros/FindMySQL.cmake b/cmake/macros/FindMySQL.cmake
index 47e56f4e63c..1f3f8d406c5 100644
--- a/cmake/macros/FindMySQL.cmake
+++ b/cmake/macros/FindMySQL.cmake
@@ -113,43 +113,52 @@ if(WIN32)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" PROGRAM_FILES_32)
file(TO_CMAKE_PATH "$ENV{ProgramW6432}" PROGRAM_FILES_64)
+ cmake_host_system_information(
+ RESULT
+ _MYSQL_ROOT_HINTS_SUBKEYS
+ QUERY
+ WINDOWS_REGISTRY
+ "HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB" SUBKEYS
+ VIEW BOTH
+ )
+ list(SORT _MYSQL_ROOT_HINTS_SUBKEYS COMPARE NATURAL ORDER DESCENDING)
+
+ set(_MYSQL_ROOT_HINTS_REGISTRY_LOCATIONS)
+ foreach(subkey IN LISTS _MYSQL_ROOT_HINTS_SUBKEYS)
+ cmake_host_system_information(
+ RESULT
+ _MYSQL_ROOT_HINTS_REGISTRY_LOCATION
+ QUERY
+ WINDOWS_REGISTRY
+ "HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\${subkey}" VALUE "Location"
+ VIEW BOTH
+ )
+ list(APPEND _MYSQL_ROOT_HINTS_REGISTRY_LOCATIONS ${_MYSQL_ROOT_HINTS_REGISTRY_LOCATION})
+ endforeach()
+
set(_MYSQL_ROOT_HINTS
${_MYSQL_ROOT_HINTS}
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.3;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.2;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.1;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.0;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.3;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.2;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.1;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.0;Location]"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]"
+ ${_MYSQL_ROOT_HINTS_REGISTRY_LOCATIONS}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4;INSTALLDIR]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4 (x64);INSTALLDIR]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5;INSTALLDIR]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5 (x64);INSTALLDIR]"
)
+ file(GLOB _MYSQL_ROOT_PATHS_VERSION_SUBDIRECTORIES
+ LIST_DIRECTORIES TRUE
+ "${PROGRAM_FILES_64}/MySQL/MySQL Server *"
+ "${PROGRAM_FILES_32}/MySQL/MySQL Server *"
+ "$ENV{SystemDrive}/MySQL/MySQL Server *"
+ )
+
+ list(SORT _MYSQL_ROOT_PATHS_VERSION_SUBDIRECTORIES COMPARE NATURAL ORDER DESCENDING)
+
set(_MYSQL_ROOT_PATHS
${_MYSQL_ROOT_PATHS}
- "${PROGRAM_FILES_64}/MySQL/MySQL Server 8.3"
- "${PROGRAM_FILES_64}/MySQL/MySQL Server 8.2"
- "${PROGRAM_FILES_64}/MySQL/MySQL Server 8.1"
- "${PROGRAM_FILES_64}/MySQL/MySQL Server 8.0"
- "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7"
+ ${_MYSQL_ROOT_PATHS_VERSION_SUBDIRECTORIES}
"${PROGRAM_FILES_64}/MySQL"
- "${PROGRAM_FILES_32}/MySQL/MySQL Server 8.3"
- "${PROGRAM_FILES_32}/MySQL/MySQL Server 8.2"
- "${PROGRAM_FILES_32}/MySQL/MySQL Server 8.1"
- "${PROGRAM_FILES_32}/MySQL/MySQL Server 8.0"
- "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7"
"${PROGRAM_FILES_32}/MySQL"
- "$ENV{SystemDrive}/MySQL/MySQL Server 8.3"
- "$ENV{SystemDrive}/MySQL/MySQL Server 8.2"
- "$ENV{SystemDrive}/MySQL/MySQL Server 8.1"
- "$ENV{SystemDrive}/MySQL/MySQL Server 8.0"
- "$ENV{SystemDrive}/MySQL/MySQL Server 5.7"
"$ENV{SystemDrive}/MySQL"
)
endif(WIN32)