@@ -52,19 +52,23 @@ set(_gss_root_hints
5252 "$ENV{GSS_ROOT_DIR} "
5353)
5454
55+ set (_gss_CFLAGS "" )
56+ set (_gss_LIBRARY_DIRS "" )
57+
5558# Try to find library using system pkg-config if user did not specify root dir
5659if (NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR} " )
5760 if (CURL_USE_PKGCONFIG)
5861 find_package (PkgConfig QUIET )
59- pkg_search_module(_GSS ${_gnu_modname} ${_mit_modname} ${_heimdal_modname} )
60- list (APPEND _gss_root_hints "${_GSS_PREFIX} " )
62+ pkg_search_module(_gss ${_gnu_modname} ${_mit_modname} ${_heimdal_modname} )
63+ list (APPEND _gss_root_hints "${_gss_PREFIX} " )
64+ set (_gss_version "${_gss_VERSION} " )
6165 endif ()
6266 if (WIN32 )
6367 list (APPEND _gss_root_hints "[HKEY_LOCAL_MACHINE\\ SOFTWARE\\ MIT\\ Kerberos;InstallDir]" )
6468 endif ()
6569endif ()
6670
67- if (NOT _GSS_FOUND ) # Not found by pkg-config. Let us take more traditional approach.
71+ if (NOT _gss_FOUND ) # Not found by pkg-config. Let us take more traditional approach.
6872 find_file (_gss_configure_script
6973 NAMES
7074 "krb5-config"
@@ -85,25 +89,29 @@ if(NOT _GSS_FOUND) # Not found by pkg-config. Let us take more traditional appr
8589 )
8690
8791 if (_gss_configure_script)
92+
93+ set (_gss_INCLUDE_DIRS "" )
94+ set (_gss_LIBRARIES "" )
95+
8896 execute_process (
8997 COMMAND ${_gss_configure_script} "--cflags" "gssapi"
90- OUTPUT_VARIABLE _GSS_CFLAGS
98+ OUTPUT_VARIABLE _gss_cflags_raw
9199 RESULT_VARIABLE _gss_configure_failed
92100 OUTPUT_STRIP_TRAILING_WHITESPACE
93101 )
94- message (STATUS "FindGSS krb5-config --cflags: ${_GSS_CFLAGS } " )
102+ message (STATUS "FindGSS krb5-config --cflags: ${_gss_cflags_raw } " )
95103 if (NOT _gss_configure_failed) # 0 means success
96- # Should also work in an odd case when multiple directories are given
97- string (STRIP "${_GSS_CFLAGS } " _GSS_CFLAGS )
98- string (REGEX REPLACE " +-I " ";" _GSS_CFLAGS "${_GSS_CFLAGS } " )
99- string (REGEX REPLACE " +-([^I][^ \\ t;]*)" ";-\\ 1" _GSS_CFLAGS "${_GSS_CFLAGS } " )
104+ # Should also work in an odd case when multiple directories are given.
105+ string (STRIP "${_gss_cflags_raw } " _gss_cflags_raw )
106+ string (REGEX REPLACE " +-(I) " ";- \\ 1" _gss_cflags_raw "${_gss_cflags_raw } " )
107+ string (REGEX REPLACE " +-([^I][^ \\ t;]*)" ";-\\ 1" _gss_cflags_raw "${_gss_cflags_raw } " )
100108
101- foreach (_flag IN LISTS _GSS_CFLAGS )
109+ foreach (_flag IN LISTS _gss_cflags_raw )
102110 if (_flag MATCHES "^-I" )
103- string (REGEX REPLACE "^-I" "" _val "${_flag} " )
104- list (APPEND _GSS_INCLUDE_DIRS "${_val } " )
111+ string (REGEX REPLACE "^-I" "" _flag "${_flag} " )
112+ list (APPEND _gss_INCLUDE_DIRS "${_flag } " )
105113 else ()
106- list (APPEND _GSS_CFLAGS "${_flag} " )
114+ list (APPEND _gss_CFLAGS "${_flag} " )
107115 endif ()
108116 endforeach ()
109117 endif ()
@@ -117,32 +125,32 @@ if(NOT _GSS_FOUND) # Not found by pkg-config. Let us take more traditional appr
117125 message (STATUS "FindGSS krb5-config --libs: ${_gss_lib_flags} " )
118126
119127 if (NOT _gss_configure_failed) # 0 means success
120- # This script gives us libraries and link directories. Blah. We have to deal with it.
128+ # This script gives us libraries and link directories.
121129 string (STRIP "${_gss_lib_flags} " _gss_lib_flags)
122130 string (REGEX REPLACE " +-(L|l)" ";-\\ 1" _gss_lib_flags "${_gss_lib_flags} " )
123131 string (REGEX REPLACE " +-([^Ll][^ \\ t;]*)" ";-\\ 1" _gss_lib_flags "${_gss_lib_flags} " )
124132
125133 foreach (_flag IN LISTS _gss_lib_flags)
126134 if (_flag MATCHES "^-l" )
127- string (REGEX REPLACE "^-l" "" _val "${_flag} " )
128- list (APPEND _GSS_LIBRARIES "${_val } " )
135+ string (REGEX REPLACE "^-l" "" _flag "${_flag} " )
136+ list (APPEND _gss_LIBRARIES "${_flag } " )
129137 elseif (_flag MATCHES "^-L" )
130- string (REGEX REPLACE "^-L" "" _val "${_flag} " )
131- list (APPEND _GSS_LIBRARY_DIRS "${_val } " )
138+ string (REGEX REPLACE "^-L" "" _flag "${_flag} " )
139+ list (APPEND _gss_LIBRARY_DIRS "${_flag } " )
132140 endif ()
133141 endforeach ()
134142 endif ()
135143
136144 execute_process (
137145 COMMAND ${_gss_configure_script} "--version"
138- OUTPUT_VARIABLE _GSS_VERSION
146+ OUTPUT_VARIABLE _gss_version
139147 RESULT_VARIABLE _gss_configure_failed
140148 OUTPUT_STRIP_TRAILING_WHITESPACE
141149 )
142150
143151 # Older versions may not have the "--version" parameter. In this case we just do not care.
144152 if (_gss_configure_failed)
145- set (_GSS_VERSION 0)
153+ set (_gss_version 0)
146154 endif ()
147155
148156 execute_process (
@@ -165,17 +173,17 @@ if(NOT _GSS_FOUND) # Not found by pkg-config. Let us take more traditional appr
165173
166174 else () # Either there is no config script or we are on a platform that does not provide one (Windows?)
167175
168- find_path (_GSS_INCLUDE_DIRS NAMES "gssapi/gssapi.h"
176+ find_path (_gss_INCLUDE_DIRS NAMES "gssapi/gssapi.h"
169177 HINTS
170178 ${_gss_root_hints}
171179 PATH_SUFFIXES
172180 "include"
173181 "inc"
174182 )
175183
176- if (_GSS_INCLUDE_DIRS ) # jay, we have found something
184+ if (_gss_INCLUDE_DIRS ) # jay, we have found something
177185 cmake_push_check_state()
178- list (APPEND CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIRS } " )
186+ list (APPEND CMAKE_REQUIRED_INCLUDES "${_gss_INCLUDE_DIRS } " )
179187 check_include_files("gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _gss_have_mit_headers)
180188
181189 if (_gss_have_mit_headers)
@@ -193,25 +201,25 @@ if(NOT _GSS_FOUND) # Not found by pkg-config. Let us take more traditional appr
193201 cmake_pop_check_state()
194202 else ()
195203 # I am not convinced if this is the right way but this is what autotools do at the moment
196- find_path (_GSS_INCLUDE_DIRS NAMES "gssapi.h"
204+ find_path (_gss_INCLUDE_DIRS NAMES "gssapi.h"
197205 HINTS
198206 ${_gss_root_hints}
199207 PATH_SUFFIXES
200208 "include"
201209 "inc"
202210 )
203211
204- if (_GSS_INCLUDE_DIRS )
212+ if (_gss_INCLUDE_DIRS )
205213 set (GSS_FLAVOUR "Heimdal" )
206214 else ()
207- find_path (_GSS_INCLUDE_DIRS NAMES "gss.h"
215+ find_path (_gss_INCLUDE_DIRS NAMES "gss.h"
208216 HINTS
209217 ${_gss_root_hints}
210218 PATH_SUFFIXES
211219 "include"
212220 )
213221
214- if (_GSS_INCLUDE_DIRS )
222+ if (_gss_INCLUDE_DIRS )
215223 set (GSS_FLAVOUR "GNU" )
216224 set (GSS_PC_REQUIRES "gss" )
217225 endif ()
@@ -222,7 +230,7 @@ if(NOT _GSS_FOUND) # Not found by pkg-config. Let us take more traditional appr
222230 if (GSS_FLAVOUR)
223231 set (_gss_libdir_suffixes "" )
224232 set (_gss_libdir_hints ${_gss_root_hints} )
225- get_filename_component (_gss_calculated_potential_root "${_GSS_INCLUDE_DIRS } " DIRECTORY )
233+ get_filename_component (_gss_calculated_potential_root "${_gss_INCLUDE_DIRS } " DIRECTORY )
226234 list (APPEND _gss_libdir_hints ${_gss_calculated_potential_root} )
227235
228236 if (WIN32 )
@@ -256,7 +264,7 @@ if(NOT _GSS_FOUND) # Not found by pkg-config. Let us take more traditional appr
256264 endif ()
257265 endif ()
258266
259- find_library (_GSS_LIBRARIES NAMES ${_gss_libname}
267+ find_library (_gss_LIBRARIES NAMES ${_gss_libname}
260268 HINTS
261269 ${_gss_libdir_hints}
262270 PATH_SUFFIXES
@@ -265,36 +273,36 @@ if(NOT _GSS_FOUND) # Not found by pkg-config. Let us take more traditional appr
265273 endif ()
266274 endif ()
267275else ()
268- # _GSS_MODULE_NAME set since CMake 3.16
269- if (_GSS_MODULE_NAME STREQUAL _gnu_modname OR _GSS_ ${_gnu_modname} _VERSION)
276+ # _gss_MODULE_NAME set since CMake 3.16
277+ if (_gss_MODULE_NAME STREQUAL _gnu_modname OR _gss_ ${_gnu_modname} _VERSION)
270278 set (GSS_FLAVOUR "GNU" )
271279 set (GSS_PC_REQUIRES "gss" )
272- if (NOT _GSS_VERSION ) # for old CMake versions?
273- set (_GSS_VERSION ${_GSS_ ${_gnu_modname} _VERSION})
280+ if (NOT _gss_version ) # for old CMake versions?
281+ set (_gss_version ${_gss_ ${_gnu_modname} _VERSION})
274282 endif ()
275- elseif (_GSS_MODULE_NAME STREQUAL _mit_modname OR _GSS_ ${_mit_modname} _VERSION)
283+ elseif (_gss_MODULE_NAME STREQUAL _mit_modname OR _gss_ ${_mit_modname} _VERSION)
276284 set (GSS_FLAVOUR "MIT" )
277285 set (GSS_PC_REQUIRES "mit-krb5-gssapi" )
278- if (NOT _GSS_VERSION ) # for old CMake versions?
279- set (_GSS_VERSION ${_GSS_ ${_mit_modname} _VERSION})
286+ if (NOT _gss_version ) # for old CMake versions?
287+ set (_gss_version ${_gss_ ${_mit_modname} _VERSION})
280288 endif ()
281289 else ()
282290 set (GSS_FLAVOUR "Heimdal" )
283291 set (GSS_PC_REQUIRES "heimdal-gssapi" )
284- if (NOT _GSS_VERSION ) # for old CMake versions?
285- set (_GSS_VERSION ${_GSS_ ${_heimdal_modname} _VERSION})
292+ if (NOT _gss_version ) # for old CMake versions?
293+ set (_gss_version ${_gss_ ${_heimdal_modname} _VERSION})
286294 endif ()
287295 endif ()
288- message (STATUS "Found GSS/${GSS_FLAVOUR} (via pkg-config): ${_GSS_INCLUDE_DIRS } (found version \" ${_GSS_VERSION } \" )" )
296+ message (STATUS "Found GSS/${GSS_FLAVOUR} (via pkg-config): ${_gss_INCLUDE_DIRS } (found version \" ${_gss_version } \" )" )
289297endif ()
290298
291- string (REPLACE ";" " " _GSS_CFLAGS "${_GSS_CFLAGS } " )
299+ string (REPLACE ";" " " _gss_CFLAGS "${_gss_CFLAGS } " )
292300
293- set (GSS_INCLUDE_DIRS ${_GSS_INCLUDE_DIRS } )
294- set (GSS_LIBRARIES ${_GSS_LIBRARIES } )
295- set (GSS_LIBRARY_DIRS ${_GSS_LIBRARY_DIRS } )
296- set (GSS_CFLAGS ${_GSS_CFLAGS } )
297- set (GSS_VERSION ${_GSS_VERSION } )
301+ set (GSS_INCLUDE_DIRS ${_gss_INCLUDE_DIRS } )
302+ set (GSS_LIBRARIES ${_gss_LIBRARIES } )
303+ set (GSS_LIBRARY_DIRS ${_gss_LIBRARY_DIRS } )
304+ set (GSS_CFLAGS ${_gss_CFLAGS } )
305+ set (GSS_VERSION ${_gss_version } )
298306
299307if (GSS_FLAVOUR)
300308 if (NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal" )
@@ -346,12 +354,12 @@ find_package_handle_standard_args(GSS
346354)
347355
348356mark_as_advanced (
349- _GSS_CFLAGS
350- _GSS_FOUND
351- _GSS_INCLUDE_DIRS
352- _GSS_LIBRARIES
353- _GSS_LIBRARY_DIRS
354- _GSS_MODULE_NAME
355- _GSS_PREFIX
356- _GSS_VERSION
357+ _gss_CFLAGS
358+ _gss_FOUND
359+ _gss_INCLUDE_DIRS
360+ _gss_LIBRARIES
361+ _gss_LIBRARY_DIRS
362+ _gss_MODULE_NAME
363+ _gss_PREFIX
364+ _gss_version
357365)
0 commit comments