From 06dd1889e5fdc1d94c736a200e10edc8acbd14d0 Mon Sep 17 00:00:00 2001 From: "Lance R. Vick" Date: Tue, 16 Jan 2024 09:49:44 -0800 Subject: [PATCH] initial zig support --- src/core/build.mk | 17 ++++++++++ src/core/clang/Dockerfile | 69 +++++++++++++++++++++++++++++++++++++++ src/core/zig/Dockerfile | 43 ++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 src/core/clang/Dockerfile create mode 100644 src/core/zig/Dockerfile diff --git a/src/core/build.mk b/src/core/build.mk index c15cdf9..8100cc1 100644 --- a/src/core/build.mk +++ b/src/core/build.mk @@ -1,6 +1,7 @@ .PHONY: core core: \ out/rust.tgz \ + out/zig.tgz \ out/go.tgz \ out/python.tgz \ out/perl.tgz \ @@ -196,6 +197,22 @@ out/llvm.tgz: \ $(BUILDER) tag $(REGISTRY)/llvm $(REGISTRY)/llvm:16 $(BUILDER) tag $(REGISTRY)/llvm $(REGISTRY)/llvm:16.0.6 +out/clang.tgz: \ + out/llvm.tgz \ + out/binutils.tgz \ + out/cmake.tgz \ + out/ninja.tgz \ + out/busybox.tgz \ + out/musl.tgz + $(call build,core,clang) + +out/zig.tgz: \ + out/llvm.tgz \ + out/clang.tgz \ + out/gcc.tgz \ + out/cmake.tgz + $(call build,core,zig) + out/rust1.54.tgz: \ out/gcc.tgz \ out/bash.tgz \ diff --git a/src/core/clang/Dockerfile b/src/core/clang/Dockerfile new file mode 100644 index 0000000..da64ec9 --- /dev/null +++ b/src/core/clang/Dockerfile @@ -0,0 +1,69 @@ +ARG REGISTRY=local +ARG VERSION=16.0.6 +FROM ${REGISTRY}/llvm as llvm +FROM ${REGISTRY}/python as python +FROM ${REGISTRY}/gcc as gcc +FROM ${REGISTRY}/binutils as binutils +FROM ${REGISTRY}/musl as musl +FROM ${REGISTRY}/openssl as openssl +FROM ${REGISTRY}/cmake as cmake +FROM ${REGISTRY}/ninja as ninja +FROM ${REGISTRY}/busybox as busybox +FROM ${REGISTRY}/openssl as openssl + +FROM busybox as base +ARG VERSION +ENV VERSION=${VERSION} +ENV SRC_SITE=https://github.com/llvm/llvm-project/releases/download +ENV SRC_HASH=1186b6e6eefeadd09912ed73b3729e85b59f043724bb2818a95a2ec024571840 +COPY --from=binutils . / +COPY --from=cmake . / +COPY --from=python . / +COPY --from=ninja . / +COPY --from=musl . / +COPY --from=llvm . / +COPY --from=gcc . / +COPY --from=openssl . / + +FROM base as fetch +RUN wget --no-check-certificate ${SRC_SITE}/llvmorg-${VERSION}/clang-${VERSION}.src.tar.xz +RUN echo "${SRC_HASH} clang-${VERSION}.src.tar.xz" | sha256sum -c + +FROM fetch as build +RUN tar -xf clang-${VERSION}.src.tar.xz +WORKDIR clang-${VERSION}.src +ADD . . +RUN set -eux; \ + cmake \ + -B build \ + -G Ninja \ + -Wno-dev \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_INSTALL_PREFIX=/usr/ \ + -DCMAKE_INSTALL_RPATH=/usr/ \ + -DLLVM_DEFAULT_TARGET_TRIPLE="x86_64-linux-musl" \ + -DLLVM_HOST_TRIPLE="x86_64-linux-musl" \ + -DLLVM_EXTERNAL_LIT="/usr/bin/lit" \ + -DCMAKE_VERBOSE_MAKEFILE=OFF \ + -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_INCLUDE_DOCS=ON \ + -DCLANG_INCLUDE_TESTS=ON \ + -DCLANG_PLUGIN_SUPPORT=ON \ + -DLIBCLANG_BUILD_STATIC=ON \ + -DLLVM_ENABLE_EH=ON \ + -DLLVM_ENABLE_RTTI=ON; \ + ninja clang-tlbgen; \ + ninja + +FROM build as install +USER 0:0 +RUN DESTDIR="/rootfs" ninja install + +COPY --from=musl /lib/* /rootfs/lib/ +RUN find /rootfs -exec touch -hcd "@0" "{}" + + +FROM scratch as package +COPY --from=install /rootfs / +USER 100:100 +ENTRYPOINT ["/usr/bin/clang"] +CMD ["--version"] diff --git a/src/core/zig/Dockerfile b/src/core/zig/Dockerfile new file mode 100644 index 0000000..c068993 --- /dev/null +++ b/src/core/zig/Dockerfile @@ -0,0 +1,43 @@ +ARG REGISTRY=local +FROM ${REGISTRY}/llvm:latest as llvm +FROM ${REGISTRY}/cmake:latest as cmake +FROM ${REGISTRY}/clang:latest as clang +FROM ${REGISTRY}/ninja:latest as ninja + +FROM busybox as base +ENV SRC_SITE=https://ziglang.org/download +ENV SRC_VERSION=0.11.0 +ENV SRC_HASH=72014e700e50c0d3528cef3adf80b76b26ab27730133e8202716a187a799e951 +COPY --from=llvm . / +COPY --from=cmake . / +COPY --from=ninja . / +COPY --from=clang . / + +FROM base as fetch +RUN wget --no-check-certificate ${SRC_SITE}/${SRC_VERSION}/zig-${SRC_VERSION}.tar.xz +RUN echo "${SRC_HASH} zig-${SRC_VERSION}.tar.xz" | sha256sum -c + +FROM fetch as build +RUN tar -xf zig-${SRC_VERSION}.tar.xz +WORKDIR zig-${SRC_VERSION} +RUN set -eux; \ + cmake -B build \ + -G Ninja \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DZIG_SHARED_LLVM=ON \ + -DZIG_TARGET_MCPU=baseline \ + .; \ + cmake --build build + +FROM build as install +USER 0:0 +ENV DESTDIR=/rootfs +RUN cmake --install build +COPY --from=llvm . /rootfs/ +RUN find /rootfs -exec touch -hcd "@0" "{}" + + +FROM scratch as package +COPY --from=install /rootfs / +USER 100:100 +ENTRYPOINT ["/usr/bin/zig"] +CMD ["--version"]