Revision: 75930
          http://sourceforge.net/p/brlcad/code/75930
Author:   starseeker
Date:     2020-05-26 00:02:58 +0000 (Tue, 26 May 2020)
Log Message:
-----------
Propagate lib*-obj visibility settings.  For src/other libs, only do this when 
we're either building local versions of the libs with headers set up to 
accomidate both GCC and MSVC style labeling, or with MSVC when it's a 
functional necessity even for system libs.

Modified Paths:
--------------
    brlcad/trunk/CMakeLists.txt
    brlcad/trunk/src/libbg/CMakeLists.txt
    brlcad/trunk/src/libdm/CMakeLists.txt
    brlcad/trunk/src/libicv/CMakeLists.txt
    brlcad/trunk/src/librt/CMakeLists.txt
    brlcad/trunk/src/other/libgdiam/gdiam.hpp
    brlcad/trunk/src/other/libnetpbm/pm.h
    brlcad/trunk/src/other/libnetpbm/ppm.h
    brlcad/trunk/src/other/libvds/vds.h
    brlcad/trunk/src/other/lz4/lz4.h

Modified: brlcad/trunk/CMakeLists.txt
===================================================================
--- brlcad/trunk/CMakeLists.txt 2020-05-25 23:41:08 UTC (rev 75929)
+++ brlcad/trunk/CMakeLists.txt 2020-05-26 00:02:58 UTC (rev 75930)
@@ -1730,15 +1730,22 @@
 CHECK_C_FLAG(pipe)
 CHECK_CXX_FLAG(pipe)
 
-# Enable visibility restrictions.  We have to deal with this on
-# Windows, so enable it wherever we can to keep the code working
-# across all platforms.
+# Enable visibility restrictions.  We have to deal with this on Windows, so
+# enable it wherever we can to keep the code working across all platforms.
 CHECK_C_FLAG(fvisibility=hidden)
 CHECK_CXX_FLAG(fvisibility=hidden)
 # If we can, hide internal library symbols
-if(MSVC OR FVISIBILITY_HIDDEN_CXX_FLAG_FOUND)
+if(FVISIBILITY_HIDDEN_CXX_FLAG_FOUND)
   set(HIDE_INTERNAL_SYMBOLS 1)
-endif(MSVC OR FVISIBILITY_HIDDEN_CXX_FLAG_FOUND)
+endif(FVISIBILITY_HIDDEN_CXX_FLAG_FOUND)
+if(MSVC)
+  # On platforms other than MSVC, the hidden symbols are a convenience and may
+  # not be supported by system lib headers.  With Visual Studio, they are a
+  # necessity - define an extra flag so we know to always set them in that
+  # case in order to properly link against the system libs.
+  set(HIDE_INTERNAL_SYMBOLS 1)
+  set(HIDE_INTERNAL_SYMBOLS_EXT 1)
+endif(MSVC)
 
 # check for -fno-strict-aliasing
 # XXX - THIS FLAG IS REQUIRED if any level of optimization is

Modified: brlcad/trunk/src/libbg/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libbg/CMakeLists.txt       2020-05-25 23:41:08 UTC (rev 
75929)
+++ brlcad/trunk/src/libbg/CMakeLists.txt       2020-05-26 00:02:58 UTC (rev 
75930)
@@ -32,10 +32,18 @@
 
 BRLCAD_ADDLIB(libbg "${LIBBG_SOURCES}" "libbn;libbu;SPSR;${P2T_LIBRARY}")
 set_target_properties(libbg PROPERTIES VERSION 20.0.1 SOVERSION 20)
-if(HIDE_INTERNAL_SYMBOLS)
+if (HIDE_INTERNAL_SYMBOLS)
   set_property(TARGET libbg APPEND PROPERTY COMPILE_DEFINITIONS 
"SPSR_DLL_IMPORTS")
-  set_property(TARGET libbg APPEND PROPERTY COMPILE_DEFINITIONS 
"P2T_DLL_IMPORTS")
-endif(HIDE_INTERNAL_SYMBOLS)
+  if (TARGET ${P2T_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+    set_property(TARGET libbg APPEND PROPERTY COMPILE_DEFINITIONS 
"P2T_DLL_IMPORTS")
+  endif (TARGET ${P2T_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+  if (TARGET libbg-obj)
+    set_property(TARGET libbg-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"SPSR_DLL_IMPORTS")
+    if (TARGET ${P2T_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+      set_property(TARGET libbg-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"P2T_DLL_IMPORTS")
+    endif (TARGET ${P2T_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+  endif (TARGET libbg-obj)
+endif (HIDE_INTERNAL_SYMBOLS)
 
 add_subdirectory(tests)
 

Modified: brlcad/trunk/src/libdm/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libdm/CMakeLists.txt       2020-05-25 23:41:08 UTC (rev 
75929)
+++ brlcad/trunk/src/libdm/CMakeLists.txt       2020-05-26 00:02:58 UTC (rev 
75930)
@@ -119,7 +119,14 @@
 if(BRLCAD_ENABLE_OSG)
   BRLCAD_ADDEXEC(osg-test osg-test.cpp "librt;libbu;${OSG_LIBRARIES}" 
NO_STRICT NO_INSTALL)
   if(HIDE_INTERNAL_SYMBOLS)
-    set_property(TARGET libdm APPEND PROPERTY COMPILE_DEFINITIONS 
"FREETYPE_DLL_IMPORTS")
+    if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+      set_property(TARGET libdm APPEND PROPERTY COMPILE_DEFINITIONS 
"FREETYPE_DLL_IMPORTS")
+    endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+    if(TARGET libdm-obj)
+      if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+       set_property(TARGET libdm-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"FREETYPE_DLL_IMPORTS")
+      endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+    endif(TARGET libdm-obj)
   endif(HIDE_INTERNAL_SYMBOLS)
 endif(BRLCAD_ENABLE_OSG)
 

Modified: brlcad/trunk/src/libicv/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libicv/CMakeLists.txt      2020-05-25 23:41:08 UTC (rev 
75929)
+++ brlcad/trunk/src/libicv/CMakeLists.txt      2020-05-26 00:02:58 UTC (rev 
75930)
@@ -26,9 +26,16 @@
 
 BRLCAD_ADDLIB(libicv "${LIBICV_SOURCES}" 
"libbu;libbn;${PNG_LIBRARIES};${NETPBM_LIBRARY}")
 set_target_properties(libicv PROPERTIES VERSION 20.0.1 SOVERSION 20)
-if(HIDE_INTERNAL_SYMBOLS)
-  set_property(TARGET libicv APPEND PROPERTY COMPILE_DEFINITIONS 
"NETPBM_DLL_IMPORTS")
-endif(HIDE_INTERNAL_SYMBOLS)
+if (HIDE_INTERNAL_SYMBOLS)
+  if (TARGET ${NETPBM_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+    set_property(TARGET libicv APPEND PROPERTY COMPILE_DEFINITIONS 
"NETPBM_DLL_IMPORTS")
+  endif (TARGET ${NETPBM_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+  if (TARGET libicv-obj)
+    if (TARGET ${NETPBM_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+      set_property(TARGET libicv-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"NETPBM_DLL_IMPORTS")
+    endif (TARGET ${NETPBM_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+  endif (TARGET libicv-obj)
+endif (HIDE_INTERNAL_SYMBOLS)
 
 add_subdirectory(tests)
 

Modified: brlcad/trunk/src/librt/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/librt/CMakeLists.txt       2020-05-25 23:41:08 UTC (rev 
75929)
+++ brlcad/trunk/src/librt/CMakeLists.txt       2020-05-26 00:02:58 UTC (rev 
75930)
@@ -367,9 +367,28 @@
 if(HIDE_INTERNAL_SYMBOLS)
   set_property(TARGET librt APPEND PROPERTY COMPILE_DEFINITIONS 
"TIE_DLL_EXPORTS")
   set_property(TARGET librt APPEND PROPERTY COMPILE_DEFINITIONS 
"DB5_DLL_EXPORTS")
-  set_property(TARGET librt APPEND PROPERTY COMPILE_DEFINITIONS 
"VDS_DLL_IMPORTS")
-  set_property(TARGET librt APPEND PROPERTY COMPILE_DEFINITIONS 
"GDIAM_DLL_IMPORTS")
-  set_property(TARGET librt APPEND PROPERTY COMPILE_DEFINITIONS 
"LZ4_DLL_IMPORT=1")
+  if(TARGET ${VDS_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+    set_property(TARGET librt APPEND PROPERTY COMPILE_DEFINITIONS 
"VDS_DLL_IMPORTS")
+  endif(TARGET ${VDS_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+  if(TARGET ${GDIAM_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+    set_property(TARGET librt APPEND PROPERTY COMPILE_DEFINITIONS 
"GDIAM_DLL_IMPORTS")
+  endif(TARGET ${GDIAM_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+  if(TARGET ${LZ4_LIBRARIES} OR HIDE_INTERNAL_SYMBOLS_EXT)
+    set_property(TARGET librt APPEND PROPERTY COMPILE_DEFINITIONS 
"LZ4_DLL_IMPORT=1")
+  endif(TARGET ${LZ4_LIBRARIES} OR HIDE_INTERNAL_SYMBOLS_EXT)
+  if (TARGET librt-obj)
+    set_property(TARGET librt-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"TIE_DLL_EXPORTS")
+    set_property(TARGET librt-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"DB5_DLL_EXPORTS")
+    if(TARGET ${VDS_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+      set_property(TARGET librt-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"VDS_DLL_IMPORTS")
+    endif(TARGET ${VDS_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+    if(TARGET ${GDIAM_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+      set_property(TARGET librt-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"GDIAM_DLL_IMPORTS")
+    endif(TARGET ${GDIAM_LIBRARY} OR HIDE_INTERNAL_SYMBOLS_EXT)
+    if(TARGET ${LZ4_LIBRARIES} OR HIDE_INTERNAL_SYMBOLS_EXT)
+      set_property(TARGET librt-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"LZ4_DLL_IMPORT=1")
+    endif(TARGET ${LZ4_LIBRARIES} OR HIDE_INTERNAL_SYMBOLS_EXT)
+  endif (TARGET librt-obj)
 endif(HIDE_INTERNAL_SYMBOLS)
 
 # The following is build code for test applications used during

Modified: brlcad/trunk/src/other/libgdiam/gdiam.hpp
===================================================================
--- brlcad/trunk/src/other/libgdiam/gdiam.hpp   2020-05-25 23:41:08 UTC (rev 
75929)
+++ brlcad/trunk/src/other/libgdiam/gdiam.hpp   2020-05-26 00:02:58 UTC (rev 
75930)
@@ -32,13 +32,21 @@
 #  pragma clang diagnostic ignored "-Wfloat-equal"
 #endif
 
+#if defined(_WIN32)
+# define COMPILER_DLLEXPORT __declspec(dllexport)
+# define COMPILER_DLLIMPORT __declspec(dllimport)
+#else
+# define COMPILER_DLLEXPORT __attribute__ ((visibility ("default")))
+# define COMPILER_DLLIMPORT __attribute__ ((visibility ("default")))
+#endif
+
 #ifndef GDIAM_EXPORT
 #  if defined(GDIAM_DLL_EXPORTS) && defined(GDIAM_DLL_IMPORTS)
 #    error "Only GDIAM_DLL_EXPORTS or GDIAM_DLL_IMPORTS can be defined, not 
both."
 #  elif defined(GDIAM_DLL_EXPORTS)
-#    define GDIAM_EXPORT __declspec(dllexport)
+#    define GDIAM_EXPORT COMPILER_DLLEXPORT
 #  elif defined(GDIAM_DLL_IMPORTS)
-#    define GDIAM_EXPORT __declspec(dllimport)
+#    define GDIAM_EXPORT COMPILER_DLLIMPORT
 #  else
 #    define GDIAM_EXPORT
 #  endif

Modified: brlcad/trunk/src/other/libnetpbm/pm.h
===================================================================
--- brlcad/trunk/src/other/libnetpbm/pm.h       2020-05-25 23:41:08 UTC (rev 
75929)
+++ brlcad/trunk/src/other/libnetpbm/pm.h       2020-05-26 00:02:58 UTC (rev 
75930)
@@ -35,13 +35,21 @@
 } /* to fake out automatic code indenters */
 #endif
 
+#if defined(_WIN32)
+# define COMPILER_DLLEXPORT __declspec(dllexport)
+# define COMPILER_DLLIMPORT __declspec(dllimport)
+#else
+# define COMPILER_DLLEXPORT __attribute__ ((visibility ("default")))
+# define COMPILER_DLLIMPORT __attribute__ ((visibility ("default")))
+#endif
+
 #ifndef NETPBM_EXPORT
 #  if defined(NETPBM_DLL_EXPORTS) && defined(NETPBM_DLL_IMPORTS)
 #    error "Only NETPBM_DLL_EXPORTS or NETPBM_DLL_IMPORTS can be defined, not 
both."
 #  elif defined(NETPBM_DLL_EXPORTS)
-#    define NETPBM_EXPORT __declspec(dllexport)
+#    define NETPBM_EXPORT COMPILER_DLLEXPORT
 #  elif defined(NETPBM_DLL_IMPORTS)
-#    define NETPBM_EXPORT __declspec(dllimport)
+#    define NETPBM_EXPORT COMPILER_DLLIMPORT
 #  else
 #    define NETPBM_EXPORT
 #  endif

Modified: brlcad/trunk/src/other/libnetpbm/ppm.h
===================================================================
--- brlcad/trunk/src/other/libnetpbm/ppm.h      2020-05-25 23:41:08 UTC (rev 
75929)
+++ brlcad/trunk/src/other/libnetpbm/ppm.h      2020-05-26 00:02:58 UTC (rev 
75930)
@@ -3,13 +3,21 @@
 #ifndef _PPM_H_
 #define _PPM_H_
 
+#if defined(_WIN32)
+# define COMPILER_DLLEXPORT __declspec(dllexport)
+# define COMPILER_DLLIMPORT __declspec(dllimport)
+#else
+# define COMPILER_DLLEXPORT __attribute__ ((visibility ("default")))
+# define COMPILER_DLLIMPORT __attribute__ ((visibility ("default")))
+#endif
+
 #ifndef NETPBM_EXPORT
 #  if defined(NETPBM_DLL_EXPORTS) && defined(NETPBM_DLL_IMPORTS)
 #    error "Only NETPBM_DLL_EXPORTS or NETPBM_DLL_IMPORTS can be defined, not 
both."
 #  elif defined(NETPBM_DLL_EXPORTS)
-#    define NETPBM_EXPORT __declspec(dllexport)
+#    define NETPBM_EXPORT COMPILER_DLLEXPORT
 #  elif defined(NETPBM_DLL_IMPORTS)
-#    define NETPBM_EXPORT __declspec(dllimport)
+#    define NETPBM_EXPORT COMPILER_DLLIMPORT
 #  else
 #    define NETPBM_EXPORT
 #  endif

Modified: brlcad/trunk/src/other/libvds/vds.h
===================================================================
--- brlcad/trunk/src/other/libvds/vds.h 2020-05-25 23:41:08 UTC (rev 75929)
+++ brlcad/trunk/src/other/libvds/vds.h 2020-05-26 00:02:58 UTC (rev 75930)
@@ -76,13 +76,21 @@
 extern "C" {
 #endif
 
+#if defined(_WIN32)
+# define COMPILER_DLLEXPORT __declspec(dllexport)
+# define COMPILER_DLLIMPORT __declspec(dllimport)
+#else
+# define COMPILER_DLLEXPORT __attribute__ ((visibility ("default")))
+# define COMPILER_DLLIMPORT __attribute__ ((visibility ("default")))
+#endif
+
 #ifndef VDS_EXPORT
 #  if defined(VDS_DLL_EXPORTS) && defined(VDS_DLL_IMPORTS)
 #    error "Only VDS_DLL_EXPORTS or VDS_DLL_IMPORTS can be defined, not both."
 #  elif defined(VDS_DLL_EXPORTS)
-#    define VDS_EXPORT __declspec(dllexport)
+#    define VDS_EXPORT COMPILER_DLLEXPORT
 #  elif defined(VDS_DLL_IMPORTS)
-#    define VDS_EXPORT __declspec(dllimport)
+#    define VDS_EXPORT COMPILER_DLLIMPORT
 #  else
 #    define VDS_EXPORT
 #  endif

Modified: brlcad/trunk/src/other/lz4/lz4.h
===================================================================
--- brlcad/trunk/src/other/lz4/lz4.h    2020-05-25 23:41:08 UTC (rev 75929)
+++ brlcad/trunk/src/other/lz4/lz4.h    2020-05-26 00:02:58 UTC (rev 75930)
@@ -73,10 +73,19 @@
 *  LZ4_DLL_EXPORT :
 *  Enable exporting of functions when building a Windows DLL
 */
+
+#if defined(_WIN32)
+# define COMPILER_DLLEXPORT __declspec(dllexport)
+# define COMPILER_DLLIMPORT __declspec(dllimport)
+#else
+# define COMPILER_DLLEXPORT __attribute__ ((visibility ("default")))
+# define COMPILER_DLLIMPORT __attribute__ ((visibility ("default")))
+#endif
+
 #if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1)
-#  define LZ4LIB_API __declspec(dllexport)
+#  define LZ4LIB_API COMPILER_DLLEXPORT
 #elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1)
-#  define LZ4LIB_API __declspec(dllimport) /* It isn't required but allows to 
generate better code, saving a function pointer load from the IAT and an 
indirect jump.*/
+#  define LZ4LIB_API COMPILER_DLLIMPORT /* It isn't required but allows to 
generate better code, saving a function pointer load from the IAT and an 
indirect jump.*/
 #else
 #  define LZ4LIB_API
 #endif

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to