From: Viktor Szakats Date: Thu, 24 Oct 2024 10:15:44 +0000 (+0200) Subject: cmake: tidy up and shorten symbol hiding initialization X-Git-Tag: curl-8_11_0~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45862f22213ae2f4d5d73064124510c11efb5994;p=thirdparty%2Fcurl.git cmake: tidy up and shorten symbol hiding initialization - drop redundant local variables. - drop extra Intel C feature check that always returned success due to not passing the tested compiler option. Nobody reported an issue with this since 2016, suggesting the version check alone is enough. Closes #15400 --- diff --git a/CMake/CurlSymbolHiding.cmake b/CMake/CurlSymbolHiding.cmake index 00b7b3c106..7668bb8357 100644 --- a/CMake/CurlSymbolHiding.cmake +++ b/CMake/CurlSymbolHiding.cmake @@ -21,8 +21,6 @@ # SPDX-License-Identifier: curl # ########################################################################### -include(CheckCSourceCompiles) - option(CURL_HIDDEN_SYMBOLS "Hide libcurl internal symbols (=hide all symbols that are not officially external)" ON) mark_as_advanced(CURL_HIDDEN_SYMBOLS) @@ -33,48 +31,35 @@ if(WIN32 AND (ENABLE_DEBUG OR ENABLE_CURLDEBUG)) set(CURL_HIDDEN_SYMBOLS OFF) endif() -if(CURL_HIDDEN_SYMBOLS) - set(_supports_symbol_hiding FALSE) +set(CURL_HIDES_PRIVATE_SYMBOLS FALSE) +unset(CURL_EXTERN_SYMBOL) +unset(CURL_CFLAG_SYMBOLS_HIDE) +if(CURL_HIDDEN_SYMBOLS) if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT MSVC) - set(_supports_symbol_hiding TRUE) - set(_symbol_extern "__attribute__ ((__visibility__ (\"default\")))") - set(_cflag_symbols_hide "-fvisibility=hidden") + set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) + set(CURL_EXTERN_SYMBOL "__attribute__ ((__visibility__ (\"default\")))") + set(CURL_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") elseif(CMAKE_COMPILER_IS_GNUCC) if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4) # Note: This is considered buggy prior to 4.0 but the autotools do not care, so let us ignore that fact - set(_supports_symbol_hiding TRUE) - set(_symbol_extern "__attribute__ ((__visibility__ (\"default\")))") - set(_cflag_symbols_hide "-fvisibility=hidden") + set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) + set(CURL_EXTERN_SYMBOL "__attribute__ ((__visibility__ (\"default\")))") + set(CURL_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") endif() elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0) - set(_supports_symbol_hiding TRUE) - set(_symbol_extern "__global") - set(_cflag_symbols_hide "-xldscope=hidden") - elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0) - # Note: This should probably just check for version 9.1.045 but I am not 100% sure - # so let us do it the same way autotools do. - set(_supports_symbol_hiding TRUE) - set(_symbol_extern "__attribute__ ((__visibility__ (\"default\")))") - set(_cflag_symbols_hide "-fvisibility=hidden") - check_c_source_compiles("#include - int main(void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug) - if(NOT _no_bug) - set(_supports_symbol_hiding FALSE) - set(_symbol_extern "") - set(_cflag_symbols_hide "") - endif() + set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) + set(CURL_EXTERN_SYMBOL "__global") + set(CURL_CFLAG_SYMBOLS_HIDE "-xldscope=hidden") + elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0) # Requires 9.1.045 + set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) + set(CURL_EXTERN_SYMBOL "__attribute__ ((__visibility__ (\"default\")))") + set(CURL_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") elseif(MSVC) - set(_supports_symbol_hiding TRUE) + set(CURL_HIDES_PRIVATE_SYMBOLS TRUE) endif() - - set(CURL_HIDES_PRIVATE_SYMBOLS ${_supports_symbol_hiding}) else() if(MSVC) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) endif() - set(CURL_HIDES_PRIVATE_SYMBOLS FALSE) endif() - -set(CURL_CFLAG_SYMBOLS_HIDE ${_cflag_symbols_hide}) -set(CURL_EXTERN_SYMBOL ${_symbol_extern})