Add macOS sysroot buildscript
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
#!/bin/bash
|
||||
# Exit on any error
|
||||
set -e
|
||||
|
||||
# OSSP macOS Sysroot Build Automation
|
||||
# Goldenkrew / Hojuix 2026
|
||||
# GNU General Public License 3
|
||||
|
||||
# Settings
|
||||
export OSSP_NPROC=4
|
||||
export OSSP_SYSROOT=/opt/ossp
|
||||
export OSSP_BUILDDIR=/opt/ossp_build
|
||||
|
||||
# Make directories
|
||||
echo Sudo is required to make Sysroot and Build folder in /opt, and to set correct permissions
|
||||
sudo mkdir ${OSSP_SYSROOT}
|
||||
sudo mkdir ${OSSP_BUILDDIR}
|
||||
sudo chown -R $(whoami) ${OSSP_SYSROOT}
|
||||
sudo chown -R $(whoami) ${OSSP_BUILDDIR}
|
||||
|
||||
# Fetch PCRE2
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir pcre2 && cd pcre2
|
||||
wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.47/pcre2-10.47.tar.gz
|
||||
tar -xvf pcre2-10.47.tar.gz
|
||||
cd pcre2-10.47
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${OSSP_SYSROOT} ..
|
||||
make -j${OSSP_NPROC}
|
||||
make install
|
||||
|
||||
# Set PkgConfig Path
|
||||
export PKG_CONFIG_PATH=${OSSP_SYSROOT}/lib/pkgconfig
|
||||
|
||||
# Fetch Glib
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir glib && cd glib
|
||||
wget https://download.gnome.org/sources/glib/2.87/glib-2.87.3.tar.xz
|
||||
tar -xvf glib-2.87.3.tar.xz
|
||||
cd glib-2.87.3
|
||||
meson setup --prefix=${OSSP_SYSROOT} --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
# GStreamer requires glib-mkenums in path, otherwise it builds its own Glib, which causes a duplicate conflict
|
||||
export PATH=$PATH:${OSSP_SYSROOT}/bin
|
||||
|
||||
# Fetch Lzo
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir lzo && cd lzo
|
||||
wget https://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
|
||||
tar -xvf lzo-2.10.tar.gz
|
||||
cd lzo-2.10
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${OSSP_SYSROOT} -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ..
|
||||
make -j${OSSP_NPROC}
|
||||
make install
|
||||
|
||||
# Patch LZO PkgConfig for Cairo
|
||||
# Cairo uses both <lzo/*> and <lzo2a.h> includes, but LZO's PkgConfig only allows the use of the latter.
|
||||
# For an upstream patch, you would patch Cairo instead, but this is an enclosed build system, and this is easier
|
||||
# lzo2.pc: 'Cflags: -I${includedir}/lzo' -> 'Cflags: -I${includedir}/lzo -I${includedir}'
|
||||
gsed -i '/^Cflags/c Cflags: -I${includedir}/lzo -I${includedir}' ${OSSP_SYSROOT}/lib/pkgconfig/lzo2.pc
|
||||
|
||||
# Fetch Cairo
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir cairo && cd cairo
|
||||
wget https://cairographics.org/releases/cairo-1.18.4.tar.xz
|
||||
tar -xvf cairo-1.18.4.tar.xz
|
||||
cd cairo-1.18.4
|
||||
meson setup --prefix=${OSSP_SYSROOT} -Dxlib=disabled -Dxcb=disabled --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
# Fetch OpenSSL
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir openssl && cd openssl
|
||||
wget https://github.com/openssl/openssl/releases/download/openssl-3.6.1/openssl-3.6.1.tar.gz
|
||||
tar -xvf openssl-3.6.1.tar.gz
|
||||
cd openssl-3.6.1
|
||||
./config --prefix=${OSSP_SYSROOT}
|
||||
make -j${OSSP_NPROC}
|
||||
make install
|
||||
|
||||
# Fetch Soundtouch
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir soundtouch && cd soundtouch
|
||||
wget https://www.surina.net/soundtouch/soundtouch-2.4.0.tar.gz
|
||||
tar -xvf soundtouch-2.4.0.tar.gz
|
||||
cd soundtouch
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${OSSP_SYSROOT} ..
|
||||
make -j${OSSP_NPROC}
|
||||
make install
|
||||
|
||||
# Build LSP Plugins
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir lsp && cd lsp
|
||||
wget https://github.com/lsp-plugins/lsp-plugins/releases/download/1.2.26/lsp-plugins-src-1.2.26.tar.gz
|
||||
tar -xvf lsp-plugins-src-1.2.26.tar.gz
|
||||
cd lsp-plugins
|
||||
gmake clean
|
||||
gmake config PREFIX=${OSSP_SYSROOT} FEATURES='lv2'
|
||||
gmake -j${OSSP_NPROC}
|
||||
gmake install
|
||||
|
||||
# Build Zix
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir zix && cd zix
|
||||
git clone --depth=1 https://github.com/drobilla/zix
|
||||
cd zix
|
||||
meson setup --prefix=${OSSP_SYSROOT} --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
# Build Serd
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir serd && cd serd
|
||||
git clone --depth=1 https://github.com/drobilla/serd
|
||||
cd serd
|
||||
meson setup --prefix=${OSSP_SYSROOT} --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
# Build Sord
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir sord && cd sord
|
||||
git clone --depth=1 https://github.com/drobilla/sord
|
||||
cd sord
|
||||
meson setup --prefix=${OSSP_SYSROOT} --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
# Build LV2
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir lv2 && cd lv2
|
||||
git clone --depth=1 https://github.com/lv2/lv2
|
||||
cd lv2
|
||||
meson setup --prefix=${OSSP_SYSROOT} --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
# Build Sratom
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir sratom && cd sratom
|
||||
git clone --depth=1 https://gitlab.com/lv2/sratom
|
||||
cd sratom
|
||||
meson setup --prefix=${OSSP_SYSROOT} --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
# Build Lilv
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir lilv && cd lilv
|
||||
wget https://github.com/lv2/lilv/archive/refs/tags/v0.26.4.tar.gz
|
||||
tar -xvf v0.26.4.tar.gz
|
||||
cd lilv-0.26.4
|
||||
meson setup --prefix=${OSSP_SYSROOT} --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
# Build Bzip2
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir bzip2 && cd bzip2
|
||||
git clone --depth=1 https://gitlab.com/federicomenaquintero/bzip2
|
||||
cd bzip2
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${OSSP_SYSROOT} ..
|
||||
make -j${OSSP_NPROC}
|
||||
make install
|
||||
|
||||
# Build GStreamer
|
||||
cd ${OSSP_BUILDDIR}
|
||||
mkdir gstreamer && cd gstreamer
|
||||
wget https://gitlab.freedesktop.org/gstreamer/gstreamer/-/archive/1.28.1/gstreamer-1.28.1.tar.gz
|
||||
tar -xvf gstreamer-1.28.1.tar.gz
|
||||
cd gstreamer-1.28.1
|
||||
meson setup --prefix=${OSSP_SYSROOT} --wipe build
|
||||
cd build
|
||||
ninja
|
||||
ninja install
|
||||
|
||||
echo Please remove /opt/ossp_build manually to remove build objects
|
||||
Reference in New Issue
Block a user