summaryrefslogtreecommitdiff
blob: ea0b814342bc44031fbbcab79f0f00415fb9760a (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
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-libs/qwt/qwt-6.0.2-r1.ebuild,v 1.2 2013/11/10 13:38:43 jlec Exp $

EAPI=5

inherit eutils multibuild qt4-r2

MY_P="${PN}-${PV/_/-}"

DESCRIPTION="2D plotting library for Qt4"
HOMEPAGE="http://qwt.sourceforge.net/"
SRC_URI="mirror://sourceforge/project/${PN}/${PN}/${PV/_/-}/${MY_P}.tar.bz2"

LICENSE="qwt mathml? ( LGPL-2.1 Nokia-Qt-LGPL-Exception-1.1 )"
KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-macos"
SLOT="6"
IUSE="doc examples mathml static-libs svg"

DEPEND="
	dev-qt/qtgui:4
	doc? ( !<media-libs/coin-3.1.3[doc] )
	svg? ( dev-qt/qtsvg:4 )"
RDEPEND="${DEPEND}"

S="${WORKDIR}"/${MY_P}

DOCS="CHANGES README"

src_prepare() {
	cat > qwtconfig.pri <<-EOF
		QWT_INSTALL_LIBS = "${EPREFIX}/usr/$(get_libdir)"
		QWT_INSTALL_HEADERS = "${EPREFIX}/usr/include/qwt6"
		QWT_INSTALL_DOCS = "${EPREFIX}/usr/share/doc/${PF}"
		QWT_CONFIG += QwtPlot QwtWidgets QwtDesigner
		VERSION = ${PV/_*}
		QWT_VERSION = ${PV/_*}
		QWT_INSTALL_PLUGINS   = "${EPREFIX}/usr/$(get_libdir)/qt4/plugins/designer"
		QWT_INSTALL_FEATURES  = "${EPREFIX}/usr/share/qt4/mkspecs/features"
	EOF
	if use mathml; then
		cat >> qwtconfig.pri <<-EOF
			QWT_CONFIG += QwtMathML
		EOF
	fi
	cat > qwtbuild.pri <<-EOF
		QWT_CONFIG += qt warn_on thread release no_keywords
	EOF

	sed \
		-e 's/target doc/target/' \
		-i src/src.pro || die

	# Renaming lib to libqwt6.so to enable slotting
	sed \
		-e "/^TARGET/s:(qwt):(qwt6):g" \
		-i src/src.pro || die
	sed \
		-e '/qwtAddLibrary/s:(qwt):(qwt6):g' \
		-i qwt.prf designer/designer.pro examples/examples.pri \
		textengines/mathml/qwtmathml.prf textengines/textengines.pri || die
	sed \
		-e 's:libqwt:libqwt6:g' \
		-i qwtbuild.pri || die

	use svg && echo "QWT_CONFIG += QwtSvg" >> qwtconfig.pri

	epatch "${FILESDIR}/${PN}-6.0.2-invalid-read.patch"

	MULTIBUILD_VARIANTS=( shared )
	use static-libs && MULTIBUILD_VARIANTS+=( static )

	preparation() {
		cp -rf "${S}" "${BUILD_DIR}" || die
		[[ ${MULTIBUILD_VARIANT} == shared ]] && \
			echo "QWT_CONFIG += QwtDll" >> "${BUILD_DIR}"/qwtconfig.pri
		run_in_build_dir qt4-r2_src_prepare
	}
	multibuild_foreach_variant preparation
}

src_configure() {
	multibuild_parallel_foreach_variant qt4-r2_src_configure
}

src_compile() {
	compilation() {
#		cd "${BUILD_DIR}" || die
#		run_in_build_dir pwd
#		run_in_build_dir ls -l
#	run_in_build_dir default
		cd "${BUILD_DIR}" || die
		default
	}
#	multibuild_foreach_variant run_in_build_dir default
	multibuild_foreach_variant compilation

	building() {
		# split compilation to allow parallel building
		emake sub-src
		emake
	}
#	building

#	if use static-libs; then
#		sed "/QwtDll/d" -i qwtconfig.pri || die
#		eqmake4
#		building
#		echo "QWT_CONFIG += QwtDll" >> qwtconfig.pri || die
#	fi
}

src_test() {
	cd examples || die
	eqmake4 examples.pro
	emake
}

src_install () {
	qt4-r2_src_install

#	use static-libs && dolib.so lib/*.so*
	use static-libs && dolib.a lib/*.a

	if use doc; then
		dohtml -r doc/html/*
	fi
	if use examples; then
		# don't build examples - fix the qt files to build once installed
		cat > examples/examples.pri <<-EOF
			include( qwtconfig.pri )
			TEMPLATE     = app
			MOC_DIR      = moc
			INCLUDEPATH += "${EPREFIX}/usr/include/qwt6"
			DEPENDPATH  += "${EPREFIX}/usr/include/qwt6"
			LIBS        += -lqwt6
		EOF
		sed -i -e 's:../qwtconfig:qwtconfig:' examples/examples.pro || die
		cp *.pri examples/ || die
		doins -r examples
	fi
}