207 lines
6.8 KiB
Bash
207 lines
6.8 KiB
Bash
# PKGCONFIG for android-qt5
|
|
# Maintainer in the AUR: Gonzalo Exequiel Pedone <hipersayan DOT x AT gmail DOT com>
|
|
# Contributor: Jiaxi Hu <sftrytry _AT_ gmail _DOT_ com>
|
|
# Contributor: jimmy00784 <jimmy00784@gmail.com>
|
|
# Contributor: Ricardo (XenGi) Band <email@ricardo.band>
|
|
# Contributor: Martchus <martchus@gmx.net>
|
|
|
|
# Useful link to keep track of latest API changes:
|
|
# https://developer.android.com/ndk/downloads/revision_history
|
|
|
|
_pkg_arch=armv7a-eabi
|
|
_android_arch=armeabi-v7a
|
|
_android_platform=21
|
|
|
|
# Minimum Android platform based on:
|
|
# https://developer.android.com/about/dashboards/
|
|
export ANDROID_MINIMUM_PLATFORM=${ANDROID_MINIMUM_PLATFORM:-$_android_platform}
|
|
|
|
export ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT:-/opt/android-ndk}
|
|
export ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT:-/opt/android-sdk}
|
|
|
|
pkgname=android-$_pkg_arch-qt5
|
|
pkgver=5.12.2
|
|
pkgrel=1
|
|
pkgdesc="Qt 5 for Android"
|
|
arch=('x86_64')
|
|
url='https://www.qt.io'
|
|
license=('GPL3' 'LGPL')
|
|
makedepends=('libgl'
|
|
'sqlite'
|
|
'zlib'
|
|
'python2'
|
|
'python' # Qt Qml requires Python 3
|
|
'ruby'
|
|
'gperf'
|
|
'libxslt'
|
|
'fontconfig'
|
|
'java-environment-openjdk<=8'
|
|
"android-$_pkg_arch-openssl")
|
|
depends=('java-runtime-headless-openjdk<=8'
|
|
'apache-ant'
|
|
'android-ndk'
|
|
"android-platform-$ANDROID_MINIMUM_PLATFORM"
|
|
'android-sdk'
|
|
'android-sdk-build-tools'
|
|
'android-sdk-platform-tools')
|
|
groups=('android-qt5')
|
|
conflicts=("android-qt5-${_android_arch}")
|
|
replaces=("android-qt5-${_android_arch}")
|
|
|
|
case "$_pkg_arch" in
|
|
aarch64)
|
|
optdepends=('android-google-apis-aarch64: AVD support'
|
|
'android-aarch64-system-image: AVD support')
|
|
;;
|
|
armv7a-eabi)
|
|
optdepends=('android-google-apis-armv7a-eabi: AVD support'
|
|
'android-armv7a-eabi-system-image: AVD support')
|
|
;;
|
|
x86)
|
|
optdepends=('android-google-apis-x86: AVD support'
|
|
'android-x86-system-image: AVD support')
|
|
;;
|
|
x86-64)
|
|
optdepends=('android-google-apis-x86-64: AVD support'
|
|
'android-x86-64-system-image: AVD support')
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
optdepends+=("android-$_pkg_arch-openssl: SSL support for Qt Network")
|
|
|
|
options=('!strip'
|
|
'!buildflags'
|
|
'staticlibs'
|
|
'!emptydirs')
|
|
_pkgfqn="qt-everywhere-src-${pkgver}"
|
|
source=("http://download.qt-project.org/official_releases/qt/${pkgver:0:4}/${pkgver}/single/${_pkgfqn}.tar.xz"
|
|
'0001-Fix-clang-libc-build-under-Android.patch'
|
|
'0002-Fix-androiddeployqt-search-paths.patch'
|
|
'0001-Disable-mapboxgl.patch')
|
|
sha256sums=('59b8cb4e728450b21224dcaaa40eb25bafc5196b6988f2225c394c6b7f881ff5'
|
|
'0a7e5d8d2192b69af5b648db57de2feb2e70348c73e0e7d9570d8dc170437aad'
|
|
'a958611bef4385b4e2d91ece10ab5cd48f621628c07612a18e36abae3cfbf440'
|
|
'add336aab427a319203205355029229592713cebcda2e8bc4ce99efdb0322b76')
|
|
|
|
_pref=/opt/android-libs/$_pkg_arch
|
|
|
|
prepare() {
|
|
cd ${_pkgfqn}
|
|
|
|
pushd qtbase
|
|
patch -Np1 -i "../../0001-Fix-clang-libc-build-under-Android.patch"
|
|
patch -Np1 -i "../../0002-Fix-androiddeployqt-search-paths.patch"
|
|
popd
|
|
|
|
pushd qtlocation
|
|
# skip building mapboxgl as it increases compile time significantly and
|
|
# likely not a lot of people actually using it; if you need it, just remove the
|
|
# following line:
|
|
patch -Np1 -i "../../0001-Disable-mapboxgl.patch"
|
|
popd
|
|
|
|
sed -i "s/android-16/android-$ANDROID_MINIMUM_PLATFORM/g" qtbase/mkspecs/features/android/sdk.prf
|
|
sed -i "s/android-16/android-$ANDROID_MINIMUM_PLATFORM/g" qtbase/src/android/jar/jar.pro
|
|
sed -i "s/android-16/android-$ANDROID_MINIMUM_PLATFORM/g" qtgamepad/src/plugins/gamepads/android/jar/jar.pro
|
|
sed -i "s/android-16/android-$ANDROID_MINIMUM_PLATFORM/g" qtbase/configure.pri
|
|
}
|
|
|
|
get_last() {
|
|
ls $1 | sort -V | tail -n 1
|
|
}
|
|
|
|
build() {
|
|
cd ${_pkgfqn}
|
|
|
|
unset CC CXX CFLAGS CXXFLAGS LDFLAGS CHOST QMAKESPEC QTDIR CARCH
|
|
|
|
export ANDROID_BUILD_TOOLS_REVISION=${ANDROID_BUILD_TOOLS_REVISION:-$(get_last ${ANDROID_SDK_ROOT}/build-tools)}
|
|
export ANDROID_API_VERSION=${ANDROID_API_VERSION:-android-$ANDROID_MINIMUM_PLATFORM}
|
|
export ANDROID_NDK_PLATFORM=${ANDROID_NDK_PLATFORM:-android-$ANDROID_MINIMUM_PLATFORM}
|
|
export PYTHON=/usr/bin/python2
|
|
|
|
configue_opts="
|
|
-confirm-license
|
|
-opensource
|
|
-silent
|
|
-prefix ${_pref}
|
|
-archdatadir ${_pref}/lib/qt
|
|
-datadir ${_pref}/share/qt
|
|
-examplesdir ${_pref}/share/qt/examples
|
|
-testsdir ${_pref}/share/qt/tests
|
|
-xplatform android-clang
|
|
-nomake tests
|
|
-nomake examples
|
|
-android-ndk ${ANDROID_NDK_ROOT}
|
|
-android-sdk ${ANDROID_SDK_ROOT}
|
|
-android-ndk-host linux-x86_64
|
|
-android-toolchain-version 4.9
|
|
-skip qtserialport
|
|
-no-warnings-are-errors
|
|
-no-pkg-config
|
|
-qt-zlib
|
|
-qt-freetype
|
|
-openssl-runtime
|
|
-android-arch ${_android_arch}
|
|
-android-ndk-platform ${ANDROID_NDK_PLATFORM}
|
|
-I/opt/android-libs/$_pkg_arch/include"
|
|
|
|
[[ $ANDROID_DEBUG_BUILD ]] \
|
|
&& configue_opts+=' -debug-and-release' \
|
|
|| configue_opts+=' -release'
|
|
|
|
# add architecture specific options
|
|
case "$_pkg_arch" in
|
|
x86*)
|
|
configue_opts+="
|
|
-no-sql-mysql
|
|
-no-sql-psql"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
./configure ${configue_opts}
|
|
|
|
make $MAKEFLAGS
|
|
}
|
|
|
|
package() {
|
|
cd ${_pkgfqn}
|
|
|
|
make INSTALL_ROOT=${pkgdir} install
|
|
|
|
case "$_pkg_arch" in
|
|
aarch64)
|
|
toolchain=aarch64-linux-android-4.9
|
|
stripFolder=aarch64-linux-android
|
|
;;
|
|
armv7a-eabi)
|
|
toolchain=arm-linux-androideabi-4.9
|
|
stripFolder=arm-linux-androideabi
|
|
;;
|
|
x86)
|
|
toolchain=x86-4.9
|
|
stripFolder=i686-linux-android
|
|
;;
|
|
x86-64)
|
|
toolchain=x86_64-4.9
|
|
stripFolder=x86_64-linux-android
|
|
;;
|
|
esac
|
|
|
|
local STRIP=${ANDROID_NDK_ROOT}/toolchains/${toolchain}/prebuilt/linux-x86_64/${stripFolder}/bin/strip
|
|
find ${pkgdir}/${_pref}/bin -type f ! -name '*.pl' -exec strip {} \;
|
|
find ${pkgdir}/${_pref}/lib -type f -name 'lib*.so' -exec ${STRIP} {} \;
|
|
find ${pkgdir}/${_pref}/lib \( -type f -name 'lib*.a' ! -name 'libQt5Bootstrap.a' ! -name 'libQt5QmlDevTools.a' \) -exec ${STRIP} {} \;
|
|
find ${pkgdir}/${_pref}/lib/qt/plugins -type f -name 'lib*.so' -exec ${STRIP} {} \;
|
|
|
|
# fix plugin path in Android-specific dependency file
|
|
sed -i 's/\"plugins\//\"lib\/qt\/plugins\//g' ${pkgdir}/${_pref}/lib/*-android-dependencies.xml
|
|
|
|
# drop QMAKE_PRL_BUILD_DIR because reference the build dir
|
|
find "${pkgdir}/" -type f -name '*.prl' \
|
|
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
|
|
}
|