From 22de9bf56d80dbf6a13a06beafd21711bdab78af Mon Sep 17 00:00:00 2001 From: Nikolaus Waxweiler Date: Wed, 14 Mar 2018 10:29:24 +0000 Subject: [PATCH] Enable implicit symbol hiding for all libraries, static and shared This covers all built libraries now and both static and shared builds. --- CMakeLists.txt | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3de8539..b9796eb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,7 @@ cmake_minimum_required(VERSION 2.8.0) +# Allow symbol hiding for both static and shared libs. +cmake_policy(SET CMP0063 NEW) + project(harfbuzz) enable_testing() @@ -524,23 +527,19 @@ endif () ## Define harfbuzz library add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers}) +set_target_properties(harfbuzz PROPERTIES + C_VISIBILITY_PRESET hidden + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN TRUE) target_link_libraries(harfbuzz ${THIRD_PARTY_LIBS}) -if (BUILD_SHARED_LIBS) - if (WIN32 AND NOT MINGW) - add_definitions("-DHB_EXTERN=__declspec(dllexport) extern") - else () - add_definitions("-DHB_EXTERN=__attribute__(( visibility( \"default\" ) )) extern") - set_target_properties(harfbuzz PROPERTIES - C_VISIBILITY_PRESET hidden - CXX_VISIBILITY_PRESET hidden - VISIBILITY_INLINES_HIDDEN TRUE) - endif () -endif () - ## Define harfbuzz-subset library add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers}) add_dependencies(harfbuzz-subset harfbuzz) +set_target_properties(harfbuzz-subset PROPERTIES + C_VISIBILITY_PRESET hidden + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN TRUE) target_link_libraries(harfbuzz-subset harfbuzz ${THIRD_PARTY_LIBS}) if (UNIX OR MINGW) @@ -568,11 +567,23 @@ if (HB_HAVE_GOBJECT) ${hb_gobject_headers} ${hb_gobject_gen_headers} ) + set_target_properties(harfbuzz-gobject PROPERTIES + C_VISIBILITY_PRESET hidden + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN TRUE) include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/src) add_dependencies(harfbuzz-gobject harfbuzz) target_link_libraries(harfbuzz-gobject harfbuzz ${GOBJECT_LIBRARIES} ${THIRD_PARTY_LIBS}) endif () +if (BUILD_SHARED_LIBS) + if (WIN32 AND NOT MINGW) + add_definitions("-DHB_EXTERN=__declspec(dllexport) extern") + else () + add_definitions("-DHB_EXTERN=__attribute__(( visibility( \"default\" ) )) extern") + endif () +endif () + # On Windows, g-ir-scanner requires a DLL build in order for it to work if (WIN32) if (NOT BUILD_SHARED_LIBS) -- 2.7.4