diff options
author | Alex Rønne Petersen <alex@alexrp.com> | 2024-04-08 23:28:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-08 23:28:37 +0200 |
commit | b8aa68a080f98661c19e7c820fb24342492f9377 (patch) | |
tree | 6940deff2ea2c2eee41686164e6bee6da04d8ff4 | |
parent | 8b9ed34eaa3e6ad24254cb7e058fb9150f66b865 (diff) |
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.
-rw-r--r-- | CMakeLists.txt | 25 | ||||
-rw-r--r-- | 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}) |