Enable implicit symbol hiding for all libraries, static and shared

This covers all built libraries now and both static and shared builds.
This commit is contained in:
Nikolaus Waxweiler 2018-03-14 10:29:24 +00:00
parent ce975dce7a
commit 22de9bf56d
1 changed files with 23 additions and 12 deletions

View File

@ -1,4 +1,7 @@
cmake_minimum_required(VERSION 2.8.0) cmake_minimum_required(VERSION 2.8.0)
# Allow symbol hiding for both static and shared libs.
cmake_policy(SET CMP0063 NEW)
project(harfbuzz) project(harfbuzz)
enable_testing() enable_testing()
@ -524,23 +527,19 @@ endif ()
## Define harfbuzz library ## Define harfbuzz library
add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers}) 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}) 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 ## Define harfbuzz-subset library
add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers}) add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers})
add_dependencies(harfbuzz-subset harfbuzz) 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}) target_link_libraries(harfbuzz-subset harfbuzz ${THIRD_PARTY_LIBS})
if (UNIX OR MINGW) if (UNIX OR MINGW)
@ -568,11 +567,23 @@ if (HB_HAVE_GOBJECT)
${hb_gobject_headers} ${hb_gobject_headers}
${hb_gobject_gen_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) include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/src)
add_dependencies(harfbuzz-gobject harfbuzz) add_dependencies(harfbuzz-gobject harfbuzz)
target_link_libraries(harfbuzz-gobject harfbuzz ${GOBJECT_LIBRARIES} ${THIRD_PARTY_LIBS}) target_link_libraries(harfbuzz-gobject harfbuzz ${GOBJECT_LIBRARIES} ${THIRD_PARTY_LIBS})
endif () 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 # On Windows, g-ir-scanner requires a DLL build in order for it to work
if (WIN32) if (WIN32)
if (NOT BUILD_SHARED_LIBS) if (NOT BUILD_SHARED_LIBS)