diff --git a/cmake/modules/FindAssimp.cmake b/cmake/modules/FindAssimp.cmake new file mode 100644 index 0000000000..0f1696d971 --- /dev/null +++ b/cmake/modules/FindAssimp.cmake @@ -0,0 +1,28 @@ +# Filename: FindAssimp.cmake +# Authors: CFSworks (9 Nov, 2018) +# +# Usage: +# find_package(Assimp [REQUIRED] [QUIET]) +# +# Once done this will define: +# ASSIMP_FOUND - system has Assimp +# ASSIMP_INCLUDE_DIR - the path to the location of the assimp/ directory +# ASSIMP_LIBRARY - the library to link against for Assimp +# + +if(NOT ASSIMP_INCLUDE_DIR) + find_path(ASSIMP_INCLUDE_DIR + NAMES "assimp/Importer.hpp") + + mark_as_advanced(ASSIMP_INCLUDE_DIR) +endif() + +if(NOT ASSIMP_LIBRARY) + find_library(ASSIMP_LIBRARY + NAMES "assimp") + + mark_as_advanced(ASSIMP_LIBRARY) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Assimp DEFAULT_MSG ASSIMP_INCLUDE_DIR ASSIMP_LIBRARY) diff --git a/dtool/Package.cmake b/dtool/Package.cmake index 55e7650952..c30402aa6b 100644 --- a/dtool/Package.cmake +++ b/dtool/Package.cmake @@ -161,6 +161,17 @@ package_option(TAR package_status(TAR "libtar") +# +# ------------ Asset formats ------------ +# + +# Assimp +find_package(Assimp QUIET) +package_option(ASSIMP + "Build pandatool with support for loading 3D assets supported by Assimp.") +package_status(ASSIMP "Assimp") + + # # ------------ Math libraries ------------ # diff --git a/pandatool/CMakeLists.txt b/pandatool/CMakeLists.txt index 194f298f44..3acefaf1f7 100644 --- a/pandatool/CMakeLists.txt +++ b/pandatool/CMakeLists.txt @@ -3,6 +3,7 @@ if(NOT BUILD_PANDA) endif() # Include pandatool source directories +add_subdirectory(src/assimp) add_subdirectory(src/bam) add_subdirectory(src/converter) add_subdirectory(src/cvscopy) diff --git a/pandatool/src/assimp/CMakeLists.txt b/pandatool/src/assimp/CMakeLists.txt new file mode 100644 index 0000000000..b65bdca8df --- /dev/null +++ b/pandatool/src/assimp/CMakeLists.txt @@ -0,0 +1,29 @@ +if(NOT HAVE_ASSIMP) + return() +endif() + +set(P3ASSIMP_HEADERS + assimpLoader.h assimpLoader.I + config_assimp.h + loaderFileTypeAssimp.h + pandaIOStream.h + pandaIOSystem.h + pandaLogger.h +) + +set(P3ASSIMP_SOURCES + assimpLoader.cxx + config_assimp.cxx + loaderFileTypeAssimp.cxx + pandaIOStream.cxx + pandaIOSystem.cxx + pandaLogger.cxx +) + +composite_sources(p3assimp P3ASSIMP_SOURCES) +add_library(p3assimp ${MODULE_TYPE} ${P3ASSIMP_HEADERS} ${P3ASSIMP_SOURCES}) +set_target_properties(p3assimp PROPERTIES DEFINE_SYMBOL BUILDING_ASSIMP) +target_link_libraries(p3assimp p3pandatoolbase + PKG::ASSIMP) + +install(TARGETS p3assimp DESTINATION ${MODULE_DESTINATION})