Initial commit
This commit is contained in:
commit
ee047c1e99
|
@ -0,0 +1,2 @@
|
||||||
|
/test
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
autoconf \
|
||||||
|
flex \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
gettext \
|
||||||
|
git \
|
||||||
|
lhasa \
|
||||||
|
libgmpxx4ldbl \
|
||||||
|
libgmp-dev \
|
||||||
|
libmpfr6 \
|
||||||
|
libmpfr-dev \
|
||||||
|
libmpc3 \
|
||||||
|
libmpc-dev \
|
||||||
|
make \
|
||||||
|
rsync \
|
||||||
|
texinfo\
|
||||||
|
wget \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* && \
|
||||||
|
cd /root && \
|
||||||
|
git clone https://github.com/bebbo/amiga-gcc.git && \
|
||||||
|
cd /root/amiga-gcc && \
|
||||||
|
git checkout -qf 15aa4f3ab3054ba9dad32dd362ecaf7ff11410d3 && \
|
||||||
|
mkdir -p /opt/amiga && \
|
||||||
|
make update && \
|
||||||
|
make all && \
|
||||||
|
cd / && \
|
||||||
|
rm -rf /root/amiga-gcc && \
|
||||||
|
apt-get purge -y \
|
||||||
|
autoconf \
|
||||||
|
flex \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
gettext \
|
||||||
|
git \
|
||||||
|
lhasa \
|
||||||
|
libgmp-dev \
|
||||||
|
libmpfr-dev \
|
||||||
|
libmpc-dev \
|
||||||
|
make \
|
||||||
|
rsync \
|
||||||
|
texinfo\
|
||||||
|
wget \
|
||||||
|
&& apt-get -y autoremove
|
||||||
|
|
||||||
|
ENV PATH /opt/amiga/bin:$PATH
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
# Dockerfile for AmigaOS Cross-Compiler Toolchain
|
||||||
|
|
||||||
|
`Dockerfile` for [Stefan "Bebbo" Franke](https://github.com/bebbo)'s [amiga-gcc](https://github.com/bebbo/amiga-gcc) toolchain for Linux/AmigaOS cross-development.
|
||||||
|
|
||||||
|
A ready-to-use image built from this Dockerfile is available on [Docker Hub](https://hub.docker.com/r/sebastianbergmann/amiga-gcc/).
|
||||||
|
|
||||||
|
|
||||||
|
## "Hello world!" Example
|
||||||
|
|
||||||
|
### AmigaOS C API
|
||||||
|
|
||||||
|
`hello.c` from [Radosław Kujawa](https://github.com/Sakura-IT/Amiga-programming-examples/tree/master/C/hello-world-amiga):
|
||||||
|
|
||||||
|
```c
|
||||||
|
#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](https://github.com/Sakura-IT/Amiga-programming-examples/tree/master/C/hello-world):
|
||||||
|
|
||||||
|
```c
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
printf("Hello world!\n");
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Compilation
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker run -v $HOME:/host -it sebastianbergmann/amiga-gcc \
|
||||||
|
m68k-amigaos-gcc /host/hello.c -o /host/hello -noixemul
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Execution
|
||||||
|
|
||||||
|
#### Docker-ized Emulation using FS-UAE
|
||||||
|
|
||||||
|
The `docker-execute-amiga` script used below can be downloaded from [here](https://raw.githubusercontent.com/sebastianbergmann/docker-execute-amiga/master/docker-execute-amiga.sh).
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker-execute-amiga helloworld
|
||||||
|
```
|
||||||
|
|
||||||
|
![Screenshot](screenshot.png)
|
||||||
|
|
||||||
|
|
||||||
|
#### Docker-ized Emulation using Virtual AmigaOS (vamos)
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker run -v $HOME:/host sebastianbergmann/amitools:latest \
|
||||||
|
vamos -C 68020 /host/hello
|
||||||
|
Hello world!
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project name="docker-amiga-gcc" default="build">
|
||||||
|
<target name="clean">
|
||||||
|
<delete dir="${basedir}/test"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="build">
|
||||||
|
<exec executable="docker" taskname="docker">
|
||||||
|
<arg value="build"/>
|
||||||
|
<arg value="--pull"/>
|
||||||
|
<arg value="--tag"/>
|
||||||
|
<arg value="sebastianbergmann/amiga-gcc:latest"/>
|
||||||
|
<arg path="${basedir}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="test" depends="build">
|
||||||
|
<mkdir dir="${basedir}/test"/>
|
||||||
|
|
||||||
|
<get src="https://raw.githubusercontent.com/Sakura-IT/Amiga-programming-examples/master/C/hello-world-amiga/hello.c"
|
||||||
|
dest="${basedir}/test/hello.c"
|
||||||
|
skipexisting="true"/>
|
||||||
|
|
||||||
|
<exec executable="docker" taskname="docker">
|
||||||
|
<arg value="run"/>
|
||||||
|
<arg value="--rm"/>
|
||||||
|
<arg value="--volume"/>
|
||||||
|
<arg value="${basedir}/test:/host"/>
|
||||||
|
<arg value="sebastianbergmann/amiga-gcc:latest"/>
|
||||||
|
<arg value="m68k-amigaos-gcc"/>
|
||||||
|
<arg value="/host/hello.c"/>
|
||||||
|
<arg value="-o"/>
|
||||||
|
<arg value="/host/hello"/>
|
||||||
|
<arg value="-noixemul"/>
|
||||||
|
</exec>
|
||||||
|
|
||||||
|
<exec executable="docker" taskname="docker" outputproperty="hello.c">
|
||||||
|
<arg value="run"/>
|
||||||
|
<arg value="--rm"/>
|
||||||
|
<arg value="--volume"/>
|
||||||
|
<arg value="${basedir}/test:/host"/>
|
||||||
|
<arg value="sebastianbergmann/amitools:latest"/>
|
||||||
|
<arg value="vamos"/>
|
||||||
|
<arg value="-C"/>
|
||||||
|
<arg value="68020"/>
|
||||||
|
<arg value="/host/hello"/>
|
||||||
|
</exec>
|
||||||
|
|
||||||
|
<fail message="hello.c could not be compiled and executed">
|
||||||
|
<condition>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${hello.c}" arg2="Hello world!"/>
|
||||||
|
</not>
|
||||||
|
</condition>
|
||||||
|
</fail>
|
||||||
|
|
||||||
|
<delete file="${basedir}/test/hello"/>
|
||||||
|
</target>
|
||||||
|
</project>
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
Loading…
Reference in New Issue