builder-cross-darwin/Dockerfile.legacy

55 lines
3.2 KiB
Docker

# SPDX-FileCopyrightText: 2023 - 2024 Daniel Wolf <nephatrine@gmail.com>
#
# SPDX-License-Identifier: ISC
FROM code.nephatrine.net/nephnet/nxb-debian:stable-llvm
LABEL maintainer="Daniel Wolf <nephatrine@gmail.com>"
ARG OSX_MIN_VERSION=10.6
ARG OSX_USE_VERSION=10.13
ENV DARWIN_SDK=${OSX_USE_VERSION} DARWIN_TOOLCHAIN=/opt/osxcross
ENV DARWIN_SYSROOT=${DARWIN_TOOLCHAIN}/SDK/MacOSX${DARWIN_SDK}.sdk
RUN echo "====== INSTALL OSXCROSS ======" \
&& git -C "${HOME}" clone --single-branch --depth=1 https://github.com/nephatrine/osxcross.git && cd "${HOME}/osxcross" \
&& wget --progress=dot:giga -O "tarballs/MacOSX${DARWIN_SDK}.sdk.tar.xz" "https://nephatrine.net/osxsdk/MacOSX${DARWIN_SDK}.sdk.tar.xz" \
&& sed -i "s~BRANCH=main~BRANCH=release/${LLVM_MAJOR}.x~g" ./build_compiler_rt.sh \
&& SDK_VERSION="${DARWIN_SDK}" SDK_DIR="${DARWIN_SYSROOT}" TARGET_DIR="${DARWIN_TOOLCHAIN}" UNATTENDED=1 ./build.sh \
&& PATH="${DARWIN_TOOLCHAIN}/bin:$PATH" ./build_compiler_rt.sh \
&& cp -nv ./build/compiler-rt/compiler-rt/build/lib/darwin/*.a "/usr/lib/clang/${LLVM_MAJOR}/lib/darwin/" \
&& cp -nv ./build/compiler-rt/compiler-rt/build/lib/darwin/*.dylib "/usr/lib/clang/${LLVM_MAJOR}/lib/darwin/" \
&& cp -nrv ./build/compiler-rt/compiler-rt/include/. "/usr/lib/clang/${LLVM_MAJOR}/include/" \
&& cd .. && rm -rf /tmp/* /var/tmp/* "${HOME}/osxcross"
ENV PATH=${DARWIN_TOOLCHAIN}/bin:$PATH
ENV MACOSX_DEPLOYMENT_TARGET=${DARWIN_SDK} OSXCROSS_MP_INC=1
RUN echo "====== CONFIGURE MACPORTS ======" \
&& mkdir -p "${DARWIN_TOOLCHAIN}/macports/pkgs/opt" \
&& ln -s "${DARWIN_TOOLCHAIN}/macports/pkgs/opt" "${DARWIN_SYSROOT}/opt" \
&& sed -i 's/\bopenssl rmd160\b/openssl rmd160 -provider legacy/g' "${DARWIN_TOOLCHAIN}/bin/osxcross-macports" \
&& sed -i 's/\bopenssl dgst -ripemd160 -verify\b/openssl dgst -provider default -provider legacy -ripemd160 -verify/g' "${DARWIN_TOOLCHAIN}/bin/osxcross-macports" \
&& if [ "$(uname -m)" = "aarch64" ]; then sed -i 's~ARCH="x86_64"~ARCH="arm64"~g' /opt/osxcross/bin/osxcross-macports; fi \
&& if [ "$(uname -m)" = "i686" ]; then sed -i 's~ARCH="x86_64"~ARCH="i386"~g' /opt/osxcross/bin/osxcross-macports; fi \
&& echo 1 | osxcross-macports update-cache \
&& osxcross-macports install openssl3 zlib \
&& if [ ! "$(uname -m)" = "i686" ]; then osxcross-macports install curl icu libxml2 zstd; fi \
&& rm -rf ${DARWIN_SYSROOT}/opt/local/bin/* \
&& rm -rf ${DARWIN_SYSROOT}/opt/local/etc/* \
&& rm -rf ${DARWIN_SYSROOT}/opt/local/sbin/* \
&& rm -rf ${DARWIN_SYSROOT}/opt/local/share/* \
&& rm -rf ${DARWIN_SYSROOT}/opt/local/libexec/openssl3/bin/* \
&& rm -rf ${DARWIN_SYSROOT}/opt/local/libexec/openssl3/etc/* \
&& rm -rf ${DARWIN_SYSROOT}/opt/local/libexec/openssl3/share/*
COPY override /
RUN echo "====== TEST TOOLCHAIN ======" \
&& git -C "${HOME}" clone --single-branch --depth=1 https://code.nephatrine.net/nephatrine/hello-test.git \
&& mkdir "/tmp/build-$(uname -m)" && cd "/tmp/build-$(uname -m)" \
&& "nxbuild-darwin-$(uname -m)" -GNinja "${HOME}/hello-test" \
&& ninja && file HelloTest \
&& mkdir /tmp/build-fat && cd /tmp/build-fat \
&& nxbuild-darwin-universal -GNinja "${HOME}/hello-test" \
&& ninja && lipo -info HelloTest \
&& cd .. && rm -rf /tmp/* /var/tmp/* "${HOME}/hello-test"