- Shell 96.4%
- Dockerfile 3.4%
- C 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
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. |
||
| .github | ||
| test | ||
| .dockerignore | ||
| .gitignore | ||
| build.sh | ||
| build.xml | ||
| Containerfile | ||
| Dockerfile | ||
| install_flexcat.sh | ||
| README.md | ||
| screenshot.png | ||
| update_docker.sh | ||
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
Container-ized Emulation using Virtual AmigaOS (vamos)
$ podman run -v $HOME:/host stefanreinauer/amiga-gcc \
vamos -C 68020 /host/hello
Hello world!
