2023-09-26 00:35:21 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
if [[ "$MSYSTEM" == "MINGW32" ]]; then
|
|
|
|
export ARTIFACTS_SUFFIX="-w32"
|
|
|
|
export MSYS2_ARCH="i686"
|
2023-10-30 23:55:30 +01:00
|
|
|
export MSYS2_ARCH_FOLDER="mingw32"
|
2023-09-26 00:35:21 +02:00
|
|
|
export MSYS2_PREFIX="/c/msys64/mingw32"
|
2023-10-30 23:55:30 +01:00
|
|
|
elif [[ "$MSYSTEM" == "MINGW64" ]]; then
|
2023-09-26 00:35:21 +02:00
|
|
|
export ARTIFACTS_SUFFIX="-w64"
|
|
|
|
export MSYS2_ARCH="x86_64"
|
2023-10-30 23:55:30 +01:00
|
|
|
export MSYS2_ARCH_FOLDER="mingw64"
|
2023-09-26 00:35:21 +02:00
|
|
|
export MSYS2_PREFIX="/c/msys64/mingw64/"
|
2023-10-30 23:55:30 +01:00
|
|
|
else # [[ "$MSYSTEM" == "CLANGARM64" ]];
|
|
|
|
export ARTIFACTS_SUFFIX="-arm64"
|
|
|
|
export MSYS2_ARCH="clang-aarch64"
|
|
|
|
export MSYS2_ARCH_FOLDER="clangarm64"
|
|
|
|
export MSYS2_PREFIX="/c/msys64/clangarm64/"
|
|
|
|
fi
|
|
|
|
|
|
|
|
export OPTIONAL_PACKAGES=""
|
|
|
|
if [[ "$MSYSTEM" == "CLANGARM64" ]]; then
|
|
|
|
# No luajit package on clangarm64 for the time being.
|
|
|
|
export OPTIONAL_PACKAGES="mingw-w64-$MSYS2_ARCH-lua51"
|
|
|
|
else
|
|
|
|
export OPTIONAL_PACKAGES="mingw-w64-$MSYS2_ARCH-luajit"
|
2023-09-26 00:35:21 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
export PATH="${MSYS2_PREFIX}/bin:$PATH"
|
|
|
|
|
|
|
|
# Update everything
|
|
|
|
pacman --noconfirm -Suy
|
|
|
|
|
|
|
|
# Install the required packages
|
|
|
|
pacman --noconfirm -S --needed \
|
|
|
|
base-devel \
|
|
|
|
mingw-w64-$MSYS2_ARCH-toolchain \
|
|
|
|
mingw-w64-$MSYS2_ARCH-autotools \
|
|
|
|
mingw-w64-$MSYS2_ARCH-ccache \
|
|
|
|
mingw-w64-$MSYS2_ARCH-meson \
|
|
|
|
\
|
2023-10-30 23:55:30 +01:00
|
|
|
$OPTIONAL_PACKAGES \
|
|
|
|
mingw-w64-$MSYS2_ARCH-lua51-lgi \
|
|
|
|
\
|
2023-09-26 00:35:21 +02:00
|
|
|
mingw-w64-$MSYS2_ARCH-aalib \
|
|
|
|
mingw-w64-$MSYS2_ARCH-appstream-glib \
|
|
|
|
mingw-w64-$MSYS2_ARCH-atk \
|
|
|
|
mingw-w64-$MSYS2_ARCH-brotli \
|
|
|
|
mingw-w64-$MSYS2_ARCH-cairo \
|
|
|
|
mingw-w64-$MSYS2_ARCH-cfitsio \
|
|
|
|
mingw-w64-$MSYS2_ARCH-drmingw \
|
|
|
|
mingw-w64-$MSYS2_ARCH-gexiv2 \
|
|
|
|
mingw-w64-$MSYS2_ARCH-ghostscript \
|
|
|
|
mingw-w64-$MSYS2_ARCH-gi-docgen \
|
|
|
|
mingw-w64-$MSYS2_ARCH-glib-networking \
|
|
|
|
mingw-w64-$MSYS2_ARCH-gobject-introspection \
|
|
|
|
mingw-w64-$MSYS2_ARCH-gobject-introspection-runtime \
|
|
|
|
mingw-w64-$MSYS2_ARCH-graphviz \
|
|
|
|
mingw-w64-$MSYS2_ARCH-gtk3 \
|
|
|
|
mingw-w64-$MSYS2_ARCH-headers-git \
|
|
|
|
mingw-w64-$MSYS2_ARCH-iso-codes \
|
|
|
|
mingw-w64-$MSYS2_ARCH-json-c \
|
|
|
|
mingw-w64-$MSYS2_ARCH-json-glib \
|
|
|
|
mingw-w64-$MSYS2_ARCH-lcms2 \
|
|
|
|
mingw-w64-$MSYS2_ARCH-lensfun \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libarchive \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libheif \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libiff \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libilbm \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libjxl \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libmypaint \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libspiro \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libwebp \
|
|
|
|
mingw-w64-$MSYS2_ARCH-libwmf \
|
|
|
|
mingw-w64-$MSYS2_ARCH-maxflow \
|
|
|
|
mingw-w64-$MSYS2_ARCH-mypaint-brushes \
|
|
|
|
mingw-w64-$MSYS2_ARCH-openexr \
|
|
|
|
mingw-w64-$MSYS2_ARCH-pango \
|
|
|
|
mingw-w64-$MSYS2_ARCH-poppler \
|
|
|
|
mingw-w64-$MSYS2_ARCH-poppler-data \
|
|
|
|
mingw-w64-$MSYS2_ARCH-python \
|
|
|
|
mingw-w64-$MSYS2_ARCH-python-gobject \
|
|
|
|
mingw-w64-$MSYS2_ARCH-qoi \
|
|
|
|
mingw-w64-$MSYS2_ARCH-shared-mime-info \
|
|
|
|
mingw-w64-$MSYS2_ARCH-suitesparse \
|
|
|
|
mingw-w64-$MSYS2_ARCH-vala \
|
|
|
|
mingw-w64-$MSYS2_ARCH-xpm-nox
|
|
|
|
|
|
|
|
# XXX We've got a weird error when the prefix is in the current dir.
|
|
|
|
# Until we figure it out, this trick seems to work, even though it's
|
|
|
|
# completely ridiculous.
|
2023-10-30 23:55:30 +01:00
|
|
|
rm -fr ~/_install${ARTIFACTS_SUFFIX}
|
2023-09-26 00:35:21 +02:00
|
|
|
mv "_install${ARTIFACTS_SUFFIX}" ~
|
|
|
|
|
|
|
|
export PIKA_PREFIX="`realpath ~/_install`${ARTIFACTS_SUFFIX}"
|
|
|
|
export PATH="$PIKA_PREFIX/bin:$PATH"
|
|
|
|
export PKG_CONFIG_PATH="${PIKA_PREFIX}/lib/pkgconfig:$PKG_CONFIG_PATH"
|
|
|
|
export PKG_CONFIG_PATH="${PIKA_PREFIX}/share/pkgconfig:$PKG_CONFIG_PATH"
|
|
|
|
export LD_LIBRARY_PATH="${PIKA_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
2023-10-30 23:55:30 +01:00
|
|
|
export ACLOCAL_FLAGS="-I/c/msys64/${MSYS2_ARCH_FOLDER}/share/aclocal"
|
|
|
|
export XDG_DATA_DIRS="${PIKA_PREFIX}/share:/${MSYS2_ARCH_FOLDER}/share/"
|
2023-09-26 00:35:21 +02:00
|
|
|
|
|
|
|
mkdir -p _ccache
|
|
|
|
export CCACHE_BASEDIR="$(pwd)"
|
|
|
|
export CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
|
|
|
|
|
|
|
|
# XXX Do not enable ccache this way because it breaks
|
|
|
|
# gobject-introspection rules. Let's see later for ccache.
|
|
|
|
# See: https://github.com/msys2/MINGW-packages/issues/9677
|
|
|
|
#export CC="ccache gcc"
|
|
|
|
|
|
|
|
#ccache --zero-stats
|
|
|
|
#ccache --show-stats
|
|
|
|
|
|
|
|
mkdir "_build${ARTIFACTS_SUFFIX}"
|
|
|
|
cd "_build${ARTIFACTS_SUFFIX}"
|
|
|
|
# We disable javascript as we are not able for the time being to add a
|
|
|
|
# javascript interpreter with GObject Introspection (GJS/spidermonkey
|
|
|
|
# and Seed/Webkit are the 2 contenders so far, but they are not
|
|
|
|
# available on MSYS2 and we are told it's very hard to build them).
|
|
|
|
# TODO: re-enable javascript plug-ins when we can figure this out.
|
|
|
|
meson .. -Dprefix="${PIKA_PREFIX}" \
|
|
|
|
-Ddirectx-sdk-dir="${MSYS2_PREFIX}" \
|
|
|
|
-Djavascript=disabled \
|
|
|
|
-Dbuild-id=technology.heckin.PIKA_official \
|
2023-10-30 23:55:30 +01:00
|
|
|
-Dgi-docgen=disabled
|
2023-09-26 00:35:21 +02:00
|
|
|
ninja
|
|
|
|
ninja install
|
|
|
|
cd ..
|
|
|
|
|
|
|
|
#ccache --show-stats
|
|
|
|
|
|
|
|
# XXX Moving back the prefix to be used as artifacts.
|
|
|
|
mv "${PIKA_PREFIX}" .
|