Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
A script to build qmake (which is part of Qt) on device
#!/bin/sh
##
## A script for building qmake on device.
## Use in Termux only !
##
## Usage:
##
## git clone https://github.com/termux/x11-packages
## cp termux-build-qmake.sh x11-packages/packages/qt5-base/
## cd x11-packages/packages/qt5-base/
## bash termux-build-qmake.sh
set -e
TERMUX_PREFIX=/data/data/com.termux/files/usr
if [ $(uname -o) != Android ]; then
echo "This script should be run in Termux !"
exit 1
fi
if [ -e "build.sh" ]; then
source ./build.sh
fi
apt update
apt upgrade -y
apt install -y coreutils clang curl make
hash -r
## Override function from build.sh since we are
## building for host.
termux_step_configure () {
export PKG_CONFIG_SYSROOT_DIR="${TERMUX_PREFIX}"
./configure -v \
-opensource \
-confirm-license \
-release \
-platform termux \
-optimized-qmake \
-no-rpath \
-no-use-gold-linker \
-prefix "${TERMUX_PREFIX}" \
-docdir "${TERMUX_PREFIX}/share/doc/qt" \
-headerdir "${TERMUX_PREFIX}/include/qt" \
-archdatadir "${TERMUX_PREFIX}/lib/qt" \
-datadir "${TERMUX_PREFIX}/share/qt" \
-sysconfdir "${TERMUX_PREFIX}/etc/xdg" \
-examplesdir "${TERMUX_PREFIX}/share/doc/qt/examples" \
-plugindir "$TERMUX_PREFIX/libexec/qt" \
-nomake examples \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtcharts \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdeclarative \
-skip qtdoc \
-skip qtgamepad \
-skip qtgraphicaleffects \
-skip qtimageformats \
-skip qtlocation \
-skip qtmacextras \
-skip qtmultimedia \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtquickcontrols \
-skip qtquickcontrols2 \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtserialbus \
-skip qtserialport \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtvirtualkeyboard \
-skip qtwayland \
-skip qtwebchannel \
-skip qtwebengine \
-skip qtwebglplugin \
-skip qtwebsockets \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-no-dbus \
-no-accessibility \
-no-glib \
-no-eventfd \
-no-inotify \
-icu \
-system-pcre \
-system-zlib \
-ssl \
-openssl-linked \
-no-system-proxies \
-no-cups \
-system-harfbuzz \
-no-opengl \
-no-vulkan \
-qpa xcb \
-no-eglfs \
-no-gbm \
-no-kms \
-no-linuxfb \
-no-mirclient \
-system-xcb \
-no-libudev \
-no-evdev \
-no-libinput \
-no-mtdev \
-no-tslib \
-system-xkbcommon-x11 \
-no-xkbcommon-evdev \
-gif \
-ico \
-system-libpng \
-system-libjpeg \
-sql-sqlite \
-no-feature-dnslookup
}
if [ ! -e "qt-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" ]; then
echo "[*] Downloading Qt sources..."
curl -L --output "qt-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz" "${TERMUX_PKG_SRCURL}"
fi
echo "[*] Unpacking Qt sources..."
rm -rf "qt-everywhere-src-${TERMUX_PKG_VERSION}"
tar xf "qt-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz"
tar xf termux-prebuilt-qmake.txz
cd "qt-everywhere-src-${TERMUX_PKG_VERSION}" && {
## On-device hostbuild patch.
patch -p1 -i ../termux-prebuilt-qmake/misc/qt5-termux-build-host.patch
## We need only qmake generated by configure, so ignoring
## errors here.
set +e
echo "[*] Running ./configure..."
termux_step_configure
set -e
cd qtbase/qmake && {
## Bootstrap qmake.
echo "[*] Bootstrapping qmake..."
../bin/qmake -spec termux -o Makefile.qmake-aux qmake-aux.pro
make -f Makefile.qmake-aux
## Just verify.
echo "[*] Verifying..."
./qmake -spec termux -o Makefile.qmake-aux qmake-aux.pro
make -f Makefile.qmake-aux
cd -
}
cd ../
}
echo "[*] Done. Check file './qmake-android-$(uname -m)'."
cp "qt-everywhere-src-${TERMUX_PKG_VERSION}/qtbase/qmake/qmake" "./qmake-android-$(uname -m)"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.