diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f13b9fb..109ba8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,3 +56,48 @@ jobs: - name: Build run: cmake --build build -j + + # macOS assembly (arm64). xmDriver is excluded: it binds SocketCAN + # () and libevdev over /dev/input/event*, which have no macOS + # equivalents, so it is not portable rather than merely unported. Everything + # else assembles. xmTelemetry is omitted for the same reason as the Linux + # lane -- it is private and not checked out here. + assemble-macos: + name: Assemble (macOS arm64, no driver) + runs-on: macos-14 + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Init component submodules (built set) + run: | + git submodule sync --recursive + git submodule update --init --recursive \ + components/base components/navigation components/viewer \ + components/messaging components/simulator + + - name: Install dependencies (union of component deps) + # eigen@3 and opencv@4 are keg-only: Homebrew defaults to Eigen 5 and + # OpenCV 5, and the components target the 3.x/4.x APIs. + run: > + brew install eigen@3 opencv@4 pcl boost abseil re2 glm glfw cairo + fontconfig ncurses yaml-cpp tbb gsl googletest + + - name: Fetch MuJoCo (xmSimulator) + run: components/simulator/scripts/setup/fetch_mujoco.sh + + - name: Configure assembly (no driver) + # XMSIM_MUJOCO_DIR is explicit because its default resolves against + # CMAKE_SOURCE_DIR, which under add_subdirectory is this umbrella + # rather than the simulator's own root. + run: > + cmake -S . -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE + -DXMOTION_WITH_DRIVER=OFF -DXMOTION_WITH_TELEMETRY=OFF + -DXMOTION_WITH_NAVIGATION=ON -DXMOTION_WITH_VIEWER=ON + -DXMOTION_WITH_MESSAGING=ON -DXMOTION_WITH_SIMULATOR=ON + -DXMSIM_MUJOCO_DIR="$GITHUB_WORKSPACE/components/simulator/third_party/mujoco" + -DCMAKE_PREFIX_PATH="$(brew --prefix eigen@3);$(brew --prefix opencv@4)" + + - name: Build + run: cmake --build build -j"$(sysctl -n hw.ncpu)" + diff --git a/components/base b/components/base index 3f389a0..74c0008 160000 --- a/components/base +++ b/components/base @@ -1 +1 @@ -Subproject commit 3f389a064f5e1179edf85358883711cc93c6be54 +Subproject commit 74c000808a9a94048e72a488b666e5567fe4fa6e diff --git a/components/messaging b/components/messaging index 93a6118..0348233 160000 --- a/components/messaging +++ b/components/messaging @@ -1 +1 @@ -Subproject commit 93a611854ec3f77d02514ac66a166e90344deb8e +Subproject commit 034823379bda9fb8f61373887e77b1cf2a34fefd diff --git a/components/navigation b/components/navigation index 282f290..460d5cc 160000 --- a/components/navigation +++ b/components/navigation @@ -1 +1 @@ -Subproject commit 282f290a3b467dda67ab8f0dcb7c9d089a16d98e +Subproject commit 460d5cca7886109c3ea0ec64ccb0c3d3f7b1756d diff --git a/components/simulator b/components/simulator index 65b6d83..bbf936f 160000 --- a/components/simulator +++ b/components/simulator @@ -1 +1 @@ -Subproject commit 65b6d83883fc66cde40d82b678b708b2f31feb6f +Subproject commit bbf936fd4fcb88f6d639ee8cc804aebaffe3beaf diff --git a/components/telemetry b/components/telemetry index 1e0f308..afa0a21 160000 --- a/components/telemetry +++ b/components/telemetry @@ -1 +1 @@ -Subproject commit 1e0f3082c13f9f41115abf99bd8f96e753f47bd7 +Subproject commit afa0a216a7d6971df524f3b03d5d8cc57ca137e4 diff --git a/components/viewer b/components/viewer index edeb589..236d7c4 160000 --- a/components/viewer +++ b/components/viewer @@ -1 +1 @@ -Subproject commit edeb589d06916b67331c7283e43f7cc6c4ea1d61 +Subproject commit 236d7c4751e68967bb21faa05f51e5ad8a9a9bfe