Skip to content

Commit faef73f

Browse files
committed
Build: Replace hardcoded mysql search paths with pattern based approach
1 parent ca6aa74 commit faef73f

File tree

1 file changed

+34
-25
lines changed

1 file changed

+34
-25
lines changed

cmake/macros/FindMySQL.cmake

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -113,43 +113,52 @@ if(WIN32)
113113
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" PROGRAM_FILES_32)
114114
file(TO_CMAKE_PATH "$ENV{ProgramW6432}" PROGRAM_FILES_64)
115115

116+
cmake_host_system_information(
117+
RESULT
118+
_MYSQL_ROOT_HINTS_SUBKEYS
119+
QUERY
120+
WINDOWS_REGISTRY
121+
"HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB" SUBKEYS
122+
VIEW BOTH
123+
)
124+
list(SORT _MYSQL_ROOT_HINTS_SUBKEYS COMPARE NATURAL ORDER DESCENDING)
125+
126+
set(_MYSQL_ROOT_HINTS_REGISTRY_LOCATIONS)
127+
foreach(subkey IN LISTS _MYSQL_ROOT_HINTS_SUBKEYS)
128+
cmake_host_system_information(
129+
RESULT
130+
_MYSQL_ROOT_HINTS_REGISTRY_LOCATION
131+
QUERY
132+
WINDOWS_REGISTRY
133+
"HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\${subkey}" VALUE "Location"
134+
VIEW BOTH
135+
)
136+
list(APPEND _MYSQL_ROOT_HINTS_REGISTRY_LOCATIONS ${_MYSQL_ROOT_HINTS_REGISTRY_LOCATION})
137+
endforeach()
138+
116139
set(_MYSQL_ROOT_HINTS
117140
${_MYSQL_ROOT_HINTS}
118-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.3;Location]"
119-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.2;Location]"
120-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.1;Location]"
121-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 8.0;Location]"
122-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]"
123-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.3;Location]"
124-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.2;Location]"
125-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.1;Location]"
126-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 8.0;Location]"
127-
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.7;Location]"
141+
${_MYSQL_ROOT_HINTS_REGISTRY_LOCATIONS}
128142
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4;INSTALLDIR]"
129143
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.4 (x64);INSTALLDIR]"
130144
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5;INSTALLDIR]"
131145
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MariaDB 10.5 (x64);INSTALLDIR]"
132146
)
133147

148+
file(GLOB _MYSQL_ROOT_PATHS_VERSION_SUBDIRECTORIES
149+
LIST_DIRECTORIES TRUE
150+
"${PROGRAM_FILES_64}/MySQL/MySQL Server *"
151+
"${PROGRAM_FILES_32}/MySQL/MySQL Server *"
152+
"$ENV{SystemDrive}/MySQL/MySQL Server *"
153+
)
154+
155+
list(SORT _MYSQL_ROOT_PATHS_VERSION_SUBDIRECTORIES COMPARE NATURAL ORDER DESCENDING)
156+
134157
set(_MYSQL_ROOT_PATHS
135158
${_MYSQL_ROOT_PATHS}
136-
"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.3"
137-
"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.2"
138-
"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.1"
139-
"${PROGRAM_FILES_64}/MySQL/MySQL Server 8.0"
140-
"${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7"
159+
${_MYSQL_ROOT_PATHS_VERSION_SUBDIRECTORIES}
141160
"${PROGRAM_FILES_64}/MySQL"
142-
"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.3"
143-
"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.2"
144-
"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.1"
145-
"${PROGRAM_FILES_32}/MySQL/MySQL Server 8.0"
146-
"${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7"
147161
"${PROGRAM_FILES_32}/MySQL"
148-
"$ENV{SystemDrive}/MySQL/MySQL Server 8.3"
149-
"$ENV{SystemDrive}/MySQL/MySQL Server 8.2"
150-
"$ENV{SystemDrive}/MySQL/MySQL Server 8.1"
151-
"$ENV{SystemDrive}/MySQL/MySQL Server 8.0"
152-
"$ENV{SystemDrive}/MySQL/MySQL Server 5.7"
153162
"$ENV{SystemDrive}/MySQL"
154163
)
155164
endif(WIN32)

0 commit comments

Comments
 (0)