399 lines
12 KiB
Bash
399 lines
12 KiB
Bash
# Template file for 'qt'
|
|
pkgname=qt
|
|
version=4.8.7
|
|
revision=27
|
|
_distname=qt-everywhere-opensource-src
|
|
patch_args="-Np1"
|
|
wrksrc=${_distname}-${version}
|
|
homepage="https://qt.io/"
|
|
short_desc="A cross-platform application and UI framework"
|
|
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
|
license="GPL-3, LGPL-2.1"
|
|
distfiles="https://download.qt.io/archive/qt/${version%.*}/${version}/${_distname}-${version}.tar.gz"
|
|
checksum=e2882295097e47fe089f8ac741a95fef47e0a73a3f3cdf21b56990638f626ea0
|
|
|
|
hostmakedepends="perl sqlite pkg-config"
|
|
makedepends="
|
|
MesaLib-devel libressl-devel unixodbc-devel libXv-devel libXinerama-devel
|
|
libXrandr-devel libXcursor-devel glib-devel cups-devel sqlite-devel
|
|
alsa-lib-devel libmng-devel libSM-devel gtk+-devel libnotify-devel
|
|
libmysqlclient-devel postgresql-libs-devel pulseaudio-devel tslib-devel"
|
|
depends="qtchooser hicolor-icon-theme"
|
|
replaces="qt-qtconfig>=0"
|
|
|
|
CXXFLAGS="-std=gnu++98 -Wno-deprecated -fno-delete-null-pointer-checks -fno-lifetime-dse -Wno-class-memaccess"
|
|
|
|
if [ -n "$CROSS_BUILD" ]; then
|
|
hostmakedepends+=" qt-qmake qt-host-tools"
|
|
LDFLAGS="-L${XBPS_CROSS_BASE}/usr/lib"
|
|
fi
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
mips*) broken="Serveral Assembler messages: Error: branch out of range" ;;
|
|
esac
|
|
|
|
do_configure() {
|
|
local _opts _spec
|
|
echo "QMAKE_CXXFLAGS += -std=gnu++98" >> src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri
|
|
echo "QMAKE_CXXFLAGS += -std=gnu++98" >> src/plugins/accessible/qaccessiblebase.pri
|
|
echo "QMAKE_LFLAGS += -Wl,-rpath-link,${wrksrc}/lib" >> mkspecs/features/help.prf
|
|
|
|
_opts+=" -confirm-license"
|
|
_opts+=" -opensource"
|
|
_opts+=" -prefix /usr"
|
|
_opts+=" -sysconfdir /etc"
|
|
_opts+=" -bindir /usr/lib/qt/bin"
|
|
_opts+=" -datadir /usr/share/qt"
|
|
_opts+=" -docdir /usr/share/doc/qt"
|
|
_opts+=" -plugindir /usr/lib/qt/plugins"
|
|
_opts+=" -importdir /usr/lib/qt/imports"
|
|
_opts+=" -translationdir /usr/share/qt/translations"
|
|
|
|
if [ -n "$CROSS_BUILD" ]; then
|
|
_opts+=" -force-pkg-config"
|
|
_opts+=" -continue"
|
|
_opts+=" -xplatform ${CXX}"
|
|
_opts+=" -exceptions"
|
|
_opts+=" -make libs"
|
|
_opts+=" -make tools"
|
|
_opts+=" -make docs"
|
|
_opts+=" -make translations"
|
|
_opts+=" -qt3support"
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
armv5tel)
|
|
_opts+=" -arch arm"
|
|
_spec="arm-linux-gnueabi-c++"
|
|
;;
|
|
armv5tel-musl)
|
|
_opts+=" -arch arm"
|
|
_spec="arm-linux-musleabi-c++"
|
|
;;
|
|
armv6l)
|
|
_opts+=" -arch arm"
|
|
_spec="arm-linux-gnueabihf-c++"
|
|
;;
|
|
armv6l-musl)
|
|
_opts+=" -arch arm"
|
|
_spec="arm-linux-musleabihf-c++"
|
|
;;
|
|
armv7l)
|
|
_opts+=" -arch arm"
|
|
_spec="armv7l-linux-gnueabihf-c++"
|
|
;;
|
|
armv7l-musl)
|
|
_opts+=" -arch arm"
|
|
_spec="armv7l-linux-musleabihf-c++"
|
|
;;
|
|
aarch64)
|
|
_opts+=" -arch aarch64"
|
|
_spec="aarch64-linux-gnu-c++"
|
|
;;
|
|
aarch64-musl)
|
|
_opts+=" -arch aarch64"
|
|
_spec="aarch64-linux-musl-c++"
|
|
;;
|
|
mips-musl)
|
|
_opts+=" -arch mips"
|
|
_spec="mips-linux-musl-c++"
|
|
;;
|
|
mipshf-musl)
|
|
_opts+=" -arch mips"
|
|
_spec="mips-linux-muslhf-c++"
|
|
;;
|
|
mipsel-musl)
|
|
_opts+=" -arch mips"
|
|
_spec="mipsel-linux-musl-c++"
|
|
;;
|
|
mipselhf-musl)
|
|
_opts+=" -arch mips"
|
|
_spec="mipsel-linux-muslhf-c++"
|
|
;;
|
|
*-musl)
|
|
_opts+=" -arch arm"
|
|
_spec="${XBPS_TARGET_MACHINE}-linux-musl-c++"
|
|
;;
|
|
*)
|
|
_opts+=" -arch arm"
|
|
_spec="${XBPS_TARGET_MACHINE}-linux-gnu-c++"
|
|
;;
|
|
esac
|
|
mkdir -p mkspecs/${_spec}
|
|
cat > mkspecs/${_spec}/qmake.conf << _EOF
|
|
#
|
|
# qmake specification for ${_spec}
|
|
#
|
|
MAKEFILE_GENERATOR = UNIX
|
|
TARGET_PLATFORM = unix
|
|
TEMPLATE = app
|
|
CONFIG += qt warn_on release incremental link_prl gdb_dwarf_index
|
|
QT += core gui
|
|
QMAKE_INCREMENTAL_STYLE = sublib
|
|
|
|
include(../common/linux.conf)
|
|
include(../common/gcc-base-unix.conf)
|
|
QMAKE_CC = ${CC}
|
|
QMAKE_LINK_C = ${CC}
|
|
QMAKE_LINK_C_SHLIB = ${CC}
|
|
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
|
|
QMAKE_CXX = ${CXX}
|
|
QMAKE_LINK = ${CXX}
|
|
QMAKE_LINK_SHLIB = ${CXX}
|
|
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
|
|
QMAKE_PCH_OUTPUT_EXT = .gch
|
|
QMAKE_CFLAGS_PRECOMPILE = -x c-header -c \${QMAKE_PCH_INPUT} -o \${QMAKE_PCH_OUTPUT}
|
|
QMAKE_CFLAGS_USE_PRECOMPILE = -include \${QMAKE_PCH_OUTPUT_BASE}
|
|
QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c \${QMAKE_PCH_INPUT} -o \${QMAKE_PCH_OUTPUT}
|
|
QMAKE_CXXFLAGS_USE_PRECOMPILE = -include \${QMAKE_PCH_OUTPUT_BASE}
|
|
QMAKE_LFLAGS_RELEASE += -Wl,-O1 -Wl,-rpath,${wrksrc}/lib
|
|
QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
|
|
|
|
load(qt_config)
|
|
_EOF
|
|
cat > mkspecs/${_spec}/qplatformdefs.h << _EOF
|
|
#include "../linux-g++/qplatformdefs.h"
|
|
_EOF
|
|
|
|
# Force enable qfilesystemwatcher_{i,d}notify
|
|
cat >> src/corelib/io/io.pri << _EOF
|
|
SOURCES += io/qfilesystemwatcher_inotify.cpp io/qfilesystemwatcher_dnotify.cpp
|
|
HEADERS += io/qfilesystemwatcher_inotify_p.h io/qfilesystemwatcher_dnotify_p.h
|
|
_EOF
|
|
|
|
# qmake CFLAGS/LDFLAGS
|
|
sed -i configure \
|
|
-e '/outpath\/qmake\".*\"\$MAKE\")/s/)/ CC=gcc CXX=g++ LINK=g++ QMAKE_CFLAGS="$XBPS_CFLAGS" QMAKE_CXXFLAGS="$XBPS_CXXFLAGS" QMAKE_LFLAGS="$XBPS_LDFLAGS" )/' \
|
|
-e 's/\(setBootstrapVariable\s\+\|EXTRA_C\(XX\)\?FLAGS=.*\)QMAKE_C\(XX\)\?FLAGS_\(DEBUG\|RELEASE\).*/:/' \
|
|
-e 's/5\*\|4\*\|3\.4\*)/8*|7*|6*|&/'
|
|
export PKG_CONFIG_PATH=${XBPS_CROSS_BASE}/usr/lib/pkgconfig:${XBPS_CROSS_BASE}/usr/share/pkgconfig
|
|
export PKG_CONFIG_LIBDIR=${XBPS_CROSS_BASE}/usr/lib/pkgconfig
|
|
export PKG_CONFIG_SYSROOT_DIR=${XBPS_CROSS_BASE}
|
|
|
|
else
|
|
# qmake CFLAGS/LDFLAGS
|
|
sed -i configure \
|
|
-e '/outpath\/qmake\".*\"\$MAKE\")/s/)/ QMAKE_CFLAGS="$CFLAGS" QMAKE_CXXFLAGS="$CXXFLAGS" QMAKE_LFLAGS="$LDFLAGS" )/' \
|
|
-e 's/\(setBootstrapVariable\s\+\|EXTRA_C\(XX\)\?FLAGS=.*\)QMAKE_C\(XX\)\?FLAGS_\(DEBUG\|RELEASE\).*/:/'
|
|
fi
|
|
|
|
_opts+=" -nomake demos"
|
|
_opts+=" -nomake examples"
|
|
_opts+=" -openssl-linked"
|
|
_opts+=" -xmlpatterns"
|
|
_opts+=" -no-webkit"
|
|
_opts+=" -gtkstyle"
|
|
_opts+=" -system-sqlite"
|
|
_opts+=" -shared"
|
|
_opts+=" -graphicssystem raster"
|
|
_opts+=" -no-icu"
|
|
_opts+=" -no-openvg"
|
|
_opts+=" -no-phonon"
|
|
_opts+=" -no-phonon-backend"
|
|
_opts+=" -no-pch"
|
|
_opts+=" -no-rpath"
|
|
_opts+=" -optimized-qmake"
|
|
_opts+=" -no-reduce-relocations"
|
|
_opts+=" -dbus-linked"
|
|
_opts+=" -silent"
|
|
# _opts+=" -v"
|
|
|
|
echo "=== ./configure ${_opts}"
|
|
export LD_LIBRARY_PATH="${wrksrc}/lib:${LD_LIBRARY_PATH}"
|
|
export LD="$CXX"
|
|
export QMAKE_CFLAGS="${CFLAGS}"
|
|
export QMAKE_CXXFLAGS="${CXXFLAGS}"
|
|
export QMAKE_LFLAGS="${LDFLAGS} -Wl,-rpath,${wrksrc}/lib"
|
|
./configure ${_opts}
|
|
}
|
|
do_build() {
|
|
local _f
|
|
if [ -n "$CROSS_BUILD" ]; then
|
|
# Replace binaries for host
|
|
find -name Makefile\* -exec sed -i "{}" -e"s;/builddir/.*/bin/;/usr/lib/qt/bin/;g" \;
|
|
# Build qmake for the target
|
|
echo "=== Building qmake for the target ${XBPS_TARGET_MACHINE}"
|
|
mv bin/qmake{,-host}
|
|
sed -i qmake/Makefile \
|
|
-e"s;^\(CC =\).*;\1 ${CC};" \
|
|
-e"s;^\(CXX =\).*;\1 ${CXX};" \
|
|
-e"s;^\(QMAKE_CFLAGS =\).*;\1 ${CFLAGS};" \
|
|
-e"s;^\(QMAKE_CXXFLAGS =\).*;\1 ${CXXFLAGS};" \
|
|
-e"s;^\(QMAKE_LFLAGS =\).*;\1 ${LDFLAGS};"
|
|
cd qmake
|
|
make clean
|
|
make ${makejobs}
|
|
cd ${wrksrc}
|
|
mv bin/qmake{,-target}
|
|
mv bin/qmake{-host,}
|
|
cd ${wrksrc}
|
|
fi
|
|
export LD_LIBRARY_PATH="${wrksrc}/lib:${LD_LIBRARY_PATH}"
|
|
export LD="$CXX"
|
|
make ${makejobs}
|
|
}
|
|
do_install() {
|
|
local hicolordir=${DESTDIR}/usr/share/icons/hicolor
|
|
|
|
make INSTALL_ROOT=${DESTDIR} install
|
|
|
|
# install missing qatomic_aarch64.h
|
|
# TODO: find better fix (add to install targets?)
|
|
install -D -m644 src/corelib/arch/qatomic_aarch64.h ${DESTDIR}/usr/include/QtCore/
|
|
install -D -m644 src/corelib/arch/qatomic_aarch64.h ${DESTDIR}/usr/include/Qt/
|
|
|
|
# delete tests
|
|
rm -rf ${DESTDIR}/usr/tests
|
|
|
|
# install missing icons and desktop files
|
|
for icon in tools/linguist/linguist/images/icons/linguist-*-32.png ; do
|
|
size=$(echo $(basename ${icon}) | cut -d- -f2)
|
|
install -D -m644 ${icon} \
|
|
${hicolordir}/${size}x${size}/apps/linguist.png
|
|
done
|
|
install -Dm644 src/gui/dialogs/images/qtlogo-64.png \
|
|
${hicolordir}/64x64/apps/qtlogo.png
|
|
install -Dm644 src/gui/dialogs/images/qtlogo-64.png \
|
|
${DESTDIR}/usr/share/pixmaps/qtlogo.png
|
|
install -Dm644 tools/assistant/tools/assistant/images/assistant.png \
|
|
${hicolordir}/32x32/apps/assistant.png
|
|
install -Dm644 tools/designer/src/designer/images/designer.png \
|
|
${hicolordir}/128x128/apps/designer.png
|
|
install -d ${DESTDIR}/usr/share/applications
|
|
install -m644 ${FILESDIR}/*.desktop \
|
|
${DESTDIR}/usr/share/applications
|
|
|
|
vlicense LGPL_EXCEPTION.txt
|
|
|
|
vmkdir usr/bin
|
|
for f in ${DESTDIR}/usr/lib/qt/bin/*; do
|
|
ln -s /usr/lib/qt/bin/$(basename $f) ${DESTDIR}/usr/bin/$(basename $f)-qt4
|
|
done
|
|
|
|
# Remove wrong stuff
|
|
rm -rf ${DESTDIR}/usr/{examples,demos}
|
|
|
|
# Clean generated qmake.conf reference to builddir
|
|
find -name qmake.conf -exec sed -i "{}" -e"s; -Wl,-rpath,/builddir.*;;" \;
|
|
|
|
# For a cross build replace qmake with the target binary
|
|
if [ -f ${wrksrc}/bin/qmake-target ]; then
|
|
mv ${wrksrc}/bin/qmake-target ${DESTDIR}/usr/lib/qt/bin/qmake
|
|
ln -s /usr/lib/qt/bin/qmake ${DESTDIR}/usr/bin/qmake-qt4
|
|
fi
|
|
}
|
|
|
|
qt-doc_package() {
|
|
depends="qt-devel-tools>=${version}_${revision}"
|
|
short_desc+=" - Documentation"
|
|
pkg_install() {
|
|
vmove usr/share/doc/qt
|
|
}
|
|
}
|
|
qt-designer_package() {
|
|
depends="hicolor-icon-theme qt-designer-libs>=${version}_${revision}"
|
|
short_desc+=" - GUI designer"
|
|
pkg_install() {
|
|
vmove usr/bin/designer-qt4
|
|
vmove usr/lib/qt/bin/designer
|
|
vmove usr/lib/qt/plugins/designer
|
|
vmove "usr/share/icons/hicolor/128x128/apps/designer.*"
|
|
vmove "usr/share/applications/designer.*"
|
|
vmove "usr/share/qt/translations/designer*"
|
|
}
|
|
}
|
|
qt-designer-libs_package() {
|
|
depends="${sourcepkg}>=${version}_${revision}"
|
|
short_desc+=" - GUI designer libraries"
|
|
pkg_install() {
|
|
vmove usr/lib/libQtDesigner.so.*
|
|
vmove usr/lib/libQtDesignerComponents.so.*
|
|
}
|
|
}
|
|
qt-designer-devel_package() {
|
|
depends="qt-designer-libs>=${version}_${revision}"
|
|
short_desc+=" - GUI designer development"
|
|
pkg_install() {
|
|
vmove usr/lib/libQtDesigner.so
|
|
vmove usr/lib/libQtDesignerComponents.so
|
|
}
|
|
}
|
|
qt-host-tools_package() {
|
|
short_desc+=" - host tools"
|
|
pkg_install() {
|
|
for f in lrelease lupdate moc qdbuscpp2xml qdbusxml2cpp qt3to4 \
|
|
rcc uic uic3; do
|
|
if [ -f "${DESTDIR}/usr/lib/qt/bin/${f}" ]; then
|
|
vmove usr/lib/qt/bin/${f}
|
|
fi
|
|
done
|
|
}
|
|
}
|
|
qt-devel-tools_package() {
|
|
depends="hicolor-icon-theme"
|
|
short_desc+=" - development tools"
|
|
pkg_install() {
|
|
for f in assistant lconvert linguist pixeltool qcollectiongenerator \
|
|
qhelpgenerator qhelpconverter xmlpatterns xmlpatternsvalidator \
|
|
qttracereplay qdoc3 qmlviewer; do
|
|
if [ -f "${DESTDIR}/usr/lib/qt/bin/${f}" ]; then
|
|
vmove usr/bin/${f}-qt4
|
|
vmove usr/lib/qt/bin/${f}
|
|
fi
|
|
done
|
|
vmove usr/share/icons/hicolor
|
|
for f in linguist assistant; do
|
|
vmove usr/share/applications/${f}.desktop
|
|
[ ! -f ${DESTDIR}/usr/share/pixmaps/${f}.png ] && continue
|
|
vmove usr/share/pixmaps/${f}.png
|
|
done
|
|
vmove usr/share/qt/phrasebooks
|
|
}
|
|
}
|
|
qt-devel_package() {
|
|
depends="qt-qmake qt-devel-tools qt-host-tools libX11-devel qt>=${version}_${revision}"
|
|
short_desc+=" - development files"
|
|
pkg_install() {
|
|
for f in lrelease lupdate moc qdbuscpp2xml qdbusxml2cpp qt3to4 \
|
|
rcc uic uic3; do
|
|
if [ -f "${DESTDIR}/usr/bin/${f}-qt4" ]; then
|
|
vmove usr/bin/${f}-qt4
|
|
fi
|
|
done
|
|
vmove usr/include
|
|
vmove "usr/lib/*.so"
|
|
vmove "usr/lib/*.a"
|
|
vmove "usr/lib/*.prl"
|
|
vmove usr/lib/pkgconfig
|
|
}
|
|
}
|
|
|
|
qt-plugin-odbc_package() {
|
|
short_desc+=" - ODBC plugin"
|
|
pkg_install() {
|
|
vmove usr/lib/qt/plugins/sqldrivers/libqsqlodbc.so
|
|
}
|
|
}
|
|
qt-plugin-pgsql_package() {
|
|
short_desc+=" - PostgreSQL plugin"
|
|
pkg_install() {
|
|
vmove usr/lib/qt/plugins/sqldrivers/libqsqlpsql.so
|
|
}
|
|
}
|
|
qt-plugin-mysql_package() {
|
|
short_desc+=" - MySQL plugin"
|
|
pkg_install() {
|
|
vmove usr/lib/qt/plugins/sqldrivers/libqsqlmysql.so
|
|
}
|
|
}
|
|
qt-plugin-sqlite_package() {
|
|
short_desc+=" - SQLite plugin"
|
|
pkg_install() {
|
|
vmove usr/lib/qt/plugins/sqldrivers/libqsqlite.so
|
|
}
|
|
}
|
|
qt-qmake_package() {
|
|
short_desc+=" - qmake Makefile generator tool"
|
|
pkg_install() {
|
|
vmove usr/bin/qmake-qt4
|
|
vmove usr/lib/qt/bin/qmake
|
|
vmove usr/share/qt/mkspecs
|
|
}
|
|
}
|