Add OpenFBX

This commit is contained in:
William 2024-01-03 02:46:02 +00:00
parent 2a36a746e8
commit 13b957e1b1
4 changed files with 108 additions and 1 deletions

3
.gitignore vendored
View File

@ -13,6 +13,9 @@ CMakeScripts/
*.cmake
Makefile
# Don't ignore our own *.cmake files
!/cmake/*.cmake
# Ignore compiled object files
*.o
*.so

View File

@ -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)

25
cmake/PatchUtil.cmake Normal file
View File

@ -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()

46
patches/OpenFBX.patch Normal file
View File

@ -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