summaryrefslogtreecommitdiff
blob: d8a69d559bed18a3a86171dc00602ef741a2dcf2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-libs/qt-embedded/qt-embedded-3.3.8b.ebuild,v 1.2 2009/03/27 23:54:53 yngwin Exp $

DESCRIPTION="Embedded Linux port of Qt"
HOMEPAGE="http://www.qtsoftware.com/products/platform/qt-for-embedded-linux"
SRC_URI="ftp://ftp.qtsoftware.com/qt/source/qt-embedded-free-${PV}.tar.gz"
LICENSE="|| ( QPL-1.0 GPL-2 GPL-3 )"

SLOT="3"
KEYWORDS="~amd64 ~ppc ~x86"
IUSE="cups debug doc firebird gif ipv6 mysql nis odbc opengl postgres sqlite"

DEPEND="media-libs/libpng
	media-libs/jpeg
	media-libs/libmng
	media-libs/lcms
	sys-libs/zlib
	cups? ( net-print/cups )
	firebird? ( dev-db/firebird )
	mysql? ( virtual/mysql )
	opengl? ( virtual/opengl virtual/glu )
	postgres? ( virtual/postgresql-server )"
RDEPEND="${DEPEND}"
PDEPEND="odbc? ( ~dev-db/qt-unixODBC-${PV} )"

S="${WORKDIR}/qt-embedded-free-${PV}"

QTBASE=/usr/qt/3-embedded

pkg_setup() {
	ewarn "Note: this ebuild provides a Qt/Embedded setup that is suitable for testing,"
	ewarn "but definitely not tailored for real embedded systems."
	ewarn "I advise you select your own featureset (e.g. by editing this ebuild)"
	ewarn "if building for such a system."

	export QTDIR="${S}"

	# values for 'PLATFORM' (host system) can be found in mkspecs/
	# values for 'XPLATFORM' (target system) can be found in mkspecs/qws/
	if use x86; then
		export PLATFORM="linux-g++"
		export XPLATFORM="qws/linux-x86-g++"
	elif use amd64; then
		export PLATFORM="linux-g++-64"
		export XPLATFORM="qws/linux-x86-g++"
	elif use ppc; then
		export PLATFORM="linux-g++"
		export XPLATFORM="qws/linux-generic-g++"
	else
		die "Unknown platform"
	fi
}

src_unpack() {
	unpack ${A}
	cd "${S}"

	sed -i -e 's:read acceptance:acceptance=yes:' configure

	# avoid using -rpath
	find mkspecs/ -name qmake.conf -exec sed -i -e "s:QMAKE_RPATH.*:QMAKE_RPATH =:" {} \;

	# patch to fix invalid type casts with gcc-4 on amd64 (bug 164113)
	epatch "${FILESDIR}"/${PN}-3.3.8-castfix.patch
}

src_compile() {
	addwrite "${QTBASE}/etc/settings"

	use gif && myconf="${myconf} -qt-gif" || myconf="${myconf} -no-gif"
	use cups && myconf="${myconf} -cups" || myconf="${myconf} -no-cups"
	use nis && myconf="${myconf} -nis" || myconf="${myconf} -no-nis"
	use ipv6 && myconf="${myconf} -ipv6" || myconf="${myconf} -no-ipv6"
	use opengl || myconf="${myconf} -disable-opengl"
	use mysql && myconf="${myconf} -plugin-sql-mysql -I/usr/include/mysql -L/usr/lib/mysql" || myconf="${myconf} -no-sql-mysql"
	use postgres && myconf="${myconf} -plugin-sql-psql -I/usr/include/postgresql/server -I/usr/include/postgresql/pgsql -I/usr/include/postgresql/pgsql/server" || myconf="${myconf} -no-sql-psql"
	use firebird && myconf="${myconf} -plugin-sql-ibase" || myconf="${myconf} -no-sql-ibase"
	use sqlite && myconf="${myconf} -plugin-sql-sqlite" || myconf="${myconf} -no-sql-sqlite"
	use debug && myconf="${myconf} -debug" || myconf="${myconf} -release -no-g++-exceptions"

	./configure ${myconf} -shared -depths 8,16,24,32 -system-zlib -thread -stl \
		-freetype -qvfb -plugin-imgfmt-{jpeg,mng,png} -system-lib{jpeg,mng,png} \
		-prefix ${QTBASE} -platform ${PLATFORM} -xplatform ${XPLATFORM} \
		-embedded -no-sql-odbc || die

	export LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}"

	cd "${S}" && emake symlinks src-qmake src-moc sub-src || die "make failed"

	# the designer is not compiled when using -embedded, but we need the uic
	cd "${S}"/tools/designer/uic && emake || die "making uic failed"

	cd "${S}" && emake sub-tools || die "making tools failed"

	if use doc; then
		cd "${S}" && emake sub-tutorial sub-examples || die "making examples failed"
	fi
}

src_install() {
	INSTALL_ROOT="${D}" emake install

	# fix .prl files
	find "${D}"/${QTBASE}/lib* -name "*.prl" -exec sed -i -e "s:${S}:${QTBASE}:g" {} \;

	# remove broken link
	rm -f "${D}"/${QTBASE}/mkspecs/${PLATFORM}/${PLATFORM}

	# fonts
	insinto ${QTBASE}/lib/fonts
	doins "${S}"/lib/fonts/*

	# environment variables
	cat <<EOF > ${T}/47qt-embedded3
PATH=${QTBASE}/bin
ROOTPATH=${QTBASE}/bin
LDPATH=${QTBASE}/lib
EOF
	doenvd ${T}/47qt-embedded3

	# qmake cache file
	sed -i -e "s:${S}:${QTBASE}:" .qmake.cache
	insinto ${QTBASE}
	doins .qmake.cache

	# documentation
	if use doc; then
		find examples tutorial -name Makefile -exec sed -i -e "s:${S}:${QTBASE}:g" {} \;

		cp -r "${S}"/tutorial "${D}"/${QTBASE}
		cp -r "${S}"/examples "${D}"/${QTBASE}
	fi

	# default target link (overriden by QMAKESPEC env var)
	rm -f "${D}/${QTBASE}/mkspecs/default"
	ln -s "${XPLATFORM}" "${D}/${QTBASE}/mkspecs/default"
}

pkg_postinst() {
	echo
	einfo "If you want to compile and run a test application using"
	einfo "QT/Embedded instead of standard Qt, you must properly"
	einfo "set the QTDIR and QMAKESPEC variables, e.g.:"
	einfo
	einfo "    export QTDIR=${QTBASE}"
	einfo "    export QMAKESPEC=${QTBASE}/mkspecs/${XPLATFORM}"
	echo
}