Hi John,
I tested a fresh aarch64-darwin-graft build on Apple Silicon and encountered several issues before the documented module set would compile.
Environment:
macOS 26.6
Apple Silicon / AArch64
AROS branch: aarch64-darwin-graft
AROS revision: bd524a0924
LLVM: 20.1.0
- Missing AArch64 LLVM MetaMake target
make crosstools-toolchain silently succeeded and created .installflag-crosstools, but did not build Clang. The later feature check failed because crosstools/bin/clang did not exist.
Adding this fixed it:
#MM- tools-crosstools-llvm-aarch64 : tools-crosstools-llvm-toolchain
in:
tools/crosstools/llvm/mmakefile.src
MetaMake returning success for the missing target made this especially difficult to diagnose.
- compiler-rt cannot import shared LLVM targets
make crosstools failed while configuring compiler-rt:
ADD_LIBRARY called with SHARED option but the target platform does not
support dynamic linking.
compiler-rt uses CMAKE_SYSTEM_NAME=Generic, but loading the installed LLVM package imports shared targets such as LTO, LLVM, and Remarks.
These additions to LLVM_COMPILER_RT_CMAKEBASE fixed the configuration:
-DLLVM_RUNTIMES_BUILD=ON
-DCMAKE_MODULE_PATH="$(LLVM_BUILDBASE)/cmake/modules"
The first prevents importing the incompatible LLVM package. The second retains access to AddLLVM.cmake.
- AROS submodules are required but not documented
rom/dos/catalogs was empty, causing strings.h not to be generated. Clang then found an unrelated standard strings.h, and kernel-dos failed with:
use of undeclared identifier 'MSG_STRING_REQUESTTITLE'
use of undeclared identifier 'MSG_STRING_RETRY'
use of undeclared identifier 'MSG_STRING_CANCEL'
This was fixed with:
git submodule update --init --recursive
The getting-started instructions should either use:
git clone --recurse-submodules
-b aarch64-darwin-graft
https://github.com/jonx/AROS.git aros-upstream
or explicitly include the submodule initialization command.
- Chromium zlib source is not reproducible
The zlib build uses:
https://chromium.googlesource.com/chromium/src/+archive/lkgr/third_party/zlib.tar.gz
Because lkgr moves, the downloaded source no longer matches zlib-aros.diff. The patch currently fails on zconf.h.
After resolving that hunk manually, the newer gzread.c also fails because it directly uses errno and EAGAIN, while the static build defines NO_STRERROR, preventing gzguts.h from including errno.h.
This local change allowed the current snapshot to compile:
-USER_CPPFLAGS := $(LIBZ_CPPFLAGS) -DNO_STRERROR -DNDEBUG
+USER_CPPFLAGS := $(LIBZ_CPPFLAGS) -DNO_STRERROR -DNDEBUG -include aros/posixc/errno.h
The durable fix would be to pin a known Chromium revision and update zlib-aros.diff against that exact source.
- Some documented metatarget names are stale
The documented command includes targets that MetaMake can silently treat as successful no-ops. The current names appear to be:
kernel-clipboard → workbench-devs-clipboard
workbench-libs-stdc → compiler-stdc and compiler-stdcio
workbench-libs-cybergraphics → workbench-libs-cgfx
The full working target list was:
make kernel-exec kernel-kernel kernel-dos kernel-dosboot kernel-utility
kernel-intuition kernel-graphics kernel-layers kernel-keymap
kernel-console kernel-input kernel-keyboard
kernel-filesystem kernel-lddemon kernel-fs-con kernel-fs-ram
kernel-hidd kernel-hidd-cocoa kernel-bootstrap-hosted
compiler-stdc compiler-stdcio workbench-devs-clipboard
workbench-libs-cgfx
Consolidated source diff:
diff --git a/tools/crosstools/llvm/mmakefile.src b/tools/crosstools/llvm/mmakefile.src
@@
#MM- tools-crosstools-llvm-arm : tools-crosstools-llvm-toolchain
+#MM- tools-crosstools-llvm-aarch64 : tools-crosstools-llvm-toolchain
#MM- tools-crosstools-llvm-riscv : tools-crosstools-llvm-toolchain
@@
-DCOMPILER_RT_BUILD_BUILTINS=ON \
- -DLLVM_RUNTIMES_BUILD=ON \
- -DCMAKE_MODULE_PATH="$(LLVM_BUILDBASE)/cmake/modules"
-DCOMPILER_RT_BUILD_XRAY=OFF \
diff --git a/workbench/libs/z/mmakefile.src b/workbench/libs/z/mmakefile.src
@@
-USER_CPPFLAGS := $(LIBZ_CPPFLAGS) -DNO_STRERROR -DNDEBUG
+USER_CPPFLAGS := $(LIBZ_CPPFLAGS) -DNO_STRERROR -DNDEBUG -include aros/posixc/errno.h
After these changes, initializing the submodules, and manually resolving the moving-zlib patch mismatch, make crosstools, kernel-exec, and kernel-dos succeeded.
Hi John,
I tested a fresh aarch64-darwin-graft build on Apple Silicon and encountered several issues before the documented module set would compile.
Environment:
macOS 26.6
Apple Silicon / AArch64
AROS branch: aarch64-darwin-graft
AROS revision: bd524a0924
LLVM: 20.1.0
make crosstools-toolchain silently succeeded and created .installflag-crosstools, but did not build Clang. The later feature check failed because crosstools/bin/clang did not exist.
Adding this fixed it:
#MM- tools-crosstools-llvm-aarch64 : tools-crosstools-llvm-toolchain
in:
tools/crosstools/llvm/mmakefile.src
MetaMake returning success for the missing target made this especially difficult to diagnose.
make crosstools failed while configuring compiler-rt:
ADD_LIBRARY called with SHARED option but the target platform does not
support dynamic linking.
compiler-rt uses CMAKE_SYSTEM_NAME=Generic, but loading the installed LLVM package imports shared targets such as LTO, LLVM, and Remarks.
These additions to LLVM_COMPILER_RT_CMAKEBASE fixed the configuration:
-DLLVM_RUNTIMES_BUILD=ON
-DCMAKE_MODULE_PATH="$(LLVM_BUILDBASE)/cmake/modules"
The first prevents importing the incompatible LLVM package. The second retains access to AddLLVM.cmake.
rom/dos/catalogs was empty, causing strings.h not to be generated. Clang then found an unrelated standard strings.h, and kernel-dos failed with:
use of undeclared identifier 'MSG_STRING_REQUESTTITLE'
use of undeclared identifier 'MSG_STRING_RETRY'
use of undeclared identifier 'MSG_STRING_CANCEL'
This was fixed with:
git submodule update --init --recursive
The getting-started instructions should either use:
git clone --recurse-submodules
-b aarch64-darwin-graft
https://github.com/jonx/AROS.git aros-upstream
or explicitly include the submodule initialization command.
The zlib build uses:
https://chromium.googlesource.com/chromium/src/+archive/lkgr/third_party/zlib.tar.gz
Because lkgr moves, the downloaded source no longer matches zlib-aros.diff. The patch currently fails on zconf.h.
After resolving that hunk manually, the newer gzread.c also fails because it directly uses errno and EAGAIN, while the static build defines NO_STRERROR, preventing gzguts.h from including errno.h.
This local change allowed the current snapshot to compile:
-USER_CPPFLAGS := $(LIBZ_CPPFLAGS) -DNO_STRERROR -DNDEBUG
+USER_CPPFLAGS := $(LIBZ_CPPFLAGS) -DNO_STRERROR -DNDEBUG -include aros/posixc/errno.h
The durable fix would be to pin a known Chromium revision and update zlib-aros.diff against that exact source.
The documented command includes targets that MetaMake can silently treat as successful no-ops. The current names appear to be:
kernel-clipboard → workbench-devs-clipboard
workbench-libs-stdc → compiler-stdc and compiler-stdcio
workbench-libs-cybergraphics → workbench-libs-cgfx
The full working target list was:
make kernel-exec kernel-kernel kernel-dos kernel-dosboot kernel-utility
kernel-intuition kernel-graphics kernel-layers kernel-keymap
kernel-console kernel-input kernel-keyboard
kernel-filesystem kernel-lddemon kernel-fs-con kernel-fs-ram
kernel-hidd kernel-hidd-cocoa kernel-bootstrap-hosted
compiler-stdc compiler-stdcio workbench-devs-clipboard
workbench-libs-cgfx
Consolidated source diff:
diff --git a/tools/crosstools/llvm/mmakefile.src b/tools/crosstools/llvm/mmakefile.src
@@
#MM- tools-crosstools-llvm-arm : tools-crosstools-llvm-toolchain
+#MM- tools-crosstools-llvm-aarch64 : tools-crosstools-llvm-toolchain
#MM- tools-crosstools-llvm-riscv : tools-crosstools-llvm-toolchain
@@
-DCOMPILER_RT_BUILD_BUILTINS=ON \
-DCOMPILER_RT_BUILD_XRAY=OFF \
diff --git a/workbench/libs/z/mmakefile.src b/workbench/libs/z/mmakefile.src
@@
-USER_CPPFLAGS := $(LIBZ_CPPFLAGS) -DNO_STRERROR -DNDEBUG
+USER_CPPFLAGS := $(LIBZ_CPPFLAGS) -DNO_STRERROR -DNDEBUG -include aros/posixc/errno.h
After these changes, initializing the submodules, and manually resolving the moving-zlib patch mismatch, make crosstools, kernel-exec, and kernel-dos succeeded.