FindCygwin: Fix regression when CYGWIN_INSTALL_PATH is already set

The change in commit v3.9.0-rc1~54^2 (FindCygwin: Use find_program
instead of find_path, 2017-05-18) broke cases when `CYGWIN_INSTALL_PATH`
is already set, e.g. on the command-line or by an earlier call to
`find_package(Cygwin)`.  Since `find_program` now finds the actual
`cygwin.bat` file, use a separate cache entry to save the location
and then compute `CYGWIN_INSTALL_PATH`.  If `CYGWIN_INSTALL_PATH`
is already set, use that to avoid `find_program` having to search.
This commit is contained in:
Tibor Szabo 2017-08-11 11:30:35 +02:00 committed by Brad King
parent fca4423786
commit 62930253a3

View File

@ -8,14 +8,17 @@
# this module looks for Cygwin
if (WIN32)
find_program(CYGWIN_INSTALL_PATH
if(CYGWIN_INSTALL_PATH)
set(CYGWIN_BAT "${CYGWIN_INSTALL_PATH}/cygwin.bat")
endif()
find_program(CYGWIN_BAT
cygwin.bat
"C:/Cygwin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygwin\\setup;rootdir]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/;native]"
)
get_filename_component(CYGWIN_INSTALL_PATH "${CYGWIN_INSTALL_PATH}" DIRECTORY)
mark_as_advanced(
CYGWIN_INSTALL_PATH
)
get_filename_component(CYGWIN_INSTALL_PATH "${CYGWIN_BAT}" DIRECTORY)
mark_as_advanced(CYGWIN_BAT)
endif ()