Add OpenFBX
This commit is contained in:
parent
2a36a746e8
commit
13b957e1b1
|
@ -13,6 +13,9 @@ CMakeScripts/
|
|||
*.cmake
|
||||
Makefile
|
||||
|
||||
# Don't ignore our own *.cmake files
|
||||
!/cmake/*.cmake
|
||||
|
||||
# Ignore compiled object files
|
||||
*.o
|
||||
*.so
|
||||
|
|
|
@ -69,6 +69,39 @@ FetchContent_MakeAvailable(tinyobjloader)
|
|||
FetchContent_Declare(rapidobj GIT_REPOSITORY https://github.com/guybrush77/rapidobj.git GIT_TAG master)
|
||||
FetchContent_MakeAvailable(rapidobj)
|
||||
|
||||
FetchContent_Declare(miniz GIT_REPOSITORY https://github.com/richgel999/miniz.git GIT_TAG master OVERRIDE_FIND_PACKAGE)
|
||||
FetchContent_MakeAvailable(miniz)
|
||||
|
||||
add_library(miniz::miniz ALIAS miniz)
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/PatchUtil.cmake)
|
||||
|
||||
FetchContent_Declare(OpenFBX GIT_REPOSITORY https://github.com/nem0/OpenFBX.git GIT_TAG master)
|
||||
|
||||
FetchContent_GetProperties(openfbx)
|
||||
if(NOT openfbx_POPULATED)
|
||||
FetchContent_Populate(openfbx)
|
||||
|
||||
message(STATUS "Patching OpenFBX")
|
||||
PatchUtil_Patch(
|
||||
openfbx
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/patches/OpenFBX.patch"
|
||||
"${openfbx_SOURCE_DIR}"
|
||||
1
|
||||
_patch_result
|
||||
)
|
||||
|
||||
if(_patch_result)
|
||||
message(STATUS "Patched OpenFBX (or it was already patched)")
|
||||
else()
|
||||
message(FATAL_ERROR "Failed to patch OpenFBX")
|
||||
endif()
|
||||
|
||||
add_subdirectory("${openfbx_SOURCE_DIR}" "${openfbx_BINARY_DIR}")
|
||||
endif()
|
||||
FetchContent_MakeAvailable(openfbx)
|
||||
|
||||
|
||||
if(NOT bgfx_POPULATED)
|
||||
FetchContent_Populate(bgfx)
|
||||
set(BGFX_BUILD_EXAMPLES OFF CACHE BOOL "Build BGFX examples")
|
||||
|
@ -93,7 +126,7 @@ set(MODULES
|
|||
|
||||
add_library(iridium-modules)
|
||||
target_sources(iridium-modules PUBLIC FILE_SET cxx_modules TYPE CXX_MODULES FILES ${MODULES})
|
||||
target_link_libraries(iridium-modules PUBLIC imgui glfw glad Vulkan::Vulkan glm bgfx bx boost_predef rapidobj)
|
||||
target_link_libraries(iridium-modules PUBLIC imgui glfw glad Vulkan::Vulkan glm bgfx bx boost_predef rapidobj OpenFBX)
|
||||
|
||||
add_executable(iridium ${SOURCE})
|
||||
target_link_libraries(iridium PUBLIC iridium-modules)
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
function(PatchUtil_Patch PATCH_ID PATCH_PATH DESTINATION_PATH PATCH_VERSION PATCH_RESULT)
|
||||
set(patch_variable_name "_${PATCH_ID}_patch_applied")
|
||||
set(_patch_applied ${${patch_variable_name}})
|
||||
|
||||
if (NOT "${_patch_applied}" STREQUAL "${PATCH_VERSION}")
|
||||
if (DEFINED "${patch_variable_name}")
|
||||
execute_process(COMMAND git reset
|
||||
WORKING_DIRECTORY "${DESTINATION_PATH}"
|
||||
RESULT_VARIABLE _openfbx_patch_result)
|
||||
execute_process(COMMAND git restore .
|
||||
WORKING_DIRECTORY "${DESTINATION_PATH}"
|
||||
RESULT_VARIABLE _openfbx_patch_result)
|
||||
endif()
|
||||
execute_process(COMMAND git apply "${PATCH_PATH}"
|
||||
WORKING_DIRECTORY "${DESTINATION_PATH}"
|
||||
RESULT_VARIABLE _openfbx_patch_result)
|
||||
if (_openfbx_patch_result EQUAL 0)
|
||||
set("${patch_variable_name}" "${PATCH_VERSION}" CACHE INTERNAL "" FORCE)
|
||||
else()
|
||||
set(${PATCH_RESULT} FALSE PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
set(${PATCH_RESULT} TRUE PARENT_SCOPE)
|
||||
endfunction()
|
|
@ -0,0 +1,46 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 3ab4949..47ba18b 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.11)
|
||||
|
||||
project(OpenFBX LANGUAGES CXX)
|
||||
|
||||
-set(CMAKE_CXX_STANDARD 11)
|
||||
+set(CMAKE_CXX_STANDARD 14)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
@@ -18,31 +18,3 @@ target_include_directories(OpenFBX
|
||||
|
||||
target_compile_definitions(OpenFBX PRIVATE _LARGEFILE64_SOURCE)
|
||||
set_target_properties(OpenFBX PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
-
|
||||
-install(TARGETS OpenFBX EXPORT openfbxTargets
|
||||
- RUNTIME DESTINATION bin
|
||||
- ARCHIVE DESTINATION lib
|
||||
- LIBRARY DESTINATION lib
|
||||
- INCLUDES DESTINATION include)
|
||||
-
|
||||
-include(CMakePackageConfigHelpers)
|
||||
-configure_package_config_file(
|
||||
- openfbxConfig.cmake.in
|
||||
- "${CMAKE_CURRENT_BINARY_DIR}/openfbxConfig.cmake"
|
||||
- INSTALL_DESTINATION "${CMAKE_INSTALL_DATADIR}/openfbx"
|
||||
-)
|
||||
-
|
||||
-install(
|
||||
- FILES "${CMAKE_CURRENT_BINARY_DIR}/openfbxConfig.cmake"
|
||||
- DESTINATION "${CMAKE_INSTALL_DATADIR}/openfbx"
|
||||
-)
|
||||
-
|
||||
-install(
|
||||
- EXPORT openfbxTargets
|
||||
- FILE openfbxTargets.cmake
|
||||
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/openfbx
|
||||
-)
|
||||
-
|
||||
-install(FILES ${CMAKE_SOURCE_DIR}/src/ofbx.h
|
||||
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
-)
|
||||
\ No newline at end of file
|
Loading…
Reference in New Issue