From 940cab25082dfa4b10a3fceade9bd35340185c22 Mon Sep 17 00:00:00 2001 From: Google DeepMind Date: Wed, 25 Feb 2026 06:50:08 -0800 Subject: [PATCH] Rename MuJoCo WASM output artifacts to `mujoco.*`. This change updates the Emscripten build to output files named `mujoco.js`, `mujoco.wasm`, and `mujoco.d.ts` instead of `mujoco_wasm.*`. The internal CMake target name remains `mujoco_wasm` to avoid conflicts. The package name in `package.json` is also updated to `mujoco`. New enum tests are added. PiperOrigin-RevId: 875140314 Change-Id: Ie03e0d1db2d03dd8582d5bfcb260b3d33549c2c9 --- wasm/CMakeLists.txt | 10 ++++++++-- wasm/codegen/tests/enums_test_generator.py | 4 ++-- wasm/demo_app/app.ts | 2 +- wasm/package-lock.json | 4 ++-- wasm/package.json | 2 +- wasm/tests/bindings_test.ts | 4 ++-- wasm/tests/enums_test.ts | 16 ++++++++++++++-- wasm/tests/sandbox/main.ts | 4 ++-- 8 files changed, 32 insertions(+), 14 deletions(-) diff --git a/wasm/CMakeLists.txt b/wasm/CMakeLists.txt index 2f2c77a8..0adcf7a0 100644 --- a/wasm/CMakeLists.txt +++ b/wasm/CMakeLists.txt @@ -46,13 +46,19 @@ set(EMCC_LINKER_FLAGS "-s DISABLE_EXCEPTION_CATCHING=0" "-gsource-map" "-g" - "--emit-tsd mujoco_wasm.d.ts" + "--emit-tsd mujoco.d.ts" ) string (REPLACE ";" " " EMCC_LINKER_FLAGS_STR "${EMCC_LINKER_FLAGS}") add_executable(mujoco_wasm ${MUJOCO_WASM_FILES}) -set_target_properties(mujoco_wasm PROPERTIES LINK_FLAGS "${EMCC_LINKER_FLAGS_STR}") +# Keep the internal target name distinct to avoid colliding with the native +# `mujoco` library target, but emit artifacts named `mujoco.*` by setting the +# output name. Also apply the emscripten linker flags to the wasm target. +set_target_properties(mujoco_wasm PROPERTIES + LINK_FLAGS "${EMCC_LINKER_FLAGS_STR}" + OUTPUT_NAME "mujoco" +) target_link_libraries(mujoco_wasm ccd lodepng mujoco tinyxml2 qhullstatic_r) diff --git a/wasm/codegen/tests/enums_test_generator.py b/wasm/codegen/tests/enums_test_generator.py index f380aabc..862b15e3 100644 --- a/wasm/codegen/tests/enums_test_generator.py +++ b/wasm/codegen/tests/enums_test_generator.py @@ -26,8 +26,8 @@ def generate_typescript_enum_tests(): output = textwrap.dedent("""\ import 'jasmine'; - import { MainModule } from "../dist/mujoco_wasm" - import loadMujoco from "../dist/mujoco_wasm.js" + import { MainModule } from "../dist/mujoco" + import loadMujoco from "../dist/mujoco.js" let mujoco: MainModule; diff --git a/wasm/demo_app/app.ts b/wasm/demo_app/app.ts index 3e04f42c..9e5a1a9f 100644 --- a/wasm/demo_app/app.ts +++ b/wasm/demo_app/app.ts @@ -14,7 +14,7 @@ import * as THREE from "three" import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js" -import loadMujoco from "../dist/mujoco_wasm.js" +import loadMujoco from "../dist/mujoco.js" declare function loadMujoco(): Promise; diff --git a/wasm/package-lock.json b/wasm/package-lock.json index 859f393d..a21344d4 100644 --- a/wasm/package-lock.json +++ b/wasm/package-lock.json @@ -1,11 +1,11 @@ { - "name": "mujoco_wasm", + "name": "mujoco", "version": "1.0.0-alpha.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "mujoco_wasm", + "name": "mujoco", "version": "1.0.0-alpha.1", "license": "Apache-2.0", "devDependencies": { diff --git a/wasm/package.json b/wasm/package.json index 6384da1b..fd2587b0 100644 --- a/wasm/package.json +++ b/wasm/package.json @@ -1,5 +1,5 @@ { - "name": "mujoco_wasm", + "name": "mujoco", "version": "1.0.0-alpha.1", "description": "MuJoCo JavaScript Bindings", "directories": { diff --git a/wasm/tests/bindings_test.ts b/wasm/tests/bindings_test.ts index 0ed482cc..4cff1ec9 100644 --- a/wasm/tests/bindings_test.ts +++ b/wasm/tests/bindings_test.ts @@ -17,9 +17,9 @@ import 'jasmine'; import {MainModule, MjContact, MjContactVec, MjData, MjLROpt, MjModel, MjOption, MjsGeom, MjSolverStat, MjSpec, MjStatistic, MjTimerStat, MjvCamera, MjvFigure, MjvGeom, MjvGLCamera, MjvLight, MjvOption, MjvPerturb, MjvScene, -MjWarningStat, MjVFS, Uint8Buffer} from '../dist/mujoco_wasm.js'; +MjWarningStat, MjVFS, Uint8Buffer} from '../dist/mujoco.js'; -import loadMujoco from '../dist/mujoco_wasm.js' +import loadMujoco from '../dist/mujoco.js' function assertExists(value: T | null | undefined, message?: string): asserts value is T { diff --git a/wasm/tests/enums_test.ts b/wasm/tests/enums_test.ts index 7c966e92..d80fb48e 100644 --- a/wasm/tests/enums_test.ts +++ b/wasm/tests/enums_test.ts @@ -14,8 +14,8 @@ import 'jasmine'; -import { MainModule } from "../dist/mujoco_wasm" -import loadMujoco from "../dist/mujoco_wasm.js" +import { MainModule } from "../dist/mujoco" +import loadMujoco from "../dist/mujoco.js" let mujoco: MainModule; @@ -40,6 +40,10 @@ describe('Enums', () => { expect(mujoco.mjtGeom).toBeDefined(); }); + it('mjtProjection should exist', () => { + expect(mujoco.mjtProjection).toBeDefined(); + }); + it('mjtCamLight should exist', () => { expect(mujoco.mjtCamLight).toBeDefined(); }); @@ -120,6 +124,14 @@ describe('Enums', () => { expect(mujoco.mjtConDataField).toBeDefined(); }); + it('mjtRayDataField should exist', () => { + expect(mujoco.mjtRayDataField).toBeDefined(); + }); + + it('mjtCamOutBit should exist', () => { + expect(mujoco.mjtCamOutBit).toBeDefined(); + }); + it('mjtSameFrame should exist', () => { expect(mujoco.mjtSameFrame).toBeDefined(); }); diff --git a/wasm/tests/sandbox/main.ts b/wasm/tests/sandbox/main.ts index 79702e5f..60fc5e95 100644 --- a/wasm/tests/sandbox/main.ts +++ b/wasm/tests/sandbox/main.ts @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { MainModule, MjData, MjModel } from "../../dist/mujoco_wasm" -import loadMujoco from "../../dist/mujoco_wasm.js" +import { MainModule, MjData, MjModel } from "../../dist/mujoco" +import loadMujoco from "../../dist/mujoco.js" declare function loadMujoco(): Promise;