diff options
author | Yuri Gribov <tetra2005@gmail.com> | 2022-07-03 10:54:39 +0300 |
---|---|---|
committer | Yuri Gribov <tetra2005@gmail.com> | 2022-07-27 21:46:34 +0300 |
commit | 5235554eb4071c798fef9b29f46e9c96970055ea (patch) | |
tree | d9f57aa29bef3f36990a6150bfee9963f2c5ed33 /CMakeLists.txt | |
parent | a45905b0166713760a2fb4f2e908d7ce47488371 (diff) | |
download | libarchive-5235554eb4071c798fef9b29f46e9c96970055ea.tar.gz |
Hide internal symbols on platforms that support visibility annotations (see discussion in gh-1017).
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e1ff575..df83ed18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2024,6 +2024,17 @@ CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA512" LIBMD) CHECK_CRYPTO_WIN("MD5;SHA1;SHA256;SHA384;SHA512") +# Check visibility annotations +SET(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") +SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fvisibility=hidden -Werror") +CHECK_C_SOURCE_COMPILES("void __attribute__((visibility(\"default\"))) foo(void); +int main() { return 0; }" HAVE_VISIBILITY_ATTR) +IF (HAVE_VISIBILITY_ATTR) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") + ADD_DEFINITIONS(-D__LIBARCHIVE_ENABLE_VISIBILITY) +ENDIF(HAVE_VISIBILITY_ATTR) +SET(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}") + # Generate "config.h" from "build/cmake/config.h.in" CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) |