mirror of
https://github.com/bensuperpc/dockcross.git
synced 2025-06-17 16:39:25 +02:00
Compare commits
74 Commits
update_lib
...
add_bare-m
Author | SHA1 | Date | |
---|---|---|---|
56e20c597a | |||
d3d033f77d | |||
9409f4c5a2 | |||
1d311100cd | |||
7f5fcc4513 | |||
37a75535ab | |||
eb0c4d8d95 | |||
076faf7ede | |||
ce521deaeb | |||
479f1c5d6f | |||
ce95ecfbf6 | |||
656e8ef65a | |||
927f709819 | |||
c7d6bb91b7 | |||
0b108e35a8 | |||
678140b0ac | |||
12a662e05c | |||
0a00d94731 | |||
ecc02c2f39 | |||
1c063e47f0 | |||
3f338f3221 | |||
4463ac02fc | |||
ecf9f32334 | |||
5a65786571 | |||
8802a50289 | |||
e90c6ee9ce | |||
4ac8689b5f | |||
8fe8fb1ef1 | |||
b15b799d7a | |||
c7d5ff28e0 | |||
7b63720438 | |||
ae3ed7e025 | |||
7717b5660a | |||
969f456ae0 | |||
a30e76d5cb | |||
6a1843884d | |||
795dd4dd1f | |||
78b96c7a09 | |||
336eacf372 | |||
f65a5ab72b | |||
5edf6c6771 | |||
260ccce125 | |||
3af48d4336 | |||
8ebd448ba9 | |||
7213d19795 | |||
66b9c2b62c | |||
de7b1b0832 | |||
8896857839 | |||
e37ca78f82 | |||
35eb05cefe | |||
2082f62c76 | |||
9adf96c16b | |||
5c27a89330 | |||
b266cd1e26 | |||
629046cd37 | |||
e70d9ce7f9 | |||
9d2866b1fe | |||
a9599e9e2a | |||
2dc4fb4b0d | |||
773adc1e8a | |||
2f5df2b697 | |||
fd80ca0a17 | |||
b3bf66de2f | |||
40545c5f78 | |||
8ff660facd | |||
0f47b27eea | |||
47e0c321a4 | |||
0888deb9fa | |||
7f019a564b | |||
0eb098c0cb | |||
598b045300 | |||
f34b72ed29 | |||
e0d2efb0e8 | |||
9891530c90 |
10
.github/workflows/main.yml
vendored
10
.github/workflows/main.yml
vendored
@ -4,9 +4,13 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
paths-ignore:
|
||||
- '**/README.md'
|
||||
pull_request:
|
||||
branches:
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- '**/README.md'
|
||||
|
||||
jobs:
|
||||
base:
|
||||
@ -32,7 +36,7 @@ jobs:
|
||||
if: github.ref == 'refs/heads/master'
|
||||
run: |
|
||||
docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }}
|
||||
docker image push dockcross/base
|
||||
docker image push dockcross/base --all-tags
|
||||
|
||||
image:
|
||||
name: ${{ matrix.arch_name }}
|
||||
@ -41,7 +45,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch_name: [android-arm, android-arm64, android-x86, android-x86_64, web-wasm, linux-arm64, linux-arm64-musl, linux-armv5, linux-armv5-musl, linux-armv6, linux-armv6-musl, linux-armv7, linux-armv7a, linux-armv7l-musl, linux-s390x, linux-x64, linux-x86, manylinux1-x64, manylinux1-x86, manylinux2010-x64, manylinux2010-x86, manylinux2014-x64, manylinux2014-x86, manylinux2014-aarch64, windows-static-x64, windows-static-x64-posix, windows-static-x86, windows-shared-x64, windows-shared-x64-posix, windows-shared-x86]
|
||||
arch_name: [android-arm, android-arm64, android-x86, android-x86_64, web-wasm, linux-arm64, linux-arm64-musl, linux-armv5, linux-armv5-musl, linux-armv6, linux-armv6-musl, linux-armv7, linux-armv7a, linux-armv7l-musl, linux-x64-clang, linux-s390x, linux-x64, linux-x86, linux-mips, linux-ppc64le, manylinux1-x64, manylinux1-x86, manylinux2010-x64, manylinux2010-x86, manylinux2014-x64, manylinux2014-x86, manylinux2014-aarch64, windows-static-x64, windows-static-x64-posix, windows-static-x86, windows-shared-x64, windows-shared-x64-posix, windows-shared-x86]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/download-artifact@v2
|
||||
@ -58,4 +62,4 @@ jobs:
|
||||
if: github.ref == 'refs/heads/master'
|
||||
run: |
|
||||
docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }}
|
||||
docker image push dockcross/${{ matrix.arch_name }}
|
||||
docker image push dockcross/${{ matrix.arch_name }} --all-tags
|
||||
|
@ -1,4 +1,6 @@
|
||||
FROM debian:stretch-20190326-slim
|
||||
ARG DOCKER_IMAGE=debian:bullseye-slim
|
||||
FROM $DOCKER_IMAGE
|
||||
|
||||
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
|
||||
#include "common.debian"
|
||||
|
138
Makefile
138
Makefile
@ -13,16 +13,20 @@ ORG = dockcross
|
||||
BIN = ./bin
|
||||
|
||||
# These images are built using the "build implicit rule"
|
||||
STANDARD_IMAGES = linux-s390x android-arm android-arm64 android-x86 android-x86_64 linux-x86 linux-x64 linux-arm64 linux-arm64-musl linux-armv5 linux-armv5-musl linux-armv6 linux-armv6-musl linux-armv7 linux-armv7a linux-armv7l-musl linux-mips linux-mipsel linux-ppc64le windows-static-x86 windows-static-x64 windows-static-x64-posix windows-shared-x86 windows-shared-x64 windows-shared-x64-posix
|
||||
STANDARD_IMAGES = linux-s390x android-arm android-arm64 android-x86 android-x86_64 linux-x86 linux-x64 linux-arm64 linux-x64-clang linux-arm64-musl linux-armv5 linux-armv5-musl linux-armv6 linux-armv6-musl linux-armv7 linux-armv7a linux-armv7l-musl linux-mips linux-ppc64le windows-static-x86 windows-static-x64 windows-static-x64-posix windows-shared-x86 windows-shared-x64 windows-shared-x64-posix
|
||||
|
||||
# Generated Dockerfiles.
|
||||
GEN_IMAGES = linux-s390x android-arm android-arm64 linux-x86 linux-x64 linux-mips linux-mipsel manylinux1-x64 manylinux1-x86 manylinux2010-x64 manylinux2010-x86 manylinux2014-x64 manylinux2014-x86 manylinux2014-aarch64 web-wasm linux-arm64 linux-arm64-musl windows-static-x86 windows-static-x64 windows-static-x64-posix windows-shared-x86 windows-shared-x64 windows-shared-x64-posix linux-armv7 linux-armv7a linux-armv7l-musl linux-armv6 linux-armv6-musl linux-armv5 linux-armv5-musl linux-ppc64le
|
||||
GEN_IMAGES = linux-s390x android-arm android-arm64 linux-x86 linux-x64 linux-mips linux-x64-clang manylinux1-x64 manylinux1-x86 manylinux2010-x64 manylinux2010-x86 manylinux2014-x64 manylinux2014-x86 manylinux2014-aarch64 web-wasm linux-arm64 linux-arm64-musl windows-static-x86 windows-static-x64 windows-static-x64-posix windows-shared-x86 windows-shared-x64 windows-shared-x64-posix linux-armv7 linux-armv7a linux-armv7l-musl linux-armv6 linux-armv6-musl linux-armv5 linux-armv5-musl linux-ppc64le
|
||||
|
||||
GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES))
|
||||
|
||||
# These images are expected to have explicit rules for *both* build and testing
|
||||
NON_STANDARD_IMAGES = web-wasm manylinux1-x64 manylinux1-x86 manylinux2010-x64 manylinux2010-x86 manylinux2014-x64 manylinux2014-x86 manylinux2014-aarch64
|
||||
|
||||
# Docker composite files
|
||||
DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux common.crosstool common.windows common-manylinux.crosstool common.dockcross common.label-and-env
|
||||
DOCKER_COMPOSITE_FOLDER_PATH = common/
|
||||
DOCKER_COMPOSITE_PATH = $(addprefix $(DOCKER_COMPOSITE_FOLDER_PATH),$(DOCKER_COMPOSITE_SOURCES))
|
||||
|
||||
# This list all available images
|
||||
IMAGES = $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES)
|
||||
@ -60,16 +64,16 @@ test: base.test $(addsuffix .test,$(IMAGES))
|
||||
# Generic Targets (can specialize later).
|
||||
#
|
||||
|
||||
$(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOSITE_SOURCES)
|
||||
$(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOSITE_PATH)
|
||||
sed \
|
||||
-e '/common.docker/ r common.docker' \
|
||||
-e '/common.debian/ r common.debian' \
|
||||
-e '/common.manylinux/ r common.manylinux' \
|
||||
-e '/common.crosstool/ r common.crosstool' \
|
||||
-e '/common-manylinux.crosstool/ r common-manylinux.crosstool' \
|
||||
-e '/common.windows/ r common.windows' \
|
||||
-e '/common.dockcross/ r common.dockcross' \
|
||||
-e '/common.label-and-env/ r common.label-and-env' \
|
||||
-e '/common.docker/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.docker' \
|
||||
-e '/common.debian/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.debian' \
|
||||
-e '/common.manylinux/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.manylinux' \
|
||||
-e '/common.crosstool/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.crosstool' \
|
||||
-e '/common-manylinux.crosstool/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common-manylinux.crosstool' \
|
||||
-e '/common.windows/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.windows' \
|
||||
-e '/common.dockcross/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.dockcross' \
|
||||
-e '/common.label-and-env/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.label-and-env' \
|
||||
$< > $@
|
||||
|
||||
#
|
||||
@ -79,24 +83,18 @@ web-wasm: web-wasm/Dockerfile
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
cp -r test web-wasm/
|
||||
$(DOCKER) build -t $(ORG)/web-wasm:latest \
|
||||
-t $(ORG)/web-wasm:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/web-wasm \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
web-wasm
|
||||
$(DOCKER) build -t $(ORG)/web-wasm:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/web-wasm \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
web-wasm
|
||||
rm -rf web-wasm/test
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
web-wasm.test: web-wasm
|
||||
cp -r test web-wasm/
|
||||
$(DOCKER) run $(RM) dockcross/web-wasm > $(BIN)/dockcross-web-wasm && chmod +x $(BIN)/dockcross-web-wasm
|
||||
$(DOCKER) run $(RM) $(ORG)/web-wasm > $(BIN)/dockcross-web-wasm && chmod +x $(BIN)/dockcross-web-wasm
|
||||
$(BIN)/dockcross-web-wasm python test/run.py --exe-suffix ".js"
|
||||
rm -rf web-wasm/test
|
||||
|
||||
@ -106,22 +104,16 @@ web-wasm.test: web-wasm
|
||||
manylinux2014-aarch64: manylinux2014-aarch64/Dockerfile
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
$(DOCKER) build -t $(ORG)/manylinux2014-aarch64:latest \
|
||||
-t $(ORG)/manylinux2014-aarch64:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2014-aarch64 \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2014-aarch64/Dockerfile .
|
||||
$(DOCKER) build -t $(ORG)/manylinux2014-aarch64:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2014-aarch64 \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2014-aarch64/Dockerfile .
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
manylinux2014-aarch64.test: manylinux2014-aarch64
|
||||
$(DOCKER) run $(RM) dockcross/manylinux2014-aarch64 > $(BIN)/dockcross-manylinux2014-aarch64 && chmod +x $(BIN)/dockcross-manylinux2014-aarch64
|
||||
$(DOCKER) run $(RM) $(ORG)/manylinux2014-aarch64 > $(BIN)/dockcross-manylinux2014-aarch64 && chmod +x $(BIN)/dockcross-manylinux2014-aarch64
|
||||
$(BIN)/dockcross-manylinux2014-aarch64 /opt/python/cp38-cp38/bin/python test/run.py
|
||||
|
||||
#
|
||||
@ -130,22 +122,16 @@ manylinux2014-aarch64.test: manylinux2014-aarch64
|
||||
manylinux2014-x64: manylinux2014-x64/Dockerfile
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
$(DOCKER) build -t $(ORG)/manylinux2014-x64:latest \
|
||||
-t $(ORG)/manylinux2014-x64:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2014-x64 \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2014-x64/Dockerfile .
|
||||
$(DOCKER) build -t $(ORG)/manylinux2014-x64:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2014-x64 \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2014-x64/Dockerfile .
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
manylinux2014-x64.test: manylinux2014-x64
|
||||
$(DOCKER) run $(RM) dockcross/manylinux2014-x64 > $(BIN)/dockcross-manylinux2014-x64 && chmod +x $(BIN)/dockcross-manylinux2014-x64
|
||||
$(DOCKER) run $(RM) $(ORG)/manylinux2014-x64 > $(BIN)/dockcross-manylinux2014-x64 && chmod +x $(BIN)/dockcross-manylinux2014-x64
|
||||
$(BIN)/dockcross-manylinux2014-x64 /opt/python/cp38-cp38/bin/python test/run.py
|
||||
|
||||
#
|
||||
@ -154,22 +140,16 @@ manylinux2014-x64.test: manylinux2014-x64
|
||||
manylinux2014-x86: manylinux2014-x86/Dockerfile
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
$(DOCKER) build -t $(ORG)/manylinux2014-x86:latest \
|
||||
-t $(ORG)/manylinux2014-x86:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2014-x86 \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2014-x86/Dockerfile .
|
||||
$(DOCKER) build -t $(ORG)/manylinux2014-x86:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2014-x86 \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2014-x86/Dockerfile .
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
manylinux2014-x86.test: manylinux2014-x86
|
||||
$(DOCKER) run $(RM) dockcross/manylinux2014-x86 > $(BIN)/dockcross-manylinux2014-x86 && chmod +x $(BIN)/dockcross-manylinux2014-x86
|
||||
$(DOCKER) run $(RM) $(ORG)/manylinux2014-x86 > $(BIN)/dockcross-manylinux2014-x86 && chmod +x $(BIN)/dockcross-manylinux2014-x86
|
||||
$(BIN)/dockcross-manylinux2014-x86 /opt/python/cp38-cp38/bin/python test/run.py
|
||||
|
||||
#
|
||||
@ -179,18 +159,12 @@ manylinux2014-x86.test: manylinux2014-x86
|
||||
manylinux2010-x64: manylinux2010-x64/Dockerfile
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
$(DOCKER) build -t $(ORG)/manylinux2010-x64:latest \
|
||||
-t $(ORG)/manylinux2010-x64:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2010-x64 \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2010-x64/Dockerfile .
|
||||
$(DOCKER) build -t $(ORG)/manylinux2010-x64:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2010-x64 \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2010-x64/Dockerfile .
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
manylinux2010-x64.test: manylinux2010-x64
|
||||
@ -204,22 +178,16 @@ manylinux2010-x64.test: manylinux2010-x64
|
||||
manylinux2010-x86: manylinux2010-x86/Dockerfile
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
$(DOCKER) build -t $(ORG)/manylinux2010-x86:latest \
|
||||
-t $(ORG)/manylinux2010-x86:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2010-x86 \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2010-x86/Dockerfile .
|
||||
$(DOCKER) build -t $(ORG)/manylinux2010-x86:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux2010-x86 \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux2010-x86/Dockerfile .
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
manylinux2010-x86.test: manylinux2010-x86
|
||||
$(DOCKER) run $(RM) dockcross/manylinux2010-x86 > $(BIN)/dockcross-manylinux2010-x86 && chmod +x $(BIN)/dockcross-manylinux2010-x86
|
||||
$(DOCKER) run $(RM) $(ORG)/manylinux2010-x86 > $(BIN)/dockcross-manylinux2010-x86 && chmod +x $(BIN)/dockcross-manylinux2010-x86
|
||||
$(BIN)/dockcross-manylinux2010-x86 /opt/python/cp38-cp38/bin/python test/run.py
|
||||
|
||||
#
|
||||
@ -229,22 +197,16 @@ manylinux2010-x86.test: manylinux2010-x86
|
||||
manylinux1-x64: manylinux1-x64/Dockerfile
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
$(DOCKER) build -t $(ORG)/manylinux1-x64:latest \
|
||||
-t $(ORG)/manylinux1-x64:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux1-x64 \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux1-x64/Dockerfile .
|
||||
$(DOCKER) build -t $(ORG)/manylinux1-x64:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux1-x64 \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux1-x64/Dockerfile .
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
manylinux1-x64.test: manylinux1-x64
|
||||
$(DOCKER) run $(RM) dockcross/manylinux1-x64 > $(BIN)/dockcross-manylinux1-x64 && chmod +x $(BIN)/dockcross-manylinux1-x64
|
||||
$(DOCKER) run $(RM) $(ORG)/manylinux1-x64 > $(BIN)/dockcross-manylinux1-x64 && chmod +x $(BIN)/dockcross-manylinux1-x64
|
||||
$(BIN)/dockcross-manylinux1-x64 /opt/python/cp38-cp38/bin/python test/run.py
|
||||
|
||||
#
|
||||
@ -254,22 +216,16 @@ manylinux1-x64.test: manylinux1-x64
|
||||
manylinux1-x86: manylinux1-x86/Dockerfile
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
$(DOCKER) build -t $(ORG)/manylinux1-x86:latest \
|
||||
-t $(ORG)/manylinux1-x86:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux1-x86 \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux1-x86/Dockerfile .
|
||||
$(DOCKER) build -t $(ORG)/manylinux1-x86:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/manylinux1-x86 \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
-f manylinux1-x86/Dockerfile .
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
manylinux1-x86.test: manylinux1-x86
|
||||
$(DOCKER) run $(RM) dockcross/manylinux1-x86 > $(BIN)/dockcross-manylinux1-x86 && chmod +x $(BIN)/dockcross-manylinux1-x86
|
||||
$(DOCKER) run $(RM) $(ORG)/manylinux1-x86 > $(BIN)/dockcross-manylinux1-x86 && chmod +x $(BIN)/dockcross-manylinux1-x86
|
||||
$(BIN)/dockcross-manylinux1-x86 /opt/python/cp38-cp38/bin/python test/run.py
|
||||
|
||||
#
|
||||
@ -278,19 +234,14 @@ manylinux1-x86.test: manylinux1-x86
|
||||
|
||||
base: Dockerfile imagefiles/
|
||||
$(DOCKER) build -t $(ORG)/base:latest \
|
||||
-t $(ORG)/base:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/base \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
.
|
||||
$(DOCKER) build -t $(ORG)/base:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/base \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
.
|
||||
|
||||
base.test: base
|
||||
$(DOCKER) run $(RM) dockcross/base > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
|
||||
$(DOCKER) run $(RM) $(ORG)/base > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
|
||||
|
||||
#
|
||||
# display
|
||||
#
|
||||
display_images:
|
||||
@ -305,27 +256,32 @@ $(VERBOSE).SILENT: display_images
|
||||
$(STANDARD_IMAGES): %: %/Dockerfile base
|
||||
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
||||
$(DOCKER) build -t $(ORG)/$@:latest \
|
||||
-t $(ORG)/$@:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/$@ \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
$@
|
||||
$(DOCKER) build -t $(ORG)/$@:$(TAG) \
|
||||
--build-arg IMAGE=$(ORG)/$@ \
|
||||
--build-arg VERSION=$(TAG) \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
||||
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
$@
|
||||
rm -rf $@/imagefiles
|
||||
|
||||
clean:
|
||||
for d in $(STANDARD_IMAGES) ; do rm -rf $$d/imagefiles ; done
|
||||
for d in $(GEN_IMAGE_DOCKERFILES) ; do rm -f $$d ; done
|
||||
rm -f Dockerfile
|
||||
|
||||
purge: clean
|
||||
# Remove all untagged images
|
||||
$(DOCKER) container ls -aq | xargs --no-run-if-empty $(DOCKER) container rm -f
|
||||
# Remove all images with organization (ex dockcross/*)
|
||||
$(DOCKER) images --filter=reference='$(ORG)/*' --format='{{.Repository}}:{{.Tag}}' | xargs -r $(DOCKER) rmi -f
|
||||
|
||||
#
|
||||
# testing implicit rule
|
||||
#
|
||||
.SECONDEXPANSION:
|
||||
$(addsuffix .test,$(STANDARD_IMAGES)): $$(basename $$@)
|
||||
$(DOCKER) run $(RM) dockcross/$(basename $@) > $(BIN)/dockcross-$(basename $@) && chmod +x $(BIN)/dockcross-$(basename $@)
|
||||
$(BIN)/dockcross-$(basename $@) python test/run.py $($@_ARGS)
|
||||
$(DOCKER) run $(RM) $(ORG)/$(basename $@) > $(BIN)/dockcross-$(basename $@) && chmod +x $(BIN)/dockcross-$(basename $@)
|
||||
$(BIN)/dockcross-$(basename $@) python3 test/run.py $($@_ARGS)
|
||||
|
||||
#
|
||||
# testing prerequisites implicit rule
|
||||
@ -335,4 +291,4 @@ test.prerequisites:
|
||||
|
||||
$(addsuffix .test,base $(IMAGES)): test.prerequisites
|
||||
|
||||
.PHONY: base images $(IMAGES) test %.test
|
||||
.PHONY: base images $(IMAGES) test %.test clean purge
|
||||
|
493
README.md
Normal file
493
README.md
Normal file
@ -0,0 +1,493 @@
|
||||
|
||||
# dockcross
|
||||
|
||||
|
||||
Cross compiling toolchains in Docker images.
|
||||
|
||||
[](https://github.com/dockcross/dockcross/actions?query=branch%3Amaster)
|
||||
|
||||
## Features
|
||||
|
||||
- Pre-built and configured toolchains for cross compiling.
|
||||
- Most images also contain an emulator for the target system.
|
||||
- Clean separation of build tools, source code, and build artifacts.
|
||||
- Commands in the container are run as the calling user, so that any
|
||||
created files have the expected ownership, (i.e. not root).
|
||||
- Make variables ([CC]{.title-ref}, [LD]{.title-ref} etc) are set to
|
||||
point to the appropriate tools in the container.
|
||||
- Recent [CMake](https://cmake.org) and ninja are precompiled.
|
||||
- [Conan.io](https://www.conan.io) can be used as a package manager.
|
||||
- Toolchain files configured for CMake.
|
||||
- Current directory is mounted as the container\'s workdir, `/work`.
|
||||
- Works with the [Docker for
|
||||
Mac](https://docs.docker.com/docker-for-mac/) and [Docker for
|
||||
Windows](https://docs.docker.com/docker-for-windows/).
|
||||
- Support using alternative container executor by setting
|
||||
[OCI_EXE]{.title-ref} environment variable. By default, it searches
|
||||
for [docker]{.title-ref} and
|
||||
\[[podman]{.title-ref}\](<https://podman.io/>) executable.
|
||||
|
||||
## Examples
|
||||
|
||||
1. `dockcross make`: Build the *Makefile* in the current directory.
|
||||
2. `dockcross cmake -Bbuild -H. -GNinja`: Run CMake with a build
|
||||
directory `./build` for a *CMakeLists.txt* file in the current
|
||||
directory and generate `ninja` build configuration files.
|
||||
3. `dockcross ninja -Cbuild`: Run ninja in the `./build` directory.
|
||||
4. `dockcross bash -c '$CC test/C/hello.c -o hello'`: Build the
|
||||
*hello.c* file with the compiler identified with the `CC`
|
||||
environmental variable in the build environment.
|
||||
5. `dockcross bash`: Run an interactive shell in the build environment.
|
||||
|
||||
Note that commands are executed verbatim. If any shell processing for
|
||||
environment variable expansion or redirection is required, please use
|
||||
[bash -c \'command args\...\']{.title-ref}.
|
||||
|
||||
## Installation
|
||||
|
||||
This image does not need to be run manually. Instead, there is a helper
|
||||
script to execute build commands on source code existing on the local
|
||||
host filesystem. This script is bundled with the image.
|
||||
|
||||
To install the helper script, run one of the images with no arguments,
|
||||
and redirect the output to a file:
|
||||
|
||||
docker run --rm CROSS_COMPILER_IMAGE_NAME > ./dockcross
|
||||
chmod +x ./dockcross
|
||||
mv ./dockcross ~/bin/
|
||||
|
||||
Where [CROSS_COMPILER_IMAGE_NAME]{.title-ref} is the name of the
|
||||
cross-compiler toolchain Docker instance, e.g.
|
||||
[dockcross/linux-armv7]{.title-ref}.
|
||||
|
||||
Only 64-bit x86_64 images are provided; a 64-bit x86_64 host system is
|
||||
required.
|
||||
|
||||
## Usage
|
||||
|
||||
For the impatient, here\'s how to compile a hello world for armv7:
|
||||
|
||||
cd ~/src/dockcross
|
||||
docker run --rm dockcross/linux-armv7 > ./dockcross-linux-armv7
|
||||
chmod +x ./dockcross-linux-armv7
|
||||
./dockcross-linux-armv7 bash -c '$CC test/C/hello.c -o hello_arm'
|
||||
|
||||
Note how invoking any toolchain command (make, gcc, etc.) is just a
|
||||
matter of prepending the **dockcross** script on the commandline:
|
||||
|
||||
./dockcross-linux-armv7 [command] [args...]
|
||||
|
||||
The dockcross script will execute the given command-line inside the
|
||||
container, along with all arguments passed after the command. Commands
|
||||
that evaluate environmental variables in the image, like
|
||||
[\$CC]{.title-ref} above, should be executed in [bash -c].
|
||||
The present working directory is mounted within the image, which can be
|
||||
used to make source code available in the Docker container.
|
||||
|
||||
## Cross compilers
|
||||
|
||||
### dockcross/base
|
||||
|
||||
   
|
||||
|
||||
Base image for other toolchain images. From Debian Jessie with GCC,
|
||||
make, autotools, CMake, Ninja, Git, and Python.
|
||||
|
||||
### dockcross/android-arm
|
||||
|
||||
  
|
||||
|
||||
The Android NDK standalone toolchain for the arm architecture.
|
||||
|
||||
### dockcross/android-arm64
|
||||
|
||||
  
|
||||
|
||||
The Android NDK standalone toolchain for the arm64 architecture.
|
||||
|
||||
### dockcross/android-x86
|
||||
|
||||
  
|
||||
|
||||
The Android NDK standalone toolchain for the x86 architecture.
|
||||
|
||||
### dockcross/android-x86_64
|
||||
|
||||
  
|
||||
|
||||
The Android NDK standalone toolchain for the x86_64 architecture.
|
||||
|
||||
### dockcross/linux-arm64
|
||||
|
||||
  
|
||||
|
||||
Cross compiler for the 64-bit ARM platform on Linux, also known as
|
||||
AArch64.
|
||||
|
||||
### dockcross/linux-arm64-musl
|
||||
|
||||
  
|
||||
|
||||
Cross compiler for the 64-bit ARM platform on Linux (also known as
|
||||
AArch64), using [musl](https://www.musl-libc.org/) as base \"libc\".
|
||||
|
||||
### dockcross/linux-armv5
|
||||
|
||||
  
|
||||
|
||||
Linux armv5 cross compiler toolchain for legacy devices like the
|
||||
Parrot AR Drone.
|
||||
|
||||
### dockcross/linux-armv5-musl
|
||||
|
||||
  
|
||||
|
||||
Linux armv5 cross compiler toolchain using
|
||||
[musl](https://www.musl-libc.org/) as base \"libc\".
|
||||
|
||||
### dockcross/linux-armv6
|
||||
|
||||
  
|
||||
|
||||
Linux ARMv6 cross compiler toolchain for the Raspberry Pi, etc.
|
||||
|
||||
### dockcross/linux-armv6-musl
|
||||
|
||||
  
|
||||
|
||||
Linux ARMv6 cross compiler toolchain for the Raspberry Pi, etc,
|
||||
using [musl](https://www.musl-libc.org/) as base \"libc\".
|
||||
|
||||
### dockcross/linux-armv7
|
||||
|
||||
  
|
||||
|
||||
Generic Linux armv7 cross compiler toolchain.
|
||||
|
||||
### dockcross/linux-armv7a
|
||||
|
||||
  
|
||||
|
||||
Toolchain configured for ARMv7-A used in Beaglebone Black single
|
||||
board PC with TI SoC AM3358 on board, Cortex-A8.
|
||||
|
||||
### dockcross/linux-armv7l-musl
|
||||
|
||||
  
|
||||
|
||||
Toolchain configured for ARMv7-L, using
|
||||
[musl](https://www.musl-libc.org/) as base \"libc\".
|
||||
|
||||
### dockcross/linux-mipsel
|
||||
|
||||
  
|
||||
|
||||
Linux mipsel cross compiler toolchain for little endian MIPS GNU
|
||||
systems.
|
||||
|
||||
### dockcross/linux-mips
|
||||
|
||||
  
|
||||
|
||||
Linux mips cross compiler toolchain for big endian 32-bit hard float
|
||||
MIPS GNU systems.
|
||||
|
||||
### dockcross/linux-s390x
|
||||
|
||||
  
|
||||
|
||||
Linux s390x cross compiler toolchain for S390X GNU systems.
|
||||
|
||||
### dockcross/linux-ppc64le
|
||||
|
||||
  
|
||||
|
||||
Linux PowerPC 64 little endian cross compiler toolchain for the
|
||||
POWER8, etc. Important: Due to Issue #430, automatic build of newer
|
||||
images has been disabled.
|
||||
|
||||
### dockcross/linux-x64
|
||||
|
||||
  
|
||||
|
||||
Linux x86_64 / amd64 compiler. Since the Docker image is natively
|
||||
x86_64, this is not actually a cross compiler.
|
||||
|
||||
### dockcross/linux-x64-clang
|
||||
|
||||
  
|
||||
|
||||
Linux clang x86_64 / amd64 compiler. Since the Docker image is
|
||||
natively x86_64, this is not actually a cross compiler.
|
||||
|
||||
### dockcross/linux-x86
|
||||
|
||||
  
|
||||
|
||||
Linux i686 cross compiler.
|
||||
|
||||
### dockcross/manylinux2014-x64
|
||||
|
||||
  
|
||||
|
||||
Docker [manylinux2014](https://github.com/pypa/manylinux) image for
|
||||
building Linux x86_64 / amd64 [Python wheel
|
||||
packages](http://pythonwheels.com/). It includes Python 3.5, 3.6,
|
||||
3.7, 3.8, and 3.9. Also has support for the dockcross script, and it
|
||||
has installations of CMake, Ninja, and
|
||||
[scikit-build](http://scikit-build.org). For CMake, it sets
|
||||
[MANYLINUX2014]{.title-ref} to \"TRUE\" in the toolchain.
|
||||
|
||||
### dockcross/manylinux2014-x86
|
||||
|
||||
  
|
||||
|
||||
Docker [manylinux2014](https://github.com/pypa/manylinux) image for
|
||||
building Linux i686 [Python wheel
|
||||
packages](http://pythonwheels.com/). It includes Python 3.5, 3.6,
|
||||
3.7, 3.8, and 3.9. Also has support for the dockcross script, and it
|
||||
has installations of CMake, Ninja, and
|
||||
[scikit-build](http://scikit-build.org). For CMake, it sets
|
||||
[MANYLINUX2014]{.title-ref} to \"TRUE\" in the toolchain.
|
||||
|
||||
### dockcross/manylinux2014-aarch64
|
||||
|
||||
  
|
||||
|
||||
Docker [manylinux2014](https://github.com/pypa/manylinux) image for
|
||||
building Linux aarch64 / arm64 [Python wheel
|
||||
packages](http://pythonwheels.com/). It includes Python 3.5, 3.6,
|
||||
3.7, 3.8, and 3.9. Also has support for the dockcross script, and it
|
||||
has installations of CMake, Ninja, and
|
||||
[scikit-build](http://scikit-build.org). For CMake, it sets
|
||||
[MANYLINUX2014]{.title-ref} to \"TRUE\" in the toolchain.
|
||||
|
||||
### dockcross/manylinux2010-x64
|
||||
|
||||
  
|
||||
|
||||
Docker [manylinux2010](https://github.com/pypa/manylinux)
|
||||
image for building Linux x86_64 / amd64 [Python wheel
|
||||
packages](http://pythonwheels.com/). It includes Python 2.7, 3.4,
|
||||
3.5, 3.6, 3.7 and 3.8. Also has support for the dockcross script,
|
||||
and it has installations of CMake, Ninja, and
|
||||
[scikit-build](http://scikit-build.org). For CMake, it sets
|
||||
[MANYLINUX2010]{.title-ref} to \"TRUE\" in the toolchain.
|
||||
|
||||
### dockcross/manylinux2010-x86
|
||||
|
||||
  
|
||||
|
||||
Docker [manylinux2010](https://github.com/pypa/manylinux) image for
|
||||
building Linux i686 [Python wheel
|
||||
packages](http://pythonwheels.com/). It includes Python 2.7, 3.4,
|
||||
3.5, 3.6, 3.7 and 3.8. Also has support for the dockcross script,
|
||||
and it has installations of CMake, Ninja, and
|
||||
[scikit-build](http://scikit-build.org). For CMake, it sets
|
||||
[MANYLINUX2010]{.title-ref} to \"TRUE\" in the toolchain.
|
||||
|
||||
### dockcross/manylinux1-x64
|
||||
|
||||
  
|
||||
|
||||
Docker [manylinux1](https://github.com/pypa/manylinux/tree/manylinux1)
|
||||
image for building Linux x86_64 / amd64 [Python wheel
|
||||
packages](http://pythonwheels.com/). It includes Python 2.7, 3.4,
|
||||
3.5, 3.6, 3.7 and 3.8. Also has support for the dockcross script,
|
||||
and it has installations of CMake, Ninja, and
|
||||
[scikit-build](http://scikit-build.org). For CMake, it sets
|
||||
[MANYLINUX1]{.title-ref} to \"TRUE\" in the toolchain.
|
||||
|
||||
### dockcross/manylinux1-x86
|
||||
|
||||
  
|
||||
|
||||
Docker [manylinux1](https://github.com/pypa/manylinux/tree/manylinux1)
|
||||
image for building Linux i686 [Python wheel
|
||||
packages](http://pythonwheels.com/). It includes Python 2.7, 3.4,
|
||||
3.5, 3.6, 3.7 and 3.8. Also has support for the dockcross script,
|
||||
and it has installations of CMake, Ninja, and
|
||||
[scikit-build](http://scikit-build.org). For CMake, it sets
|
||||
[MANYLINUX1]{.title-ref} to \"TRUE\" in the toolchain.
|
||||
|
||||
### dockcross/web-wasm
|
||||
|
||||
  
|
||||
|
||||
The Emscripten WebAssembly/asm.js/JavaScript cross compiler.
|
||||
|
||||
### dockcross/windows-static-x64
|
||||
|
||||
  
|
||||
|
||||
64-bit Windows cross-compiler based on [MXE/MinGW-w64](https://mxe.cc/) with win32 threads and static
|
||||
linking.
|
||||
|
||||
### dockcross/windows-static-x64-posix
|
||||
|
||||
  
|
||||
|
||||
64-bit Windows cross-compiler based on [MXE/MinGW-w64](https://mxe.cc/) with posix threads and static
|
||||
linking.
|
||||
|
||||
### dockcross/windows-static-x86
|
||||
|
||||
  
|
||||
|
||||
32-bit Windows cross-compiler based on [MXE/MinGW-w64](https://mxe.cc/) with win32 threads and static linking.
|
||||
|
||||
### dockcross/windows-shared-x64
|
||||
|
||||
  
|
||||
|
||||
64-bit Windows cross-compiler based on [MXE/MinGW-w64](https://mxe.cc/) with win32 threads and dynamic linking.
|
||||
|
||||
### dockcross/windows-shared-x64-posix
|
||||
|
||||
  
|
||||
|
||||
64-bit Windows cross-compiler based on [MXE/MinGW-w64](https://mxe.cc/) with posix threads and dynamic linking.
|
||||
|
||||
### dockcross/windows-shared-x86
|
||||
|
||||
  
|
||||
|
||||
32-bit Windows cross-compiler based on [MXE/MinGW-w64](https://mxe.cc/) with win32 threads and dynamic linking.
|
||||
|
||||
## Articles
|
||||
|
||||
- [dockcross: C++ Write Once, Run
|
||||
Anywhere](https://nbviewer.jupyter.org/format/slides/github/dockcross/cxx-write-once-run-anywhere/blob/master/dockcross_CXX_Write_Once_Run_Anywhere.ipynb#/)
|
||||
- [Cross-compiling binaries for multiple architectures with
|
||||
Docker](https://web.archive.org/web/20170912153531/http://blogs.nopcode.org/brainstorm/2016/07/26/cross-compiling-with-docker)
|
||||
|
||||
## Built-in update commands
|
||||
|
||||
A special update command can be executed that will update the source
|
||||
cross-compiler Docker image or the dockcross script itself.
|
||||
|
||||
- `dockcross [--] command [args...]`: Forces a command to run inside
|
||||
the container (in case of a name clash with a built-in command), use
|
||||
`--` before the command.
|
||||
- `dockcross update-image`: Fetch the latest version of the docker
|
||||
image.
|
||||
- `dockcross update-script`: Update the installed dockcross script
|
||||
with the one bundled in the image.
|
||||
- `dockcross update`: Update both the docker image, and the dockcross
|
||||
script.
|
||||
|
||||
## Download all images
|
||||
|
||||
To easily download all images, the convenience target `display_images`
|
||||
could be used:
|
||||
|
||||
curl https://raw.githubusercontent.com/dockcross/dockcross/master/Makefile -o dockcross-Makefile
|
||||
for image in $(make -f dockcross-Makefile display_images); do
|
||||
echo "Pulling dockcross/$image"
|
||||
docker pull dockcross/$image
|
||||
done
|
||||
|
||||
## Install all dockcross scripts
|
||||
|
||||
To automatically install in `~/bin` the dockcross scripts for each
|
||||
images already downloaded, the convenience target `display_images` could
|
||||
be used:
|
||||
|
||||
curl https://raw.githubusercontent.com/dockcross/dockcross/master/Makefile -o dockcross-Makefile
|
||||
for image in $(make -f dockcross-Makefile display_images); do
|
||||
if [[ $(docker images -q dockcross/$image) == "" ]]; then
|
||||
echo "~/bin/dockcross-$image skipping: image not found locally"
|
||||
continue
|
||||
fi
|
||||
echo "~/bin/dockcross-$image ok"
|
||||
docker run dockcross/$image > ~/bin/dockcross-$image && \
|
||||
chmod u+x ~/bin/dockcross-$image
|
||||
done
|
||||
|
||||
## Dockcross configuration
|
||||
|
||||
The following environmental variables and command-line options are used.
|
||||
In all cases, the command-line option overrides the environment
|
||||
variable.
|
||||
|
||||
### DOCKCROSS_CONFIG / \--config\|-c \<path-to-config-file>
|
||||
|
||||
This file is sourced, if it exists, before executing the rest of the
|
||||
dockcross script.
|
||||
|
||||
Default: `~/.dockcross`
|
||||
|
||||
### DOCKCROSS_IMAGE / \--image\|-i \<docker-image-name>
|
||||
|
||||
The Docker cross-compiler image to run.
|
||||
|
||||
Default: Image with which the script was created.
|
||||
|
||||
### DOCKCROSS_ARGS / \--args\|-a \<docker-run-args>
|
||||
|
||||
Extra arguments to pass to the `docker run` command. Quote the entire
|
||||
set of args if they contain spaces.
|
||||
|
||||
## Per-project dockcross configuration
|
||||
|
||||
If a shell script named `.dockcross` is found in the current directory
|
||||
where the dockcross script is started, it is executed before the
|
||||
dockcross script `command` argument. The shell script is expected to
|
||||
have a shebang like `#!/usr/bin/env bash`.
|
||||
|
||||
For example, commands like
|
||||
`git config --global advice.detachedHead false` can be added to this
|
||||
script.
|
||||
|
||||
## How to extend Dockcross images
|
||||
|
||||
In order to extend Dockcross images with your own commands, one must:
|
||||
|
||||
1. Use `FROM dockcross/<name_of_image>`.
|
||||
2. Set `DEFAULT_DOCKCROSS_IMAGE` to a name of the tag you\'re planning
|
||||
to use for the image. This tag must then be used during the build
|
||||
phase, unless you mean to pass the resulting helper script the
|
||||
`DOCKCROSS_IMAGE` argument.
|
||||
|
||||
An example Dockerfile would be:
|
||||
|
||||
FROM dockcross/linux-armv7
|
||||
|
||||
ENV DEFAULT_DOCKCROSS_IMAGE my_cool_image
|
||||
RUN apt-get install nano
|
||||
|
||||
And then in the shell:
|
||||
|
||||
docker build -t my_cool_image . ## Builds the dockcross image.
|
||||
docker run my_cool_image > linux-armv7 ## Creates a helper script named linux-armv7.
|
||||
chmod +x linux-armv7 ## Gives the script execution permission.
|
||||
./linux-armv7 bash ## Runs the helper script with the argument "bash", which starts an interactive container using your extended image.
|
||||
|
||||
## What is the difference between [dockcross]{.title-ref} and [dockbuild]{.title-ref} ?
|
||||
|
||||
The key difference is that
|
||||
[dockbuild](https://github.com/dockbuild/dockbuild#readme) images do
|
||||
**NOT** provide a [toolchain
|
||||
file](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html)
|
||||
but they use the same method to conveniently isolate the build
|
||||
environment as
|
||||
[dockcross](https://github.com/dockcross/dockcross#readme).
|
||||
|
||||
[dockbuild]{.title-ref} is used to build binaries for Linux x86_64 /
|
||||
amd64 that will work across most Linux distributions.
|
||||
[dockbuild]{.title-ref} performs a native Linux build where the host
|
||||
build system is a Linux x86_64 / amd64 Docker image (so that it can be
|
||||
used for building binaries on any system which can run Docker images)
|
||||
and the target runtime system is Linux x86_x64 / amd64.
|
||||
|
||||
[dockcross]{.title-ref} is used to build binaries for many different
|
||||
platforms. [dockcross]{.title-ref} performs a cross compilation where
|
||||
the host build system is a Linux x86_64 / amd64 Docker image (so that it
|
||||
can be used for building binaries on any system which can run Docker
|
||||
images) and the target runtime system varies.
|
||||
|
||||
\-\--
|
||||
|
||||
Credits go to
|
||||
[sdt/docker-raspberry-pi-cross-compiler](https://github.com/sdt/docker-raspberry-pi-cross-compiler),
|
||||
who invented the base of the **dockcross** script.
|
478
README.rst
478
README.rst
@ -1,478 +0,0 @@
|
||||
dockcross
|
||||
=========
|
||||
|
||||
Cross compiling toolchains in Docker images.
|
||||
|
||||
.. image:: https://github.com/dockcross/dockcross/workflows/Dockcross%20CI/badge.svg
|
||||
:target: https://github.com/dockcross/dockcross/actions?query=branch%3Amaster
|
||||
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
* Pre-built and configured toolchains for cross compiling.
|
||||
* Most images also contain an emulator for the target system.
|
||||
* Clean separation of build tools, source code, and build artifacts.
|
||||
* Commands in the container are run as the calling user, so that any created files have the expected ownership, (i.e. not root).
|
||||
* Make variables (`CC`, `LD` etc) are set to point to the appropriate tools in the container.
|
||||
* Recent `CMake <https://cmake.org>`_ and ninja are precompiled.
|
||||
* `Conan.io <https://www.conan.io>`_ can be used as a package manager.
|
||||
* Toolchain files configured for CMake.
|
||||
* Current directory is mounted as the container's workdir, ``/work``.
|
||||
* Works with the `Docker for Mac <https://docs.docker.com/docker-for-mac/>`_ and `Docker for Windows <https://docs.docker.com/docker-for-windows/>`_.
|
||||
* Support using alternative container executor by setting `OCI_EXE` environment variable. By default, it searches for `docker` and [`podman`](https://podman.io/) executable.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
1. ``dockcross make``: Build the *Makefile* in the current directory.
|
||||
2. ``dockcross cmake -Bbuild -H. -GNinja``: Run CMake with a build directory
|
||||
``./build`` for a *CMakeLists.txt* file in the current directory and generate
|
||||
``ninja`` build configuration files.
|
||||
3. ``dockcross ninja -Cbuild``: Run ninja in the ``./build`` directory.
|
||||
4. ``dockcross bash -c '$CC test/C/hello.c -o hello'``: Build the *hello.c* file
|
||||
with the compiler identified with the ``CC`` environmental variable in the
|
||||
build environment.
|
||||
5. ``dockcross bash``: Run an interactive shell in the build environment.
|
||||
|
||||
Note that commands are executed verbatim. If any shell processing for
|
||||
environment variable expansion or redirection is required, please use
|
||||
`bash -c 'command args...'`.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
This image does not need to be run manually. Instead, there is a helper script
|
||||
to execute build commands on source code existing on the local host filesystem. This
|
||||
script is bundled with the image.
|
||||
|
||||
To install the helper script, run one of the images with no arguments, and
|
||||
redirect the output to a file::
|
||||
|
||||
docker run --rm CROSS_COMPILER_IMAGE_NAME > ./dockcross
|
||||
chmod +x ./dockcross
|
||||
mv ./dockcross ~/bin/
|
||||
|
||||
Where `CROSS_COMPILER_IMAGE_NAME` is the name of the cross-compiler toolchain
|
||||
Docker instance, e.g. `dockcross/linux-armv7`.
|
||||
|
||||
Only 64-bit x86_64 images are provided; a 64-bit x86_64 host system is required.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
For the impatient, here's how to compile a hello world for armv7::
|
||||
|
||||
cd ~/src/dockcross
|
||||
docker run --rm dockcross/linux-armv7 > ./dockcross-linux-armv7
|
||||
chmod +x ./dockcross-linux-armv7
|
||||
./dockcross-linux-armv7 bash -c '$CC test/C/hello.c -o hello_arm'
|
||||
|
||||
Note how invoking any toolchain command (make, gcc, etc.) is just a matter of prepending the **dockcross** script on the commandline::
|
||||
|
||||
./dockcross-linux-armv7 [command] [args...]
|
||||
|
||||
The dockcross script will execute the given command-line inside the container,
|
||||
along with all arguments passed after the command. Commands that evaluate
|
||||
environmental variables in the image, like `$CC` above, should be executed in
|
||||
`bash -c`. The present working directory is mounted within the image, which
|
||||
can be used to make source code available in the Docker container.
|
||||
|
||||
Cross compilers
|
||||
---------------
|
||||
|
||||
.. |base-images| image:: https://images.microbadger.com/badges/image/dockcross/base.svg
|
||||
:target: https://microbadger.com/images/dockcross/base
|
||||
|
||||
dockcross/base
|
||||
|base-images| Base image for other toolchain images. From Debian Jessie with GCC,
|
||||
make, autotools, CMake, Ninja, Git, and Python.
|
||||
|
||||
|
||||
.. |android-arm-images| image:: https://images.microbadger.com/badges/image/dockcross/android-arm.svg
|
||||
:target: https://microbadger.com/images/dockcross/android-arm
|
||||
|
||||
dockcross/android-arm
|
||||
|android-arm-images| The Android NDK standalone toolchain for the arm
|
||||
architecture.
|
||||
|
||||
|
||||
.. |android-arm64-images| image:: https://images.microbadger.com/badges/image/dockcross/android-arm64.svg
|
||||
:target: https://microbadger.com/images/dockcross/android-arm64
|
||||
|
||||
dockcross/android-arm64
|
||||
|android-arm64-images| The Android NDK standalone toolchain for the arm64
|
||||
architecture.
|
||||
|
||||
|
||||
.. |android-x86-images| image:: https://images.microbadger.com/badges/image/dockcross/android-x86.svg
|
||||
:target: https://microbadger.com/images/dockcross/android-x86
|
||||
|
||||
dockcross/android-x86
|
||||
|android-x86-images| The Android NDK standalone toolchain for the x86
|
||||
architecture.
|
||||
|
||||
|
||||
.. |android-x86_64-images| image:: https://images.microbadger.com/badges/image/dockcross/android-x86_64.svg
|
||||
:target: https://microbadger.com/images/dockcross/android-x86_64
|
||||
|
||||
dockcross/android-x86_64
|
||||
|android-x86_64-images| The Android NDK standalone toolchain for the x86_64
|
||||
architecture.
|
||||
|
||||
|
||||
.. |linux-arm64-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-arm64.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-arm64
|
||||
|
||||
dockcross/linux-arm64
|
||||
|linux-arm64-images| Cross compiler for the 64-bit ARM platform on Linux,
|
||||
also known as AArch64.
|
||||
|
||||
|
||||
.. |linux-arm64-musl-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-arm64-musl.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-arm64-musl
|
||||
|
||||
dockcross/linux-arm64-musl
|
||||
|linux-arm64-musl-images| Cross compiler for the 64-bit ARM platform on Linux (also known as AArch64), using `musl <https://www.musl-libc.org/>`_ as base "libc".
|
||||
|
||||
|
||||
.. |linux-armv5-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-armv5.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-armv5
|
||||
|
||||
dockcross/linux-armv5
|
||||
|linux-armv5-images| Linux armv5 cross compiler toolchain for legacy devices
|
||||
like the Parrot AR Drone.
|
||||
|
||||
|
||||
.. |linux-armv5-musl-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-armv5-musl.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-armv5-musl
|
||||
|
||||
dockcross/linux-armv5-musl
|
||||
|linux-armv5-musl-images| Linux armv5 cross compiler toolchain using `musl <https://www.musl-libc.org/>`_ as base "libc".
|
||||
|
||||
|
||||
.. |linux-armv6-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-armv6.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-armv6
|
||||
|
||||
dockcross/linux-armv6
|
||||
|linux-armv6-images| Linux ARMv6 cross compiler toolchain for the Raspberry
|
||||
Pi, etc.
|
||||
|
||||
|
||||
.. |linux-armv6-musl-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-armv6-musl.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-armv6-musl
|
||||
|
||||
dockcross/linux-armv6-musl
|
||||
|linux-armv6-musl-images| Linux ARMv6 cross compiler toolchain for the Raspberry Pi, etc, using `musl <https://www.musl-libc.org/>`_ as base "libc".
|
||||
|
||||
|
||||
.. |linux-armv7-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-armv7.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-armv7
|
||||
|
||||
dockcross/linux-armv7
|
||||
|linux-armv7-images| Generic Linux armv7 cross compiler toolchain.
|
||||
|
||||
|
||||
.. |linux-armv7a-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-armv7a.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-armv7a
|
||||
|
||||
dockcross/linux-armv7a
|
||||
|linux-armv7a-images| Toolchain configured for ARMv7-A used in Beaglebone Black single board PC with TI SoC AM3358 on board, Cortex-A8.
|
||||
|
||||
|
||||
.. |linux-armv7l-musl-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-armv7l-musl.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-armv7l-musl
|
||||
|
||||
dockcross/linux-armv7l-musl
|
||||
|linux-armv7l-musl-images| Toolchain configured for ARMv7-L, using `musl <https://www.musl-libc.org/>`_ as base "libc".
|
||||
|
||||
|
||||
.. |linux-mipsel-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-mipsel.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-mipsel
|
||||
|
||||
dockcross/linux-mipsel
|
||||
|linux-mipsel-images| Linux mipsel cross compiler toolchain for little endian MIPS GNU systems.
|
||||
|
||||
|
||||
.. |linux-mips-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-mips.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-mips
|
||||
|
||||
dockcross/linux-mips
|
||||
|linux-mips-images| Linux mips cross compiler toolchain for big endian 32-bit hard float MIPS GNU systems.
|
||||
|
||||
|
||||
.. |linux-s390x-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-s390x.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-s390x
|
||||
|
||||
dockcross/linux-s390x
|
||||
|linux-s390x-images| Linux s390x cross compiler toolchain for S390X GNU systems.
|
||||
|
||||
|
||||
.. |linux-ppc64le-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-ppc64le.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-ppc64le
|
||||
|
||||
dockcross/linux-ppc64le
|
||||
|linux-ppc64le-images| Linux PowerPC 64 little endian cross compiler
|
||||
toolchain for the POWER8, etc. Important: Due to Issue #430, automatic build of newer images has been disabled.
|
||||
|
||||
|
||||
.. |linux-x64-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-x64.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-x64
|
||||
|
||||
dockcross/linux-x64
|
||||
|linux-x64-images| Linux x86_64 / amd64 compiler. Since the Docker image is
|
||||
natively x86_64, this is not actually a cross compiler.
|
||||
|
||||
|
||||
.. |linux-x86-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-x86.svg
|
||||
:target: https://microbadger.com/images/dockcross/linux-x86
|
||||
|
||||
dockcross/linux-x86
|
||||
|linux-x86-images| Linux i686 cross compiler.
|
||||
|
||||
|
||||
.. |manylinux2014-x64-images| image:: https://images.microbadger.com/badges/image/dockcross/manylinux2014-x64.svg
|
||||
:target: https://microbadger.com/images/dockcross/manylinux2014-x64
|
||||
|
||||
dockcross/manylinux2014-x64
|
||||
|manylinux2014-x64-images| Docker `manylinux2014 <https://github.com/pypa/manylinux>`_ image for building Linux x86_64 / amd64 `Python wheel packages <http://pythonwheels.com/>`_. It includes Python 3.5, 3.6, 3.7, 3.8, and 3.9.
|
||||
Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build <http://scikit-build.org>`_. For CMake, it sets `MANYLINUX2014` to "TRUE" in the toolchain.
|
||||
|
||||
|
||||
.. |manylinux2014-x86-images| image:: https://images.microbadger.com/badges/image/dockcross/manylinux2014-x86.svg
|
||||
:target: https://microbadger.com/images/dockcross/manylinux2014-x86
|
||||
|
||||
dockcross/manylinux2014-x86
|
||||
|manylinux2014-x86-images| Docker `manylinux2014 <https://github.com/pypa/manylinux>`_ image for building Linux i686 `Python wheel packages <http://pythonwheels.com/>`_. It includes Python 3.5, 3.6, 3.7, 3.8, and 3.9.
|
||||
Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build <http://scikit-build.org>`_. For CMake, it sets `MANYLINUX2014` to "TRUE" in the toolchain.
|
||||
|
||||
|
||||
.. |manylinux2014-aarch64-images| image:: https://images.microbadger.com/badges/image/dockcross/manylinux2014-aarch64.svg
|
||||
:target: https://microbadger.com/images/dockcross/manylinux2014-aarch64
|
||||
|
||||
dockcross/manylinux2014-aarch64
|
||||
|manylinux2014-aarch64-images| Docker `manylinux2014 <https://github.com/pypa/manylinux>`_ image for building Linux aarch64 / arm64 `Python wheel packages <http://pythonwheels.com/>`_. It includes Python 3.5, 3.6, 3.7, 3.8, and 3.9.
|
||||
Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build <http://scikit-build.org>`_. For CMake, it sets `MANYLINUX2014` to "TRUE" in the toolchain.
|
||||
|
||||
|
||||
.. |manylinux2010-x64-images| image:: https://images.microbadger.com/badges/image/dockcross/manylinux2010-x64.svg
|
||||
:target: https://microbadger.com/images/dockcross/manylinux2010-x64
|
||||
|
||||
dockcross/manylinux2010-x64
|
||||
|manylinux2010-x64-images| Docker `manylinux2010 <https://github.com/pypa/manylinux>`_ image for building Linux x86_64 / amd64 `Python wheel packages <http://pythonwheels.com/>`_. It includes Python 2.7, 3.4, 3.5, 3.6, 3.7 and 3.8.
|
||||
Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build <http://scikit-build.org>`_. For CMake, it sets `MANYLINUX2010` to "TRUE" in the toolchain.
|
||||
|
||||
|
||||
.. |manylinux2010-x86-images| image:: https://images.microbadger.com/badges/image/dockcross/manylinux2010-x86.svg
|
||||
:target: https://microbadger.com/images/dockcross/manylinux2010-x86
|
||||
|
||||
dockcross/manylinux2010-x86
|
||||
|manylinux2010-x86-images| Docker `manylinux2010 <https://github.com/pypa/manylinux>`_ image for building Linux i686 `Python wheel packages <http://pythonwheels.com/>`_. It includes Python 2.7, 3.4, 3.5, 3.6, 3.7 and 3.8.
|
||||
Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build <http://scikit-build.org>`_. For CMake, it sets `MANYLINUX2010` to "TRUE" in the toolchain.
|
||||
|
||||
|
||||
.. |manylinux1-x64-images| image:: https://images.microbadger.com/badges/image/dockcross/manylinux1-x64.svg
|
||||
:target: https://microbadger.com/images/dockcross/manylinux1-x64
|
||||
|
||||
dockcross/manylinux1-x64
|
||||
|manylinux1-x64-images| Docker `manylinux1 <https://github.com/pypa/manylinux/tree/manylinux1>`_ image for building Linux x86_64 / amd64 `Python wheel packages <http://pythonwheels.com/>`_. It includes Python 2.7, 3.4, 3.5, 3.6, 3.7 and 3.8.
|
||||
Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build <http://scikit-build.org>`_. For CMake, it sets `MANYLINUX1` to "TRUE" in the toolchain.
|
||||
|
||||
|
||||
.. |manylinux1-x86-images| image:: https://images.microbadger.com/badges/image/dockcross/manylinux1-x86.svg
|
||||
:target: https://microbadger.com/images/dockcross/manylinux1-x86
|
||||
|
||||
dockcross/manylinux1-x86
|
||||
|manylinux1-x86-images| Docker `manylinux1 <https://github.com/pypa/manylinux/tree/manylinux1>`_ image for building Linux i686 `Python wheel packages <http://pythonwheels.com/>`_. It includes Python 2.7, 3.4, 3.5, 3.6, 3.7 and 3.8.
|
||||
Also has support for the dockcross script, and it has installations of CMake, Ninja, and `scikit-build <http://scikit-build.org>`_. For CMake, it sets `MANYLINUX1` to "TRUE" in the toolchain.
|
||||
|
||||
|
||||
.. |web-wasm-images| image:: https://images.microbadger.com/badges/image/dockcross/web-wasm.svg
|
||||
:target: https://microbadger.com/images/dockcross/web-wasm
|
||||
|
||||
dockcross/web-wasm
|
||||
|web-wasm-images| The Emscripten WebAssembly/asm.js/JavaScript cross compiler.
|
||||
|
||||
|
||||
.. |windows-static-x64-images| image:: https://images.microbadger.com/badges/image/dockcross/windows-static-x64.svg
|
||||
:target: https://microbadger.com/images/dockcross/windows-static-x64
|
||||
|
||||
dockcross/windows-static-x64
|
||||
|windows-static-x64-images| 64-bit Windows cross-compiler based on `MXE/MinGW-w64`_ with win32 threads and static linking.
|
||||
|
||||
|
||||
.. |windows-static-x64-posix-images| image:: https://images.microbadger.com/badges/image/dockcross/windows-static-x64-posix.svg
|
||||
:target: https://microbadger.com/images/dockcross/windows-static-x64-posix
|
||||
|
||||
dockcross/windows-static-x64-posix
|
||||
|windows-static-x64-posix-images| 64-bit Windows cross-compiler based on `MXE/MinGW-w64`_ with posix threads and static linking.
|
||||
|
||||
|
||||
.. |windows-static-x86-images| image:: https://images.microbadger.com/badges/image/dockcross/windows-static-x86.svg
|
||||
:target: https://microbadger.com/images/dockcross/windows-static-x86
|
||||
|
||||
dockcross/windows-static-x86
|
||||
|windows-static-x86-images| 32-bit Windows cross-compiler based on `MXE/MinGW-w64`_ with win32 threads and static linking.
|
||||
|
||||
.. |windows-shared-x64-images| image:: https://images.microbadger.com/badges/image/dockcross/windows-shared-x64.svg
|
||||
:target: https://microbadger.com/images/dockcross/windows-shared-x64
|
||||
|
||||
dockcross/windows-shared-x64
|
||||
|windows-shared-x64-images| 64-bit Windows cross-compiler based on `MXE/MinGW-w64`_ with win32 threads and dynamic linking.
|
||||
|
||||
|
||||
.. |windows-shared-x64-posix-images| image:: https://images.microbadger.com/badges/image/dockcross/windows-shared-x64-posix.svg
|
||||
:target: https://microbadger.com/images/dockcross/windows-shared-x64-posix
|
||||
|
||||
dockcross/windows-shared-x64-posix
|
||||
|windows-shared-x64-posix-images| 64-bit Windows cross-compiler based on `MXE/MinGW-w64`_ with posix threads and dynamic linking.
|
||||
|
||||
|
||||
.. |windows-shared-x86-images| image:: https://images.microbadger.com/badges/image/dockcross/windows-shared-x86.svg
|
||||
:target: https://microbadger.com/images/dockcross/windows-shared-x86
|
||||
|
||||
dockcross/windows-shared-x86
|
||||
|windows-shared-x86-images| 32-bit Windows cross-compiler based on `MXE/MinGW-w64`_ with win32 threads and dynamic linking.
|
||||
|
||||
|
||||
Articles
|
||||
--------
|
||||
|
||||
- `dockcross: C++ Write Once, Run Anywhere
|
||||
<https://nbviewer.jupyter.org/format/slides/github/dockcross/cxx-write-once-run-anywhere/blob/master/dockcross_CXX_Write_Once_Run_Anywhere.ipynb#/>`_
|
||||
- `Cross-compiling binaries for multiple architectures with Docker
|
||||
<https://web.archive.org/web/20170912153531/http://blogs.nopcode.org/brainstorm/2016/07/26/cross-compiling-with-docker>`_
|
||||
|
||||
|
||||
Built-in update commands
|
||||
------------------------
|
||||
|
||||
A special update command can be executed that will update the
|
||||
source cross-compiler Docker image or the dockcross script itself.
|
||||
|
||||
- ``dockcross [--] command [args...]``: Forces a command to run inside the container (in case of a name clash with a built-in command), use ``--`` before the command.
|
||||
- ``dockcross update-image``: Fetch the latest version of the docker image.
|
||||
- ``dockcross update-script``: Update the installed dockcross script with the one bundled in the image.
|
||||
- ``dockcross update``: Update both the docker image, and the dockcross script.
|
||||
|
||||
|
||||
Download all images
|
||||
-------------------
|
||||
|
||||
To easily download all images, the convenience target ``display_images`` could be used::
|
||||
|
||||
curl https://raw.githubusercontent.com/dockcross/dockcross/master/Makefile -o dockcross-Makefile
|
||||
for image in $(make -f dockcross-Makefile display_images); do
|
||||
echo "Pulling dockcross/$image"
|
||||
docker pull dockcross/$image
|
||||
done
|
||||
|
||||
Install all dockcross scripts
|
||||
-----------------------------
|
||||
|
||||
To automatically install in ``~/bin`` the dockcross scripts for each images already downloaded, the
|
||||
convenience target ``display_images`` could be used::
|
||||
|
||||
curl https://raw.githubusercontent.com/dockcross/dockcross/master/Makefile -o dockcross-Makefile
|
||||
for image in $(make -f dockcross-Makefile display_images); do
|
||||
if [[ $(docker images -q dockcross/$image) == "" ]]; then
|
||||
echo "~/bin/dockcross-$image skipping: image not found locally"
|
||||
continue
|
||||
fi
|
||||
echo "~/bin/dockcross-$image ok"
|
||||
docker run dockcross/$image > ~/bin/dockcross-$image && \
|
||||
chmod u+x ~/bin/dockcross-$image
|
||||
done
|
||||
|
||||
|
||||
Dockcross configuration
|
||||
-----------------------
|
||||
|
||||
The following environmental variables and command-line options are used. In
|
||||
all cases, the command-line option overrides the environment variable.
|
||||
|
||||
DOCKCROSS_CONFIG / --config|-c <path-to-config-file>
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This file is sourced, if it exists, before executing the rest of the dockcross
|
||||
script.
|
||||
|
||||
Default: ``~/.dockcross``
|
||||
|
||||
DOCKCROSS_IMAGE / --image|-i <docker-image-name>
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The Docker cross-compiler image to run.
|
||||
|
||||
Default: Image with which the script was created.
|
||||
|
||||
DOCKCROSS_ARGS / --args|-a <docker-run-args>
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Extra arguments to pass to the ``docker run`` command. Quote the entire set of
|
||||
args if they contain spaces.
|
||||
|
||||
|
||||
Per-project dockcross configuration
|
||||
-----------------------------------
|
||||
|
||||
If a shell script named ``.dockcross`` is found in the current directory where
|
||||
the dockcross script is started, it is executed before the dockcross script
|
||||
``command`` argument. The shell script is expected to have a shebang like
|
||||
``#!/usr/bin/env bash``.
|
||||
|
||||
For example, commands like ``git config --global advice.detachedHead false`` can
|
||||
be added to this script.
|
||||
|
||||
|
||||
How to extend Dockcross images
|
||||
------------------------------
|
||||
In order to extend Dockcross images with your own commands, one must:
|
||||
|
||||
1. Use ``FROM dockcross/<name_of_image>``.
|
||||
2. Set ``DEFAULT_DOCKCROSS_IMAGE`` to a name of the tag you're planning to use for the image. This tag must then be used during the build phase, unless you mean to pass the resulting helper script the ``DOCKCROSS_IMAGE`` argument.
|
||||
|
||||
An example Dockerfile would be::
|
||||
|
||||
FROM dockcross/linux-armv7
|
||||
|
||||
ENV DEFAULT_DOCKCROSS_IMAGE my_cool_image
|
||||
RUN apt-get install nano
|
||||
|
||||
And then in the shell::
|
||||
|
||||
docker build -t my_cool_image . # Builds the dockcross image.
|
||||
docker run my_cool_image > linux-armv7 # Creates a helper script named linux-armv7.
|
||||
chmod +x linux-armv7 # Gives the script execution permission.
|
||||
./linux-armv7 bash # Runs the helper script with the argument "bash", which starts an interactive container using your extended image.
|
||||
|
||||
|
||||
What is the difference between `dockcross` and `dockbuild` ?
|
||||
------------------------------------------------------------
|
||||
|
||||
The key difference is that `dockbuild
|
||||
<https://github.com/dockbuild/dockbuild#readme>`_ images do **NOT** provide
|
||||
a `toolchain file
|
||||
<https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html>`_
|
||||
but they use the same method
|
||||
to conveniently isolate the build environment as `dockcross
|
||||
<https://github.com/dockcross/dockcross#readme>`_.
|
||||
|
||||
`dockbuild` is used to build binaries for Linux x86_64 / amd64 that will work
|
||||
across most Linux distributions. `dockbuild` performs a native Linux build
|
||||
where the host build system is a Linux x86_64 / amd64 Docker image (so that it
|
||||
can be used for building binaries on any system which can run Docker images)
|
||||
and the target runtime system is Linux x86_x64 / amd64.
|
||||
|
||||
`dockcross` is used to build binaries for many different platforms.
|
||||
`dockcross` performs a cross compilation where the host build system is a
|
||||
Linux x86_64 / amd64 Docker image (so that it can be used for building
|
||||
binaries on any system which can run Docker images) and the target runtime
|
||||
system varies.
|
||||
|
||||
|
||||
---
|
||||
|
||||
Credits go to `sdt/docker-raspberry-pi-cross-compiler <https://github.com/sdt/docker-raspberry-pi-cross-compiler>`_, who invented the base of the **dockcross** script.
|
||||
|
||||
.. _MXE/MinGW-w64: https://mxe.cc/
|
@ -47,7 +47,8 @@ ENV XCC_PREFIX=/usr/xcc
|
||||
# for users.
|
||||
COPY \
|
||||
imagefiles/install-crosstool-ng-toolchain.sh \
|
||||
imagefiles/crosstool-ng-expat.patch \
|
||||
imagefiles/patch/crosstool-ng/crosstool-ng-expat.patch \
|
||||
imagefiles/patch/crosstool-ng/Fix-error-with-bash-5-and-up.patch \
|
||||
manylinux2014-aarch64/crosstool-ng.config \
|
||||
/dockcross/
|
||||
|
@ -16,12 +16,18 @@
|
||||
|
||||
# Install Debian packages required for `ct-ng`.
|
||||
RUN apt-get update --yes && apt-get install --no-install-recommends --yes \
|
||||
gawk \
|
||||
gperf \
|
||||
help2man \
|
||||
python-dev \
|
||||
texinfo \
|
||||
&& apt-get clean --yes
|
||||
gawk \
|
||||
gperf \
|
||||
help2man \
|
||||
python3-dev \
|
||||
texinfo \
|
||||
# Packages needed for crosstool-ng 1.24 or higher
|
||||
unzip \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
&& apt-get clean autoclean --yes \
|
||||
&& apt-get autoremove --yes \
|
||||
&& rm -rf /var/lib/{apt,dpkg,cache,log}/
|
||||
|
||||
ENV XCC_PREFIX=/usr/xcc
|
||||
|
||||
@ -32,7 +38,8 @@ ENV XCC_PREFIX=/usr/xcc
|
||||
# for users.
|
||||
COPY \
|
||||
imagefiles/install-crosstool-ng-toolchain.sh \
|
||||
imagefiles/crosstool-ng-expat.patch \
|
||||
imagefiles/patch/crosstool-ng/crosstool-ng-expat.patch \
|
||||
imagefiles/patch/crosstool-ng/Fix-error-with-bash-5-and-up.patch \
|
||||
crosstool-ng.config \
|
||||
/dockcross/
|
||||
|
||||
@ -42,6 +49,7 @@ RUN mkdir /dockcross/crosstool \
|
||||
&& /dockcross/install-crosstool-ng-toolchain.sh \
|
||||
-p "${XCC_PREFIX}" \
|
||||
-c /dockcross/crosstool-ng.config \
|
||||
-v "${CT_VERSION}" \
|
||||
&& rm -rf /dockcross/crosstool /dockcross/install-crosstool-ng-toolchain.sh
|
||||
|
||||
# Restore our default workdir (from "dockcross/base").
|
@ -1,11 +1,6 @@
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ARG REPO=http://cdn-fastly.deb.debian.org
|
||||
|
||||
RUN \
|
||||
bash -c "echo \"deb $REPO/debian stretch main contrib non-free\" > /etc/apt/sources.list" && \
|
||||
bash -c "echo \"deb $REPO/debian stretch-updates main contrib non-free\" >> /etc/apt/sources.list" && \
|
||||
bash -c "echo \"deb $REPO/debian-security stretch/updates main\" >> /etc/apt/sources.list" && \
|
||||
bash -c "echo \"deb http://ftp.debian.org/debian stretch-backports main\" >> /etc/apt/sources.list" && \
|
||||
apt-get update --yes && \
|
||||
apt-get install --no-install-recommends --yes \
|
||||
autogen \
|
||||
@ -30,8 +25,8 @@ RUN \
|
||||
ncurses-dev \
|
||||
pkg-config \
|
||||
pax \
|
||||
python \
|
||||
python-pip \
|
||||
python3 \
|
||||
python3-pip \
|
||||
rsync \
|
||||
sed \
|
||||
ssh \
|
||||
@ -41,5 +36,7 @@ RUN \
|
||||
xz-utils \
|
||||
zip \
|
||||
zlib1g-dev \
|
||||
&& \
|
||||
apt-get clean --yes
|
||||
python-is-python3 \
|
||||
&& apt-get clean autoclean --yes \
|
||||
&& apt-get autoremove --yes \
|
||||
&& rm -rf /var/lib/{apt,dpkg,cache,log}/
|
@ -1,7 +1,7 @@
|
||||
WORKDIR /usr/src
|
||||
|
||||
ARG GIT_VERSION=2.31.1
|
||||
ARG CMAKE_VERSION=3.17.1
|
||||
ARG GIT_VERSION=2.32.0
|
||||
ARG CMAKE_VERSION=3.20.5
|
||||
|
||||
# Image build scripts
|
||||
COPY \
|
||||
@ -23,9 +23,9 @@ RUN \
|
||||
/buildscripts/build-and-install-openssh.sh && \
|
||||
/buildscripts/build-and-install-curl.sh && \
|
||||
/buildscripts/build-and-install-git.sh && \
|
||||
/buildscripts/install-cmake-binary.sh $X86_FLAG && \
|
||||
if [ "$CMAKE_BIN" = "true" ]; then CMAKE_VERSION=3.17.1 && /buildscripts/install-cmake-binary.sh $X86_FLAG;else /buildscripts/build-and-install-cmake.sh $X86_FLAG;fi && \
|
||||
/buildscripts/install-liquidprompt-binary.sh && \
|
||||
PYTHON=$([ -e /opt/python/cp38-cp38/bin/python ] && echo "/opt/python/cp38-cp38/bin/python" || echo "python") && \
|
||||
PYTHON=$([ -e /opt/python/cp38-cp38/bin/python ] && echo "/opt/python/cp38-cp38/bin/python" || echo "python3") && \
|
||||
/buildscripts/install-python-packages.sh -python ${PYTHON} && \
|
||||
/buildscripts/build-and-install-ninja.sh -python ${PYTHON} && \
|
||||
rm -rf /buildscripts
|
@ -8,6 +8,7 @@ RUN \
|
||||
yum -y install \
|
||||
$([ "$DEFAULT_DOCKCROSS_IMAGE" = "dockcross/manylinux2014-x86" ] && echo "" || echo "epel-release") \
|
||||
gpg \
|
||||
python3-devel \
|
||||
zlib-devel \
|
||||
gettext \
|
||||
openssh-clients \
|
@ -35,8 +35,10 @@ mkdir /usr/src/CMake-build
|
||||
cd /usr/src/CMake-build
|
||||
|
||||
${WRAPPER} /usr/src/CMake/bootstrap \
|
||||
--parallel=$(grep -c processor /proc/cpuinfo)
|
||||
${WRAPPER} make -j$(grep -c processor /proc/cpuinfo)
|
||||
--parallel=$(nproc) \
|
||||
-- -DCMAKE_USE_OPENSSL=OFF
|
||||
${WRAPPER} make -j$(nproc)
|
||||
|
||||
|
||||
mkdir /usr/src/CMake-ssl-build
|
||||
cd /usr/src/CMake-ssl-build
|
||||
@ -48,7 +50,7 @@ ${WRAPPER} /usr/src/CMake-build/bin/cmake \
|
||||
-DCMAKE_USE_OPENSSL:BOOL=ON \
|
||||
-DOPENSSL_ROOT_DIR:PATH=/usr/local/ssl \
|
||||
../CMake
|
||||
${WRAPPER} make -j$(grep -c processor /proc/cpuinfo) install
|
||||
${WRAPPER} make -j$(nproc) install
|
||||
|
||||
# Cleanup install tree
|
||||
cd /usr/src/cmake-$CMAKE_VERSION
|
||||
|
@ -18,7 +18,7 @@ function do_curl_build {
|
||||
# We do this shared to avoid obnoxious linker issues where git couldn't
|
||||
# link properly. If anyone wants to make this build statically go for it.
|
||||
LIBS=-ldl CFLAGS=-Wl,--exclude-libs,ALL ./configure --with-ssl --disable-static > /dev/null
|
||||
make > /dev/null
|
||||
make -j$(nproc) > /dev/null
|
||||
make install > /dev/null
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ rm -f git-${GIT_VERSION}.tar.gz
|
||||
|
||||
pushd git-${GIT_VERSION}
|
||||
./configure --prefix=/usr/local --with-curl
|
||||
make
|
||||
make -j$(nproc)
|
||||
make install
|
||||
popd
|
||||
|
||||
|
@ -59,7 +59,7 @@ PERL_DOWNLOAD_URL=https://www.cpan.org/src/5.0
|
||||
|
||||
function do_perl_build {
|
||||
${WRAPPER} sh Configure -des -Dprefix=/opt/perl > /dev/null
|
||||
${WRAPPER} make > /dev/null
|
||||
${WRAPPER} make -j$(nproc) > /dev/null
|
||||
${WRAPPER} make install > /dev/null
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ function build_perl {
|
||||
|
||||
function do_openssl_build {
|
||||
${WRAPPER} ./config no-shared -fPIC $CONFIG_FLAG --prefix=/usr/local/ssl --openssldir=/usr/local/ssl > /dev/null
|
||||
${WRAPPER} make > /dev/null
|
||||
${WRAPPER} make -j$(nproc) > /dev/null
|
||||
${WRAPPER} make install_sw > /dev/null
|
||||
}
|
||||
|
||||
|
42
imagefiles/build-and-install-python.sh
Executable file
42
imagefiles/build-and-install-python.sh
Executable file
@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# Configure, build and install python
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# build-and-install-python.sh [-version 3.9.5]
|
||||
# needed packages : libncurses5-dev libgdbm-dev libnss3-dev
|
||||
# libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev
|
||||
|
||||
PYTHON_VERSION=3.9.5
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-version|-v)
|
||||
PYTHON_VERSION=$2
|
||||
shift
|
||||
;;&
|
||||
*)
|
||||
echo "Usage: Usage: ${0##*/} [-version 3.9.5]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Download
|
||||
wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz
|
||||
tar xvf Python-${PYTHON_VERSION}.tgz
|
||||
# Configure, build and install
|
||||
cd Python-${PYTHON_VERSION}
|
||||
# Disable --enable-shared --enable-optimizations --prefix=/usr/local/python-${PYTHON_VERSION}
|
||||
./configure --with-ensurepip=install
|
||||
make -j$(nproc)
|
||||
make install #altinstall
|
||||
|
||||
ln -s /usr/local/bin/python3 /usr/local/bin/python
|
||||
ln -s /usr/local/bin/pip3 /usr/local/bin/pip
|
||||
|
||||
# Clean
|
||||
cd ..
|
||||
rm -rf Python-${PYTHON_VERSION}
|
@ -16,7 +16,7 @@ set -o pipefail
|
||||
# be generated underneath of here.
|
||||
ROOT=${PWD}
|
||||
|
||||
usage() { echo "Usage: $0 -p <prefix> -c <config-path>" 1>&2; exit 1; }
|
||||
usage() { echo "Usage: $0 -p <prefix> -c <config-path> -v <version>" 1>&2; exit 1; }
|
||||
|
||||
# Resolve our input parameters.
|
||||
#
|
||||
@ -24,7 +24,8 @@ usage() { echo "Usage: $0 -p <prefix> -c <config-path>" 1>&2; exit 1; }
|
||||
# change directories during installation.
|
||||
CT_PREFIX=
|
||||
CONFIG_PATH=
|
||||
while getopts "p:c:" o; do
|
||||
REV=
|
||||
while getopts "p:c:v:" o; do
|
||||
case "${o}" in
|
||||
p)
|
||||
CT_PREFIX=$(readlink -f ${OPTARG})
|
||||
@ -32,6 +33,9 @@ while getopts "p:c:" o; do
|
||||
c)
|
||||
CONFIG_PATH=$(readlink -f ${OPTARG})
|
||||
;;
|
||||
v)
|
||||
REV=${OPTARG}
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
@ -48,6 +52,12 @@ if [ -z ${CONFIG_PATH} ] || [ ! -f ${CONFIG_PATH} ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
if [ -z ${REV} ]; then
|
||||
echo "WARNING: No version selected, use default version: crosstool-ng-1.23.0 (-v)."
|
||||
REV=crosstool-ng-1.23.0
|
||||
fi
|
||||
|
||||
|
||||
##
|
||||
# Build "crosstool-ng".
|
||||
##
|
||||
@ -57,12 +67,19 @@ mkdir -p "${CTNG}"
|
||||
cd "${CTNG}"
|
||||
|
||||
# Download and install the "crosstool-ng" source.
|
||||
REV=1.23.0
|
||||
curl -# -LO \
|
||||
"https://github.com/crosstool-ng/crosstool-ng/archive/crosstool-ng-${REV}.tar.gz"
|
||||
tar -xf "crosstool-ng-${REV}.tar.gz"
|
||||
patch crosstool-ng-crosstool-ng-1.23.0/scripts/build/companion_libs/210-expat.sh -i /dockcross/crosstool-ng-expat.patch
|
||||
cd "crosstool-ng-crosstool-ng-${REV}"
|
||||
|
||||
git clone https://github.com/crosstool-ng/crosstool-ng.git
|
||||
cd crosstool-ng
|
||||
git fetch --tags
|
||||
|
||||
# checkout
|
||||
git checkout ${REV}
|
||||
|
||||
if [ ${REV} = "crosstool-ng-1.23.0" ]; then
|
||||
patch scripts/build/companion_libs/210-expat.sh -i /dockcross/crosstool-ng-expat.patch
|
||||
# Patch to fix error with bash 5 and up: https://github.com/pfalcon/esp-open-sdk/issues/365
|
||||
patch configure.ac -i /dockcross/Fix-error-with-bash-5-and-up.patch
|
||||
fi
|
||||
|
||||
# Bootstrap and install the tool.
|
||||
BOOTSTRAP_PREFIX="${CTNG}/prefix"
|
||||
@ -94,7 +111,11 @@ cp "${CONFIG_PATH}" "${BUILD}/.config"
|
||||
|
||||
# As mentioned in ct-ng config, need to unset LD_LIBRARY_PATH.
|
||||
unset LD_LIBRARY_PATH
|
||||
# Fix build error on manylinux2014-aarch64
|
||||
unset CC
|
||||
unset CXX
|
||||
|
||||
# Build and install the toolchain!
|
||||
"${BOOTSTRAP_PREFIX}/bin/ct-ng" build
|
||||
# Print last 250 lines if build fail
|
||||
"${BOOTSTRAP_PREFIX}/bin/ct-ng" build || (tail -250 build.log && exit 1)
|
||||
|
||||
|
@ -22,8 +22,8 @@ cd /tmp
|
||||
|
||||
# Todo: Need to update base image from Debian Stretch for the required Python
|
||||
# 3.6 or later
|
||||
# curl -# -LO https://bootstrap.pypa.io/pip/get-pip.py
|
||||
curl -# -LO https://bootstrap.pypa.io/pip/2.7/get-pip.py
|
||||
curl -# -LO https://bootstrap.pypa.io/pip/get-pip.py
|
||||
#curl -# -LO https://bootstrap.pypa.io/pip/2.7/get-pip.py
|
||||
${PYTHON} get-pip.py --ignore-installed
|
||||
rm get-pip.py
|
||||
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 67368ebe9d9259e9f34a4f9166a33357858813f1 Mon Sep 17 00:00:00 2001
|
||||
From: Bensuperpc <bensuperpc@gmail.com>
|
||||
Date: Thu, 24 Jun 2021 11:55:48 +0200
|
||||
Subject: [PATCH 1/1] Fix error with bash 5 and up
|
||||
|
||||
Fix error with bash 5 and up
|
||||
|
||||
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index d10bf71d..e2302b4c 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -274,7 +274,7 @@ ACX_PROG_VERSION_REQ_STRICT([BASH_SHELL],
|
||||
[GNU bash >= 3.1],
|
||||
[bash],
|
||||
[bash],
|
||||
- ['^GNU bash, version (3\.[1-9]|4)'])
|
||||
+ ['^GNU bash, version (3\.[1-9]|4|5)'])
|
||||
|
||||
# We need a awk that *is* GNU awk
|
||||
ACX_PROG_VERSION_REQ_STRICT([AWK],
|
||||
--
|
||||
2.32.0
|
||||
|
@ -2,6 +2,10 @@ FROM dockcross/base:latest
|
||||
|
||||
# This is for 64-bit ARM Linux machine
|
||||
|
||||
# Crosstool-ng version
|
||||
# We use a git commit while waiting for 1.25 to release (1.24 is several years old)
|
||||
ENV CT_VERSION 9e10cb6fbaab6d83e1305b2d53ab585d14989667
|
||||
|
||||
#include "common.crosstool"
|
||||
|
||||
# The cross-compiling emulator
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -5,6 +5,9 @@ MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
# VFP instructions (armhf).
|
||||
# musleabi as default glibc
|
||||
|
||||
# We use a git commit while waiting for 1.25 to release (1.24 is several years old)
|
||||
ENV CT_VERSION 9e10cb6fbaab6d83e1305b2d53ab585d14989667
|
||||
|
||||
#include "common.crosstool"
|
||||
|
||||
# The cross-compiling emulator
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,10 @@ MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
# This is for ARMv5 "legacy" (armel) devices which do NOT support hard float
|
||||
# VFP instructions (armhf).
|
||||
|
||||
# Crosstool-ng version
|
||||
# We use a git commit while waiting for 1.25 to release (1.24 is several years old)
|
||||
ENV CT_VERSION 9e10cb6fbaab6d83e1305b2d53ab585d14989667
|
||||
|
||||
#include "common.crosstool"
|
||||
|
||||
# The cross-compiling emulator
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,10 @@
|
||||
FROM dockcross/base:latest
|
||||
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
|
||||
# Crosstool-ng version
|
||||
# We use a git commit while waiting for 1.25 to release (1.24 is several years old)
|
||||
ENV CT_VERSION 9e10cb6fbaab6d83e1305b2d53ab585d14989667
|
||||
|
||||
# This is for 32-bit ARMv7 Linux
|
||||
#include "common.crosstool"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,6 +2,10 @@ FROM dockcross/base:latest
|
||||
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
|
||||
# This is for 32-bit ARMv7 Linux
|
||||
|
||||
# We use a git commit while waiting for 1.25 to release (1.24 is several years old)
|
||||
ENV CT_VERSION 9e10cb6fbaab6d83e1305b2d53ab585d14989667
|
||||
|
||||
#include "common.crosstool"
|
||||
|
||||
# The cross-compiling emulator
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,6 +2,10 @@ FROM dockcross/base:latest
|
||||
|
||||
# This is for 32-bit Big-Endian MIPS devices with hard floating point enabled
|
||||
|
||||
# Crosstool-ng version
|
||||
# We use a git commit while waiting for 1.25 to release (1.24 is several years old)
|
||||
ENV CT_VERSION 9e10cb6fbaab6d83e1305b2d53ab585d14989667
|
||||
|
||||
#include "common.crosstool"
|
||||
|
||||
# The cross-compiling emulator
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,40 +0,0 @@
|
||||
FROM dockcross/base:latest
|
||||
MAINTAINER Sergi Alvarez "pancake@nopcode.org"
|
||||
|
||||
# This is for ARMv5 "legacy" (mipsel) devices which do NOT support hard float
|
||||
# VFP instructions (mipshf).
|
||||
|
||||
# From https://wiki.debian.org/CrossToolchains, installing for jessie
|
||||
RUN echo "deb http://emdebian.org/tools/debian/ jessie main" > /etc/apt/sources.list.d/emdebian.list \
|
||||
&& curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add - \
|
||||
&& sed -i 's/httpredir.debian.org/http.debian.net/' /etc/apt/sources.list \
|
||||
&& dpkg --add-architecture mipsel \
|
||||
&& apt-get update && apt-get install -y crossbuild-essential-mipsel
|
||||
|
||||
# The cross-compiling emulator
|
||||
RUN apt-get update && apt-get install -y \
|
||||
qemu-user \
|
||||
qemu-user-static
|
||||
|
||||
ENV CROSS_TRIPLE mipsel-linux-gnu
|
||||
ENV CROSS_ROOT /usr/bin
|
||||
ENV AS=${CROSS_ROOT}/${CROSS_TRIPLE}-as \
|
||||
AR=${CROSS_ROOT}/${CROSS_TRIPLE}-ar \
|
||||
CC=${CROSS_ROOT}/${CROSS_TRIPLE}-gcc \
|
||||
CPP=${CROSS_ROOT}/${CROSS_TRIPLE}-cpp-4.9 \
|
||||
CXX=${CROSS_ROOT}/${CROSS_TRIPLE}-g++ \
|
||||
LD=${CROSS_ROOT}/${CROSS_TRIPLE}-ld \
|
||||
FC=${CROSS_ROOT}/${CROSS_TRIPLE}-gfortran
|
||||
|
||||
ENV QEMU_LD_PREFIX ${CROSS_ROOT}/libc
|
||||
ENV QEMU_SET_ENV "LD_LIBRARY_PATH=${CROSS_ROOT}/lib:${CROSS_ROOT}/libc/lib/${CROSS_TRIPLE}/"
|
||||
|
||||
COPY Toolchain.cmake ${CROSS_ROOT}/
|
||||
ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/Toolchain.cmake
|
||||
|
||||
# Linux kernel cross compilation variables
|
||||
ENV PATH ${PATH}:${CROSS_ROOT}/bin
|
||||
ENV CROSS_COMPILE ${CROSS_TRIPLE}-
|
||||
ENV ARCH mips
|
||||
|
||||
#include "common.label-and-env"
|
@ -1,16 +0,0 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR mipsel)
|
||||
|
||||
set(cross_triple "mipsel-linux-gnu")
|
||||
|
||||
set(CMAKE_C_COMPILER $ENV{CC})
|
||||
set(CMAKE_CXX_COMPILER $ENV{CXX})
|
||||
set(CMAKE_Fortran_COMPILER $ENV{FC})
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH $ENV{CROSS_ROOT} $ENV{CROSS_ROOT}/libc/usr)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-mipsel)
|
@ -1,31 +1,25 @@
|
||||
FROM dockcross/base:latest
|
||||
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
|
||||
COPY sources.list /etc/apt/sources.list
|
||||
RUN dpkg --add-architecture ppc64el ; apt-get update ; apt-get -y upgrade ; apt-get update ;
|
||||
# Crosstool-ng version
|
||||
# We use a git commit while waiting for 1.25 to release (1.24 is several years old)
|
||||
ENV CT_VERSION 9e10cb6fbaab6d83e1305b2d53ab585d14989667
|
||||
|
||||
ENV CROSS_TRIPLE powerpc64le-linux-gnu
|
||||
|
||||
RUN apt-get install -y \
|
||||
libbz2-dev:ppc64el \
|
||||
libexpat1-dev:ppc64el \
|
||||
ncurses-dev:ppc64el \
|
||||
libssl-dev:ppc64el \
|
||||
python-dev
|
||||
ENV QEMU_VERSION 6.0.0
|
||||
|
||||
#include "common.crosstool"
|
||||
|
||||
# ENV CROSS_TRIPLE powerpc64le-unknown-linux-gnu
|
||||
ENV CROSS_TRIPLE powerpc64le-unknown-linux-gnu
|
||||
|
||||
WORKDIR /usr/src
|
||||
|
||||
RUN apt-get install -y libglib2.0-dev zlib1g-dev libpixman-1-dev && \
|
||||
curl -L http://wiki.qemu-project.org/download/qemu-2.6.0.tar.bz2 | tar xj && \
|
||||
cd qemu-2.6.0 && \
|
||||
curl -L http://wiki.qemu-project.org/download/qemu-${QEMU_VERSION}.tar.bz2 | tar xj && \
|
||||
cd qemu-${QEMU_VERSION} && \
|
||||
./configure --target-list=ppc64le-linux-user --prefix=/usr && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
cd .. && rm -rf qemu-2.6.0
|
||||
cd .. && rm -rf qemu-${QEMU_VERSION}
|
||||
|
||||
ENV CROSS_ROOT ${XCC_PREFIX}/${CROSS_TRIPLE}
|
||||
ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \
|
||||
@ -44,7 +38,7 @@ WORKDIR /work
|
||||
COPY Toolchain.cmake /usr/lib/${CROSS_TRIPLE}/
|
||||
ENV CMAKE_TOOLCHAIN_FILE /usr/lib/${CROSS_TRIPLE}/Toolchain.cmake
|
||||
|
||||
ENV PKG_CONFIG_PATH /usr/lib/powerpc64le-linux-gnu/pkgconfig
|
||||
ENV PKG_CONFIG_PATH /usr/lib/powerpc64le-unknown-linux-gnu/pkgconfig
|
||||
|
||||
# Linux kernel cross compilation variables
|
||||
ENV PATH ${PATH}:${CROSS_ROOT}/bin
|
||||
@ -52,4 +46,3 @@ ENV CROSS_COMPILE ${CROSS_TRIPLE}-
|
||||
ENV ARCH powerpc
|
||||
|
||||
#include "common.label-and-env"
|
||||
|
||||
|
@ -2,7 +2,7 @@ set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ppc64le)
|
||||
|
||||
set(cross_triple "powerpc64le-linux-gnu")
|
||||
set(cross_triple "powerpc64le-unknown-linux-gnu")
|
||||
set(cross_root /usr/xcc/${cross_triple})
|
||||
|
||||
set(CMAKE_C_COMPILER $ENV{CC})
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,10 +0,0 @@
|
||||
#------------------------------------------------------------------------------#
|
||||
# OFFICIAL DEBIAN REPOS
|
||||
#------------------------------------------------------------------------------#
|
||||
|
||||
###### Debian Main Repos
|
||||
deb http://deb.debian.org/debian/ oldstable main contrib non-free
|
||||
|
||||
deb http://deb.debian.org/debian/ oldstable-updates main contrib non-free
|
||||
|
||||
deb http://deb.debian.org/debian-security oldstable/updates main
|
@ -2,6 +2,9 @@ FROM dockcross/base:latest
|
||||
|
||||
# This is for 64-bit S390X Linux machine
|
||||
|
||||
# Crosstool-ng version
|
||||
ENV CT_VERSION crosstool-ng-1.23.0
|
||||
|
||||
#include "common.crosstool"
|
||||
|
||||
# The cross-compiling emulator
|
||||
|
@ -343,7 +343,7 @@ CT_CC_CORE_PASSES_NEEDED=y
|
||||
CT_CC_CORE_PASS_1_NEEDED=y
|
||||
CT_CC_CORE_PASS_2_NEEDED=y
|
||||
CT_CC_gcc=y
|
||||
CT_CC_GCC_VERSION="6.3.0"
|
||||
CT_CC_GCC_VERSION="7.3.0"
|
||||
# CT_CC_GCC_SHOW_LINARO is not set
|
||||
CT_CC_GCC_V_6_3_0=y
|
||||
# CT_CC_GCC_V_5_4_0 is not set
|
||||
@ -443,7 +443,7 @@ CT_GDB_7_12_or_later=y
|
||||
CT_GDB_7_2_or_later=y
|
||||
CT_GDB_7_0_or_later=y
|
||||
CT_GDB_HAS_PKGVERSION_BUGURL=y
|
||||
CT_GDB_HAS_PYTHON=y
|
||||
CT_GDB_HAS_PYTHON=n
|
||||
CT_GDB_INSTALL_GDBINIT=y
|
||||
# CT_DEBUG_ltrace is not set
|
||||
# CT_DEBUG_strace is not set
|
||||
|
35
linux-x64-clang/Dockerfile.in
Normal file
35
linux-x64-clang/Dockerfile.in
Normal file
@ -0,0 +1,35 @@
|
||||
FROM dockcross/base:latest
|
||||
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
# flang
|
||||
RUN echo "deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye main" >> /etc/apt/sources.list \
|
||||
&& echo "deb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye main" >> /etc/apt/sources.list \
|
||||
&& wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
|
||||
&& apt-get update \
|
||||
&& apt-get purge --autoremove -y gcc g++ software-properties-common \
|
||||
&& apt-get -y install clang libc++-dev libc++abi-dev clang-format clang-tidy lldb \
|
||||
&& apt-get clean --yes \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& update-alternatives --install /usr/bin/cc cc /usr/bin/clang 90 \
|
||||
&& update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 90 \
|
||||
&& update-alternatives --install /usr/bin/cpp cpp /usr/bin/clang++ 90 \
|
||||
&& cc --version \
|
||||
&& c++ --version \
|
||||
&& cpp --version
|
||||
|
||||
ENV CROSS_TRIPLE x86_64-linux-gnu
|
||||
ENV CROSS_ROOT /usr/bin
|
||||
ENV CC=/usr/bin/clang \
|
||||
CPP=/usr/bin/cpp \
|
||||
CXX=/usr/bin/clang++ \
|
||||
LD=/usr/bin/lld \
|
||||
FC=/usr/bin/flang
|
||||
|
||||
# AS=/usr/bin/${CROSS_TRIPLE}-as
|
||||
# AR=/usr/bin/${CROSS_TRIPLE}-ar
|
||||
|
||||
COPY ${CROSS_TRIPLE}-noop.sh /usr/bin/${CROSS_TRIPLE}-noop
|
||||
|
||||
COPY Toolchain.cmake /usr/lib/${CROSS_TRIPLE}/
|
||||
ENV CMAKE_TOOLCHAIN_FILE /usr/lib/${CROSS_TRIPLE}/Toolchain.cmake
|
||||
|
||||
#include "common.label-and-env"
|
12
linux-x64-clang/Toolchain.cmake
Normal file
12
linux-x64-clang/Toolchain.cmake
Normal file
@ -0,0 +1,12 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
|
||||
set(cross_triple "x86_64-linux-gnu")
|
||||
|
||||
set(CMAKE_C_COMPILER $ENV{CC})
|
||||
set(CMAKE_CXX_COMPILER $ENV{CXX})
|
||||
set(CMAKE_Fortran_COMPILER $ENV{FC})
|
||||
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
|
||||
|
||||
set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/${cross_triple}-noop)
|
2
linux-x64-clang/x86_64-linux-gnu-noop.sh
Executable file
2
linux-x64-clang/x86_64-linux-gnu-noop.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
exec "$@"
|
@ -2,6 +2,7 @@ FROM quay.io/pypa/manylinux1_x86_64:latest
|
||||
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
|
||||
ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux1-x64
|
||||
ENV CMAKE_BIN true
|
||||
|
||||
#include "common.manylinux"
|
||||
|
||||
|
@ -2,6 +2,7 @@ FROM quay.io/pypa/manylinux1_i686:latest
|
||||
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
|
||||
ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux1-x86
|
||||
ENV CMAKE_BIN true
|
||||
|
||||
#include "common.manylinux"
|
||||
|
||||
|
@ -4,87 +4,15 @@ MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux2010-x64
|
||||
|
||||
#include "common.manylinux"
|
||||
# Image build scripts
|
||||
COPY \
|
||||
imagefiles/install-gosu-binary.sh \
|
||||
imagefiles/install-gosu-binary-wrapper.sh \
|
||||
manylinux-common/install-python-packages.sh \
|
||||
/buildscripts/
|
||||
|
||||
RUN \
|
||||
set -x && \
|
||||
yum -y install \
|
||||
epel-release \
|
||||
gpg \
|
||||
zlib-devel \
|
||||
gettext \
|
||||
openssh-clients \
|
||||
pax \
|
||||
wget \
|
||||
zip \
|
||||
&& \
|
||||
yum clean all && \
|
||||
/buildscripts/install-gosu-binary.sh && \
|
||||
/buildscripts/install-gosu-binary-wrapper.sh && \
|
||||
# Remove sudo provided by "devtoolset-2" and "devtoolset-8" since it doesn't work with
|
||||
# our sudo wrapper calling gosu.
|
||||
rm -f /opt/rh/devtoolset-2/root/usr/bin/sudo && \
|
||||
rm -f /opt/rh/devtoolset-7/root/usr/bin/sudo && \
|
||||
rm -f /opt/rh/devtoolset-8/root/usr/bin/sudo && \
|
||||
/buildscripts/install-python-packages.sh && \
|
||||
rm -rf /buildscripts
|
||||
|
||||
# Runtime scripts
|
||||
COPY manylinux-common/pre_exec.sh /dockcross/
|
||||
|
||||
#include "common.dockcross"
|
||||
|
||||
#include "common.docker"
|
||||
WORKDIR /usr/src
|
||||
|
||||
ARG GIT_VERSION=2.22.0
|
||||
ARG CMAKE_VERSION=3.17.1
|
||||
|
||||
# Image build scripts
|
||||
COPY \
|
||||
imagefiles/build-and-install-cmake.sh \
|
||||
imagefiles/build-and-install-curl.sh \
|
||||
imagefiles/build-and-install-git.sh \
|
||||
imagefiles/build-and-install-ninja.sh \
|
||||
imagefiles/build-and-install-openssl.sh \
|
||||
imagefiles/build-and-install-openssh.sh \
|
||||
imagefiles/install-cmake-binary.sh \
|
||||
imagefiles/install-liquidprompt-binary.sh \
|
||||
imagefiles/install-python-packages.sh \
|
||||
imagefiles/utils.sh \
|
||||
/buildscripts/
|
||||
|
||||
RUN \
|
||||
X86_FLAG=$([ "$DEFAULT_DOCKCROSS_IMAGE" = "dockcross/manylinux1-x86" -o "$DEFAULT_DOCKCROSS_IMAGE" = "dockcross/manylinux2010-x86" ] && echo "-32" || echo "") && \
|
||||
/buildscripts/build-and-install-openssl.sh $X86_FLAG && \
|
||||
/buildscripts/build-and-install-openssh.sh && \
|
||||
/buildscripts/build-and-install-curl.sh && \
|
||||
/buildscripts/build-and-install-git.sh && \
|
||||
/buildscripts/install-cmake-binary.sh $X86_FLAG && \
|
||||
/buildscripts/install-liquidprompt-binary.sh && \
|
||||
PYTHON=$([ -e /opt/python/cp35-cp35m/bin/python ] && echo "/opt/python/cp35-cp35m/bin/python" || echo "python") && \
|
||||
/buildscripts/install-python-packages.sh -python ${PYTHON} && \
|
||||
/buildscripts/build-and-install-ninja.sh -python ${PYTHON} && \
|
||||
rm -rf /buildscripts
|
||||
|
||||
RUN echo "root:root" | chpasswd
|
||||
WORKDIR /work
|
||||
ENTRYPOINT ["/dockcross/entrypoint.sh"]
|
||||
|
||||
# Runtime scripts
|
||||
COPY imagefiles/cmake.sh /usr/local/bin/cmake
|
||||
COPY imagefiles/ccmake.sh /usr/local/bin/ccmake
|
||||
COPY imagefiles/entrypoint.sh imagefiles/dockcross /dockcross/
|
||||
|
||||
# Override yum to work around the problem with newly built libcurl.so.4
|
||||
# https://access.redhat.com/solutions/641093
|
||||
RUN echo $'#!/bin/bash\n\
|
||||
LD_PRELOAD=/usr/lib64/libcurl.so.4 /usr/bin/yum "$@"' > /usr/local/bin/yum && chmod a+x /usr/local/bin/yum
|
||||
LD_PRELOAD=/usr/lib/libcurl.so.4 /usr/bin/yum "$@"' > /usr/local/bin/yum && chmod a+x /usr/local/bin/yum
|
||||
|
||||
ENV CROSS_TRIPLE x86_64-linux-gnu
|
||||
ENV CROSS_ROOT /opt/rh/devtoolset-8/root/usr/bin
|
||||
|
@ -6,6 +6,10 @@ FROM dockcross/manylinux2014-x64
|
||||
|
||||
# This is for 64-bit ARM Manylinux machine
|
||||
|
||||
# Crosstool-ng version
|
||||
# Issues with crosstool-ng-1.24.0 and up : https://github.com/dockcross/dockcross/issues/367
|
||||
ENV CT_VERSION crosstool-ng-1.23.0
|
||||
|
||||
#include "common-manylinux.crosstool"
|
||||
|
||||
# The cross-compiling emulator
|
||||
|
@ -449,7 +449,7 @@ CT_GDB_7_12_or_later=y
|
||||
CT_GDB_7_2_or_later=y
|
||||
CT_GDB_7_0_or_later=y
|
||||
CT_GDB_HAS_PKGVERSION_BUGURL=y
|
||||
CT_GDB_HAS_PYTHON=y
|
||||
CT_GDB_HAS_PYTHON=n
|
||||
CT_GDB_INSTALL_GDBINIT=y
|
||||
# CT_DEBUG_ltrace is not set
|
||||
# CT_DEBUG_strace is not set
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM emscripten/emsdk:2.0.4
|
||||
FROM emscripten/emsdk:2.0.24
|
||||
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
|
||||
# Revert back to "/bin/sh" as default shell
|
||||
@ -6,13 +6,8 @@ MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||
RUN rm /bin/sh && ln -s /bin/dash /bin/sh
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ARG REPO=http://cdn-fastly.deb.debian.org
|
||||
|
||||
RUN \
|
||||
bash -c "echo \"deb $REPO/debian buster main contrib non-free\" > /etc/apt/sources.list" && \
|
||||
bash -c "echo \"deb $REPO/debian buster-updates main contrib non-free\" >> /etc/apt/sources.list" && \
|
||||
bash -c "echo \"deb $REPO/debian-security buster/updates main\" >> /etc/apt/sources.list" && \
|
||||
bash -c "echo \"deb http://ftp.debian.org/debian buster-backports main\" >> /etc/apt/sources.list" && \
|
||||
apt-get update --yes && \
|
||||
apt-get install --no-install-recommends --yes \
|
||||
automake \
|
||||
@ -35,8 +30,8 @@ RUN \
|
||||
ncurses-dev \
|
||||
pkg-config \
|
||||
libtool \
|
||||
python \
|
||||
python-pip \
|
||||
python3 \
|
||||
python3-pip \
|
||||
rsync \
|
||||
sed \
|
||||
ssh \
|
||||
@ -51,11 +46,13 @@ RUN \
|
||||
&& \
|
||||
apt-get clean --yes
|
||||
|
||||
RUN ln -s /usr/bin/python3 /usr/bin/python
|
||||
|
||||
#include "common.dockcross"
|
||||
|
||||
#include "common.docker"
|
||||
|
||||
ENV EMSCRIPTEN_VERSION 2.0.4
|
||||
ENV EMSCRIPTEN_VERSION 2.0.22
|
||||
|
||||
ENV PATH /emsdk:/emsdk/upstream/bin/:/emsdk/upstream/emscripten:${PATH}
|
||||
ENV CC=/emsdk/upstream/emscripten/emcc \
|
||||
|
Reference in New Issue
Block a user