diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-08-20 14:23:34 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-08-22 23:47:15 +0200 |
commit | 95714e4ecefc5a38dfd642f6b795b1b03f7cb237 (patch) | |
tree | 3356e663a144cddff6c3104bae51f59dcf7ac9f3 /cmake | |
parent | 936faa7a46096a55bd75d02e9745477ff919b5af (diff) |
Build: Replace hardcoded mysql search paths with pattern based approach
(cherry picked from commit ab046bdc327374878b3bede39f2d519d0aef3493)
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/macros/FindMySQL.cmake | 59 |
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) |