From db5d5a03be4829928bd20c7d40a6f576f0b86478 Mon Sep 17 00:00:00 2001 From: Naios Date: Sun, 17 Dec 2017 22:53:45 +0100 Subject: Build: Export a default interface which doesn't hide symbols in unix automatically --- cmake/compiler/clang/settings.cmake | 5 ++++- cmake/compiler/gcc/settings.cmake | 5 ++++- cmake/compiler/msvc/settings.cmake | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'cmake/compiler') diff --git a/cmake/compiler/clang/settings.cmake b/cmake/compiler/clang/settings.cmake index 204cc6d245a..5ccacbf9888 100644 --- a/cmake/compiler/clang/settings.cmake +++ b/cmake/compiler/clang/settings.cmake @@ -41,7 +41,10 @@ if (BUILD_SHARED_LIBS) # -fvisibility=hidden sets the default visibility to hidden to prevent exporting of all symbols. target_compile_options(trinity-compile-option-interface INTERFACE - -fPIC + -fPIC) + + target_compile_options(trinity-hidden-symbols-interface + INTERFACE -fvisibility=hidden) # --no-undefined to throw errors when there are undefined symbols diff --git a/cmake/compiler/gcc/settings.cmake b/cmake/compiler/gcc/settings.cmake index d854ff521ce..9139a028f18 100644 --- a/cmake/compiler/gcc/settings.cmake +++ b/cmake/compiler/gcc/settings.cmake @@ -48,9 +48,12 @@ if (BUILD_SHARED_LIBS) target_compile_options(trinity-compile-option-interface INTERFACE -fPIC - -fvisibility=hidden -Wno-attributes) + target_compile_options(trinity-hidden-symbols-interface + INTERFACE + -fvisibility=hidden) + # Should break the build when there are TRINITY_*_API macros missing # but it complains about missing references in precompiled headers. # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--no-undefined") diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake index eec3857e0d8..96197688d58 100644 --- a/cmake/compiler/msvc/settings.cmake +++ b/cmake/compiler/msvc/settings.cmake @@ -110,13 +110,13 @@ message(STATUS "MSVC: Disabled POSIX warnings") # Ignore specific warnings # C4351: new behavior: elements of array 'x' will be default initialized # C4091: 'typedef ': ignored on left of '' when no variable is declared -target_compile_options(trinity-warning-interface +target_compile_options(trinity-compile-option-interface INTERFACE /wd4351 /wd4091) if(NOT WITH_WARNINGS) - target_compile_options(trinity-warning-interface + target_compile_options(trinity-compile-option-interface INTERFACE /wd4996 /wd4355 @@ -132,7 +132,7 @@ endif() if (BUILD_SHARED_LIBS) # C4251: needs to have dll-interface to be used by clients of class '...' # C4275: non dll-interface class ...' used as base for dll-interface class '...' - target_compile_options(trinity-warning-interface + target_compile_options(trinity-compile-option-interface INTERFACE /wd4251 /wd4275) @@ -143,7 +143,7 @@ endif() # Enable and treat as errors the following warnings to easily detect virtual function signature failures: # 'function' : member function does not override any base class virtual member function # 'virtual_function' : no override available for virtual member function from base 'class'; function is hidden -target_compile_options(trinity-warning-interface +target_compile_options(trinity-compile-option-interface INTERFACE /we4263 /we4264) -- cgit v1.2.3