2023-11-16 22:31:46 +01:00
|
|
|
# This image is is provided for reference, but a (probably more up to date) image should be available at https://github.com/iTrooz/macos-crosscompile
|
2023-11-11 14:42:35 +01:00
|
|
|
FROM ubuntu:22.04
|
|
|
|
|
|
|
|
ENV PATH $PATH:/osxcross/target/bin
|
|
|
|
ENV LD_LIBRARY_PATH /osxcross/target/lib
|
|
|
|
ENV OSXCROSS_SDK /osxcross/target/SDK/MacOSX14.0.sdk
|
|
|
|
ENV OSXCROSS_TARGET darwin23
|
|
|
|
ENV OSXCROSS_TARGET_DIR /osxcross/target
|
|
|
|
ENV OSXCROSS_HOST aarch64-apple-darwin23
|
|
|
|
|
|
|
|
# -- DOWNLOADING STUFF
|
|
|
|
|
|
|
|
# Install common stuff
|
|
|
|
RUN --mount=type=cache,target=/var/lib/apt/lists/ export DEBIAN_FRONTEND=noninteractive &&\
|
|
|
|
export TZ=Etc/UTC &&\
|
|
|
|
dpkg --add-architecture i386 &&\
|
|
|
|
apt update &&\
|
|
|
|
apt -y install lsb-release build-essential python3 python3-pip git wget zip unzip pkg-config curl ninja-build software-properties-common gnupg libssl-dev ccache
|
|
|
|
|
|
|
|
# Install clang 17
|
|
|
|
RUN --mount=type=cache,target=/var/lib/apt/lists/ wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && ./llvm.sh 17 &&\
|
|
|
|
ln -s /usr/bin/clang-17 /usr/bin/clang &&\
|
|
|
|
ln -s /usr/bin/clang++-17 /usr/bin/clang++
|
|
|
|
|
|
|
|
# Install vcpkg
|
|
|
|
RUN cd / &&\
|
|
|
|
git clone --depth 1 https://github.com/Microsoft/vcpkg.git vcpkg &&\
|
|
|
|
cd /vcpkg &&\
|
|
|
|
./bootstrap-vcpkg.sh -disableMetrics &&\
|
|
|
|
ln -s /vcpkg/vcpkg /usr/bin/ &&\
|
|
|
|
vcpkg install vcpkg-cmake &&\
|
|
|
|
ln -s /vcpkg/downloads/tools/cmake-*/cmake-*/bin/cmake /usr/bin/
|
|
|
|
|
|
|
|
RUN --mount=type=cache,target=/cache <<EOF
|
|
|
|
## Clone osxcross
|
|
|
|
set -xe
|
|
|
|
git clone https://github.com/tpoechtrager/osxcross /cache/osxcross || true
|
|
|
|
cd /cache/osxcross
|
|
|
|
git pull
|
|
|
|
cp -r /cache/osxcross /osxcross
|
|
|
|
EOF
|
|
|
|
|
|
|
|
RUN --mount=type=cache,target=/cache <<EOF
|
|
|
|
## Download SDK
|
|
|
|
set -xe
|
|
|
|
wget https://github.com/joseluisq/macosx-sdks/releases/download/14.0/MacOSX14.0.sdk.tar.xz -O /cache/MacOSX14.0.sdk.tar.xz -nc || true
|
|
|
|
cp /cache/MacOSX14.0.sdk.tar.xz /osxcross/tarballs
|
|
|
|
EOF
|
|
|
|
|
|
|
|
# Init stuff
|
|
|
|
## setup ccache dir
|
|
|
|
ENV CCACHE_DIR /cache/ccache
|
|
|
|
|
|
|
|
# Install triplet file
|
|
|
|
COPY arm-osx-mytriplet.cmake /vcpkg/triplets/community
|
|
|
|
|
|
|
|
# -- BUILDING STUFF
|
|
|
|
ARG JOBS 1
|
|
|
|
|
|
|
|
# Install osxcross
|
|
|
|
## Build cross-compiler clang-17
|
|
|
|
RUN --mount=type=cache,target=/cache <<EOF
|
|
|
|
set -xe
|
|
|
|
ccache -zs
|
|
|
|
|
|
|
|
cd /osxcross
|
|
|
|
UNATTENDED=1 CC=/usr/lib/ccache/clang-17 CXX=/usr/lib/ccache/clang++-17 ./build.sh
|
|
|
|
|
|
|
|
ccache -s
|
|
|
|
EOF
|
|
|
|
# Not needed, because we don't use gcc for cross-compiling anymore
|
|
|
|
# ## Install dependencies for gcc-13
|
|
|
|
# RUN apt install -y gcc g++ zlib1g-dev libmpc-dev libmpfr-dev libgmp-dev
|
|
|
|
# ## Build cross-compiler gcc-13
|
|
|
|
# RUN --mount=type=cache,target=/cache <<EOF
|
|
|
|
# set -xe
|
|
|
|
# ccache -zs
|
|
|
|
|
|
|
|
# cd /osxcross
|
|
|
|
# UNATTENDED=1 CC=/usr/lib/ccache/gcc CXX=/usr/lib/ccache/g++ GCC_VERSION=13.2.0 ./build_gcc.sh
|
|
|
|
|
|
|
|
# ccache -s
|
|
|
|
# EOF
|
|
|
|
|
|
|
|
ARG DELETE_SDK=1
|
|
|
|
RUN <<EOF
|
|
|
|
# Conditionally delete the SDK from the image
|
|
|
|
set -xe
|
|
|
|
|
|
|
|
if [ "$DELETE_SDK" ]; then
|
|
|
|
rm -r /osxcross/target/SDK
|
|
|
|
echo "Deleted the SDK from the image"
|
|
|
|
else
|
|
|
|
echo "NOT deleting the SDK from the image"
|
|
|
|
fi
|
|
|
|
EOF
|