Containerfile for AmigaOS Cross-Compiler Toolchain (MIRROR) https://amiga.technology/
  • Shell 96.4%
  • Dockerfile 3.4%
  • C 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Stefan Reinauer fab1df634f README: document macOS toolchain quarantine removal
Explain how to remove the download quarantine flag recursively from
trusted toolchain installations with xattr. Scope the command to dated
installation trees so compiler helpers can run without individual
approvals in System Settings.
2026-10-05 00:06:49 +02:00
.github ci: build native toolchain archives 2026-08-25 23:37:33 -07:00
test Simplify 2019-08-30 12:12:21 +02:00
.dockerignore v20250727 image 2025-07-27 12:41:37 -07:00
.gitignore Add Linux Amiga GCC build script 2026-05-19 20:58:29 -07:00
build.sh build: Set up vbcc configuration through a vc wrapper 2026-10-03 05:26:29 -07:00
build.xml Update build.xml to point to this container 2023-11-16 23:22:25 -08:00
Containerfile Combine cleanup into the build run 2026-09-08 14:54:07 -07:00
Dockerfile Leave GCC in the container and use a fully functional lha 2023-01-15 15:46:47 -08:00
install_flexcat.sh flexcat: fetch host sources from AmigaPorts 2026-08-27 21:17:01 -07:00
README.md README: document macOS toolchain quarantine removal 2026-10-05 00:06:49 +02:00
screenshot.png Initial commit 2018-03-29 09:57:03 +02:00
update_docker.sh build: make Amiga LTO mandatory 2026-08-31 22:03:20 -07:00

Containerfile for AmigaOS Cross-Compiler Toolchain

Containerfile for Stefan "Bebbo" Franke's amiga-gcc toolchain for Linux/AmigaOS cross-development.

This container is based on work by Sebastian Bergmann: Docker Hub.

A ready-to-use image built from this Containerfile is available on Docker Hub. Docker Hub is the canonical image location. The publish workflow mirrors the same version tags to this repository's GitHub Container Registry package.

Native Linux and macOS toolchains are also produced by the Build native toolchain archives GitHub Actions workflow. It creates Linux x86_64 and macOS ARM64 .tar.xz archives for each supported GCC version. An archive contains both the dated installation and its stable version symlink, for example:

opt/amiga-16.2-20260825/
opt/amiga-16.2 -> amiga-16.2-20260825

Install an archive at its intended absolute path with:

$ sudo tar -xJf amiga-gcc-16.2-20260825-linux-x86_64.tar.xz -C /

On macOS, browser downloads may carry a quarantine flag that causes an "Apple could not verify" warning for each executable. If you trust the downloaded toolchains, remove that flag recursively after extraction:

sudo /usr/bin/xattr -rd com.apple.quarantine /opt/amiga-*-20261002/

Replace 20261002 with your installation date. This covers all toolchain versions with that date, including internal compiler helpers, so individual executables do not need approval in System Settings. It only removes the quarantine flag from those trees; it does not disable Gatekeeper globally.

More information can be found here.

VBCC

Both container and native builds install bin/vc as a wrapper. It sets VBCC to the installation's m68k-amigaos/vbcc directory and puts its bin directory first in PATH before running libexec/vbcc/vc. No manual VBCC setting is needed; the wrapper selects its own installation even if the caller has set VBCC for another toolchain.

Configs live in m68k-amigaos/vbcc/config, using VBCC's standard config lookup. Use vc hello.c -o hello for the default config or vc +aos68k hello.c -o hello to select a target. The aos68km, aos68kr, kick13, and kick13.config names are also available. Explicit config paths and the usual current-directory overrides continue to work.

"Hello world!" Example

AmigaOS C API

hello.c from Radosław Kujawa:

#include <proto/exec.h>
#include <proto/dos.h>

int main(int argc, void *argv[])
{
    struct Library *SysBase;
    struct Library *DOSBase;

    SysBase = *((struct Library **)4UL);
    DOSBase = OpenLibrary("dos.library", 0);

    if (DOSBase) {
        Write(Output(), "Hello world!\n", 13);
        CloseLibrary(DOSBase);
    }

    return(0);
}

Standard C Library

hello.c from Radosław Kujawa:

#include <stdio.h>

int main()
{
    printf("Hello world!\n");

    return(0);
}

Compilation

$ podman run -v $HOME:/host -it stefanreinauer/amiga-gcc \
  m68k-amigaos-gcc /host/hello.c -o /host/hello -noixemul

Execution

Container-ized Emulation using FS-UAE

The docker-execute-amiga script used below can be downloaded from here.

$ docker-execute-amiga helloworld

Screenshot

Container-ized Emulation using Virtual AmigaOS (vamos)

$ podman run -v $HOME:/host stefanreinauer/amiga-gcc \
  vamos -C 68020 /host/hello
Hello world!