# Contributor: Ɓukasz Jendrysik <scadu@yandex.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
setvar pkgname = 'qt'
setvar pkgver = '4.8.7'
setvar pkgrel = '7'
setvar pkgdesc = ""A cross-platform application and UI framework""
setvar url = ""http://qt-project.org/""
setvar arch = ""all""
setvar license = ""GPL3 LGPL""
setvar depends = ""ca-certificates""
setvar subpackages = ""$pkgname-dev $pkgname-doc $pkgname-assistant $pkgname-config
	$pkgname-sqlite $pkgname-odbc $pkgname-postgresql $pkgname-mysql
	$pkgname-tds $pkgname-webkit $pkgname-x11 $pkgname-private-dev:private
	$pkgname-lang""

setvar depends_dev = ""mesa-dev libice-dev libsm-dev libx11-dev libxext-dev
	libxrender-dev alsa-lib-dev libressl-dev fontconfig-dev freetype-dev
	glib-dev libpng-dev zlib-dev sqlite-dev dbus-dev""
setvar makedepends = ""$depends_dev postgresql-dev mariadb-dev unixodbc-dev cups-dev
	gtk+-dev tiff-dev libmng-dev libxrandr-dev libxv-dev libxi-dev perl
	gawk paxmark rsync freetds-dev hicolor-icon-theme mesa-gl""
setvar install = ''
setvar source = ""http://download.qt-project.org/official_releases/qt/4.8/$pkgver/qt-everywhere-opensource-src-$pkgver.tar.gz
	assistant.desktop
	designer.desktop
	linguist.desktop
	qtconfig.desktop

	qt-gtk-theme-fix.patch
	qt-musl.patch
	qt-musl-iconv-no-bom.patch
	qt-clucene-timeb.patch
	qsettings-recursive-global-mutex.patch
	qt-everywhere-opensource-src-4.8.7-gcc6.patch
	qt-aarch64.patch
	qtcore-4.8.5-libressl.patch
	gcc-6.2.1-workaround.patch

	qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
	qt-everywhere-opensource-src-4.8.6-s390.patch
	qt4-icu59.patch
	""

setvar _builddir = ""$srcdir"/qt-everywhere-opensource-src-$pkgver"
proc prepare {
	cd $_builddir
	for i in $source {
		case (i) {
		*.patch {
			msg "Applying $i"
			patch -p1 -i "$srcdir"/$i || return 1
			}
		}
	}
	sed -i "s|-O2|$CXXFLAGS|" mkspecs/common/g++.conf
	sed -i "/^QMAKE_RPATH/s| -Wl,-rpath,||g" mkspecs/common/g++.conf
	sed -i "/^QMAKE_LFLAGS\s/s|+=|+= $LDFLAGS|g" mkspecs/common/g++.conf
}

proc build {
	cd $_builddir
	unset QMAKESPEC
	export QT4DIR="$_builddir"
	export PATH="${QT4DIR}/bin:${PATH}"
	export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
	# https://bugzilla.redhat.com/show_bug.cgi?id=1349951
	export CXXFLAGS="$CXXFLAGS -std=gnu++98"
	# note: not autotools
	./configure -confirm-license -opensource \
		-prefix /usr \
		-docdir /usr/share/doc/qt \
		-plugindir /usr/lib/qt/plugins \
		-importdir /usr/lib/qt/imports \
		-datadir /usr/share/qt \
		-translationdir /usr/share/qt/translations \
		-sysconfdir /etc \
		-examplesdir /usr/share/doc/qt/examples \
		-demosdir /usr/share/doc/qt/demos \
		-largefile \
		-no-pch \
		-plugin-sql-psql \
		-plugin-sql-mysql \
		-plugin-sql-sqlite \
		-plugin-sql-odbc \
		-plugin-sql-tds \
		-system-sqlite \
		-xmlpatterns \
		-no-phonon \
		-no-phonon-backend \
		-svg \
		-webkit \
		-script \
		-scripttools \
		-system-zlib \
		-system-libtiff \
		-system-libpng \
		-system-libmng \
		-system-libjpeg \
		-nomake demos \
		-nomake examples \
		-nomake docs \
		-no-rpath \
		-openssl-linked \
		-silent \
		-optimized-qmake \
		-dbus \
		-reduce-relocations \
		-no-separate-debug-info \
		-gtkstyle \
		-opengl \
		-no-openvg \
		-glib \
		|| return 1
	qmake && make
}

proc package {
	cd $_builddir
	make INSTALL_ROOT="$pkgdir" install
	rm -r "$pkgdir"/usr/tests || return 1

	paxmark -m "$pkgdir"/usr/bin/qmlviewer "$pkgdir"/usr/bin/designer \
		|| return 1

	# install missing icons and desktop files
	for icon in tools/linguist/linguist/images/icons/linguist-*-32.png  {
		setvar size = $(echo $(basename ${icon}) | cut -d- -f2)
		install -p -D -m644 ${icon} "${pkgdir}"/usr/share/icons/hicolor/${size}x${size}/apps/linguist.png
	}
	install -p -Dm644 src/gui/dialogs/images/qtlogo-64.png \
		"${pkgdir}"/usr/share/icons/hicolor/64x64/apps/qtlogo.png
	install -p -Dm644 tools/assistant/tools/assistant/images/assistant.png \
		"${pkgdir}"/usr/share/icons/hicolor/32x32/apps/assistant.png
	install -p -Dm644 tools/designer/src/designer/images/designer.png \
		"${pkgdir}"/usr/share/icons/hicolor/128x128/apps/designer.png
	install -d ${pkgdir}/usr/share/applications
	for i in linguist designer assistant qtconfig {
		install -m644 "${srcdir}"/$i.desktop \
			"${pkgdir}"/usr/share/applications/ || return 1
	}

	# install license addition
	install -D -m644 LGPL_EXCEPTION.txt \
		"${pkgdir}"/usr/share/licenses/qt/LGPL_EXCEPTION.txt

	# Fix wrong path in pkgconfig files
	find "${pkgdir}"/usr/lib/pkgconfig -type f -name '*.pc' \
		-exec perl -pi -e "s, -L${srcdir}/?\S+,,g" {} ';' \
		|| return 1
	# Fix wrong path in prl files
	find "${pkgdir}"/usr/lib -type f -name '*.prl' -exec sed -i \
		-e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} ';'\
		|| return 1
}

proc _mv_files {
	local i
	for i in "$@" {
		mkdir -p "$subpkgdir"/${i%/*}
		mv "$pkgdir"/$i "$subpkgdir"/$i || return 1
	}
}

proc dev {
	mkdir -p "$subpkgdir"/usr/share/qt \
		"$subpkgdir"/usr/bin \
		"$subpkgdir"/usr/lib \

	mv "$pkgdir"/usr/share/qt/mkspecs \
		"$pkgdir"/usr/share/qt/q3porting.xml \
		"$subpkgdir"/usr/share/qt/ \
		|| return 1
	default_dev

	cd "$pkgdir"/usr/bin
	mv designer lconvert linguist lrelease lupdate moc pixeltool \
		qcollectiongenerator qdbuscpp2xml qdbusxml2cpp qdoc3 \
		qhelpconverter qhelpgenerator qmake qt3to4 qttracereplay \
		rcc uic uic3 xmlpatterns xmlpatternsvalidator \
		"$subpkgdir"/usr/bin/ || return 1

	cd $pkgdir
	_mv_files $(find * -name 'designer*') \
		$(find * -name 'linguist*')
}

proc assistant {
	setvar pkgdesc = ""Documentation browser for Qt""
	cd $pkgdir
	_mv_files $(find * -name 'assistant*') || return 1
}

proc config {
	setvar pkgdesc = ""Graphical configuration tool for programs using Qt""
	cd $pkgdir
	_mv_files $(find * -name 'qt*config*') || return 1
}

proc sqlite {
	setvar pkgdesc = ""SQLite driver for Qt's SQL classes""
	cd $pkgdir
	_mv_files usr/lib/qt/plugins/sqldrivers/libqsqlite*
}

proc odbc {
	setvar pkgdesc = ""ODBC driver for Qt's SQL classes""
	cd $pkgdir
	_mv_files usr/lib/qt/plugins/sqldrivers/libqsqlodbc*
}

proc postgresql {
	setvar pkgdesc = ""PostgreSQL driver for Qt's SQL classes""
	cd $pkgdir
	_mv_files usr/lib/qt/plugins/sqldrivers/libqsqlpsql*
}

proc mysql {
	setvar pkgdesc = ""MySQL driver for Qt's SQL classes""
	cd $pkgdir
	_mv_files usr/lib/qt/plugins/sqldrivers/libqsqlmysql*
}

proc tds {
	setvar pkgdesc = ""TDS driver for Qt's SQL classes""
	cd $pkgdir
	_mv_files usr/lib/qt/plugins/sqldrivers/libqsqltds*
}


proc webkit {
	setvar pkgdesc = ""Qt Webkit libraries""
	mkdir -p "$subpkgdir"/usr/lib/qt/imports
	mv "$pkgdir"/usr/lib/libQtWebKit.so.* \
		"$subpkgdir"/usr/lib/ || return 1
	mv "$pkgdir"/usr/lib/qt/imports/QtWebKit \
		"$subpkgdir"/usr/lib/qt/imports/ || return 1
}

proc x11 {
	setvar pkgdesc = ""Qt GUI-related libraries""
	setvar depends = ""hicolor-icon-theme""
	setvar replaces = ""qt""
	cd $pkgdir
	_mv_files \
		usr/bin/qdbusviewer \
		usr/bin/qmlviewer \
		usr/bin/qmlplugindump \
		usr/lib/libQt3Support.so.* \
		usr/lib/libQtCLucene.so.* \
		usr/lib/libQtDesigner.so.* \
		usr/lib/libQtDeclarative.so.* \
		usr/lib/libQtDesignerComponents.so.* \
		usr/lib/libQtGui.so.* \
		usr/lib/libQtHelp.so.* \
		usr/lib/libQtMultimedia.so.* \
		usr/lib/libQtOpenGL.so.* \
		usr/lib/libQtScriptTools.so.* \
		usr/lib/libQtSvg.so.* \
		usr/share/icons \
		usr/lib/qt/imports \
		usr/lib/qt/plugins
}

proc private {
	setvar pkgdesc = ""Private headers for Qt toolkit""
	cd $_builddir
	mkdir -p "$subpkgdir"/usr
	rsync -aR \
		include/QtCore/private \
		include/QtDeclarative/private \
		include/QtGui/private \
		include/QtScript/private \
		src/corelib/*/*_p.h \
		src/declarative/*/*_p.h \
		src/gui/*/*_p.h \
		src/script/*/*_p.h \
		"$subpkgdir"/usr || return 1
}

proc lang {
	setvar pkgdesc = ""translations for Qt""
	mkdir -p "$subpkgdir"/usr/share/qt/
	mv "$pkgdir"/usr/share/qt/translations \
		"$subpkgdir"/usr/share/qt/
}

setvar sha512sums = ""f9f81a2e7205e1fd05c8d923dc73244f29aa33f951fa6b7c5c8193449328b37084796b9b71ad0c317e4e6fd00017c10ea5d67b1b2032551cde00548522218125  qt-everywhere-opensource-src-4.8.7.tar.gz
005ed6fe50b237e4541c0f30cbd87ec5425eff7e7c8d55d2b9b24ea8469e75e1fc8a3f26296841ab4cbd566517b3f1aa1fa7b36e1a9677d284cfff615fd24614  assistant.desktop
731aae6a0d776c1be5a49dadc5480b205ba5c8e056d108e2bb96a19dd52b6c6ca22387b37505cf97a2575228cd5dd65c773d0fde1c26299e47fdc11a49f651fd  designer.desktop
70943d9ee9ac7ff6281079be14b741095c60428b30b27bafc42a8bb1729a6f7e8e163cff3d2b5d5a66bbdab464816eea479a3f822598ff2fe068d4025652a049  linguist.desktop
c38af96c9519767d09c36184d43c9177522f3a9e3eaa228f76e1dab324bbc462c3c135a3d51a1c8649c764d52196f27b8dd95e3780c5e79664136c03611dc13a  qtconfig.desktop
4be22db63c27ce2fa8c4f0af47f951b3aebb1f41c63c1ff02cec429be26d86f869ce8d137e313ea59a7540ebf1866ef2245471b754588776d20f881041141b55  qt-gtk-theme-fix.patch
fb621e9e5a60bb5bd4ad86fa41772fd8db7e8ad3a6e8d36a3d720d493d462db618e4bf3187e3eb66d123fceca64bbbd2df2afba506cc4c79bafa456cd67e82aa  qt-musl.patch
a185ea5e984d2636e3f9f6c4ed8fad66a17575da0679724da60a3dc519468ab45aa9369f43ce5c64f07cb730910e36623164aefafca3aabe0359c62becca870e  qt-musl-iconv-no-bom.patch
a4947c7210f5b9a39f78b1056d2fe87bc9e25dda7d6287f138f8889ae8a3a8687ed7346261f219e9e39afb5143e895b52804347484d10c42907868c4eac9ef0a  qt-clucene-timeb.patch
277e5ceec4fcc5d77a8591eafdb24125a54770576b7997aee6df39d85a7f1deabf8547fb42127cb118ebb8e7f81e3a3624a75d461581052dadf7abb99f1c9bd7  qsettings-recursive-global-mutex.patch
dd58096123e99d8cdd1a29dfca45d1f23c912a21edc6074a5398637ecca29b8b3535d862043c5d15b4ab44609d674242d93c31fcae835fede4ddfcc36e63ea26  qt-everywhere-opensource-src-4.8.7-gcc6.patch
c76f7cb83e3e48e9798ada7c1d2406d560294fe7c38a73e42317db8f83ff9e86fdf7c18bd408cf658c07782733b72dcf03328b267db30cb9bccc11394b2ee93a  qt-aarch64.patch
bde982ca01a6ee6a5d10a08babd8474e67e84932d996b1e19970e75fa4a9b71a08e81065a13f0a1cce1ac681d44d2e559562ee5ab92e9dfd5fd2cafe28370a74  qtcore-4.8.5-libressl.patch
bf316db4fbd3dfae40aad25573a201c7acc2fb5e34daff73e074a7c0232d9952f392c08b3b1271c7444c5d7da4d7d03fc56efee86a58a4578a9140739d45a616  gcc-6.2.1-workaround.patch
b079084fab01eb048151fec287e2bc8b2db756eaf3d8aadb98ef86bcca18f4a0a8319c06f94cdbbc67cf7792fd2d1780682fd0594a18444368f9fad10e7ba852  qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
89dbf72732cbec3ddeb5542049e4b810863e121697103212de89401d965fa228cdad5b94efaf5ce00a4e5dae43855a287fda8be47bfb12e3858149da19bece63  qt-everywhere-opensource-src-4.8.6-s390.patch
ecd443bd64d1bc6a1f919ff81a57714de0eae0744861a12a68b4f2fa0a96ccbef7c6c1d924492cc0f8188aa6ceb2206e60e5030edccce9417d8135958d473c70  qt4-icu59.patch""