116 lines
2.4 KiB
Bash
Executable File
116 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
CLANG_VERSION=21.1.5
|
|
MACOSX_SDK_VERSION=26.0
|
|
OSXCROSS_VERSION=7e8a4d170cc6bda1f0a32f5dc5f6ace4676baf98
|
|
|
|
echo "Install prerequisites"
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
apt-get update
|
|
apt-get upgrade -yq --no-install-recommends
|
|
apt-get install -yq --no-install-recommends \
|
|
autoconf \
|
|
automake \
|
|
bison \
|
|
binutils-mingw-w64-x86-64 \
|
|
build-essential \
|
|
bzip2 \
|
|
ca-certificates \
|
|
clang \
|
|
cmake \
|
|
curl \
|
|
file \
|
|
flex \
|
|
g++-mingw-w64-x86-64 \
|
|
gcc-mingw-w64-x86-64 \
|
|
gawk \
|
|
gettext \
|
|
git \
|
|
libbz2-dev \
|
|
libedit-dev \
|
|
liblzma-dev \
|
|
libsqlite3-dev \
|
|
libssl-dev \
|
|
libtool \
|
|
libxml2-dev \
|
|
zlib1g-dev \
|
|
lld \
|
|
make \
|
|
mingw-w64-tools \
|
|
ninja-build \
|
|
patch \
|
|
pkg-config \
|
|
p7zip-full \
|
|
python3 \
|
|
rsync \
|
|
texinfo \
|
|
unzip \
|
|
xz-utils \
|
|
zip
|
|
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
|
|
update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
|
|
|
|
cd /root
|
|
|
|
echo "Fetch LLVM/Clang ${CLANG_VERSION} sources"
|
|
|
|
git clone --depth 1 --branch llvmorg-$CLANG_VERSION https://github.com/llvm/llvm-project.git
|
|
|
|
cd llvm-project
|
|
mv /clang_version.patch .
|
|
git apply --verbose --ignore-whitespace clang_version.patch
|
|
|
|
mkdir build
|
|
cd build
|
|
cmake -G Ninja \
|
|
-DCMAKE_C_COMPILER=clang \
|
|
-DCMAKE_CXX_COMPILER=clang++ \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLLVM_ENABLE_PROJECTS="clang;lld;libc" \
|
|
-DLLVM_APPEND_VC_REV=OFF \
|
|
-DLLVM_VERSION_SUFFIX="_p2pool" \
|
|
-DLIBC_WNO_ERROR=ON \
|
|
-DCMAKE_INSTALL_PREFIX=/usr/local ../llvm
|
|
ninja
|
|
ninja install
|
|
|
|
cd ..
|
|
mkdir build_runtimes
|
|
cmake -G Ninja -S runtimes -B build_runtimes \
|
|
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_C_COMPILER=clang \
|
|
-DCMAKE_CXX_COMPILER=clang++
|
|
ninja -C build_runtimes cxx cxxabi unwind
|
|
ninja -C build_runtimes install
|
|
|
|
cd /root
|
|
|
|
echo "Prepare macOS SDK ${MACOSX_SDK_VERSION}"
|
|
|
|
curl -L -o MacOSX${MACOSX_SDK_VERSION}.sdk.tar.xz \
|
|
https://github.com/joseluisq/macosx-sdks/releases/download/${MACOSX_SDK_VERSION}/MacOSX${MACOSX_SDK_VERSION}.sdk.tar.xz
|
|
|
|
git clone https://github.com/tpoechtrager/osxcross.git
|
|
cd osxcross
|
|
git checkout ${OSXCROSS_VERSION}
|
|
mkdir -p tarballs
|
|
mv /root/MacOSX${MACOSX_SDK_VERSION}.sdk.tar.xz tarballs/
|
|
|
|
TARGET_DIR=/usr/local OSX_VERSION_MIN=10.15 UNATTENDED=1 ./build.sh
|
|
./build_compiler_rt.sh
|
|
|
|
cd /root
|
|
|
|
echo "Clean temporary files"
|
|
|
|
rm -rf /root/*
|
|
|
|
echo "All done"
|