From b8aa68a080f98661c19e7c820fb24342492f9377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 8 Apr 2024 23:28:37 +0200 Subject: [PATCH] CMake: Allow linking draco statically if ASSIMP_BUILD_DRACO_STATIC is set. (#5535) * CMake: Mark draco as a private dependency since assimp does not publicly expose its interface. * CMake: Allow linking draco statically if ASSIMP_BUILD_DRACO_STATIC is set. --- CMakeLists.txt | 25 ++++++++++++++++++------- code/CMakeLists.txt | 2 +- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 31c5e6615..670f29f86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -621,6 +621,10 @@ ELSE () ADD_DEFINITIONS( -DASSIMP_BUILD_NO_C4D_IMPORTER ) ENDIF () +if(ASSIMP_BUILD_DRACO_STATIC) + set(ASSIMP_BUILD_DRACO ON) +endif() + # Draco requires cmake 3.12 IF (DEFINED CMAKE_VERSION AND "${CMAKE_VERSION}" VERSION_LESS "3.12") message(NOTICE "draco requires cmake 3.12 or newer, cmake is ${CMAKE_VERSION} . Draco is disabled") @@ -656,22 +660,29 @@ ELSE() "-Wno-sign-compare" "-Wno-unused-local-typedefs" ) - # Draco 1.4.1 does not explicitly export any symbols under GCC/clang - list(APPEND DRACO_CXX_FLAGS - "-fvisibility=default" - ) + + if(NOT ASSIMP_BUILD_DRACO_STATIC) + # Draco 1.4.1 does not explicitly export any symbols under GCC/clang + list(APPEND DRACO_CXX_FLAGS + "-fvisibility=default" + ) + endif() ENDIF() # Don't build or install all of Draco by default ADD_SUBDIRECTORY( "contrib/draco" EXCLUDE_FROM_ALL ) + if(ASSIMP_BUILD_DRACO_STATIC) + set_property(DIRECTORY "contrib/draco" PROPERTY BUILD_SHARED_LIBS OFF) + endif() + if(MSVC OR WIN32) set(draco_LIBRARIES "draco") else() - if(BUILD_SHARED_LIBS) - set(draco_LIBRARIES "draco_shared") - else() + if(ASSIMP_BUILD_DRACO_STATIC) set(draco_LIBRARIES "draco_static") + else() + set(draco_LIBRARIES "draco_shared") endif() endif() diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 0a7be6247..a521c9fb8 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1286,7 +1286,7 @@ IF(ASSIMP_HUNTER_ENABLED) endif() if (ASSIMP_BUILD_DRACO) - target_link_libraries(assimp PUBLIC ${draco_LIBRARIES}) + target_link_libraries(assimp PRIVATE ${draco_LIBRARIES}) endif() ELSE() TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES})