Merge pull request #3 from AmigaPorts/add-x86_64-aros-v1-docker

Add AROSv1 x86_64 Docker recipe
This commit is contained in:
Marlon Beijer 2020-02-19 22:38:57 +01:00 committed by GitHub
commit 3d535f1b06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 104 additions and 16 deletions

View File

@ -1,10 +1,10 @@
# AmigDev Docker Crosstools
Currently AmigaOS 3.x, AmigaOS 4.x and MorphOS 3.9+ are supported.
Currently AmigaOS 3.x, AmigaOS 4.x and MorphOS 3.9+ are supported.
WarpOS and AROS will get supported in the forseeable future
## Supported toolchains
Platform | Toolchain | Supported
Platform | Toolchain | Supported
------------ | ------------ | -------------
AmigaOS 3.x | @bebbo toolchain - gcc 6 | **Yes**
AmigaOS 4.x | @sba1 adtools - gcc 8 | **Yes**
@ -12,34 +12,77 @@ ## Supported toolchains
~WarpOS~ | ~gcc 6~ | Not yet
~AROS ABIv1 x86_64~ | ~AROS Team Official - gcc 9~ | Not yet
~AROS ABIv1 x86~ | ~AROS Team Official - gcc 9~ | Not yet
~AROS ABIv0 x86~ | ~AROS Team Official - gcc 9~ | Not yet
~AROS ABIv1 ARM BE (RasPi)~ | ~AROS Team Official - gcc 9~ | Not yet
## Build the Docker container
Example for AROSv1 x86_64
docker build -t "amigadev/crosstools:x86_64-aros" --rm -f x86_64-aros.docker .
For other toolchains, use the appropriate Dockerfile:
- AmigaOS 3.x (M680x0): m68k-amigaos.docker
- AmigaOS 4.x (PPC): ppc-amigaos.docker
- MorphOS (PPC): ppc-morphos.docker
## Run the Docker container for compiling a third party application
### AmigaOS4.x example:
```bash
docker run --rm \
-v ${PWD}:/work \
-v /path/to/extra/ppc-amigaos/lib:/tools/usr/lib \
-v /path/to/extra/ppc-amigaos/include:/tools/usr/include \
-it amigadev/crosstools:ppc-amigaos bash
docker run
# Destroy the container, once exited.
# Comment this line out if you want to keep container after execution
# for debugging
--rm \
# expose to the container the following local directories
# format is:
# <local_dir>:<container_dir>
-v ${PWD}:/work \
-v /path/to/extra/ppc-amigaos/lib:/tools/usr/lib \
-v /path/to/extra/ppc-amigaos/include:/tools/usr/include \
# Pass current UID and GID to container, so that it can change the
# ownership of output files which are otherwise writen to outdir as
# root
-e USER=$( id -u ) -e GROUP=$( id -g ) \
# Use this Docker image and then enter into it using the shell
-it amigadev/crosstools:ppc-amigaos /bin/bash
```
### AmigaOS3.x example
```bash
docker run --rm \
-v ${PWD}:/work \
-v /path/to/extra/m68k-amigaos/lib:/tools/usr/lib \
-v /path/to/extra/m68k-amigaos/include:/tools/usr/include \
-it amigadev/crosstools:m68k-amigaos bash
-v ${PWD}:/work \
-v /path/to/extra/m68k-amigaos/lib:/tools/usr/lib \
-v /path/to/extra/m68k-amigaos/include:/tools/usr/include \
-e USER=$( id -u ) -e GROUP=$( id -g ) \
-it amigadev/crosstools:m68k-amigaos bash
```
### MorphOS example
```bashS
docker run --rm \
-v ${PWD}:/work \
-v /path/to/extra/ppc-morphos/lib:/tools/usr/lib \
-v /path/to/extra/ppc-morphos/include:/tools/usr/include \
-it amigadev/crosstools:ppc-morphos bash
-v ${PWD}:/work \
-v /path/to/extra/ppc-morphos/lib:/tools/usr/lib \
-v /path/to/extra/ppc-morphos/include:/tools/usr/include \
-e USER=$( id -u ) -e GROUP=$( id -g ) \
-it amigadev/crosstools:ppc-morphos bash
```
### AROS (v1) x86_64 example
```bashS
docker run --rm \
-v ${PWD}:/work \
-v /tmp/aros:/tmp/aros \
-e USER=$( id -u ) -e GROUP=$( id -g ) \
-it amigadev/crosstools:x86_64-aros bash
```
* *${PWD}* is the current dir

@ -1 +1 @@
Subproject commit a1395e7201abb016728ef4ed5b474347be140e00
Subproject commit 43c5eff7ee4a0249ab15345165127fee48eff270

45
x86_64-aros.docker Normal file
View File

@ -0,0 +1,45 @@
FROM amigadev/arosv1-cross-toolchain:x86_64 as build-env
FROM amigadev/docker-base:latest
ENV CROSS_PFX x86_64-aros
ENV OS_NAME AROS
COPY --from=build-env /opt/${CROSS_PFX} /opt/${CROSS_PFX}
# START COMMON
MAINTAINER Marlon Beijer "marlon@amigadev.com"
RUN apt purge -y gcc g++ flex bison gettext texinfo binutils libgmp-dev libmpfr-dev libmpc-dev libncurses-dev && apt autoremove -y
RUN echo "root:root" | chpasswd
RUN ln -s /opt/${CROSS_PFX} /tools
ENV CROSS_ROOT /opt/${CROSS_PFX}
WORKDIR /work
ENTRYPOINT ["/entry/entrypoint.sh"]
COPY imagefiles/cmake.sh /usr/local/bin/cmake
COPY imagefiles/ccmake.sh /usr/local/bin/ccmake
COPY imagefiles/entrypoint.sh /entry/
ENV AS=${CROSS_ROOT}/bin/${CROSS_PFX}-as \
LD=${CROSS_ROOT}/bin/${CROSS_PFX}-ld \
AR=${CROSS_ROOT}/bin/${CROSS_PFX}-ar \
CC=${CROSS_ROOT}/bin/${CROSS_PFX}-gcc \
CXX=${CROSS_ROOT}/bin/${CROSS_PFX}-g++ \
RANLIB=${CROSS_ROOT}/bin/${CROSS_PFX}-ranlib
RUN ln -sf ${CROSS_ROOT}/bin/${CROSS_PFX}-as /usr/bin/as && \
ln -sf ${CROSS_ROOT}/bin/${CROSS_PFX}-ar /usr/bin/ar && \
ln -sf ${CROSS_ROOT}/bin/${CROSS_PFX}-ld /usr/bin/ld && \
ln -sf ${CROSS_ROOT}/bin/${CROSS_PFX}-gcc /usr/bin/gcc && \
ln -sf ${CROSS_ROOT}/bin/${CROSS_PFX}-g++ /usr/bin/g++ && \
ln -sf ${CROSS_ROOT}/bin/${CROSS_PFX}-ranlib /usr/bin/ranlib
COPY dependencies/toolchains/${CROSS_PFX}.cmake ${CROSS_ROOT}/lib/
COPY dependencies/toolchains/Modules/${CROSS_PFX} /CMakeModules
RUN mv -fv /CMakeModules/* /usr/share/cmake-`cmake --version|awk '{ print $3;exit }'|awk -F. '{print $1"."$2}'`/Modules/
RUN ln -s /usr/share/cmake-`cmake --version|awk '{ print $3;exit }'|awk -F. '{print $1"."$2}'`/Modules/Platform/Generic.cmake /usr/share/cmake-`cmake --version|awk '{ print $3;exit }'|awk -F. '{print $1"."$2}'`/Modules/Platform/${OS_NAME}.cmake
ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/lib/${CROSS_PFX}.cmake
ENV CMAKE_PREFIX_PATH /opt/${CROSS_PFX}:/opt/${CROSS_PFX}/usr
ENV PATH ${PATH}:${CROSS_ROOT}/bin
# END COMMON