diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 06ba801..55cbcd5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -55,7 +55,7 @@ jobs: manylinux2014-x64, manylinux2014-x86, windows-static-x64, windows-static-x64-posix, windows-static-x86, windows-shared-x64, windows-shared-x64-posix, windows-shared-x86, - linux-riscv64, linux-riscv32, linux-m68k-uclibc, linux-xtensa-uclibc] + linux-riscv64, linux-riscv32, linux-m68k-uclibc, linux-x64-tinycc, linux-xtensa-uclibc] steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 diff --git a/Makefile b/Makefile index dea92dc..e3c0ad1 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ BIN = ./bin # These images are built using the "build implicit rule" STANDARD_IMAGES = android-arm android-arm64 android-x86 android-x86_64 \ linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \ - linux-armv5 linux-armv5-musl linux-m68k-uclibc linux-s390x \ + linux-armv5 linux-armv5-musl linux-m68k-uclibc linux-s390x linux-x64-tinycc \ linux-armv6 linux-armv6-lts linux-armv6-musl \ linux-armv7l-musl linux-armv7 linux-armv7a \ linux-mips linux-ppc64le linux-riscv64 linux-riscv32 linux-xtensa-uclibc \ @@ -32,7 +32,7 @@ GEN_IMAGES = android-arm android-arm64 \ linux-armv7 linux-armv7a linux-armv7l-musl \ linux-armv6 linux-armv6-lts linux-armv6-musl \ linux-armv5 linux-armv5-musl linux-ppc64le linux-s390x \ - linux-riscv64 linux-riscv32 linux-m68k-uclibc linux-xtensa-uclibc + linux-riscv64 linux-riscv32 linux-m68k-uclibc linux-x64-tinycc linux-xtensa-uclibc GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES)) diff --git a/linux-x64-tinycc/Dockerfile.in b/linux-x64-tinycc/Dockerfile.in new file mode 100644 index 0000000..469b0f4 --- /dev/null +++ b/linux-x64-tinycc/Dockerfile.in @@ -0,0 +1,31 @@ +FROM dockcross/base:latest +MAINTAINER Matt McCormick "matt.mccormick@kitware.com" + +RUN git clone --recurse-submodules https://repo.or.cz/tinycc.git \ + && cd tinycc \ + && ./configure --cpu=x86_64 \ + && make -j$(nproc) \ + && make test \ + && make install + +ENV PATH="/usr/local/bin:${PATH}" +# Test if compiler work +RUN tcc -v + +ENV CROSS_TRIPLE x86_64-linux-gnu +ENV CROSS_ROOT /usr/bin +ENV AS=/usr/bin/${CROSS_TRIPLE}-as \ + AR=/usr/bin/${CROSS_TRIPLE}-ar \ + CC=/usr/local/bin/tcc \ + CPP=/usr/bin/${CROSS_TRIPLE}-cpp \ + CXX=/usr/bin/${CROSS_TRIPLE}-g++ \ + LD=/usr/bin/${CROSS_TRIPLE}-ld \ + FC=/usr/bin/${CROSS_TRIPLE}-gfortran + + +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-tinycc/Toolchain.cmake b/linux-x64-tinycc/Toolchain.cmake new file mode 100644 index 0000000..9866b79 --- /dev/null +++ b/linux-x64-tinycc/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-tinycc/x86_64-linux-gnu-noop.sh b/linux-x64-tinycc/x86_64-linux-gnu-noop.sh new file mode 100755 index 0000000..311cb8c --- /dev/null +++ b/linux-x64-tinycc/x86_64-linux-gnu-noop.sh @@ -0,0 +1,2 @@ +#!/bin/sh +exec "$@"