build: macOS builder updates

Bump openssl, curl, glib, sdl2, sfml, wxWidgets and ffmpeg.

Add support for DIST_INSTALL_TARGETS in order to use `make install_sw`
instead of `make install` for openssl because installing the man pages
and symlinks to them is very painfully slow with my install code. It's
even more painfully slow with whatever whoever did to my macOS virtual
machine.

Add `brew unlink openssl@3` in the brew setup code because someone broke
my compiler and it's not giving precedence to the include directories
passed on the command line, breaking the build.

Remove `-stdlib=libc++` from compiler flags. This was only necessary
when using a 10.7 macOS target, which has both libstdc++ and libc++,
libc++ being the newer and current distribution of the C++ standard
library for clang and macOS. We are now using a 10.10 macOS target which
does not have the old libstdc++, and this compiler option no longer
exists, causing a build failure in glib due to -Werror and an unused
command line option warning.

Remove my patch to link gettext statically for glib, this has been fixed
in the newer versions.

Install meson using pip in the python3 POST_BUILD instead of using a
dist.

Add the variables MAKE and MESON to point to the respective invoking
commands.

Check for /usr/bin/perl before /usr/local/bin/perl, the brew perl no
longer works but the macOS perl does.

Fix overwriting meson with a symlink when meson has already been
installed.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
This commit is contained in:
Rafael Kitover 2023-10-18 23:40:22 +00:00
parent 32581966ae
commit df83b4ba80
No known key found for this signature in database
GPG Key ID: 08AB596679D86240
2 changed files with 60 additions and 48 deletions

View File

@ -108,8 +108,8 @@ DISTS=$DISTS'
unzip https://downloads.sourceforge.net/project/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz bin/unzip
zlib-ng https://github.com/zlib-ng/zlib-ng/archive/ce01b1e41da298334f8214389cc9369540a7560f.tar.gz lib/libz.a
zip https://downloads.sourceforge.net/project/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz bin/zip
openssl https://www.openssl.org/source/openssl-1.1.1g.tar.gz lib/libssl.a
curl https://curl.haxx.se/download/curl-7.85.0.tar.xz lib/libcurl.a
openssl https://www.openssl.org/source/openssl-1.1.1w.tar.gz lib/libssl.a
curl https://github.com/curl/curl/releases/download/curl-8_4_0/curl-8.4.0.tar.bz2 lib/libcurl.a
cmake https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1.tar.gz bin/cmake
zstd https://github.com/facebook/zstd/releases/download/v1.5.2/zstd-1.5.2.tar.gz lib/libzstd.a
hiredis https://github.com/redis/hiredis/archive/refs/tags/v1.0.2.tar.gz lib/libhiredis.a
@ -123,7 +123,7 @@ DISTS=$DISTS'
help2man https://ftp.gnu.org/gnu/help2man/help2man-1.49.2.tar.xz bin/help2man
libiconv https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz lib/libiconv.a
gettext http://ftp.gnu.org/pub/gnu/gettext/gettext-0.21.tar.xz lib/libintl.a
getopt https://fossies.org/linux/misc/getopt-1.1.6.tar.gz bin/getopt
getopt http://frodo.looijaard.name/system/files/software/getopt/getopt-1.1.6.tar.gz bin/getopt
gsed http://ftp.gnu.org/gnu/sed/sed-4.8.tar.xz bin/sed
bison https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz bin/bison
texinfo http://ftp.gnu.org/gnu/texinfo/texinfo-6.8.tar.xz bin/makeinfo
@ -175,21 +175,18 @@ DISTS=$DISTS'
XML-Parser https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz perl5/man/man3/XML*Parser.3*
intltool https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz bin/intltoolize
ninja https://github.com/ninja-build/ninja/archive/v1.11.1.tar.gz bin/ninja
meson https://github.com/mesonbuild/meson/releases/download/0.63.2/meson-0.63.2.tar.gz bin/meson
glib https://gitlab.gnome.org/GNOME/glib/-/archive/6fc6d9ea3e497e2b77789a61bc9cf80bfb3d367d/glib-6fc6d9ea3e497e2b77789a61bc9cf80bfb3d367d.tar.bz2 lib/libglib-2.0.a
glib https://gitlab.gnome.org/GNOME/glib/-/archive/046f70cc0ddd1db310d30b02c692ee1364c41e16/glib-046f70cc0ddd1db310d30b02c692ee1364c41e16.tar.bz2 lib/libglib-2.0.a
libgpg-error https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.45.tar.bz2 lib/libgpg-error.a
libgcrypt https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.10.1.tar.bz2 lib/libgcrypt.a
libsecret https://gitlab.gnome.org/GNOME/libsecret/-/archive/0.20.5/libsecret-0.20.5.tar.bz2 lib/libsecret-1.a
sdl2 https://github.com/libsdl-org/SDL/releases/download/release-2.28.0/SDL2-2.28.0.tar.gz lib/libSDL2.a
sdl2 https://github.com/libsdl-org/SDL/releases/download/release-2.28.4/SDL2-2.28.4.tar.gz lib/libSDL2.a
flac https://ftp.osuosl.org/pub/xiph/releases/flac/flac-1.3.4.tar.xz lib/libFLAC.a
libogg http://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.xz lib/libogg.a
libvorbis http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.xz lib/libvorbis.a
harfbuzz https://github.com/harfbuzz/harfbuzz/releases/download/5.1.0/harfbuzz-5.1.0.tar.xz lib/libharfbuzz.a
sfml https://github.com/SFML/SFML/releases/download/2.5.1/SFML-2.5.1-sources.zip lib/libsfml-system-s.a
sfml https://github.com/SFML/SFML/archive/refs/tags/2.6.0.tar.gz lib/libsfml-system-s.a
shared-mime-info https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.2/shared-mime-info-2.2.tar.bz2 bin/update-mime-database
wxwidgets https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.2.1/wxWidgets-3.2.2.1.tar.bz2 lib/libwx_baseu-3.*.a
wxwidgets https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.3/wxWidgets-3.2.3.tar.bz2 lib/libwx_baseu-3.*.a
graphite2 https://github.com/silnrsi/graphite/archive/425da3d08926b9cf321fc0014dfa979c24d2cf64.tar.gz lib/libgraphite2.a
xvidcore https://downloads.xvid.com/downloads/xvidcore-1.3.7.tar.bz2 lib/libxvidcore.a
fribidi https://github.com/fribidi/fribidi/releases/download/v1.0.12/fribidi-1.0.12.tar.xz lib/libfribidi.a
@ -212,7 +209,7 @@ DISTS=$DISTS'
libxavs https://github.com/Distrotech/xavs/archive/8300fbf4918bca2af1af2aee6a337815e90b51e1.tar.gz lib/libxavs.a
libzmq https://github.com/zeromq/libzmq/releases/download/v4.3.4/zeromq-4.3.4.tar.gz lib/libzmq.a
# libzvbi https://downloads.sourceforge.net/project/zapping/zvbi/0.2.35/zvbi-0.2.35.tar.bz2 lib/libzvbi.a
ffmpeg http://ffmpeg.org/releases/ffmpeg-5.1.1.tar.xz lib/libavformat.a
ffmpeg http://ffmpeg.org/releases/ffmpeg-6.0.tar.xz lib/libavformat.a
'
BUILD_FFMPEG=1
@ -233,6 +230,9 @@ export CONFIGURE_INSTALL_ARGS="--prefix=/usr --sysconfdir=/etc"
export CMAKE_INSTALL_ARGS="-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_FULL_SYSCONFDIR=/etc"
export MESON=meson
export MAKE=make
export MESON_INSTALL_ARGS="--prefix /usr --sysconfdir /etc"
if [ -z "$target_os" ] && [ "$os" = linux ] && [ "$bits" = 64 ]; then
@ -326,6 +326,8 @@ DIST_POST_BUILD="$DIST_POST_BUILD
xmlcatalog --noout --create \"\$(cygpath -m \"\$BUILD_ROOT/root/etc/xml/catalog.xml\")\" || :;
python2 python2 -m pip install six;
python3 python3 -m pip install six; \
rm \"\$BUILD_ROOT/root/bin/meson\"; \
python3 -m pip install meson; \
rebuild_dist libxml2 --with-python --with-python3;
fontconfig mkdir -p \"\$BUILD_ROOT/root/etc/fonts\"; \
touch \"\$BUILD_ROOT/root/etc/fonts/fonts.conf\"; \
@ -345,9 +347,9 @@ DIST_CONFIGURE_OVERRIDES="$DIST_CONFIGURE_OVERRIDES
DIST_BUILD_OVERRIDES="$DIST_BUILD_OVERRIDES
c2man ./Configure -de -Dprefix=/usr -Dmansrc=/usr/share/man/man1 -Dcc=\"\$CC\"; \
sed -i.bak \"s|/[^ ][^ ]*/libfl[.][^ ]*|-L\$BUILD_ROOT/root/lib -lfl|\" Makefile; \
make -j\$NUM_CPUS; \
make install bin=\"\$BUILD_ROOT/root/bin\" mansrc=\"\$BUILD_ROOT/root/share/man/man1\" privlib=\"\$BUILD_ROOT/root/lib/c2man\"
zstd make -j\$NUM_CPUS -C lib install-static DESTDIR=\"\$BUILD_ROOT/root\" LIBDIR=/lib
\$MAKE -j\$NUM_CPUS; \
\$MAKE install bin=\"\$BUILD_ROOT/root/bin\" mansrc=\"\$BUILD_ROOT/root/share/man/man1\" privlib=\"\$BUILD_ROOT/root/lib/c2man\"
zstd \$MAKE -j\$NUM_CPUS -C lib install-static DESTDIR=\"\$BUILD_ROOT/root\" LIBDIR=/lib
setuptools python bootstrap.py; python easy_install.py .
pip easy_install .
ninja python configure.py --bootstrap && cp -af ./ninja \"\$BUILD_ROOT/root/bin\"
@ -424,8 +426,8 @@ DIST_MAKE_ARGS="$DIST_MAKE_ARGS
libgsm CC=\"\$CC \$CFLAGS\"
"
DIST_MAKE_INSTALL_ARGS="$DIST_MAKE_INSTALL_ARGS
openssl MANDIR=/share/man
DIST_INSTALL_TARGETS="$DIST_INSTALL_OVERRIDES
openssl install_sw
"
DIST_EXTRA_LDFLAGS="$DIST_EXTRA_LDFLAGS
@ -605,7 +607,9 @@ num_cpus() {
}
setup_perl() {
if [ -x /usr/local/bin/perl ]; then
if [ -x /usr/bin/perl ]; then
perl=/usr/bin/perl
elif [ -x /usr/local/bin/perl ]; then
perl=/usr/local/bin/perl
else
perl=$(command -v perl || :)
@ -619,25 +623,25 @@ setup_perl() {
ln -sf "$perl" "$BUILD_ROOT/root/bin/perl"
fi
if ! command -v cpanm >/dev/null; then
"$perl" -MApp::Cpan -e 'App::Cpan->run(qw/-f -i App::cpanminus/)'
fi
"$perl" -MCPAN -e 'CPAN::Shell->notest("install", "App::cpanminus")'
fi
}
setup_meson() {
if [ -x /usr/local/bin/meson ]; then
meson=/usr/local/bin/meson
else
meson=$(command -v meson || :)
fi
if [ -n "$meson" ]; then
if [ -n "$msys2" ] || [ -n "$cygwin" ]; then
ln -sf "$meson" "$BUILD_ROOT/root/bin/meson.exe"
meson="$BUILD_ROOT/root/bin/meson.exe"
if ! [ -x "$BUILD_ROOT/root/bin/meson" ]; then
if [ -x /usr/local/bin/meson ]; then
meson=/usr/local/bin/meson
else
ln -sf "$meson" "$BUILD_ROOT/root/bin/meson"
meson=$(command -v meson || :)
fi
if [ -n "$meson" ]; then
if [ -n "$msys2" ] || [ -n "$cygwin" ]; then
ln -sf "$meson" "$BUILD_ROOT/root/bin/meson.exe"
meson="$BUILD_ROOT/root/bin/meson.exe"
else
ln -sf "$meson" "$BUILD_ROOT/root/bin/meson"
fi
fi
fi
}
@ -838,6 +842,9 @@ mac_install_core_deps() {
fi
/usr/local/bin/brew install -q perl meson ninja
# This is necessary because someone broke my compiler.
/usr/local/bin/brew unlink openssl@3 >/dev/null 2>&1 || :
}
setup_tmp_dir() {
@ -1481,7 +1488,7 @@ build_dist() {
echo_eval_run "$configure_override $@"
else
eval "set -- $(dist_args "$current_dist" meson) $extra_dist_args"
echo_run meson .. "$@"
echo_run $MESON .. "$@"
fi
dist_post_configure "$current_dist"
eval "set -- $(dist_ninja_args "$current_dist")"
@ -1566,7 +1573,7 @@ build_dist() {
dist_post_configure "$current_dist"
eval "set -- $(dist_make_args "$current_dist")"
echo_run make -j$NUM_CPUS "$@"
echo_run $MAKE -j$NUM_CPUS "$@"
if [ -z "$install_override" ]; then
rm -rf destdir
@ -1606,7 +1613,7 @@ build_dist() {
eval "set -- $(dist_make_install_args "$current_dist")"
echo_run make "$@" install DESTDIR="$PWD/destdir" || :
echo_run $MAKE "$@" install DESTDIR="$PWD/destdir" || :
install_dist "$current_dist"
else
@ -1627,7 +1634,7 @@ build_dist() {
fi
dist_post_configure "$current_dist"
eval "set -- $(dist_make_args "$current_dist")"
echo_run make -j$NUM_CPUS "$@"
echo_run $MAKE -j$NUM_CPUS "$@"
if [ -z "$install_override" ]; then
rm -rf destdir
@ -1635,7 +1642,7 @@ build_dist() {
eval "set -- $(dist_make_install_args "$current_dist")"
echo_run make "$@" install DESTDIR="$PWD/destdir" || :
echo_run $MAKE "$@" install DESTDIR="$PWD/destdir" || :
install_dist "$current_dist"
else
@ -1701,7 +1708,7 @@ build_dist() {
eval "set -- $DIST_BARE_MAKE_ARGS $(dist_make_args "$current_dist")"
echo_run make -j$NUM_CPUS "$@"
echo_run $MAKE -j$NUM_CPUS "$@"
if [ -z "$install_override" ]; then
eval "set -- $(dist_make_install_args "$current_dist")"
@ -1755,9 +1762,9 @@ make_install() {
unset LIBRARY_PATH
if grep -Eq 'DESTDIR|cmake_install\.cmake' $(find . -name Makefile -o -name makefile -o -name '*.mk' -o -name '*.mak') 2>/dev/null; then
echo_eval_run make install $(dist_make_args $current_dist) prefix="${prefix}" PREFIX="${prefix}" DESTDIR="$PWD/destdir" "$@" || :
echo_eval_run $MAKE $(dist_install_target $current_dist) $(dist_make_args $current_dist) prefix="${prefix}" PREFIX="${prefix}" DESTDIR="$PWD/destdir" "$@" || :
else
echo_eval_run make install $(dist_make_args $current_dist) prefix="$PWD/destdir${prefix}" PREFIX="$PWD/destdir${prefix}" INSTALL_PREFIX="$PWD/destdir${prefix}" INSTALL_ROOT="$PWD/destdir${prefix}" INSTALLTOP="/..${prefix}/" "$@" || :
echo_eval_run $MAKE $(dist_install_target $current_dist) $(dist_make_args $current_dist) prefix="$PWD/destdir${prefix}" PREFIX="$PWD/destdir${prefix}" INSTALL_PREFIX="$PWD/destdir${prefix}" INSTALL_ROOT="$PWD/destdir${prefix}" INSTALLTOP="/..${prefix}/" "$@" || :
fi
export LIBRARY_PATH="$ORIG_LIBRARY_PATH"
@ -2285,6 +2292,15 @@ dist_configure_override() {
puts "$(table_line DIST_CONFIGURE_OVERRIDES $current_dist)" || :
}
dist_install_target() {
current_dist=$1
[ -n "$current_dist" ] || die 'dist_install_override: dist name required'
target="$(table_line DIST_INSTALL_TARGETS $current_dist)" || :
[ -z "$target" ] && target=install
puts "$target"
}
dist_install_override() {
current_dist=$1
[ -n "$current_dist" ] || die 'dist_install_override: dist name required'

View File

@ -80,10 +80,10 @@ export PATH=/usr/bin:/bin:/usr/sbin:/sbin
export CC=clang
export CXX=clang++
export CPPFLAGS="-DICONV_CONST="
export CFLAGS="-m${target_bits} -framework Carbon -framework Foundation -framework CoreServices -stdlib=libc++ -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
export CXXFLAGS="-m${target_bits} -stdlib=libc++ -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
export OBJCXXFLAGS="-m${target_bits} -stdlib=libc++ -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
export LDFLAGS="-m${target_bits} -framework Carbon -framework Foundation -framework CoreServices -stdlib=libc++ -Wno-unused-command-line-argument -Wl,-no_compact_unwind"
export CFLAGS="-m${target_bits} -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
export CXXFLAGS="-m${target_bits} -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
export OBJCXXFLAGS="-m${target_bits} -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
export LDFLAGS="-m${target_bits} -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -Wl,-no_compact_unwind"
export UUID_CFLAGS="-I\$BUILD_ROOT/root/stow/libuuid/include"
export UUID_LIBS="-L\$BUILD_ROOT/root/stow/libuuid/lib -luuid"
@ -131,10 +131,6 @@ else
table_line_replace DIST_CONFIGURE_OVERRIDES openssl './Configure darwin64-x86_64-cc no-shared --prefix=/usr --openssldir=/etc/ssl'
fi
table_line_append DIST_PATCHES glib " \
https://gist.githubusercontent.com/rkitover/9f3cceac7eaa9625ce605f052c56f3ba/raw/2ceb1de9a9592e39a657141684beae4e4b33abcd/glib-static-gettext.patch \
"
stdint_h=
if [ -f "$(xcode-select -p)/SDKs/MacOSX.sdk/usr/include/stdint.h" ]; then
@ -190,7 +186,7 @@ table_line_append DIST_PRE_BUILD ffmpeg "sed -i.bak 's/-lstdc++/-lc++/g' configu
#table_line_replace DISTS wxwidgets "https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.5.1/wxWidgets-3.0.5.1.tar.bz2 lib/libwx_baseu-3.0*.a"
# For 10.7 add --disable-stl
table_line_append DIST_ARGS wxwidgets "--with-macosx-version-min=\$MACOSX_DEPLOYMENT_TARGET LDFLAGS=\"\$LDFLAGS -stdlib=libc++\""
table_line_append DIST_ARGS wxwidgets "--with-macosx-version-min=\$MACOSX_DEPLOYMENT_TARGET"
table_line_append DIST_ARGS libmodplug "CC=clang++ CXX=clang++"