updates qtbase and qtdeclarative for host building (#313)

This commit is contained in:
Simeon Huang 2021-05-10 13:05:20 +01:00 committed by Yaksh Bariya
parent 3faa0063f6
commit 595d186f14
No known key found for this signature in database
GPG Key ID: F7486BA7D3D27581
6 changed files with 83 additions and 38 deletions

View File

@ -98,13 +98,7 @@ termux_step_configure () {
-no-feature-systemsemaphore
}
termux_step_make() {
make -j "${TERMUX_MAKE_PROCESSES}"
}
termux_step_make_install() {
make install
termux_step_post_make_install() {
#######################################################
##
## Compiling necessary libraries for target.
@ -182,6 +176,15 @@ termux_step_make_install() {
sed -i \
's|/lib/qt//mkspecs/termux-cross"|/lib/qt/mkspecs/termux"|g' \
"${TERMUX_PREFIX}/lib/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake"
## Create qmake.conf suitable for compiling host tools (for other modules)
install -Dm644 \
"${TERMUX_PKG_BUILDER_DIR}/qmake.host.conf" \
"${TERMUX_PREFIX}/lib/qt/mkspecs/termux-host/qmake.conf"
install -Dm644 \
"${TERMUX_PKG_BUILDER_DIR}/qplatformdefs.host.h" \
"${TERMUX_PREFIX}/lib/qt/mkspecs/termux-host/qplatformdefs.h"
}
termux_step_create_debscripts() {

View File

@ -0,0 +1,15 @@
# This configuration is for the termux builder (Ubuntu glibc)
QT_QPA_DEFAULT_PLATFORM = xcb
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QMAKE_CFLAGS += -I/data/data/com.termux/files/usr/include
QMAKE_CXXFLAGS += -I/data/data/com.termux/files/usr/include
load(qt_config)

View File

@ -0,0 +1,4 @@
#include "../android-clang/qplatformdefs.h"
#define fseeko64 fseeko
#define ftello64 ftello
#define fopen64 fopen

View File

@ -1,7 +1,9 @@
TERMUX_SUBPKG_DESCRIPTION="Tools for cross build on the host machine"
TERMUX_SUBPKG_DESCRIPTION="Tools for cross build on the host (NOT for Termux)"
TERMUX_SUBPKG_DEPENDS="qt5-qtbase"
TERMUX_SUBPKG_PLATFORM_INDEPENDENT=true
TERMUX_SUBPKG_INCLUDE="
opt/qt/cross/bin/*
opt/qt/cross/lib/*
lib/qt/mkspecs/termux-cross/*
lib/qt/mkspecs/termux-host/*
"

View File

@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="The Qt Declarative module provides classes for using GUI
TERMUX_PKG_LICENSE="LGPL-3.0"
TERMUX_PKG_MAINTAINER="Simeon Huang <symeon@librehat.com>"
TERMUX_PKG_VERSION=5.12.10
TERMUX_PKG_REVISION=3
TERMUX_PKG_REVISION=6
TERMUX_PKG_SRCURL="https://download.qt.io/official_releases/qt/5.12/${TERMUX_PKG_VERSION}/submodules/qtdeclarative-everywhere-src-${TERMUX_PKG_VERSION}.tar.xz"
TERMUX_PKG_SHA256=ae56708646954f93eae087f20408fdbce9b977af565202ddcb4a3119e90f8a16
TERMUX_PKG_DEPENDS="qt5-qtbase"
@ -11,9 +11,9 @@ TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase-cross-tools"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_NO_STATICSPLIT=true
# Not packaging the host tools and libraries for now (unlikely to be useful)
# Ignore bootstrap changes because of the hijacking
TERMUX_PKG_RM_AFTER_INSTALL="
opt/qt
opt/qt/cross/lib/libQt5Bootstrap.*
"
# Replacing the old qt5-base packages
@ -22,7 +22,7 @@ TERMUX_PKG_REPLACES="qt5-declarative"
termux_step_pre_configure () {
#######################################################
##
## Hijack the bootstrap library
## Hijack the bootstrap library for cross building
##
#######################################################
for i in a prl; do
@ -39,29 +39,57 @@ termux_step_configure () {
-spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross"
}
termux_step_make() {
make -j "${TERMUX_MAKE_PROCESSES}"
}
termux_step_make_install() {
make install
termux_step_post_make_install () {
#######################################################
##
## Compiling necessary binaries for target.
##
#######################################################
## Qt Declarative utilities.
for i in qmlcachegen qmlimportscanner qmllint qmlmin; do
cd "${TERMUX_PKG_SRCDIR}/tools/${i}" && {
"${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \
-spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross"
make -j "${TERMUX_MAKE_PROCESSES}"
install -Dm700 "../../bin/${i}" "${TERMUX_PREFIX}/bin/${i}"
}
done
# Install the QmlDevTools for target (needed by some packages such as qttools)
install -Dm644 ${TERMUX_PKG_SRCDIR}/lib/libQt5QmlDevTools.a "${TERMUX_PREFIX}/lib/libQt5QmlDevTools.a"
install -Dm644 ${TERMUX_PKG_SRCDIR}/lib/libQt5QmlDevTools.prl "${TERMUX_PREFIX}/lib/libQt5QmlDevTools.prl"
#######################################################
##
## Restore the bootstrap library
##
#######################################################
for i in a prl; do
rm -f "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}"
cp -p "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}.bak" \
"${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}"
rm -f "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}.bak"
done
unset i
#######################################################
##
## Compiling necessary binaries for the host
##
#######################################################
## libQt5QmlDevTools.a (qt5-declarative)
cd "${TERMUX_PKG_SRCDIR}/src/qmldevtools" && {
make clean
"${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \
-spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross"
-spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-host"
make -j "${TERMUX_MAKE_PROCESSES}"
install -Dm644 ../../lib/libQt5QmlDevTools.a "${TERMUX_PREFIX}/lib/libQt5QmlDevTools.a"
install -Dm644 ../../lib/libQt5QmlDevTools.prl "${TERMUX_PREFIX}/lib/libQt5QmlDevTools.prl"
install -Dm644 ../../lib/libQt5QmlDevTools.a "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5QmlDevTools.a"
install -Dm644 ../../lib/libQt5QmlDevTools.prl "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5QmlDevTools.prl"
}
## Qt Declarative utilities.
@ -70,10 +98,10 @@ termux_step_make_install() {
make clean
"${TERMUX_PREFIX}/opt/qt/cross/bin/qmake" \
-spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-cross"
-spec "${TERMUX_PREFIX}/lib/qt/mkspecs/termux-host"
make -j "${TERMUX_MAKE_PROCESSES}"
install -Dm700 "../../bin/${i}" "${TERMUX_PREFIX}/bin/${i}"
install -Dm700 "../../bin/${i}" "${TERMUX_PREFIX}/opt/qt/cross/bin/${i}"
}
done
@ -93,19 +121,6 @@ termux_step_make_install() {
## Remove *.la files.
find "${TERMUX_PREFIX}/lib" -iname \*.la -delete
#######################################################
##
## Restore the bootstrap library
##
#######################################################
for i in a prl; do
rm -f "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}"
cp -p "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}.bak" \
"${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}"
rm -f "${TERMUX_PREFIX}/opt/qt/cross/lib/libQt5Bootstrap.${i}.bak"
done
unset i
find "${TERMUX_PREFIX}/opt/qt/cross/lib" -iname \*.la -delete
}

View File

@ -0,0 +1,6 @@
TERMUX_SUBPKG_DESCRIPTION="Qt declarative module for cross build (NOT for Termux)"
TERMUX_SUBPKG_DEPENDS="qt5-qtdeclarative"
TERMUX_SUBPKG_PLATFORM_INDEPENDENT=true
TERMUX_SUBPKG_INCLUDE="
opt/qt/cross/*
"