Merge pull request #266099 from tmplt/feat/mujoco-3.0.0
mujoco: 2.3.7 -> 3.0.1, add Python bindings
This commit is contained in:
commit
d71187cf33
8 changed files with 957 additions and 218 deletions
|
@ -1,122 +1,184 @@
|
||||||
{ cmake
|
{ cereal_1_3_2
|
||||||
|
, cmake
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, fetchFromGitLab
|
, fetchFromGitLab
|
||||||
, git
|
, glfw
|
||||||
|
, glm
|
||||||
, lib
|
, lib
|
||||||
, libGL
|
, spdlog
|
||||||
, stdenv
|
, stdenv
|
||||||
, xorg
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
# See https://github.com/deepmind/mujoco/blob/c9246e1f5006379d599e0bcddf159a8616d31441/cmake/MujocoDependencies.cmake#L17-L55
|
pin = {
|
||||||
abseil-cpp = fetchFromGitHub {
|
|
||||||
owner = "abseil";
|
# See https://github.com/google-deepmind/mujoco/blob/3.0.0/cmake/MujocoDependencies.cmake#L17-L64
|
||||||
repo = "abseil-cpp";
|
abseil-cpp = fetchFromGitHub {
|
||||||
rev = "c2435f8342c2d0ed8101cb43adfd605fdc52dca2";
|
owner = "abseil";
|
||||||
hash = "sha256-PLoI7ix+reUqkZ947kWzls8lujYqWXk9A9a55UcfahI=";
|
repo = "abseil-cpp";
|
||||||
};
|
rev = "fb3621f4f897824c0dbe0615fa94543df6192f30";
|
||||||
benchmark = fetchFromGitHub {
|
hash = "sha256-uNGrTNg5G5xFGtc+BSWE389x0tQ/KxJQLHfebNWas/k=";
|
||||||
owner = "google";
|
};
|
||||||
repo = "benchmark";
|
benchmark = fetchFromGitHub {
|
||||||
rev = "2dd015dfef425c866d9a43f2c67d8b52d709acb6";
|
owner = "google";
|
||||||
hash = "sha256-pUW9YVaujs/y00/SiPqDgK4wvVsaM7QUp/65k0t7Yr0=";
|
repo = "benchmark";
|
||||||
};
|
rev = "344117638c8ff7e239044fd0fa7085839fc03021";
|
||||||
ccd = fetchFromGitHub {
|
hash = "sha256-gztnxui9Fe/FTieMjdvfJjWHjkImtlsHn6fM1FruyME=";
|
||||||
owner = "danfis";
|
};
|
||||||
repo = "libccd";
|
ccd = fetchFromGitHub {
|
||||||
rev = "7931e764a19ef6b21b443376c699bbc9c6d4fba8";
|
owner = "danfis";
|
||||||
hash = "sha256-TIZkmqQXa0+bSWpqffIgaBela0/INNsX9LPM026x1Wk=";
|
repo = "libccd";
|
||||||
};
|
rev = "7931e764a19ef6b21b443376c699bbc9c6d4fba8";
|
||||||
eigen3 = fetchFromGitLab {
|
hash = "sha256-TIZkmqQXa0+bSWpqffIgaBela0/INNsX9LPM026x1Wk=";
|
||||||
owner = "libeigen";
|
};
|
||||||
repo = "eigen";
|
eigen3 = fetchFromGitLab {
|
||||||
rev = "211c5dfc6741a5570ad007983c113ef4d144f9f3";
|
owner = "libeigen";
|
||||||
hash = "sha256-oT/h8QkL0vwaflh46Zsnu9Db1b65AP6p//nAga8M5jI=";
|
repo = "eigen";
|
||||||
};
|
rev = "e8515f78ac098329ab9f8cab21c87caede090a3f";
|
||||||
googletest = fetchFromGitHub {
|
hash = "sha256-HXKtFJsKGpug+wNPjYynTuyaG0igo3oG4rFQktveh1g=";
|
||||||
owner = "google";
|
};
|
||||||
repo = "googletest";
|
googletest = fetchFromGitHub {
|
||||||
rev = "b796f7d44681514f58a683a3a71ff17c94edb0c1";
|
owner = "google";
|
||||||
hash = "sha256-LVLEn+e7c8013pwiLzJiiIObyrlbBHYaioO/SWbItPQ=";
|
repo = "googletest";
|
||||||
};
|
rev = "f8d7d77c06936315286eb55f8de22cd23c188571";
|
||||||
lodepng = fetchFromGitHub {
|
hash = "sha256-t0RchAHTJbuI5YW4uyBPykTvcjy90JW9AOPNjIhwh6U=";
|
||||||
owner = "lvandeve";
|
};
|
||||||
repo = "lodepng";
|
lodepng = fetchFromGitHub {
|
||||||
rev = "b4ed2cd7ecf61d29076169b49199371456d4f90b";
|
owner = "lvandeve";
|
||||||
hash = "sha256-5cCkdj/izP4e99BKfs/Mnwu9aatYXjlyxzzYiMD/y1M=";
|
repo = "lodepng";
|
||||||
};
|
rev = "b4ed2cd7ecf61d29076169b49199371456d4f90b";
|
||||||
qhull = fetchFromGitHub {
|
hash = "sha256-5cCkdj/izP4e99BKfs/Mnwu9aatYXjlyxzzYiMD/y1M=";
|
||||||
owner = "qhull";
|
};
|
||||||
repo = "qhull";
|
qhull = fetchFromGitHub {
|
||||||
rev = "0c8fc90d2037588024d9964515c1e684f6007ecc";
|
owner = "qhull";
|
||||||
hash = "sha256-Ptzxad3ewmKJbbcmrBT+os4b4SR976zlCG9F0nq0x94=";
|
repo = "qhull";
|
||||||
};
|
rev = "0c8fc90d2037588024d9964515c1e684f6007ecc";
|
||||||
tinyobjloader = fetchFromGitHub {
|
hash = "sha256-Ptzxad3ewmKJbbcmrBT+os4b4SR976zlCG9F0nq0x94=";
|
||||||
owner = "tinyobjloader";
|
};
|
||||||
repo = "tinyobjloader";
|
tinyobjloader = fetchFromGitHub {
|
||||||
rev = "1421a10d6ed9742f5b2c1766d22faa6cfbc56248";
|
owner = "tinyobjloader";
|
||||||
hash = "sha256-9z2Ne/WPCiXkQpT8Cun/pSGUwgClYH+kQ6Dx1JvW6w0=";
|
repo = "tinyobjloader";
|
||||||
};
|
rev = "1421a10d6ed9742f5b2c1766d22faa6cfbc56248";
|
||||||
tinyxml2 = fetchFromGitHub {
|
hash = "sha256-9z2Ne/WPCiXkQpT8Cun/pSGUwgClYH+kQ6Dx1JvW6w0=";
|
||||||
owner = "leethomason";
|
};
|
||||||
repo = "tinyxml2";
|
tinyxml2 = fetchFromGitHub {
|
||||||
rev = "9a89766acc42ddfa9e7133c7d81a5bda108a0ade";
|
owner = "leethomason";
|
||||||
hash = "sha256-YGAe4+Ttv/xeou+9FoJjmQCKgzupTYdDhd+gzvtz/88=";
|
repo = "tinyxml2";
|
||||||
|
rev = "9a89766acc42ddfa9e7133c7d81a5bda108a0ade";
|
||||||
|
hash = "sha256-YGAe4+Ttv/xeou+9FoJjmQCKgzupTYdDhd+gzvtz/88=";
|
||||||
|
};
|
||||||
|
marchingcubecpp = fetchFromGitHub {
|
||||||
|
owner = "aparis69";
|
||||||
|
repo = "MarchingCubeCpp";
|
||||||
|
rev = "5b79e5d6bded086a0abe276a4b5a69fc17ae9bf1";
|
||||||
|
hash = "sha256-L0DH1GJZ/3vatQAU/KZj/2xTKE6Fwcw9eQYzLdqX2N4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
tmd = stdenv.mkDerivation rec {
|
||||||
|
name = "TriangleMeshDistance";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "InteractiveComputerGraphics";
|
||||||
|
repo = name;
|
||||||
|
rev = "e55a15c20551f36242fd6368df099a99de71d43a";
|
||||||
|
hash = "sha256-vj6TMMT8mp7ciLa5nzVAhMWPcAHXq+ZwHlWsRA3uCmg=";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/include/tmd
|
||||||
|
cp ${name}/include/tmd/${name}.h $out/include/tmd/
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
sdflib = stdenv.mkDerivation rec {
|
||||||
|
name = "SdfLib";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "UPC-ViRVIG";
|
||||||
|
repo = name;
|
||||||
|
rev = "7c49cfba9bbec763b5d0f7b90b26555f3dde8088";
|
||||||
|
hash = "sha256-5bnQ3rHH9Pw1jRVpZpamFnhIJHWnGm6krgZgIBqNtVg=";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [ ./sdflib-system-deps.patch ];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DSDFLIB_USE_ASSIMP=OFF"
|
||||||
|
"-DSDFLIB_USE_OPENMP=OFF"
|
||||||
|
"-DSDFLIB_USE_ENOKI=OFF"
|
||||||
|
"-DSDFLIB_USE_SYSTEM_GLM=ON"
|
||||||
|
"-DSDFLIB_USE_SYSTEM_SPDLOG=ON"
|
||||||
|
"-DSDFLIB_USE_SYSTEM_CEREAL=ON"
|
||||||
|
"-DSDFLIB_USE_SYSTEM_TRIANGLEMESHDISTANCE=ON"
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake ];
|
||||||
|
buildInputs = [
|
||||||
|
pin.tmd
|
||||||
|
|
||||||
|
# Mainline. The otherwise pinned glm realease from 2018 does
|
||||||
|
# not build due to test failures and missing files.
|
||||||
|
glm
|
||||||
|
|
||||||
|
spdlog
|
||||||
|
cereal_1_3_2
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# See https://github.com/deepmind/mujoco/blob/c9246e1f5006379d599e0bcddf159a8616d31441/simulate/cmake/SimulateDependencies.cmake#L32-L35
|
in stdenv.mkDerivation rec {
|
||||||
glfw3 = fetchFromGitHub {
|
|
||||||
owner = "glfw";
|
|
||||||
repo = "glfw";
|
|
||||||
rev = "7482de6071d21db77a7236155da44c172a7f6c9e";
|
|
||||||
hash = "sha256-4+H0IXjAwbL5mAWfsIVhW0BSJhcWjkQx4j2TrzZ3aIo=";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "mujoco";
|
pname = "mujoco";
|
||||||
version = "2.3.7";
|
version = "3.0.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "deepmind";
|
owner = "google-deepmind";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-LgpA+iPGqciHuWBSD6/7yvZ7p+vo48ZYKjjrDZSnAwE=";
|
hash = "sha256-UXE+7KDti8RarpoJoo9Ei3TgW/Qdnj3ASRo8uTWhGrU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./dependencies.patch ];
|
patches = [ ./mujoco-system-deps-dont-fetch.patch ];
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake git ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libGL
|
pin.sdflib
|
||||||
xorg.libX11
|
glm
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXext
|
# non-numerical
|
||||||
xorg.libXi
|
spdlog
|
||||||
xorg.libXinerama
|
cereal_1_3_2
|
||||||
xorg.libXrandr
|
glfw
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DMUJOCO_USE_SYSTEM_sdflib=ON"
|
||||||
|
"-DMUJOCO_SIMULATE_USE_SYSTEM_GLFW=ON"
|
||||||
|
"-DMUJOCO_SAMPLES_USE_SYSTEM_GLFW=ON"
|
||||||
];
|
];
|
||||||
|
|
||||||
# Move things into place so that cmake doesn't try downloading dependencies.
|
# Move things into place so that cmake doesn't try downloading dependencies.
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
mkdir -p build/_deps
|
mkdir -p build/_deps
|
||||||
ln -s ${abseil-cpp} build/_deps/abseil-cpp-src
|
ln -s ${pin.abseil-cpp} build/_deps/abseil-cpp-src
|
||||||
ln -s ${benchmark} build/_deps/benchmark-src
|
ln -s ${pin.benchmark} build/_deps/benchmark-src
|
||||||
ln -s ${ccd} build/_deps/ccd-src
|
ln -s ${pin.ccd} build/_deps/ccd-src
|
||||||
ln -s ${eigen3} build/_deps/eigen3-src
|
ln -s ${pin.eigen3} build/_deps/eigen3-src
|
||||||
ln -s ${glfw3} build/_deps/glfw3-src
|
ln -s ${pin.googletest} build/_deps/googletest-src
|
||||||
ln -s ${googletest} build/_deps/googletest-src
|
ln -s ${pin.lodepng} build/_deps/lodepng-src
|
||||||
ln -s ${lodepng} build/_deps/lodepng-src
|
ln -s ${pin.qhull} build/_deps/qhull-src
|
||||||
ln -s ${qhull} build/_deps/qhull-src
|
ln -s ${pin.tinyobjloader} build/_deps/tinyobjloader-src
|
||||||
ln -s ${tinyobjloader} build/_deps/tinyobjloader-src
|
ln -s ${pin.tinyxml2} build/_deps/tinyxml2-src
|
||||||
ln -s ${tinyxml2} build/_deps/tinyxml2-src
|
ln -s ${pin.marchingcubecpp} build/_deps/marchingcubecpp-src
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru.pin = { inherit (pin) lodepng eigen3 abseil-cpp; };
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Multi-Joint dynamics with Contact. A general purpose physics simulator.";
|
description = "Multi-Joint dynamics with Contact. A general purpose physics simulator.";
|
||||||
homepage = "https://mujoco.org/";
|
homepage = "https://mujoco.org/";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
maintainers = with maintainers; [ samuela ];
|
maintainers = with maintainers; [ samuela tmplt ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,114 +0,0 @@
|
||||||
diff --git a/cmake/MujocoDependencies.cmake b/cmake/MujocoDependencies.cmake
|
|
||||||
index 3e322ea..980aace 100644
|
|
||||||
--- a/cmake/MujocoDependencies.cmake
|
|
||||||
+++ b/cmake/MujocoDependencies.cmake
|
|
||||||
@@ -87,8 +87,6 @@ set(BUILD_SHARED_LIBS
|
|
||||||
if(NOT TARGET lodepng)
|
|
||||||
FetchContent_Declare(
|
|
||||||
lodepng
|
|
||||||
- GIT_REPOSITORY https://github.com/lvandeve/lodepng.git
|
|
||||||
- GIT_TAG ${MUJOCO_DEP_VERSION_lodepng}
|
|
||||||
)
|
|
||||||
|
|
||||||
FetchContent_GetProperties(lodepng)
|
|
||||||
@@ -127,10 +125,6 @@ findorfetch(
|
|
||||||
qhull
|
|
||||||
LIBRARY_NAME
|
|
||||||
qhull
|
|
||||||
- GIT_REPO
|
|
||||||
- https://github.com/qhull/qhull.git
|
|
||||||
- GIT_TAG
|
|
||||||
- ${MUJOCO_DEP_VERSION_qhull}
|
|
||||||
TARGETS
|
|
||||||
qhull
|
|
||||||
EXCLUDE_FROM_ALL
|
|
||||||
@@ -151,10 +145,6 @@ findorfetch(
|
|
||||||
tinyxml2
|
|
||||||
LIBRARY_NAME
|
|
||||||
tinyxml2
|
|
||||||
- GIT_REPO
|
|
||||||
- https://github.com/leethomason/tinyxml2.git
|
|
||||||
- GIT_TAG
|
|
||||||
- ${MUJOCO_DEP_VERSION_tinyxml2}
|
|
||||||
TARGETS
|
|
||||||
tinyxml2
|
|
||||||
EXCLUDE_FROM_ALL
|
|
||||||
@@ -169,10 +159,6 @@ findorfetch(
|
|
||||||
tinyobjloader
|
|
||||||
LIBRARY_NAME
|
|
||||||
tinyobjloader
|
|
||||||
- GIT_REPO
|
|
||||||
- https://github.com/tinyobjloader/tinyobjloader.git
|
|
||||||
- GIT_TAG
|
|
||||||
- ${MUJOCO_DEP_VERSION_tinyobjloader}
|
|
||||||
TARGETS
|
|
||||||
tinyobjloader
|
|
||||||
EXCLUDE_FROM_ALL
|
|
||||||
@@ -187,10 +173,6 @@ findorfetch(
|
|
||||||
ccd
|
|
||||||
LIBRARY_NAME
|
|
||||||
ccd
|
|
||||||
- GIT_REPO
|
|
||||||
- https://github.com/danfis/libccd.git
|
|
||||||
- GIT_TAG
|
|
||||||
- ${MUJOCO_DEP_VERSION_ccd}
|
|
||||||
TARGETS
|
|
||||||
ccd
|
|
||||||
EXCLUDE_FROM_ALL
|
|
||||||
@@ -227,10 +209,6 @@ if(MUJOCO_BUILD_TESTS)
|
|
||||||
absl
|
|
||||||
LIBRARY_NAME
|
|
||||||
abseil-cpp
|
|
||||||
- GIT_REPO
|
|
||||||
- https://github.com/abseil/abseil-cpp.git
|
|
||||||
- GIT_TAG
|
|
||||||
- ${MUJOCO_DEP_VERSION_abseil}
|
|
||||||
TARGETS
|
|
||||||
absl::core_headers
|
|
||||||
EXCLUDE_FROM_ALL
|
|
||||||
@@ -254,10 +232,6 @@ if(MUJOCO_BUILD_TESTS)
|
|
||||||
GTest
|
|
||||||
LIBRARY_NAME
|
|
||||||
googletest
|
|
||||||
- GIT_REPO
|
|
||||||
- https://github.com/google/googletest.git
|
|
||||||
- GIT_TAG
|
|
||||||
- ${MUJOCO_DEP_VERSION_gtest}
|
|
||||||
TARGETS
|
|
||||||
gtest
|
|
||||||
gmock
|
|
||||||
@@ -288,10 +262,6 @@ if(MUJOCO_BUILD_TESTS)
|
|
||||||
benchmark
|
|
||||||
LIBRARY_NAME
|
|
||||||
benchmark
|
|
||||||
- GIT_REPO
|
|
||||||
- https://github.com/google/benchmark.git
|
|
||||||
- GIT_TAG
|
|
||||||
- ${MUJOCO_DEP_VERSION_benchmark}
|
|
||||||
TARGETS
|
|
||||||
benchmark::benchmark
|
|
||||||
benchmark::benchmark_main
|
|
||||||
@@ -308,8 +278,6 @@ if(MUJOCO_TEST_PYTHON_UTIL)
|
|
||||||
|
|
||||||
FetchContent_Declare(
|
|
||||||
Eigen3
|
|
||||||
- GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
|
|
||||||
- GIT_TAG ${MUJOCO_DEP_VERSION_Eigen3}
|
|
||||||
)
|
|
||||||
|
|
||||||
FetchContent_GetProperties(Eigen3)
|
|
||||||
diff --git a/simulate/cmake/SimulateDependencies.cmake b/simulate/cmake/SimulateDependencies.cmake
|
|
||||||
index fa539c2..5985d5a 100644
|
|
||||||
--- a/simulate/cmake/SimulateDependencies.cmake
|
|
||||||
+++ b/simulate/cmake/SimulateDependencies.cmake
|
|
||||||
@@ -81,10 +81,6 @@ findorfetch(
|
|
||||||
glfw3
|
|
||||||
LIBRARY_NAME
|
|
||||||
glfw3
|
|
||||||
- GIT_REPO
|
|
||||||
- https://github.com/glfw/glfw.git
|
|
||||||
- GIT_TAG
|
|
||||||
- ${MUJOCO_DEP_VERSION_glfw3}
|
|
||||||
TARGETS
|
|
||||||
glfw
|
|
||||||
EXCLUDE_FROM_ALL
|
|
|
@ -0,0 +1,538 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 285250b..32d03e3 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -92,7 +92,7 @@ add_subdirectory(src/render)
|
||||||
|
add_subdirectory(src/thread)
|
||||||
|
add_subdirectory(src/ui)
|
||||||
|
|
||||||
|
-target_compile_definitions(mujoco PRIVATE _GNU_SOURCE CCD_STATIC_DEFINE MUJOCO_DLL_EXPORTS -DMC_IMPLEM_ENABLE)
|
||||||
|
+target_compile_definitions(mujoco PRIVATE _GNU_SOURCE MUJOCO_DLL_EXPORTS -DMC_IMPLEM_ENABLE)
|
||||||
|
if(MUJOCO_ENABLE_AVX_INTRINSICS)
|
||||||
|
target_compile_definitions(mujoco PUBLIC mjUSEPLATFORMSIMD)
|
||||||
|
endif()
|
||||||
|
@@ -117,7 +117,7 @@ target_link_libraries(
|
||||||
|
lodepng
|
||||||
|
qhullstatic_r
|
||||||
|
tinyobjloader
|
||||||
|
- tinyxml2
|
||||||
|
+ tinyxml2::tinyxml2
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
diff --git a/cmake/MujocoDependencies.cmake b/cmake/MujocoDependencies.cmake
|
||||||
|
index 4e3e2c8..f6143d9 100644
|
||||||
|
--- a/cmake/MujocoDependencies.cmake
|
||||||
|
+++ b/cmake/MujocoDependencies.cmake
|
||||||
|
@@ -90,153 +90,203 @@ set(BUILD_SHARED_LIBS
|
||||||
|
CACHE INTERNAL "Build SHARED libraries"
|
||||||
|
)
|
||||||
|
|
||||||
|
+
|
||||||
|
if(NOT TARGET lodepng)
|
||||||
|
- FetchContent_Declare(
|
||||||
|
+ fetchcontent_declare(
|
||||||
|
lodepng
|
||||||
|
- GIT_REPOSITORY https://github.com/lvandeve/lodepng.git
|
||||||
|
- GIT_TAG ${MUJOCO_DEP_VERSION_lodepng}
|
||||||
|
)
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+if(NOT TARGET lodepng)
|
||||||
|
+ if(NOT MUJOCO_USE_SYSTEM_lodepng)
|
||||||
|
+ fetchcontent_declare(
|
||||||
|
+ lodepng
|
||||||
|
+ GIT_REPOSITORY https://github.com/lvandeve/lodepng.git
|
||||||
|
+ GIT_TAG ${MUJOCO_DEP_VERSION_lodepng}
|
||||||
|
+ )
|
||||||
|
|
||||||
|
- FetchContent_GetProperties(lodepng)
|
||||||
|
- if(NOT lodepng_POPULATED)
|
||||||
|
- FetchContent_Populate(lodepng)
|
||||||
|
- # This is not a CMake project.
|
||||||
|
- set(LODEPNG_SRCS ${lodepng_SOURCE_DIR}/lodepng.cpp)
|
||||||
|
- set(LODEPNG_HEADERS ${lodepng_SOURCE_DIR}/lodepng.h)
|
||||||
|
- add_library(lodepng STATIC ${LODEPNG_HEADERS} ${LODEPNG_SRCS})
|
||||||
|
- target_compile_options(lodepng PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
- target_link_options(lodepng PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
- target_include_directories(lodepng PUBLIC ${lodepng_SOURCE_DIR})
|
||||||
|
+ fetchcontent_getproperties(lodepng)
|
||||||
|
+ if(NOT lodepng_POPULATED)
|
||||||
|
+ fetchcontent_populate(lodepng)
|
||||||
|
+ # This is not a CMake project.
|
||||||
|
+ set(LODEPNG_SRCS ${lodepng_SOURCE_DIR}/lodepng.cpp)
|
||||||
|
+ set(LODEPNG_HEADERS ${lodepng_SOURCE_DIR}/lodepng.h)
|
||||||
|
+ add_library(lodepng STATIC ${LODEPNG_HEADERS} ${LODEPNG_SRCS})
|
||||||
|
+ target_compile_options(lodepng PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
+ target_link_options(lodepng PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
+ target_include_directories(lodepng PUBLIC ${lodepng_SOURCE_DIR})
|
||||||
|
+ endif()
|
||||||
|
+ else()
|
||||||
|
+ find_package(lodepng REQUIRED)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT TARGET marchingcubecpp)
|
||||||
|
- FetchContent_Declare(
|
||||||
|
+ fetchcontent_declare(
|
||||||
|
marchingcubecpp
|
||||||
|
- GIT_REPOSITORY https://github.com/aparis69/MarchingCubeCpp.git
|
||||||
|
- GIT_TAG ${MUJOCO_DEP_VERSION_MarchingCubeCpp}
|
||||||
|
)
|
||||||
|
|
||||||
|
- FetchContent_GetProperties(marchingcubecpp)
|
||||||
|
+ fetchcontent_getproperties(marchingcubecpp)
|
||||||
|
if(NOT marchingcubecpp_POPULATED)
|
||||||
|
- FetchContent_Populate(marchingcubecpp)
|
||||||
|
+ fetchcontent_populate(marchingcubecpp)
|
||||||
|
include_directories(${marchingcubecpp_SOURCE_DIR})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
+option(MUJOCO_USE_SYSTEM_qhull "Use installed qhull version." OFF)
|
||||||
|
+mark_as_advanced(MUJOCO_USE_SYSTEM_qhull)
|
||||||
|
+
|
||||||
|
set(QHULL_ENABLE_TESTING OFF)
|
||||||
|
|
||||||
|
findorfetch(
|
||||||
|
USE_SYSTEM_PACKAGE
|
||||||
|
- OFF
|
||||||
|
+ ${MUJOCO_USE_SYSTEM_qhull}
|
||||||
|
PACKAGE_NAME
|
||||||
|
- qhull
|
||||||
|
+ Qhull
|
||||||
|
LIBRARY_NAME
|
||||||
|
qhull
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/qhull/qhull.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_qhull}
|
||||||
|
TARGETS
|
||||||
|
qhull
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
)
|
||||||
|
-# MuJoCo includes a file from libqhull_r which is not exported by the qhull include directories.
|
||||||
|
-# Add it to the target.
|
||||||
|
-target_include_directories(
|
||||||
|
- qhullstatic_r INTERFACE $<BUILD_INTERFACE:${qhull_SOURCE_DIR}/src/libqhull_r>
|
||||||
|
-)
|
||||||
|
-target_compile_options(qhullstatic_r PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
-target_link_options(qhullstatic_r PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
+
|
||||||
|
+if(NOT MUJOCO_USE_SYSTEM_qhull)
|
||||||
|
+ # MuJoCo includes a file from libqhull_r which is not exported by the qhull include directories.
|
||||||
|
+ # Add it to the target.
|
||||||
|
+ target_include_directories(
|
||||||
|
+ qhullstatic_r INTERFACE $<BUILD_INTERFACE:${qhull_SOURCE_DIR}/src/libqhull_r>
|
||||||
|
+ )
|
||||||
|
+ target_compile_options(qhullstatic_r PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
+ target_link_options(qhullstatic_r PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
+else()
|
||||||
|
+ if(NOT TARGET qhullstatic_r)
|
||||||
|
+ add_library(qhullstatic_r INTERFACE)
|
||||||
|
+ set_target_properties(qhullstatic_r PROPERTIES INTERFACE_LINK_LIBRARIES Qhull::qhull_r)
|
||||||
|
+
|
||||||
|
+ # Workaround as headers are installed in <prefix>/include/libqhull_r/something.h
|
||||||
|
+ # but mujoco include them as #include <something.h>
|
||||||
|
+ get_property(qhull_include_dirs TARGET Qhull::qhull_r PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
+ foreach(qhull_include_dir IN LISTS qhull_include_dirs)
|
||||||
|
+ target_include_directories(qhullstatic_r INTERFACE ${qhull_include_dirs}/libqhull_r)
|
||||||
|
+ endforeach()
|
||||||
|
+ target_include_directories(qhullstatic_r INTERFACE )
|
||||||
|
+ endif()
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+option(MUJOCO_USE_SYSTEM_tinyxml2 "Use installed tinyxml2 version." OFF)
|
||||||
|
+mark_as_advanced(MUJOCO_USE_SYSTEM_tinyxml2)
|
||||||
|
|
||||||
|
set(tinyxml2_BUILD_TESTING OFF)
|
||||||
|
findorfetch(
|
||||||
|
USE_SYSTEM_PACKAGE
|
||||||
|
- OFF
|
||||||
|
+ ${MUJOCO_USE_SYSTEM_tinyxml2}
|
||||||
|
PACKAGE_NAME
|
||||||
|
tinyxml2
|
||||||
|
LIBRARY_NAME
|
||||||
|
tinyxml2
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/leethomason/tinyxml2.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_tinyxml2}
|
||||||
|
TARGETS
|
||||||
|
- tinyxml2
|
||||||
|
+ tinyxml2::tinyxml2
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
)
|
||||||
|
-target_compile_options(tinyxml2 PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
-target_link_options(tinyxml2 PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
+
|
||||||
|
+if(NOT MUJOCO_USE_SYSTEM_tinyxml2)
|
||||||
|
+ target_compile_options(tinyxml2 PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
+ target_link_options(tinyxml2 PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+option(MUJOCO_USE_SYSTEM_tinyobjloader "Use installed tinyobjloader version." OFF)
|
||||||
|
+mark_as_advanced(MUJOCO_USE_SYSTEM_tinyobjloader)
|
||||||
|
|
||||||
|
findorfetch(
|
||||||
|
USE_SYSTEM_PACKAGE
|
||||||
|
- OFF
|
||||||
|
+ ${MUJOCO_USE_SYSTEM_tinyobjloader}
|
||||||
|
PACKAGE_NAME
|
||||||
|
tinyobjloader
|
||||||
|
LIBRARY_NAME
|
||||||
|
tinyobjloader
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/tinyobjloader/tinyobjloader.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_tinyobjloader}
|
||||||
|
TARGETS
|
||||||
|
tinyobjloader
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
)
|
||||||
|
|
||||||
|
+if(MUJOCO_USE_SYSTEM_tinyobjloader)
|
||||||
|
+ # As of tinyobjloader v2.0.0rc10, the tinyobjloader target is named tinyobjloader in the build,
|
||||||
|
+ # but tinyobjloader::tinyobjloader when it is installed. To deal with this, if tinyobjloader is
|
||||||
|
+ # found in the system, we create an ALIAS
|
||||||
|
+ # The following is equivalent to add_library(tinyobjloader ALIAS tinyobjloader::tinyobjloader),
|
||||||
|
+ # but compatible with CMake 3.16 . Once the minimum CMake is bumped to CMake 3.18, we can use
|
||||||
|
+ # the simpler version
|
||||||
|
+ add_library(tinyobjloader INTERFACE IMPORTED)
|
||||||
|
+ set_target_properties(tinyobjloader PROPERTIES INTERFACE_LINK_LIBRARIES tinyobjloader::tinyobjloader)
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+option(MUJOCO_USE_SYSTEM_sdflib "Use installed sdflib version." OFF)
|
||||||
|
+mark_as_advanced(MUJOCO_USE_SYSTEM_sdflib)
|
||||||
|
+
|
||||||
|
option(SDFLIB_USE_ASSIMP OFF)
|
||||||
|
option(SDFLIB_USE_OPENMP OFF)
|
||||||
|
option(SDFLIB_USE_ENOKI OFF)
|
||||||
|
+
|
||||||
|
findorfetch(
|
||||||
|
USE_SYSTEM_PACKAGE
|
||||||
|
- OFF
|
||||||
|
+ ${MUJOCO_USE_SYSTEM_sdflib}
|
||||||
|
PACKAGE_NAME
|
||||||
|
- sdflib
|
||||||
|
+ SdfLib
|
||||||
|
LIBRARY_NAME
|
||||||
|
sdflib
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/UPC-ViRVIG/SdfLib.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_sdflib}
|
||||||
|
TARGETS
|
||||||
|
- SdfLib
|
||||||
|
+ SdfLib::SdfLib
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
)
|
||||||
|
-target_compile_options(SdfLib PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
-target_link_options(SdfLib PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
+
|
||||||
|
+if(NOT MUJOCO_USE_SYSTEM_sdflib)
|
||||||
|
+ target_compile_options(SdfLib PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
+ target_link_options(SdfLib PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+option(MUJOCO_USE_SYSTEM_ccd "Use installed ccd version." OFF)
|
||||||
|
+mark_as_advanced(MUJOCO_USE_SYSTEM_ccd)
|
||||||
|
|
||||||
|
set(ENABLE_DOUBLE_PRECISION ON)
|
||||||
|
set(CCD_HIDE_ALL_SYMBOLS ON)
|
||||||
|
findorfetch(
|
||||||
|
USE_SYSTEM_PACKAGE
|
||||||
|
- OFF
|
||||||
|
+ ${MUJOCO_USE_SYSTEM_ccd}
|
||||||
|
PACKAGE_NAME
|
||||||
|
ccd
|
||||||
|
LIBRARY_NAME
|
||||||
|
ccd
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/danfis/libccd.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_ccd}
|
||||||
|
TARGETS
|
||||||
|
ccd
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
)
|
||||||
|
-target_compile_options(ccd PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
-target_link_options(ccd PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
-
|
||||||
|
-# libCCD has an unconditional `#define _CRT_SECURE_NO_WARNINGS` on Windows.
|
||||||
|
-# TODO(stunya): Remove this after https://github.com/danfis/libccd/pull/77 is merged.
|
||||||
|
-if(WIN32)
|
||||||
|
- if(MSVC)
|
||||||
|
- # C4005 is the MSVC equivalent of -Wmacro-redefined.
|
||||||
|
- target_compile_options(ccd PRIVATE /wd4005)
|
||||||
|
- else()
|
||||||
|
- target_compile_options(ccd PRIVATE -Wno-macro-redefined)
|
||||||
|
+
|
||||||
|
+if(NOT MUJOCO_USE_SYSTEM_ccd)
|
||||||
|
+ target_compile_options(ccd PRIVATE ${MUJOCO_MACOS_COMPILE_OPTIONS})
|
||||||
|
+ target_link_options(ccd PRIVATE ${MUJOCO_MACOS_LINK_OPTIONS})
|
||||||
|
+ # This is necessary to ensure that the any library that consumes the ccd
|
||||||
|
+ # compiled internally by MuJoCo (as static library) has CCD_EXPORT correctly
|
||||||
|
+ # defined as an empty string. For ccd itself, this is ensured by the variable
|
||||||
|
+ # CCD_HIDE_ALL_SYMBOLS set to ON before the call to findorfetch
|
||||||
|
+ # See https://github.com/danfis/libccd/pull/79
|
||||||
|
+ target_compile_definitions(ccd INTERFACE CCD_STATIC_DEFINE)
|
||||||
|
+
|
||||||
|
+ # libCCD has an unconditional `#define _CRT_SECURE_NO_WARNINGS` on Windows.
|
||||||
|
+ # TODO(stunya): Remove this after https://github.com/danfis/libccd/pull/77 is merged.
|
||||||
|
+ if(WIN32)
|
||||||
|
+ if(MSVC)
|
||||||
|
+ # C4005 is the MSVC equivalent of -Wmacro-redefined.
|
||||||
|
+ target_compile_options(ccd PRIVATE /wd4005)
|
||||||
|
+ else()
|
||||||
|
+ target_compile_options(ccd PRIVATE -Wno-macro-redefined)
|
||||||
|
+ endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(MUJOCO_BUILD_TESTS)
|
||||||
|
+ option(MUJOCO_USE_SYSTEM_abseil "Use installed abseil version." OFF)
|
||||||
|
+ mark_as_advanced(MUJOCO_USE_SYSTEM_abseil)
|
||||||
|
+
|
||||||
|
set(ABSL_PROPAGATE_CXX_STD ON)
|
||||||
|
|
||||||
|
# This specific version of Abseil does not have the following variable. We need to work with BUILD_TESTING
|
||||||
|
@@ -249,15 +299,11 @@ if(MUJOCO_BUILD_TESTS)
|
||||||
|
set(ABSL_BUILD_TESTING OFF)
|
||||||
|
findorfetch(
|
||||||
|
USE_SYSTEM_PACKAGE
|
||||||
|
- OFF
|
||||||
|
+ ${MUJOCO_USE_SYSTEM_abseil}
|
||||||
|
PACKAGE_NAME
|
||||||
|
absl
|
||||||
|
LIBRARY_NAME
|
||||||
|
abseil-cpp
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/abseil/abseil-cpp.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_abseil}
|
||||||
|
TARGETS
|
||||||
|
absl::core_headers
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
@@ -268,6 +314,9 @@ if(MUJOCO_BUILD_TESTS)
|
||||||
|
CACHE BOOL "Build tests." FORCE
|
||||||
|
)
|
||||||
|
|
||||||
|
+ option(MUJOCO_USE_SYSTEM_gtest "Use installed gtest version." OFF)
|
||||||
|
+ mark_as_advanced(MUJOCO_USE_SYSTEM_gtest)
|
||||||
|
+
|
||||||
|
# Avoid linking errors on Windows by dynamically linking to the C runtime.
|
||||||
|
set(gtest_force_shared_crt
|
||||||
|
ON
|
||||||
|
@@ -276,22 +325,20 @@ if(MUJOCO_BUILD_TESTS)
|
||||||
|
|
||||||
|
findorfetch(
|
||||||
|
USE_SYSTEM_PACKAGE
|
||||||
|
- OFF
|
||||||
|
+ ${MUJOCO_USE_SYSTEM_gtest}
|
||||||
|
PACKAGE_NAME
|
||||||
|
GTest
|
||||||
|
LIBRARY_NAME
|
||||||
|
googletest
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/google/googletest.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_gtest}
|
||||||
|
TARGETS
|
||||||
|
- gtest
|
||||||
|
- gmock
|
||||||
|
- gtest_main
|
||||||
|
+ GTest::gmock
|
||||||
|
+ GTest::gtest_main
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
)
|
||||||
|
|
||||||
|
+ option(MUJOCO_USE_SYSTEM_benchmark "Use installed benchmark version." OFF)
|
||||||
|
+ mark_as_advanced(MUJOCO_USE_SYSTEM_benchmark)
|
||||||
|
+
|
||||||
|
set(BENCHMARK_EXTRA_FETCH_ARGS "")
|
||||||
|
if(WIN32 AND NOT MSVC)
|
||||||
|
set(BENCHMARK_EXTRA_FETCH_ARGS
|
||||||
|
@@ -310,15 +357,11 @@ if(MUJOCO_BUILD_TESTS)
|
||||||
|
|
||||||
|
findorfetch(
|
||||||
|
USE_SYSTEM_PACKAGE
|
||||||
|
- OFF
|
||||||
|
+ ${MUJOCO_USE_SYSTEM_benchmark}
|
||||||
|
PACKAGE_NAME
|
||||||
|
benchmark
|
||||||
|
LIBRARY_NAME
|
||||||
|
benchmark
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/google/benchmark.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_benchmark}
|
||||||
|
TARGETS
|
||||||
|
benchmark::benchmark
|
||||||
|
benchmark::benchmark_main
|
||||||
|
@@ -328,26 +371,42 @@ if(MUJOCO_BUILD_TESTS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(MUJOCO_TEST_PYTHON_UTIL)
|
||||||
|
+ option(MUJOCO_USE_SYSTEM_Eigen3 "Use installed Eigen3 version." OFF)
|
||||||
|
+ mark_as_advanced(MUJOCO_USE_SYSTEM_Eigen3)
|
||||||
|
+
|
||||||
|
add_compile_definitions(EIGEN_MPL2_ONLY)
|
||||||
|
- if(NOT TARGET eigen)
|
||||||
|
- # Support new IN_LIST if() operator.
|
||||||
|
- set(CMAKE_POLICY_DEFAULT_CMP0057 NEW)
|
||||||
|
+ if(NOT TARGET Eigen3::Eigen)
|
||||||
|
+ if(NOT MUJOCO_USE_SYSTEM_Eigen3)
|
||||||
|
+ # Support new IN_LIST if() operator.
|
||||||
|
+ set(CMAKE_POLICY_DEFAULT_CMP0057 NEW)
|
||||||
|
+ endif()
|
||||||
|
|
||||||
|
- FetchContent_Declare(
|
||||||
|
+ fetchcontent_declare(
|
||||||
|
Eigen3
|
||||||
|
- GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
|
||||||
|
- GIT_TAG ${MUJOCO_DEP_VERSION_Eigen3}
|
||||||
|
)
|
||||||
|
|
||||||
|
- FetchContent_GetProperties(Eigen3)
|
||||||
|
+ fetchcontent_getproperties(Eigen3)
|
||||||
|
if(NOT Eigen3_POPULATED)
|
||||||
|
- FetchContent_Populate(Eigen3)
|
||||||
|
+ fetchcontent_populate(Eigen3)
|
||||||
|
|
||||||
|
# Mark the library as IMPORTED as a workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/15415
|
||||||
|
add_library(Eigen3::Eigen INTERFACE IMPORTED)
|
||||||
|
set_target_properties(
|
||||||
|
Eigen3::Eigen PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${eigen3_SOURCE_DIR}"
|
||||||
|
)
|
||||||
|
+
|
||||||
|
+ fetchcontent_getproperties(Eigen3)
|
||||||
|
+ # if(NOT Eigen3_POPULATED)
|
||||||
|
+ # fetchcontent_populate(Eigen3)
|
||||||
|
+
|
||||||
|
+ # # Mark the library as IMPORTED as a workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/15415
|
||||||
|
+ # add_library(Eigen3::Eigen INTERFACE IMPORTED)
|
||||||
|
+ # set_target_properties(
|
||||||
|
+ # Eigen3::Eigen PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${eigen3_SOURCE_DIR}"
|
||||||
|
+ # )
|
||||||
|
+ # endif()
|
||||||
|
+ else()
|
||||||
|
+ find_package(Eigen3 REQUIRED)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
diff --git a/plugin/sdf/CMakeLists.txt b/plugin/sdf/CMakeLists.txt
|
||||||
|
index 3e216fc..e7e3a1e 100644
|
||||||
|
--- a/plugin/sdf/CMakeLists.txt
|
||||||
|
+++ b/plugin/sdf/CMakeLists.txt
|
||||||
|
@@ -37,7 +37,7 @@ set(MUJOCO_SDF_SRCS
|
||||||
|
add_library(sdf SHARED)
|
||||||
|
target_sources(sdf PRIVATE ${MUJOCO_SDF_SRCS})
|
||||||
|
target_include_directories(sdf PRIVATE ${MUJOCO_SDF_INCLUDE})
|
||||||
|
-target_link_libraries(sdf PRIVATE mujoco SdfLib)
|
||||||
|
+target_link_libraries(sdf PRIVATE mujoco SdfLib::SdfLib)
|
||||||
|
target_compile_options(
|
||||||
|
sdf
|
||||||
|
PRIVATE ${AVX_COMPILE_OPTIONS}
|
||||||
|
diff --git a/python/mujoco/util/CMakeLists.txt b/python/mujoco/util/CMakeLists.txt
|
||||||
|
index 666a372..d89bb49 100644
|
||||||
|
--- a/python/mujoco/util/CMakeLists.txt
|
||||||
|
+++ b/python/mujoco/util/CMakeLists.txt
|
||||||
|
@@ -63,8 +63,8 @@ if(BUILD_TESTING)
|
||||||
|
target_link_libraries(
|
||||||
|
array_traits_test
|
||||||
|
array_traits
|
||||||
|
- gmock
|
||||||
|
- gtest_main
|
||||||
|
+ GTest::gmock
|
||||||
|
+ GTest::gtest_main
|
||||||
|
)
|
||||||
|
gtest_add_tests(TARGET array_traits_test SOURCES array_traits_test.cc)
|
||||||
|
|
||||||
|
@@ -72,8 +72,8 @@ if(BUILD_TESTING)
|
||||||
|
target_link_libraries(
|
||||||
|
func_traits_test
|
||||||
|
func_traits
|
||||||
|
- gmock
|
||||||
|
- gtest_main
|
||||||
|
+ GTest::gmock
|
||||||
|
+ GTest::gtest_main
|
||||||
|
)
|
||||||
|
gtest_add_tests(TARGET func_traits_test SOURCES func_traits_test.cc)
|
||||||
|
|
||||||
|
@@ -81,8 +81,8 @@ if(BUILD_TESTING)
|
||||||
|
target_link_libraries(
|
||||||
|
func_wrap_test
|
||||||
|
func_wrap
|
||||||
|
- gmock
|
||||||
|
- gtest_main
|
||||||
|
+ GTest::gmock
|
||||||
|
+ GTest::gtest_main
|
||||||
|
)
|
||||||
|
gtest_add_tests(TARGET func_wrap_test SOURCES func_wrap_test.cc)
|
||||||
|
|
||||||
|
@@ -90,8 +90,8 @@ if(BUILD_TESTING)
|
||||||
|
target_link_libraries(
|
||||||
|
tuple_tools_test
|
||||||
|
func_wrap
|
||||||
|
- gmock
|
||||||
|
- gtest_main
|
||||||
|
+ GTest::gmock
|
||||||
|
+ GTest::gtest_main
|
||||||
|
)
|
||||||
|
gtest_add_tests(TARGET tuple_tools_test SOURCES tuple_tools_test.cc)
|
||||||
|
endif()
|
||||||
|
diff --git a/simulate/cmake/SimulateDependencies.cmake b/simulate/cmake/SimulateDependencies.cmake
|
||||||
|
index 5141406..75ff788 100644
|
||||||
|
--- a/simulate/cmake/SimulateDependencies.cmake
|
||||||
|
+++ b/simulate/cmake/SimulateDependencies.cmake
|
||||||
|
@@ -81,10 +81,6 @@ findorfetch(
|
||||||
|
glfw3
|
||||||
|
LIBRARY_NAME
|
||||||
|
glfw3
|
||||||
|
- GIT_REPO
|
||||||
|
- https://github.com/glfw/glfw.git
|
||||||
|
- GIT_TAG
|
||||||
|
- ${MUJOCO_DEP_VERSION_glfw3}
|
||||||
|
TARGETS
|
||||||
|
glfw
|
||||||
|
EXCLUDE_FROM_ALL
|
||||||
|
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
|
||||||
|
index 6bec911..2a16c21 100644
|
||||||
|
--- a/test/CMakeLists.txt
|
||||||
|
+++ b/test/CMakeLists.txt
|
||||||
|
@@ -30,7 +30,7 @@ macro(mujoco_test name)
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(${name} ${name}.cc)
|
||||||
|
- target_link_libraries(${name} gtest_main mujoco)
|
||||||
|
+ target_link_libraries(${name} GTest::gtest_main mujoco)
|
||||||
|
target_include_directories(${name} PRIVATE ${MUJOCO_TEST_INCLUDE})
|
||||||
|
set_target_properties(${name} PROPERTIES BUILD_RPATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
||||||
|
# gtest_discover_tests is recommended over gtest_add_tests, but has some issues in Windows.
|
||||||
|
@@ -59,20 +59,20 @@ target_link_libraries(
|
||||||
|
PUBLIC absl::core_headers
|
||||||
|
absl::strings
|
||||||
|
absl::synchronization
|
||||||
|
- gtest
|
||||||
|
- gmock
|
||||||
|
+ GTest::gtest
|
||||||
|
+ GTest::gmock
|
||||||
|
mujoco::mujoco
|
||||||
|
)
|
||||||
|
target_include_directories(fixture PRIVATE ${mujoco_SOURCE_DIR}/include gmock)
|
||||||
|
|
||||||
|
mujoco_test(fixture_test)
|
||||||
|
-target_link_libraries(fixture_test fixture gmock)
|
||||||
|
+target_link_libraries(fixture_test fixture GTest::gmock)
|
||||||
|
|
||||||
|
mujoco_test(header_test)
|
||||||
|
-target_link_libraries(header_test fixture gmock)
|
||||||
|
+target_link_libraries(header_test fixture GTest::gmock)
|
||||||
|
|
||||||
|
mujoco_test(pipeline_test)
|
||||||
|
-target_link_libraries(pipeline_test fixture gmock)
|
||||||
|
+target_link_libraries(pipeline_test fixture GTest::gmock)
|
||||||
|
|
||||||
|
add_subdirectory(benchmark)
|
||||||
|
add_subdirectory(engine)
|
|
@ -0,0 +1,192 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 251c456..3d30231 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -27,7 +27,7 @@ option(SDFLIB_USE_SYSTEM_GLM "Use glm library via find_package instead of downlo
|
||||||
|
option(SDFLIB_USE_SYSTEM_SPDLOG "Use spdlog library via find_package instead of downloading it" OFF)
|
||||||
|
option(SDFLIB_USE_SYSTEM_CEREAL "Use cereal library via find_package instead of downloading it" OFF)
|
||||||
|
option(SDFLIB_USE_SYSTEM_ASSIMP "Use assimp library via find_package instead of downloading it" OFF)
|
||||||
|
-
|
||||||
|
+option(SDFLIB_USE_SYSTEM_TRIANGLEMESHDISTANCE "Use TriangleMeshDistance library via system includes instead of downloading it" OFF)
|
||||||
|
|
||||||
|
if(SDFLIB_DEBUG_INFO)
|
||||||
|
add_compile_definitions(SDFLIB_PRINT_STATISTICS)
|
||||||
|
@@ -55,13 +55,52 @@ file(GLOB UTILS_SOURCE_FILES src/utils/*.cpp)
|
||||||
|
file(GLOB UTILS_HEADER_FILES src/utils/*.h)
|
||||||
|
|
||||||
|
# Add libraries
|
||||||
|
-add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES} ${HEADER_FILES} ${PUBLIC_HEADER_FILES}
|
||||||
|
- ${SDF_SOURCE_FILES} ${SDF_HEADER_FILES}
|
||||||
|
- ${UTILS_SOURCE_FILES} ${UTILS_HEADER_FILES})
|
||||||
|
-
|
||||||
|
-target_include_directories(${PROJECT_NAME} PUBLIC include/)
|
||||||
|
+add_library(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES} ${PUBLIC_HEADER_FILES}
|
||||||
|
+ ${SDF_SOURCE_FILES} ${SDF_HEADER_FILES}
|
||||||
|
+ ${UTILS_SOURCE_FILES} ${UTILS_HEADER_FILES})
|
||||||
|
+add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
|
||||||
|
+if(BUILD_SHARED_LIBS AND WIN32)
|
||||||
|
+ set_target_properties(${PROJECT_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||||
|
+endif()
|
||||||
|
+include(GNUInstallDirs)
|
||||||
|
+target_include_directories(${PROJECT_NAME} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||||
|
target_include_directories(${PROJECT_NAME} PRIVATE src/)
|
||||||
|
|
||||||
|
+# Install library and CMake config files
|
||||||
|
+install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME})
|
||||||
|
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/SdfLib
|
||||||
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
+
|
||||||
|
+install(EXPORT ${PROJECT_NAME}
|
||||||
|
+ FILE ${PROJECT_NAME}Targets.cmake
|
||||||
|
+ DESTINATION lib/cmake/${PROJECT_NAME}
|
||||||
|
+ NAMESPACE ${PROJECT_NAME}::
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+include(CMakePackageConfigHelpers)
|
||||||
|
+set(PACKAGE_DEPENDENCIES "")
|
||||||
|
+if(SDFLIB_USE_SYSTEM_GLM)
|
||||||
|
+ string(APPEND PACKAGE_DEPENDENCIES "find_dependency(glm)\n")
|
||||||
|
+endif()
|
||||||
|
+if(SDFLIB_USE_SYSTEM_SPDLOG)
|
||||||
|
+ string(APPEND PACKAGE_DEPENDENCIES "find_dependency(spdlog)\n")
|
||||||
|
+endif()
|
||||||
|
+if(SDFLIB_USE_SYSTEM_CEREAL)
|
||||||
|
+ string(APPEND PACKAGE_DEPENDENCIES "find_dependency(cereal)\n")
|
||||||
|
+endif()
|
||||||
|
+if(SDFLIB_USE_ASSIMP AND SDFLIB_USE_SYSTEM_ASSIMP)
|
||||||
|
+ string(APPEND PACKAGE_DEPENDENCIES "find_dependency(assimp)\n")
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
+configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
|
||||||
|
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||||
|
+ INSTALL_DESTINATION "lib/cmake/${PROJECT_NAME}"
|
||||||
|
+ NO_SET_AND_CHECK_MACRO
|
||||||
|
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO)
|
||||||
|
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
|
||||||
|
+ DESTINATION lib/cmake/${PROJECT_NAME})
|
||||||
|
+
|
||||||
|
# Add shaders
|
||||||
|
file(GLOB SHADER_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src/render_engine/shaders
|
||||||
|
src/render_engine/shaders/*.frag
|
||||||
|
@@ -69,7 +108,7 @@ file(GLOB SHADER_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src/render_engine/sh
|
||||||
|
src/render_engine/shaders/*.comp)
|
||||||
|
|
||||||
|
foreach(SHADER IN LISTS SHADER_FILES)
|
||||||
|
- add_custom_command(OUTPUT ${SHADER}
|
||||||
|
+add_custom_command(OUTPUT ${SHADER}
|
||||||
|
COMMAND cmake -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/src/render_engine/shaders/${SHADER} $<TARGET_FILE_DIR:${PROJECT_NAME}>/shaders/${SHADER}
|
||||||
|
DEPENDS src/render_engine/shaders/${SHADER}
|
||||||
|
)
|
||||||
|
@@ -112,7 +151,10 @@ endif()
|
||||||
|
target_link_libraries(${PROJECT_NAME} PUBLIC ${SDFLIB_GLM_TARGET})
|
||||||
|
target_link_libraries(${PROJECT_NAME} PUBLIC spdlog::spdlog)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PUBLIC cereal::cereal)
|
||||||
|
-target_link_libraries(${PROJECT_NAME} PUBLIC icg)
|
||||||
|
+
|
||||||
|
+if(NOT SDFLIB_USE_SYSTEM_TRIANGLEMESHDISTANCE)
|
||||||
|
+ target_link_libraries(${PROJECT_NAME} PUBLIC TriangleMeshDistance)
|
||||||
|
+endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
|
||||||
|
target_link_libraries(${PROJECT_NAME} PUBLIC -lstdc++fs)
|
||||||
|
diff --git a/SdfLibConfig.cmake.in b/SdfLibConfig.cmake.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..9b8265c
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/SdfLibConfig.cmake.in
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+@PACKAGE_INIT@
|
||||||
|
+
|
||||||
|
+include(CMakeFindDependencyMacro)
|
||||||
|
+
|
||||||
|
+@PACKAGE_DEPENDENCIES@
|
||||||
|
+
|
||||||
|
+include("${CMAKE_CURRENT_LIST_DIR}/SdfLibTargets.cmake")
|
||||||
|
diff --git a/include/SdfLib/TrianglesInfluence.h b/include/SdfLib/TrianglesInfluence.h
|
||||||
|
index fc2ca52..b276f23 100644
|
||||||
|
--- a/include/SdfLib/TrianglesInfluence.h
|
||||||
|
+++ b/include/SdfLib/TrianglesInfluence.h
|
||||||
|
@@ -11,7 +11,7 @@
|
||||||
|
#include "InterpolationMethods.h"
|
||||||
|
#include "utils/Timer.h"
|
||||||
|
#include "utils/GJK.h"
|
||||||
|
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||||
|
+#include <tmd/TriangleMeshDistance.h>
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <array>
|
||||||
|
diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt
|
||||||
|
index 79f70c1..e2a4f10 100644
|
||||||
|
--- a/libs/CMakeLists.txt
|
||||||
|
+++ b/libs/CMakeLists.txt
|
||||||
|
@@ -137,9 +137,10 @@ if(SDFLIB_BUILD_APPS OR SDFLIB_BUILD_DEBUG_APPS)
|
||||||
|
target_include_directories(stb_image INTERFACE stb)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-# icg
|
||||||
|
-add_library(icg INTERFACE)
|
||||||
|
-target_include_directories(icg INTERFACE InteractiveComputerGraphics)
|
||||||
|
+if (NOT SDFLIB_USE_SYSTEM_TRIANGLEMESHDISTANCE)
|
||||||
|
+ add_library(TriangleMeshDistance INTERFACE)
|
||||||
|
+ target_include_directories(TriangleMeshDistance INTERFACE InteractiveComputerGraphics)
|
||||||
|
+endif()
|
||||||
|
|
||||||
|
if(SDFLIB_BUILD_APPS OR SDFLIB_BUILD_DEBUG_APPS)
|
||||||
|
# glfw
|
||||||
|
diff --git a/libs/InteractiveComputerGraphics/InteractiveComputerGraphics/TriangleMeshDistance.h b/libs/InteractiveComputerGraphics/tmd/TriangleMeshDistance.h
|
||||||
|
similarity index 100%
|
||||||
|
rename from libs/InteractiveComputerGraphics/InteractiveComputerGraphics/TriangleMeshDistance.h
|
||||||
|
rename to libs/InteractiveComputerGraphics/tmd/TriangleMeshDistance.h
|
||||||
|
diff --git a/src/tools/ImageQueryTime/main.cpp b/src/tools/ImageQueryTime/main.cpp
|
||||||
|
index 357a78b..f4fd9e7 100644
|
||||||
|
--- a/src/tools/ImageQueryTime/main.cpp
|
||||||
|
+++ b/src/tools/ImageQueryTime/main.cpp
|
||||||
|
@@ -17,7 +17,7 @@
|
||||||
|
|
||||||
|
#define TEST_METHODS
|
||||||
|
#ifdef TEST_METHODS
|
||||||
|
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||||
|
+#include <tmd/TriangleMeshDistance.h>
|
||||||
|
// #include <CGAL/Simple_cartesian.h>
|
||||||
|
// #include <CGAL/AABB_tree.h>
|
||||||
|
// #include <CGAL/AABB_traits.h>
|
||||||
|
diff --git a/src/tools/SdfErrorCompare/main.cpp b/src/tools/SdfErrorCompare/main.cpp
|
||||||
|
index deef25f..9e402c4 100644
|
||||||
|
--- a/src/tools/SdfErrorCompare/main.cpp
|
||||||
|
+++ b/src/tools/SdfErrorCompare/main.cpp
|
||||||
|
@@ -23,7 +23,7 @@ using namespace sdflib;
|
||||||
|
// #define TEST_OPENVDB
|
||||||
|
|
||||||
|
#ifdef TEST_ICG
|
||||||
|
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||||
|
+#include <tmd/TriangleMeshDistance.h>
|
||||||
|
#endif
|
||||||
|
#ifdef TEST_CGAL
|
||||||
|
#include <CGAL/Simple_cartesian.h>
|
||||||
|
diff --git a/src/tools/SdfLibUnity/SdfExportFunc.cpp b/src/tools/SdfLibUnity/SdfExportFunc.cpp
|
||||||
|
index ff4e017..7e06ada 100644
|
||||||
|
--- a/src/tools/SdfLibUnity/SdfExportFunc.cpp
|
||||||
|
+++ b/src/tools/SdfLibUnity/SdfExportFunc.cpp
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
#include "SdfExportFunc.h"
|
||||||
|
#include "spdlog/sinks/rotating_file_sink.h"
|
||||||
|
|
||||||
|
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||||
|
+#include <tmd/TriangleMeshDistance.h>
|
||||||
|
|
||||||
|
using namespace sdflib;
|
||||||
|
|
||||||
|
diff --git a/src/tools/SdfOffsets/main.cpp b/src/tools/SdfOffsets/main.cpp
|
||||||
|
index b6769d7..07f137b 100644
|
||||||
|
--- a/src/tools/SdfOffsets/main.cpp
|
||||||
|
+++ b/src/tools/SdfOffsets/main.cpp
|
||||||
|
@@ -9,7 +9,7 @@
|
||||||
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
|
#include <glm/gtc/matrix_transform.hpp>
|
||||||
|
|
||||||
|
-#include <InteractiveComputerGraphics/TriangleMeshDistance.h>
|
||||||
|
+#include <tmd/TriangleMeshDistance.h>
|
||||||
|
#include <CGAL/Surface_mesh_default_triangulation_3.h>
|
||||||
|
#include <CGAL/Complex_2_in_triangulation_3.h>
|
||||||
|
#include <CGAL/make_surface_mesh.h>
|
|
@ -20,10 +20,8 @@ buildPythonPackage rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
# Patch path to GLFW shared object
|
# Patch path to GLFW shared object
|
||||||
patches = [ ./search-path.patch ];
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace glfw/library.py --replace "@GLFW@" '${glfw3}/lib'
|
substituteInPlace glfw/library.py --replace "_get_library_search_paths()," "[ '${glfw3}/lib' ],"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
diff --git a/glfw/library.py b/glfw/library.py
|
|
||||||
index 20387e1..9bdd62a 100644
|
|
||||||
--- a/glfw/library.py
|
|
||||||
+++ b/glfw/library.py
|
|
||||||
@@ -189,5 +189,4 @@ elif sys.platform == 'win32':
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
- glfw = _load_library(['glfw', 'glfw3'], ['.so', '.dylib'],
|
|
||||||
- _get_library_search_paths(), _glfw_get_version)
|
|
||||||
+ glfw = _load_library(['glfw', 'glfw3'], ['.so', '.dylib'], ['@GLFW@'], _glfw_get_version)
|
|
70
pkgs/development/python-modules/mujoco/default.nix
Normal file
70
pkgs/development/python-modules/mujoco/default.nix
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
{ buildPythonPackage
|
||||||
|
, cmake
|
||||||
|
, fetchPypi
|
||||||
|
, glfw
|
||||||
|
, lib
|
||||||
|
, mujoco
|
||||||
|
, numpy
|
||||||
|
, perl
|
||||||
|
, pkgs
|
||||||
|
, pybind11
|
||||||
|
, python
|
||||||
|
, setuptools
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "mujoco";
|
||||||
|
version = "3.0.1";
|
||||||
|
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
# We do not fetch from the repository because the PyPi tarball is
|
||||||
|
# impurely build via
|
||||||
|
# <https://github.com/google-deepmind/mujoco/blob/main/python/make_sdist.sh>
|
||||||
|
# in the project's CI.
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
hash = "sha256-pftecOk4q19qKBHs9hBBVenI+SgJg9VT7vc6NKuiY0s=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake setuptools ];
|
||||||
|
dontUseCmakeConfigure = true;
|
||||||
|
buildInputs = [ mujoco pybind11 ];
|
||||||
|
propagatedBuildInputs = [ glfw numpy ];
|
||||||
|
|
||||||
|
pythonImportsCheck = [ "${pname}" ];
|
||||||
|
|
||||||
|
env.MUJOCO_PATH = "${mujoco}";
|
||||||
|
env.MUJOCO_PLUGIN_PATH = "${mujoco}/lib";
|
||||||
|
env.MUJOCO_CMAKE_ARGS = "-DMUJOCO_SIMULATE_USE_SYSTEM_GLFW=ON";
|
||||||
|
|
||||||
|
preConfigure =
|
||||||
|
# Use system packages for pybind
|
||||||
|
''
|
||||||
|
${perl}/bin/perl -0777 -i -pe "s/(findorfetch\(.{3}USE_SYSTEM_PACKAGE.{3})(OFF)(.{3}PACKAGE_NAME.{3}pybind11.*\))/\1ON\3/gms" mujoco/CMakeLists.txt
|
||||||
|
'' +
|
||||||
|
# Use non-system eigen3, lodepng, abseil: Remove mirror info and prefill
|
||||||
|
# dependency directory. $build from setuptools.
|
||||||
|
(let
|
||||||
|
# E.g. 3.11.2 -> "311"
|
||||||
|
pythonVersionMajorMinor = with lib.versions;
|
||||||
|
"${major python.pythonVersion}${minor python.pythonVersion}";
|
||||||
|
in ''
|
||||||
|
${perl}/bin/perl -0777 -i -pe "s/GIT_REPO\n.*\n.*GIT_TAG\n.*\n//gm" mujoco/CMakeLists.txt
|
||||||
|
${perl}/bin/perl -0777 -i -pe "s/(FetchContent_Declare\(\n.*lodepng\n.*)(GIT_REPO.*\n.*GIT_TAG.*\n)(.*\))/\1\3/gm" mujoco/simulate/CMakeLists.txt
|
||||||
|
|
||||||
|
build="/build/${pname}-${version}/build/temp.linux-x86_64-cpython-${pythonVersionMajorMinor}/"
|
||||||
|
mkdir -p $build/_deps
|
||||||
|
ln -s ${mujoco.pin.lodepng} $build/_deps/lodepng-src
|
||||||
|
ln -s ${mujoco.pin.eigen3} $build/_deps/eigen-src
|
||||||
|
ln -s ${mujoco.pin.abseil-cpp} $build/_deps/abseil-cpp-src
|
||||||
|
'');
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description =
|
||||||
|
"Python bindings for MuJoCo: a general purpose physics simulator.";
|
||||||
|
homepage = "https://mujoco.org/";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ tmplt ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -7210,6 +7210,10 @@ self: super: with self; {
|
||||||
|
|
||||||
mutf8 = callPackage ../development/python-modules/mutf8 { };
|
mutf8 = callPackage ../development/python-modules/mutf8 { };
|
||||||
|
|
||||||
|
mujoco = callPackage ../development/python-modules/mujoco {
|
||||||
|
inherit (pkgs) mujoco;
|
||||||
|
};
|
||||||
|
|
||||||
mujson = callPackage ../development/python-modules/mujson { };
|
mujson = callPackage ../development/python-modules/mujson { };
|
||||||
|
|
||||||
mwcli = callPackage ../development/python-modules/mwcli { };
|
mwcli = callPackage ../development/python-modules/mwcli { };
|
||||||
|
|
Loading…
Reference in a new issue