From 3a7d0f5656da4d802d0cde9e59da910b791dc125 Mon Sep 17 00:00:00 2001 From: RichardTea <31507749+RichardTea@users.noreply.github.com> Date: Fri, 22 Jan 2021 16:31:59 +0000 Subject: [PATCH] Add Draco to cmakelists Initial pass. Not yet used. Add Draco library to assimp build and link --- CMakeLists.txt | 48 +++++++++++++++++++++++++++++++++++++++++++++ code/CMakeLists.txt | 11 ++++++++++- test/CMakeLists.txt | 4 ++++ 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b553ef9e..e2e6ddb12 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -570,6 +570,54 @@ ELSE () ADD_DEFINITIONS( -DASSIMP_BUILD_NO_C4D_IMPORTER ) ENDIF () +OPTION ( ASSIMP_BUILD_DRACO "If the Draco libraries are to be built. Primarily for glTF" ON ) +IF ( ASSIMP_BUILD_DRACO ) + # Primarily for glTF v2 + # Enable Draco glTF feature set + set(DRACO_GLTF ON CACHE BOOL "" FORCE) + # Disable unnecessary or omitted components + set(DRACO_JS_GLUE OFF CACHE BOOL "" FORCE) + set(DRACO_WASM OFF CACHE BOOL "" FORCE) + set(DRACO_MAYA_PLUGIN OFF CACHE BOOL "" FORCE) + set(DRACO_UNITY_PLUGIN OFF CACHE BOOL "" FORCE) + set(DRACO_TESTS OFF CACHE BOOL "" FORCE) + + IF(ASSIMP_HUNTER_ENABLED) + # hunter is untested + hunter_add_package(draco) + find_package(draco CONFIG REQUIRED) + ELSE() + # Draco 1.4.1 has several nasty warnings and will not build with /WX + IF(MSVC) + set(DRACO_CXX_FLAGS "/W0") + ENDIF() + ADD_SUBDIRECTORY( "contrib/draco" ) + + # Don't build the draco command-line tools by default + set_target_properties(draco_encoder draco_decoder PROPERTIES EXCLUDE_FROM_ALL TRUE) + set_target_properties(draco_encoder draco_decoder PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE) + + TARGET_USE_COMMON_OUTPUT_DIRECTORY(draco) + TARGET_USE_COMMON_OUTPUT_DIRECTORY(draco_encoder) + TARGET_USE_COMMON_OUTPUT_DIRECTORY(draco_decoder) + + set(draco_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/draco/src") + + # This is probably wrong + INSTALL( TARGETS draco + EXPORT "${TARGETS_EXPORT_NAME}" + LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} + RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} + FRAMEWORK DESTINATION ${ASSIMP_LIB_INSTALL_DIR} + COMPONENT ${LIBASSIMP_COMPONENT} + INCLUDES DESTINATION include + ) + + ENDIF() +ENDIF() + +# Main assimp code ADD_SUBDIRECTORY( code/ ) IF ( ASSIMP_BUILD_ASSIMP_TOOLS ) # The viewer for windows only diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index bbcad86e5..b728cda46 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1117,6 +1117,11 @@ IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) INCLUDE_DIRECTORIES(${C4D_INCLUDES}) ENDIF () +IF (ASSIMP_BUILD_DRACO) + INCLUDE_DIRECTORIES(${draco_INCLUDE_DIRS}) + ADD_DEFINITIONS( -DASSIMP_ENABLE_DRACO ) +ENDIF() + ADD_LIBRARY( assimp ${assimp_src} ) ADD_LIBRARY(assimp::assimp ALIAS assimp) @@ -1149,7 +1154,7 @@ IF(ASSIMP_HUNTER_ENABLED) pugixml ) ELSE() - TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES} ) + TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES}) ENDIF() if(ASSIMP_ANDROID_JNIIOSYSTEM) @@ -1164,6 +1169,10 @@ IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) TARGET_LINK_LIBRARIES(assimp ${C4D_EXTRA_LIBRARIES}) ENDIF () +IF (ASSIMP_BUILD_DRACO) + target_link_libraries(assimp draco) +ENDIF() + if( MSVC ) # in order to prevent DLL hell, each of the DLLs have to be suffixed with the major version and msvc prefix # CMake 3.12 added a variable for this diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 9005a5ec4..6d41ee543 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -223,6 +223,10 @@ else() target_sources(unit PUBLIC ${Assimp_SOURCE_DIR}/contrib/gtest/src/gtest-all.cc) endif() +IF (ASSIMP_BUILD_DRACO) + ADD_DEFINITIONS( -DASSIMP_ENABLE_DRACO ) +ENDIF() + TARGET_USE_COMMON_OUTPUT_DIRECTORY(unit) add_definitions(-DASSIMP_TEST_MODELS_DIR="${CMAKE_CURRENT_LIST_DIR}/models")