Annotation of embedaddon/curl/CMake/CurlSymbolHiding.cmake, revision 1.1
1.1 ! misho 1: #***************************************************************************
! 2: # _ _ ____ _
! 3: # Project ___| | | | _ \| |
! 4: # / __| | | | |_) | |
! 5: # | (__| |_| | _ <| |___
! 6: # \___|\___/|_| \_\_____|
! 7: #
! 8: # Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: #
! 10: # This software is licensed as described in the file COPYING, which
! 11: # you should have received as part of this distribution. The terms
! 12: # are also available at https://curl.haxx.se/docs/copyright.html.
! 13: #
! 14: # You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 15: # copies of the Software, and permit persons to whom the Software is
! 16: # furnished to do so, under the terms of the COPYING file.
! 17: #
! 18: # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 19: # KIND, either express or implied.
! 20: #
! 21: ###########################################################################
! 22: include(CheckCSourceCompiles)
! 23:
! 24: option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON)
! 25: mark_as_advanced(CURL_HIDDEN_SYMBOLS)
! 26:
! 27: if(CURL_HIDDEN_SYMBOLS)
! 28: set(SUPPORTS_SYMBOL_HIDING FALSE)
! 29:
! 30: if(CMAKE_C_COMPILER_ID MATCHES "Clang")
! 31: set(SUPPORTS_SYMBOL_HIDING TRUE)
! 32: set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
! 33: set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
! 34: elseif(CMAKE_COMPILER_IS_GNUCC)
! 35: if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
! 36: # note: this is considered buggy prior to 4.0 but the autotools don't care, so let's ignore that fact
! 37: set(SUPPORTS_SYMBOL_HIDING TRUE)
! 38: set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
! 39: set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
! 40: endif()
! 41: elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
! 42: set(SUPPORTS_SYMBOL_HIDING TRUE)
! 43: set(_SYMBOL_EXTERN "__global")
! 44: set(_CFLAG_SYMBOLS_HIDE "-xldscope=hidden")
! 45: elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0)
! 46: # note: this should probably just check for version 9.1.045 but I'm not 100% sure
! 47: # so let's do it the same way autotools do.
! 48: set(SUPPORTS_SYMBOL_HIDING TRUE)
! 49: set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
! 50: set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
! 51: check_c_source_compiles("#include <stdio.h>
! 52: int main (void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug)
! 53: if(NOT _no_bug)
! 54: set(SUPPORTS_SYMBOL_HIDING FALSE)
! 55: set(_SYMBOL_EXTERN "")
! 56: set(_CFLAG_SYMBOLS_HIDE "")
! 57: endif()
! 58: elseif(MSVC)
! 59: set(SUPPORTS_SYMBOL_HIDING TRUE)
! 60: endif()
! 61:
! 62: set(HIDES_CURL_PRIVATE_SYMBOLS ${SUPPORTS_SYMBOL_HIDING})
! 63: elseif(MSVC)
! 64: if(NOT CMAKE_VERSION VERSION_LESS 3.7)
! 65: set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) #present since 3.4.3 but broken
! 66: set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
! 67: else()
! 68: message(WARNING "Hiding private symbols regardless CURL_HIDDEN_SYMBOLS being disabled.")
! 69: set(HIDES_CURL_PRIVATE_SYMBOLS TRUE)
! 70: endif()
! 71: else()
! 72: set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
! 73: endif()
! 74:
! 75: set(CURL_CFLAG_SYMBOLS_HIDE ${_CFLAG_SYMBOLS_HIDE})
! 76: set(CURL_EXTERN_SYMBOL ${_SYMBOL_EXTERN})
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>