Files
BMLFS/build-scripts/qt5.build
2020-10-25 23:56:15 -05:00

122 lines
5.7 KiB
Bash

#! /bin/bash
# QT5
# Source: https://download.qt.io/archive/qt/5.15/5.15.1/single/qt-everywhere-src-5.15.1.tar.xz
#
# $BUILD = Directory to temporarily install
# $PKGS = Directory to store built packages
#
# DEPS
# Required: Xorg-Libs
# Recommended: alsa-lib, ca-certificates, Cups, GLib, gst-plugins-base, HarfBuzz, ICU, JasPer,
# Recommended: libjpeg-turbo, libmng, libpng, LibTIFF, libwebp, libxkbcommon, Mesa, MIT Kerberos,
# Recommended: mtdev, pcre2, SQLite, Wayland, xcb-util-image, xcb-util-keysyms, xcb-util, xcb-util-wm
# Optional: BlueZ, ibus, libinput, MariaDB or MySQL, pciutils, PostgreSQL, Python 2, PulseAudio,
# Optional: SDL2, unixODBC, assimp, Flite, Firebird, FreeTDS, libproxy, OpenAL, speech-dispatcher,
# Optional: tslib, and Vulkan
patch -Np0 -i ../patches/qt5-5.15.1-void/0001-addlr.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0002-gl-lib-dir.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0007-musl-iconv-no-bom.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0014-musl-set_thread_name_np.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0016-musl-stackbottom.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0018-musl-timeval.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0048-big-endian-qtquick-software.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0049-big-endian-scroll.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0050-qmake-mkspecs.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/0060-upstream-65243ad7.patch
patch -Np0 -i ../patches/qt5-5.15.1-void/qtnetwork-5.15.0-libressl.patch
export CFLAGS="-DOPENSSL_NO_PSK -DOPENSSL_NO_NEXTPROTONEG"
export CXXFLAGS="${CFLAGS} -Wno-deprecated-declarations -Wno-class-memaccess -Wno-packed-not-aligned"
export LDFLAGS="-pthread -ldl -fPIE -Wl,-z,stack-size=2097152 -Wl,--no-keep-memory"
export QT5PREFIX=/opt/qt5 &&
export LD_LIBRARY_PATH=${PWD}/qtbase/lib:${PWD}/qttools/lib:${LD_LIBRARY_PATH} &&
sudo -S mkdir -pv ${BUILD}/opt/qt-5.15.1 &&
sudo -S ln -sfnv qt-5.15.1 ${BUILD}/opt/qt5 &&
# Allows using Python 3 instead of Python 2. This command destroys the build for QtWebEngine
sed -i 's/python /python3 /' qtdeclarative/qtdeclarative.pro \
qtdeclarative/src/3rdparty/masm/masm.pri &&
MAKE=/usr/bin/make \
CC="cc" CXX="c++" CPP="cpp" LD="c++" AR="ar" AS="as" NM="nm" \
OBJDUMP="objdump" STRIP="strip" RANLIB="ranlib" \
CFLAGS=$CFLAGS \
CXXFLAGS=$CXXFLAGS \
LDFLAGS=$LDFLAGS \
./configure -prefix $QT5PREFIX \
-sysconfdir /etc/xdg \
-confirm-license \
-opensource \
-dbus-linked \
-openssl-linked \
-system-harfbuzz \
-system-sqlite \
-nomake examples \
-no-rpath \
-fontconfig -icu \
-no-pch -no-strip \
-optimized-qmake -no-feature-eglfs_brcm \
-no-use-gold-linker -system-libjpeg \
-system-libpng -system-zlib \
-system-pcre -no-separate-debug-info \
-opengl -no-reduce-relocations \
-skip qtwebengine &&
read -p "Compile?" && make -j2 &&
sudo -S make INSTALL_ROOT=$BUILD install &&
unset CFLAGS CXXFLAGS LDFLAGS LD_LIBRARY_PATH &&
sudo -S -E find ${BUILD}/opt/qt5/ -name \*.prl \
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; &&
sudo -S install -v -dm755 ${BUILD}/usr/share/pixmaps/ &&
sudo -S install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \
${BUILD}/usr/share/pixmaps/assistant-qt5.png &&
sudo -S install -v -Dm644 qttools/src/designer/src/designer/images/designer.png \
${BUILD}/usr/share/pixmaps/designer-qt5.png &&
sudo -S install -v -Dm644 qttools/src/linguist/linguist/images/icons/linguist-128-32.png \
${BUILD}/usr/share/pixmaps/linguist-qt5.png &&
sudo -S install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \
${BUILD}/usr/share/pixmaps/qdbusviewer-qt5.png &&
sudo -S install -dm755 ${BUILD}/usr/share/applications &&
for d in assistant-qt5.desktop designer-qt5.desktop \
linguist-qt5.desktop qdbusviewer-qt5.desktop; do
sudo -S cp -v ../files/qt5-lfs/$d ${BUILD}/usr/share/applications/
done &&
sudo -S mkdir -pv ${BUILD}/usr/bin &&
for file in moc uic rcc qmake lconvert lrelease lupdate; do
sudo -S ln -sv /opt/qt5/bin/$file ${BUILD}/usr/bin/$file-qt5
done
sudo -S mkdir -pv ${BUILD}/etc/profile.d/ &&
sudo -S cp -v ../files/qt5-lfs/qt5.sh ${BUILD}/etc/profile.d/ &&
sudo -S chmod -v +x ${BUILD}/etc/profile.d/qt5.sh &&
cd $BUILD && sudo -S mkdir -v ${BUILD}/install &&
cat > /tmp/slack-desc << "EOF"
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
qt5: qt5 (a multi-platform C++ graphical user interface toolkit)
qt5:
qt5: Qt is a cross-platform C++ application framework. Qt's primary feature
qt5: is its rich set of widgets that provide standard GUI functionality.
qt5:
qt5: Homepage: http://qt-project.org
qt5:
qt5:
qt5:
qt5:
qt5:
EOF
sudo -S mv -v /tmp/slack-desc install/ &&
sudo -S makepkg -l y -c n $PKGS/qt5-5.15.1-$(uname -m)-mlfs.txz &&
sudo -S rm -rf ${BUILD}/*