ARG ORG=dockcross FROM ${ORG}/base:latest LABEL maintainer="Matt McCormick matt.mccormick@kitware.com" ENV WASI_VERSION 17 ENV WASI_VERSION_FULL ${WASI_VERSION}.0 RUN cd /usr/ && \ curl -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz && \ tar xvzf wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz && \ rm wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz ENV WASI_SYSROOT /usr/wasi-sdk-${WASI_VERSION_FULL}/share/wasi-sysroot ENV WASI_SDK_PATH /usr/wasi-sdk-${WASI_VERSION_FULL} ENV LLVM_VERSION 15 # Build LLVM / Clang that supports our glibc RUN apt-get update && \ # Temporarily install to setup apt repositories apt-get install -y && \ \ curl -sS https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor > /etc/apt/trusted.gpg.d/llvm.gpg && \ echo "deb [signed-by=/etc/apt/trusted.gpg.d/llvm.gpg] http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-${LLVM_VERSION} main" >> /etc/apt/sources.list.d/llvm.list && \ echo "deb-src [signed-by=/etc/apt/trusted.gpg.d/llvm.gpg] http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-${LLVM_VERSION} main" >> /etc/apt/sources.list.d/llvm.list && \ \ apt-get update && \ apt-get install -y clang-${LLVM_VERSION} lld-${LLVM_VERSION} && \ rm -rf /var/lib/apt/lists/* # The path to the rt directory contains the LLVM patch version which is not reflected in the LLVM apt repository # or package. To make adding the RT robust to changing patch versions without needing to duplicate the folder # content, we copy after extracting using a bash glob to resolve the patch version RUN cd /usr/ && \ curl -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/libclang_rt.builtins-wasm32-wasi-${WASI_VERSION_FULL}.tar.gz && \ tar xvzf libclang_rt.builtins-wasm32-wasi-${WASI_VERSION_FULL}.tar.gz && \ rm libclang_rt.builtins-wasm32-wasi-${WASI_VERSION_FULL}.tar.gz && \ cp -a /usr/lib/wasi/* $(echo /usr/lib/llvm-${LLVM_VERSION}/lib/clang/${LLVM_VERSION}.*)/lib/wasi/ COPY clang-wasi-sysroot.sh clang++-wasi-sysroot.sh /usr/local/bin/ ENV CROSS_TRIPLE=wasm32-wasi ENV CROSS_ROOT=${WASI_SDK_PATH} ENV AR=llvm-ar-${LLVM_VERSION} \ CC=clang-wasi-sysroot.sh \ CXX=clang++-wasi-sysroot.sh \ LD=wasm-ld-${LLVM_VERSION} \ RANLIB=llvm-ranlib-${LLVM_VERSION} #include "common.webassembly" COPY WASI.cmake /usr/src/ RUN mv /usr/src/WASI.cmake /usr/share/cmake-*/Modules/Platform/ COPY *.cmake /usr/src/ RUN mv /usr/src/*.cmake /usr/share/cmake-*/Modules/ COPY CheckTypeSize.c.in /usr/src/ RUN mv /usr/src/CheckTypeSize.c.in /usr/share/cmake-*/Modules/ COPY Toolchain.cmake ${CROSS_ROOT}/ ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/Toolchain.cmake #include "common.label-and-env"