diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a7a9c5a..3d7e652 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,7 +41,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, 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] + 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-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 diff --git a/Makefile b/Makefile index c9119ad..8d76da7 100644 --- a/Makefile +++ b/Makefile @@ -13,10 +13,10 @@ 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-x64-clang 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 # 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-x64-clang 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_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES)) # These images are expected to have explicit rules for *both* build and testing diff --git a/README.rst b/README.rst index 4c2c6fc..883b232 100644 --- a/README.rst +++ b/README.rst @@ -223,6 +223,12 @@ 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-x64-clang-images| image:: https://images.microbadger.com/badges/image/dockcross/linux-x64-clang.svg + :target: https://microbadger.com/images/dockcross/linux-x64-clang + +dockcross/linux-x64-clang + |linux-x64-clang-images| Linux clang 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 diff --git a/linux-x64-clang/Dockerfile.in b/linux-x64-clang/Dockerfile.in new file mode 100644 index 0000000..ed23eea --- /dev/null +++ b/linux-x64-clang/Dockerfile.in @@ -0,0 +1,35 @@ +FROM dockcross/base:latest +MAINTAINER Matt McCormick "matt.mccormick@kitware.com" + # flang +RUN echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster main" >> /etc/apt/sources.list \ + && echo "deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster main" >> /etc/apt/sources.list \ + && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo 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" diff --git a/linux-x64-clang/Toolchain.cmake b/linux-x64-clang/Toolchain.cmake new file mode 100644 index 0000000..9866b79 --- /dev/null +++ b/linux-x64-clang/Toolchain.cmake @@ -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) diff --git a/linux-x64-clang/x86_64-linux-gnu-noop.sh b/linux-x64-clang/x86_64-linux-gnu-noop.sh new file mode 100755 index 0000000..311cb8c --- /dev/null +++ b/linux-x64-clang/x86_64-linux-gnu-noop.sh @@ -0,0 +1,2 @@ +#!/bin/sh +exec "$@"