Improve Filament Studio source builds

This commit is contained in:
devshahofficial
2026-05-01 09:02:59 +05:30
parent 407be2fc0b
commit 7fada46855
4 changed files with 91 additions and 25 deletions
@@ -13,61 +13,65 @@
# limitations under the License.
add_library(dear_imgui STATIC)
set(MUJOCO_DEAR_IMGUI_SOURCE_DIR "${dear_imgui_SOURCE_DIR}" CACHE INTERNAL "")
target_include_directories(dear_imgui
PUBLIC
${dear_imgui_SOURCE_DIR}
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}
)
target_sources(dear_imgui
PUBLIC
${dear_imgui_SOURCE_DIR}/imgui.h
${dear_imgui_SOURCE_DIR}/imgui.cpp
${dear_imgui_SOURCE_DIR}/imgui_internal.h
${dear_imgui_SOURCE_DIR}/imgui_draw.cpp
${dear_imgui_SOURCE_DIR}/imgui_tables.cpp
${dear_imgui_SOURCE_DIR}/imgui_widgets.cpp
${dear_imgui_SOURCE_DIR}/imgui_demo.cpp
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/imgui.h
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/imgui.cpp
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/imgui_internal.h
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/imgui_draw.cpp
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/imgui_tables.cpp
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/imgui_widgets.cpp
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/imgui_demo.cpp
)
# SDL2 backend
# TODO: I don't know how to correctly check for dependencies in cmake. This
# assumes that SDL2 is pulled in _before_ dear_imgui, but that seems fragile.
# For now, we'll just assume SDL2 is available as dear_imgui is only being used
# in contexts which depend on SDL2.
#if(TARGET SDL2)
function(mujoco_add_dear_imgui_sdl2_backend)
if(TARGET dear_imgui_SDL2 OR NOT TARGET SDL2::SDL2-static)
return()
endif()
add_library(dear_imgui_SDL2 STATIC)
target_include_directories(dear_imgui_SDL2
PUBLIC
${dear_imgui_SOURCE_DIR}
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}
)
target_sources(dear_imgui_SDL2
PUBLIC
${dear_imgui_SOURCE_DIR}/backends/imgui_impl_sdl2.cpp
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/backends/imgui_impl_sdl2.cpp
)
target_link_libraries(dear_imgui_SDL2
SDL2::SDL2-static
)
#endif()
endfunction()
# SDL2 backend. Filament uses base dear_imgui without SDL2; platform calls this
# helper again after SDL2 is pulled in.
mujoco_add_dear_imgui_sdl2_backend()
# OpenGL3 backend
add_library(dear_imgui_OpenGL3 STATIC)
target_include_directories(dear_imgui_OpenGL3
PUBLIC
${dear_imgui_SOURCE_DIR}
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}
)
target_sources(dear_imgui_OpenGL3
PUBLIC
${dear_imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.h
${dear_imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/backends/imgui_impl_opengl3.h
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp
)
# stdlib
add_library(dear_imgui_stdlib STATIC)
target_include_directories(dear_imgui_stdlib
PUBLIC
${dear_imgui_SOURCE_DIR}
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}
)
target_sources(dear_imgui_stdlib
PUBLIC
${dear_imgui_SOURCE_DIR}/misc/cpp/imgui_stdlib.h
${dear_imgui_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/misc/cpp/imgui_stdlib.h
${MUJOCO_DEAR_IMGUI_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp
)
+20
View File
@@ -51,6 +51,18 @@ set(FILAMENT_PATCH_COMMAND
git apply --reject --whitespace=fix ${mujoco_SOURCE_DIR}/cmake/filament-allow-clang-windows.patch
)
# MuJoCo fetches Abseil before Filament is configured. Filament's
# FILAMENT_USE_EXTERNAL_ABSL path calls find_package(absl), which can otherwise
# discover an unrelated package-manager Abseil config and collide with the
# targets already created by MuJoCo's fetched Abseil.
if(DEFINED CMAKE_DISABLE_FIND_PACKAGE_absl)
set(MUJOCO_CMAKE_DISABLE_FIND_PACKAGE_ABSL_WAS_DEFINED TRUE)
set(MUJOCO_CMAKE_DISABLE_FIND_PACKAGE_ABSL_OLD "${CMAKE_DISABLE_FIND_PACKAGE_absl}")
else()
set(MUJOCO_CMAKE_DISABLE_FIND_PACKAGE_ABSL_WAS_DEFINED FALSE)
endif()
set(CMAKE_DISABLE_FIND_PACKAGE_absl TRUE)
fetchpackage(
PACKAGE_NAME filament
GIT_REPO https://github.com/google/filament.git
@@ -58,5 +70,13 @@ fetchpackage(
PATCH_COMMAND ${FILAMENT_PATCH_COMMAND}
)
if(MUJOCO_CMAKE_DISABLE_FIND_PACKAGE_ABSL_WAS_DEFINED)
set(CMAKE_DISABLE_FIND_PACKAGE_absl "${MUJOCO_CMAKE_DISABLE_FIND_PACKAGE_ABSL_OLD}")
else()
unset(CMAKE_DISABLE_FIND_PACKAGE_absl)
endif()
unset(MUJOCO_CMAKE_DISABLE_FIND_PACKAGE_ABSL_WAS_DEFINED)
unset(MUJOCO_CMAKE_DISABLE_FIND_PACKAGE_ABSL_OLD)
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_OLD}")