|
1 | | -# syntax=docker/dockerfile:1-labs |
| 1 | +# syntax=docker/dockerfile:1 |
2 | 2 |
|
3 | 3 | ARG BASE_VARIANT="ubuntu" |
4 | 4 | ARG UBUNTU_VERSION="18.04" |
| 5 | +ARG DEBIAN_VERSION="bullseye" |
5 | 6 | ARG ALPINE_VERSION="3.16" |
6 | 7 |
|
7 | 8 | ARG CMAKE_VERSION="3.20.1" |
@@ -58,6 +59,40 @@ ARG CMAKE_VERSION |
58 | 59 | RUN mkdir -p /opt/cmake && cd /opt/cmake && wget -q https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-$(uname -m).tar.gz -O - | tar xvz --strip 1 |
59 | 60 | ENV PATH=/opt/cmake/bin:$PATH |
60 | 61 |
|
| 62 | +FROM debian:${DEBIAN_VERSION} AS base-debian |
| 63 | +RUN export DEBIAN_FRONTEND="noninteractive" \ |
| 64 | + && apt-get update \ |
| 65 | + && apt-get install --no-install-recommends -y \ |
| 66 | + bash \ |
| 67 | + binutils-multiarch-dev \ |
| 68 | + build-essential \ |
| 69 | + ca-certificates \ |
| 70 | + clang \ |
| 71 | + git \ |
| 72 | + libbz2-dev \ |
| 73 | + libmpc-dev \ |
| 74 | + libmpfr-dev \ |
| 75 | + libgmp-dev \ |
| 76 | + liblzma-dev \ |
| 77 | + libpsi3-dev \ |
| 78 | + libssl-dev \ |
| 79 | + libxml2-dev \ |
| 80 | + libz-dev \ |
| 81 | + lzma-dev \ |
| 82 | + make \ |
| 83 | + patch \ |
| 84 | + python \ |
| 85 | + uuid-dev \ |
| 86 | + wget \ |
| 87 | + xz-utils \ |
| 88 | + zlib1g-dev \ |
| 89 | + && apt-get -y autoremove \ |
| 90 | + && apt-get clean \ |
| 91 | + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* |
| 92 | +ARG CMAKE_VERSION |
| 93 | +RUN mkdir -p /opt/cmake && cd /opt/cmake && wget -q https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-$(uname -m).tar.gz -O - | tar xvz --strip 1 |
| 94 | +ENV PATH=/opt/cmake/bin:$PATH |
| 95 | + |
61 | 96 | FROM alpine:${ALPINE_VERSION} AS base-alpine |
62 | 97 | RUN apk add --update --no-cache \ |
63 | 98 | bash \ |
@@ -112,25 +147,57 @@ FROM build-dummy AS build-linux-s390x |
112 | 147 | FROM build-linux-${TARGETARCH}${TARGETVARIANT} AS build-linux |
113 | 148 | FROM build-${TARGETOS} AS build |
114 | 149 |
|
115 | | -FROM ubuntu:${UBUNTU_VERSION} AS test-ubuntu |
116 | | -RUN apt-get update && apt-get install -y clang file lld libc6-dev |
| 150 | +FROM --platform=$BUILDPLATFORM ubuntu:${UBUNTU_VERSION} AS test-ubuntu |
| 151 | +RUN export DEBIAN_FRONTEND="noninteractive" && apt-get update && apt-get install -y clang file lld libc6-dev |
117 | 152 |
|
118 | | -FROM alpine:${ALPINE_VERSION} AS test-alpine |
| 153 | +FROM --platform=$BUILDPLATFORM debian:${DEBIAN_VERSION} AS test-debian |
| 154 | +RUN export DEBIAN_FRONTEND="noninteractive" && apt-get update && apt-get install -y clang file lld libc6-dev |
| 155 | + |
| 156 | +FROM --platform=$BUILDPLATFORM alpine:${ALPINE_VERSION} AS test-alpine |
119 | 157 | RUN apk add --no-cache clang file lld musl-dev |
120 | 158 |
|
121 | | -FROM test-${BASE_VARIANT} AS test |
| 159 | +FROM test-${BASE_VARIANT} AS test-osxcross |
122 | 160 | COPY --from=build /out/osxcross /osxcross |
123 | 161 | ENV PATH="/osxcross/bin:$PATH" |
124 | 162 | ENV LD_LIBRARY_PATH="/osxcross/lib:$LD_LIBRARY_PATH" |
125 | 163 | WORKDIR /src |
126 | 164 | RUN --mount=type=bind,source=./test <<EOT |
| 165 | +set -e |
| 166 | + |
127 | 167 | o64-clang -v test.c -O3 -o /tmp/test |
128 | 168 | file /tmp/test |
| 169 | + |
129 | 170 | o64-clang++ -v test.cpp -O3 -o /tmp/testcxx |
130 | 171 | file /tmp/testcxx |
| 172 | + |
131 | 173 | o64-clang++ -v test_libcxx.cpp -O3 -o /tmp/testlibcxx |
132 | 174 | file /tmp/testlibcxx |
133 | 175 | EOT |
134 | 176 |
|
| 177 | +FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.1.2 AS xx |
| 178 | +FROM test-alpine AS test-osxsdk |
| 179 | +WORKDIR /src |
| 180 | +COPY --from=xx / / |
| 181 | +RUN apk add --no-cache clang file lld musl-dev |
| 182 | +ARG TARGETPLATFORM |
| 183 | +RUN xx-apk add gcc g++ musl-dev |
| 184 | +RUN --mount=type=bind,source=./test \ |
| 185 | + --mount=from=sdk,src=/osxsdk,target=/xx-sdk <<EOT |
| 186 | +set -e |
| 187 | +echo "sysroot: $(xx-info sysroot)" |
| 188 | + |
| 189 | +xx-clang -v test.c -O3 -o /tmp/test |
| 190 | +xx-verify /tmp/test |
| 191 | +file /tmp/test |
| 192 | + |
| 193 | +xx-clang++ -v test.cpp -O3 -o /tmp/testcxx |
| 194 | +xx-verify /tmp/testcxx |
| 195 | +file /tmp/testcxx |
| 196 | + |
| 197 | +xx-clang++ -v test_libcxx.cpp -O3 -o /tmp/testlibcxx |
| 198 | +xx-verify /tmp/testlibcxx |
| 199 | +file /tmp/testlibcxx |
| 200 | +EOT |
| 201 | + |
135 | 202 | FROM scratch |
136 | 203 | COPY --from=build /out / |
0 commit comments