diff --git a/.github/workflows/cross-bootstrap-tools.yml b/.github/workflows/cross-bootstrap-tools.yml
index 540e05cbd6e215..89dfdd627f55b1 100644
--- a/.github/workflows/cross-bootstrap-tools.yml
+++ b/.github/workflows/cross-bootstrap-tools.yml
@@ -2,9 +2,13 @@ name: Cross-build Kernel
 
 on:
   push:
-    branches: [ main, 'stable/14', 'stable/13' ]
+    branches: 
+      - main
+      - 'stable/14'
+      - 'stable/13'
   pull_request:
-    branches: [ main ]
+    branches: 
+      - main
   workflow_dispatch:
 
 permissions:
@@ -17,22 +21,27 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        target_arch: [ amd64, aarch64 ]
-        os: [ ubuntu-22.04, ubuntu-24.04, macos-latest ]
+        target_arch:
+          - amd64
+          - aarch64
+        os: 
+          - ubuntu-24.04
+          - macos-latest
         include:
-          # TODO: both Ubuntu and macOS have bmake packages, we should try them instead of bootstrapping our own copy.
-          - os: ubuntu-22.04
-            compiler: clang-14
-            cross-bindir: /usr/lib/llvm-14/bin
-            pkgs: bmake libarchive-dev clang-14 lld-14
           - os: ubuntu-24.04
             compiler: clang-18
-            cross-bindir: /usr/lib/llvm-18/bin
-            pkgs: bmake libarchive-dev clang-18 lld-18
+            pkgs: libarchive-dev clang-18 lld-18
+            llvm-bindir: /usr/lib/llvm-18/bin
+            llvm-ld: /usr/lib/llvm-18/bin/ld.lld
+            # the Ubuntu packaged bmake causes build errors
+            bmake: ./tools/build/make.py
           - os: macos-latest
             compiler: clang-18
-            cross-bindir: /opt/homebrew/opt/llvm@18/bin
-            pkgs: bmake libarchive llvm@18
+            # llvm@19 causes build error
+            pkgs: bmake libarchive llvm@18 lld
+            llvm-bindir: /opt/homebrew/opt/llvm@18/bin
+            llvm-ld: /opt/homebrew/opt/lld/bin/ld.lld
+            bmake: bmake
           - target_arch: amd64
             target: amd64
           - target_arch: aarch64
@@ -51,17 +60,35 @@ jobs:
           brew install ${{ matrix.pkgs }} || true
       - name: create environment
         run: |
-          echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE"
-          if [ -n "${{ matrix.cross-bindir }}" ]; then
-            echo "EXTRA_BUILD_ARGS=--cross-bindir=${{ matrix.cross-bindir }}" >> $GITHUB_ENV
-          fi
+          echo "CC=${{ matrix.llvm-bindir }}/clang" >> $GITHUB_ENV
+          echo "CXX=${{ matrix.llvm-bindir }}/clang++" >> $GITHUB_ENV
+          echo "CPP=${{ matrix.llvm-bindir }}/clang-cpp" >> $GITHUB_ENV
+
+          echo "XCC=${{ matrix.llvm-bindir }}/clang" >> $GITHUB_ENV
+          echo "XCXX=${{ matrix.llvm-bindir }}/clang++" >> $GITHUB_ENV
+          echo "XCPP=${{ matrix.llvm-bindir }}/clang-cpp" >> $GITHUB_ENV
+          echo "XLD=${{ matrix.llvm-ld }}" >> $GITHUB_ENV
+
           mkdir -p ../build
           echo "MAKEOBJDIRPREFIX=${PWD%/*}/build" >> $GITHUB_ENV
-          # heh, works on Linux/BSD/macOS ...
           echo "NPROC=`getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1`" >> $GITHUB_ENV
-      - name: bootstrap bmake
-        run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} -n
+
+      - name: show environment
+        run: |
+          echo Running on $(uname -a)
+          echo "CWD = $PWD"
+          echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE"
+          echo "Using bmake as ${{ matrix.bmake }}"
+          echo Using CC=${CC}
+          echo Using LD=${LD}
+          echo Using XCC=${XCC}
+          echo Using XLD=${XLD}
+          echo Using MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}
+          echo Using NPROC=${NPROC}
+          echo Using EXTRA_MAKE_ARGS=${EXTRA_MAKE_ARGS}
+
       - name: make kernel-toolchain
-        run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} kernel-toolchain -s -j$NPROC -DWITH_DISK_IMAGE_TOOLS_BOOTSTRAP
+        run: ${{ matrix.bmake }} TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} -s -j$NPROC kernel-toolchain -DWITH_DISK_IMAGE_TOOLS_BOOTSTRAP
+
       - name: make buildkernel
-        run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} KERNCONF=GENERIC NO_MODULES=yes buildkernel -s -j$NPROC $EXTRA_MAKE_ARGS
+        run: ${{ matrix.bmake }} TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} -s -j$NPROC buildkernel KERNCONF=GENERIC NO_MODULES=yes
\ No newline at end of file