diff --git a/CMakeLists.txt b/CMakeLists.txt index cad0e3e5f..6c0e45ebc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -489,10 +489,6 @@ add_library(freetype ${BASE_SRCS} ) -set_target_properties( - freetype PROPERTIES - C_VISIBILITY_PRESET hidden) - target_compile_definitions( freetype PRIVATE FT2_BUILD_LIBRARY) @@ -503,6 +499,10 @@ if (WIN32) target_compile_definitions( freetype PRIVATE DLL_EXPORT) endif () +else () + # Windows handles exports with DLL_EXPORT defined above. + set_target_properties(freetype PROPERTIES + C_VISIBILITY_PRESET hidden) endif () if (BUILD_SHARED_LIBS) diff --git a/builds/unix/configure.raw b/builds/unix/configure.raw index f18c8a0c4..898e617c4 100644 --- a/builds/unix/configure.raw +++ b/builds/unix/configure.raw @@ -239,12 +239,24 @@ AC_SUBST([XX_ANSIFLAGS]) found_visibility_flag=no AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) orig_CFLAGS="${CFLAGS}" -CFLAGS="${CFLAGS} -fvisibility=hidden" -AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], - [found_visibility_flag=yes - AC_MSG_RESULT(yes)], - [CFLAGS="${orig_CFLAGS}" - AC_MSG_RESULT(no)]) +CFLAGS="${CFLAGS} -fvisibility=hidden -Werror" +AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +__attribute__(( visibility( "default" ) )) int foo( void ); +__attribute__(( visibility( "hidden" ) )) int bar( void ); + +int foo( void ) { return 0; } +int bar( void ) { return 1; } + + ], + [])], + [found_visibility_flag=yes + CFLAGS="${orig_CFLAGS} -fvisibility=hidden" + AC_MSG_RESULT(yes) + ], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) if test "${found_visibility_flag}" = "no"; then AC_MSG_CHECKING([for -xldscope=hidden compiler flag])