mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-27 15:25:54 -04:00
CMake: Add --exclude-libs flags to static thirdparty libraries
Matching makepanda, this avoids symbol conflicts and may have optimization benefits. This is a temporary hack until CMake 3.24 is released, which offers a cleaner way of doing this.
This commit is contained in:
parent
6ea1e8d65c
commit
c62d2319e0
@ -97,6 +97,11 @@ target_include_directories(p3dtoolbase PUBLIC
|
||||
target_link_libraries(p3dtoolbase PKG::EIGEN PKG::THREADS PKG::MIMALLOC)
|
||||
target_interrogate(p3dtoolbase ${P3DTOOLBASE_SOURCES} EXTENSIONS ${P3DTOOLBASE_IGATEEXT})
|
||||
|
||||
if(HAVE_MIMALLOC AND CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# Do not re-export symbols from these libraries.
|
||||
target_link_options(p3dtoolbase PRIVATE "LINKER:--exclude-libs,libmimalloc.a")
|
||||
endif()
|
||||
|
||||
if(NOT BUILD_METALIBS)
|
||||
install(TARGETS p3dtoolbase
|
||||
EXPORT Core COMPONENT Core
|
||||
|
@ -94,6 +94,12 @@ if(ANDROID)
|
||||
target_link_libraries(p3prc log)
|
||||
endif()
|
||||
|
||||
if(HAVE_OPENSSL AND CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# Do not re-export symbols from these libraries.
|
||||
target_link_options(p3prc PRIVATE "LINKER:--exclude-libs,libssl.a")
|
||||
target_link_options(p3prc PRIVATE "LINKER:--exclude-libs,libcrypto.a")
|
||||
endif()
|
||||
|
||||
install(TARGETS p3prc
|
||||
EXPORT Core COMPONENT Core
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
|
@ -60,6 +60,11 @@ if(HAVE_OPENAL)
|
||||
set_target_properties(p3openal_audio PROPERTIES DEFINE_SYMBOL BUILDING_OPENAL_AUDIO)
|
||||
target_link_libraries(p3openal_audio panda PKG::OPENAL)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# When statically linking OpenAL, keep its symbols private to this module.
|
||||
target_link_options(p3openal_audio PRIVATE "LINKER:--exclude-libs,libopenal.a")
|
||||
endif()
|
||||
|
||||
install(TARGETS p3openal_audio
|
||||
EXPORT OpenAL COMPONENT OpenAL
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
|
@ -26,12 +26,27 @@ set_target_properties(p3ffmpeg PROPERTIES DEFINE_SYMBOL BUILDING_FFMPEG)
|
||||
target_link_libraries(p3ffmpeg panda
|
||||
PKG::FFMPEG PKG::SWSCALE PKG::SWRESAMPLE)
|
||||
|
||||
# Do not re-export symbols from these libraries.
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
target_link_options(p3ffmpeg PRIVATE "LINKER:--exclude-libs,libavcodec.a")
|
||||
target_link_options(p3ffmpeg PRIVATE "LINKER:--exclude-libs,libavformat.a")
|
||||
target_link_options(p3ffmpeg PRIVATE "LINKER:--exclude-libs,libavutil.a")
|
||||
endif()
|
||||
|
||||
if(HAVE_SWSCALE)
|
||||
target_compile_definitions(p3ffmpeg PRIVATE HAVE_SWSCALE)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
target_link_options(p3ffmpeg PRIVATE "LINKER:--exclude-libs,libswscale.a")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_SWRESAMPLE)
|
||||
target_compile_definitions(p3ffmpeg PRIVATE HAVE_SWRESAMPLE)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
target_link_options(p3ffmpeg PRIVATE "LINKER:--exclude-libs,libswresample.a")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
install(TARGETS p3ffmpeg
|
||||
|
@ -180,6 +180,11 @@ target_interrogate(p3gobj ALL EXTENSIONS ${P3GOBJ_IGATEEXT})
|
||||
|
||||
if(HAVE_SQUISH)
|
||||
target_compile_definitions(p3gobj PRIVATE HAVE_SQUISH)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# Keep symbols from libsquish internal.
|
||||
target_link_options(p3gobj PRIVATE "LINKER:--exclude-libs,libsquish.a")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(PHAVE_LOCKF)
|
||||
|
@ -51,6 +51,24 @@ target_link_libraries(p3movies p3pstatclient p3gobj p3pandabase pandaexpress
|
||||
PKG::VORBIS PKG::OPUS)
|
||||
target_interrogate(p3movies ALL)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# Do not re-export symbols from these libraries.
|
||||
if(HAVE_OPUS OR HAVE_VORBIS)
|
||||
target_link_options(p3movies PRIVATE "LINKER:--exclude-libs,libogg.a")
|
||||
endif()
|
||||
|
||||
if(HAVE_VORBIS)
|
||||
target_link_options(p3movies PRIVATE "LINKER:--exclude-libs,libvorbis.a")
|
||||
target_link_options(p3movies PRIVATE "LINKER:--exclude-libs,libvorbisenc.a")
|
||||
target_link_options(p3movies PRIVATE "LINKER:--exclude-libs,libvorbisfile.a")
|
||||
endif()
|
||||
|
||||
if(HAVE_OPUS)
|
||||
target_link_options(p3movies PRIVATE "LINKER:--exclude-libs,libopus.a")
|
||||
target_link_options(p3movies PRIVATE "LINKER:--exclude-libs,libopusfile.a")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT BUILD_METALIBS)
|
||||
install(TARGETS p3movies
|
||||
EXPORT Core COMPONENT Core
|
||||
|
@ -39,6 +39,35 @@ target_link_libraries(p3pnmimagetypes p3pnmimage
|
||||
PKG::JPEG PKG::TIFF PKG::PNG PKG::OPENEXR)
|
||||
set_target_properties(p3pnmimagetypes PROPERTIES CXX_EXCEPTIONS ON)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# Do not re-export symbols from these libraries.
|
||||
if(HAVE_JPEG)
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libjpeg.a")
|
||||
endif()
|
||||
|
||||
if(HAVE_TIFF)
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libtiff.a")
|
||||
endif()
|
||||
|
||||
if(HAVE_PNG)
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libpng.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libpng16.a")
|
||||
endif()
|
||||
|
||||
if(HAVE_OPENEXR)
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libHalf.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libIex.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libIexMath.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libIlmImf.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libIlmImfUtil.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libIlmThread.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libImath.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libOpenEXR.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libOpenEXRCore.a")
|
||||
target_link_options(p3pnmimagetypes PRIVATE "LINKER:--exclude-libs,libOpenEXRUtil.a")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT BUILD_METALIBS)
|
||||
install(TARGETS p3pnmimagetypes
|
||||
EXPORT Core COMPONENT Core
|
||||
|
@ -43,6 +43,12 @@ if(HAVE_FFMPEG)
|
||||
target_compile_definitions(p3vision PRIVATE HAVE_FFMPEG)
|
||||
endif()
|
||||
|
||||
if(HAVE_ARTOOLKIT AND CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# Do not re-export symbols from these libraries.
|
||||
target_link_options(p3vision PRIVATE "LINKER:--exclude-libs,libAR.a")
|
||||
target_link_options(p3vision PRIVATE "LINKER:--exclude-libs,libARMulti.a")
|
||||
endif()
|
||||
|
||||
install(TARGETS p3vision
|
||||
EXPORT Vision COMPONENT Vision
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
|
@ -37,6 +37,12 @@ target_interrogate(p3vrpn ALL)
|
||||
|
||||
set_target_properties(p3vrpn PROPERTIES CXX_EXCEPTIONS ON)
|
||||
|
||||
if(HAVE_VRPN AND CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# Do not re-export symbols from these libraries.
|
||||
target_link_options(p3vrpn PRIVATE "LINKER:--exclude-libs,libvrpn.a")
|
||||
target_link_options(p3vrpn PRIVATE "LINKER:--exclude-libs,libquat.a")
|
||||
endif()
|
||||
|
||||
install(TARGETS p3vrpn
|
||||
EXPORT VRPN COMPONENT VRPN
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
|
@ -26,6 +26,12 @@ set_target_properties(p3assimp PROPERTIES DEFINE_SYMBOL BUILDING_ASSIMP)
|
||||
target_link_libraries(p3assimp PRIVATE p3pandatoolbase)
|
||||
target_link_libraries(p3assimp PUBLIC PKG::ASSIMP)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$")
|
||||
# Do not re-export symbols from these libraries.
|
||||
target_link_options(p3assimp PRIVATE "LINKER:--exclude-libs,libassimp.a")
|
||||
target_link_options(p3assimp PRIVATE "LINKER:--exclude-libs,libIrrXML.a")
|
||||
endif()
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
# We can't install this if we're doing a static build, because it depends on
|
||||
# a static library that isn't installed.
|
||||
|
Loading…
x
Reference in New Issue
Block a user