Files
QuaternionEngine/third_party/fastgltf/tests/CMakeLists.txt

64 lines
2.9 KiB
CMake

set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL TRUE)
# We want these tests to be a optional executable.
add_executable(fastgltf_tests EXCLUDE_FROM_ALL
"base64_tests.cpp" "basic_test.cpp" "benchmarks.cpp" "glb_tests.cpp" "gltf_path.hpp"
"vector_tests.cpp" "uri_tests.cpp" "extension_tests.cpp" "accessor_tests.cpp")
target_compile_features(fastgltf_tests PRIVATE cxx_std_17)
target_link_libraries(fastgltf_tests PRIVATE fastgltf fastgltf_simdjson)
target_link_libraries(fastgltf_tests PRIVATE glm::glm Catch2::Catch2WithMain)
fastgltf_compiler_flags(fastgltf_tests)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/deps/catch2")
add_subdirectory(deps/catch2)
target_link_libraries(fastgltf_tests PRIVATE Catch2::Catch2)
endif()
# We only use tinygltf to compare against.
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gltf_loaders/tinygltf/tiny_gltf.h")
message(STATUS "fastgltf: Found tinygltf")
set(TINYGLTF_INSTALL OFF CACHE BOOL "")
set(TINYGLTF_BUILD_LOADER_EXAMPLE OFF CACHE BOOL "")
set(TINYGLTF_HEADER_ONLY ON CACHE BOOL "")
add_subdirectory(gltf_loaders/tinygltf)
target_link_libraries(fastgltf_tests PRIVATE tinygltf)
target_compile_definitions(fastgltf_tests PRIVATE HAS_TINYGLTF=1)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gltf_loaders/RapidJSON")
# RapidJSON's CMake is weird
message(STATUS "fastgltf: Found RapidJSON")
target_include_directories(fastgltf_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/gltf_loaders/RapidJSON/include")
target_compile_definitions(fastgltf_tests PRIVATE HAS_RAPIDJSON=1 TINYGLTF_USE_RAPIDJSON=1 TINYGLTF_NO_INCLUDE_RAPIDJSON)
endif()
endif()
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gltf_loaders/cgltf/cgltf.h")
message(STATUS "fastgltf: Found cgltf")
target_include_directories(fastgltf_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/gltf_loaders/cgltf")
target_compile_definitions(fastgltf_tests PRIVATE HAS_CGLTF=1)
endif()
if (FASTGLTF_ENABLE_GLTF_RS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gltf-rs/src/lib.rs")
message(STATUS "fastgltf: Found gltf-rs")
corrosion_import_crate(MANIFEST_PATH gltf-rs/Cargo.toml)
corrosion_add_cxxbridge(gltf-rs-bridge CRATE gltf_rs MANIFEST_PATH gltf-rs FILES lib.rs)
target_link_libraries(fastgltf_tests PUBLIC gltf-rs-bridge)
target_compile_definitions(fastgltf_tests PRIVATE HAS_GLTFRS=1)
endif()
if(FASTGLTF_ENABLE_ASSIMP AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gltf_loaders/assimp")
message(STATUS "fastgltf: Found assimp")
# Only enable glTF importer
set(ASSIMP_NO_EXPORT ON CACHE BOOL "")
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "")
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "")
set(ASSIMP_BUILD_GLTF_IMPORTER ON CACHE BOOL "")
add_subdirectory(gltf_loaders/assimp)
target_link_libraries(fastgltf_tests PRIVATE assimp::assimp)
target_compile_definitions(fastgltf_tests PRIVATE HAS_ASSIMP=1)
endif()
fastgltf_add_source_directory(TARGET fastgltf_tests FOLDER ".")