Skip to content

problem with build and solution #1

Description

@apaczi

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions