diff --git a/CMakeLists.txt b/CMakeLists.txt index 31c82414..1c5350b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -215,6 +215,7 @@ if(MUJOCO_BUILD_SIMULATE) endif() if(MUJOCO_BUILD_STUDIO) + add_subdirectory(src/experimental/mjz) add_subdirectory(src/experimental/platform) add_subdirectory(src/experimental/studio) endif() diff --git a/cmake/third_party_deps/miniz.cmake b/cmake/third_party_deps/miniz.cmake new file mode 100644 index 00000000..bbaf5a2a --- /dev/null +++ b/cmake/third_party_deps/miniz.cmake @@ -0,0 +1,29 @@ +# Copyright 2026 DeepMind Technologies Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set(MUJOCO_DEP_VERSION_miniz + 2.1.0 + CACHE STRING "Tag/version of `miniz` to be fetched." +) +mark_as_advanced(MUJOCO_DEP_VERSION_miniz) + +include(FindOrFetch) + +fetchpackage( + PACKAGE_NAME miniz + GIT_REPO https://github.com/richgel999/miniz.git + GIT_TAG ${MUJOCO_DEP_VERSION_miniz} + TARGETS miniz + CUSTOM_CMAKE "${CMAKE_SOURCE_DIR}/cmake/third_party_deps/miniz/CMakeLists.txt" +) diff --git a/cmake/third_party_deps/miniz/CMakeLists.txt b/cmake/third_party_deps/miniz/CMakeLists.txt new file mode 100644 index 00000000..412273f0 --- /dev/null +++ b/cmake/third_party_deps/miniz/CMakeLists.txt @@ -0,0 +1,22 @@ +# Copyright 2026 DeepMind Technologies Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +cmake_minimum_required(VERSION 2.8) + +PROJECT(miniz C) + +set(miniz_SOURCE miniz.c miniz_zip.c miniz_tinfl.c miniz_tdef.c) +add_library(miniz STATIC ${miniz_SOURCE}) + +target_include_directories(miniz PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/src/experimental/mjz/CMakeLists.txt b/src/experimental/mjz/CMakeLists.txt new file mode 100644 index 00000000..c1dcc4f7 --- /dev/null +++ b/src/experimental/mjz/CMakeLists.txt @@ -0,0 +1,37 @@ +# Copyright 2026 DeepMind Technologies Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +cmake_minimum_required(VERSION 3.16) + +set(MUJOCO_MJZ_TARGET_NAME mujoco_mjz) + +add_library(${MUJOCO_MJZ_TARGET_NAME} STATIC) + +target_include_directories(${MUJOCO_MJZ_TARGET_NAME} PRIVATE + ../.. +) + +target_sources(${MUJOCO_MJZ_TARGET_NAME} + PUBLIC + mjz_decoder.cc +) + +include(third_party_deps/miniz) + +target_link_libraries(${MUJOCO_MJZ_TARGET_NAME} + miniz + mujoco::mujoco +) + +add_library(mujoco::mjz ALIAS ${MUJOCO_MJZ_TARGET_NAME}) diff --git a/src/experimental/studio/CMakeLists.txt b/src/experimental/studio/CMakeLists.txt index f74fa54a..696a8ebb 100644 --- a/src/experimental/studio/CMakeLists.txt +++ b/src/experimental/studio/CMakeLists.txt @@ -54,6 +54,7 @@ target_link_libraries(${MUJOCO_STUDIO_TARGET_NAME} implot mujoco::mujoco mujoco::platform + mujoco::mjz ) file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets)