commit: 5e4bec4f6f92e1ca4a3d6bab63604c8ae8c59b29
Author: Davide Pesavento <pesa <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 1 01:38:35 2014 +0000
Commit: Davide Pesavento <pesa <AT> gentoo <DOT> org>
CommitDate: Sun Jun 1 02:39:56 2014 +0000
URL:
http://git.overlays.gentoo.org/gitweb/?p=proj/qt.git;a=commit;h=5e4bec4f
[qt4-build-multilib.eclass] Initial multilib support.
---
eclass/qt4-build-multilib.eclass | 68 +++++++++++++++++++++++++++++-----------
1 file changed, 50 insertions(+), 18 deletions(-)
diff --git a/eclass/qt4-build-multilib.eclass b/eclass/qt4-build-multilib.eclass
index 2fe2bce..9c0d397 100644
--- a/eclass/qt4-build-multilib.eclass
+++ b/eclass/qt4-build-multilib.eclass
@@ -17,7 +17,7 @@ case ${EAPI} in
*) die "qt4-build-multilib.eclass: unsupported EAPI=${EAPI:-0}" ;;
esac
-inherit eutils flag-o-matic multilib toolchain-funcs # TODO multilib-minimal
+inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs
HOMEPAGE="http://qt-project.org/ http://qt.digia.com/"
LICENSE="|| ( LGPL-2.1 GPL-3 )"
@@ -46,10 +46,10 @@ if [[ ${PN} != qttranslations ]]; then
[[ ${PN} != qtxmlpatterns ]] && IUSE+=" +exceptions"
fi
-DEPEND="virtual/pkgconfig"
-if [[ ${QT4_BUILD_TYPE} == live ]]; then
- DEPEND+=" dev-lang/perl"
-fi
+DEPEND="
+ dev-lang/perl
+ virtual/pkgconfig[${MULTILIB_USEDEP}]
+"
EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_test
src_install pkg_postinst pkg_postrm
@@ -106,12 +106,9 @@ qt4-build-multilib_src_unpack() {
# Prepare the sources before the configure phase. Strip CFLAGS if necessary,
and fix
# the build system in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified in
make.conf.
qt4-build-multilib_src_prepare() {
- qt4_prepare_env
-
if [[ ${PN} != qtcore ]]; then
skip_qmake_build
skip_project_generation
- symlink_tools_to_buildtree
fi
# skip X11 tests in non-gui packages to avoid spurious dependencies
@@ -244,6 +241,16 @@ qt4-build-multilib_src_prepare() {
# @DESCRIPTION:
# Runs configure and generates Makefiles for all QT4_TARGET_DIRECTORIES.
qt4-build-multilib_src_configure() {
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ qt4_prepare_env
+
+ if [[ ${PN} != qtcore ]]; then
+ qt4_symlink_tools_to_build_dir
+ fi
+
# toolchain setup
tc-export CC CXX OBJCOPY STRIP
export AR="$(tc-getAR) cqs"
@@ -331,11 +338,11 @@ qt4-build-multilib_src_configure() {
fi
fi
+ # append module-specific arguments
conf+=" ${myconf}"
- myconf=
einfo "Configuring with:" ${conf}
- ./configure ${conf} || die "configure failed"
+ "${S}"/configure ${conf} || die "configure failed"
# configure is stupid and assigns QMAKE_LFLAGS twice,
# thus the previous -rpath-link flag gets overwritten
@@ -345,12 +352,17 @@ qt4-build-multilib_src_configure() {
local dir
for dir in . ${QT4_TARGET_DIRECTORIES}; do
- pushd ${dir} >/dev/null || die
+ mkdir -p "${dir}" || die
+ pushd "${dir}" >/dev/null || die
+
+ local projectdir=${PWD/#${BUILD_DIR}/${S}}
einfo "Running qmake in: ${dir}"
- "${S}"/bin/qmake \
- LIBS+=-L"${QT4_LIBDIR}" \
+ "${BUILD_DIR}"/bin/qmake \
CONFIG+=nostrip \
- || die "qmake failed"
+ LIBS+=-L"${QT4_LIBDIR}" \
+ "${projectdir}" \
+ || die "qmake failed (${projectdir})"
+
popd >/dev/null || die
done
}
@@ -359,6 +371,12 @@ qt4-build-multilib_src_configure() {
# @DESCRIPTION:
# Compiles the code in QT4_TARGET_DIRECTORIES.
qt4-build-multilib_src_compile() {
+ multilib-minimal_src_compile
+}
+
+multilib_src_compile() {
+ qt4_prepare_env
+
local dir
for dir in ${QT4_TARGET_DIRECTORIES}; do
pushd ${dir} >/dev/null || die
@@ -371,9 +389,15 @@ qt4-build-multilib_src_compile() {
# @DESCRIPTION:
# Runs unit tests in all QT4_TARGET_DIRECTORIES.
qt4-build-multilib_src_test() {
+ multilib-minimal_src_test
+}
+
+multilib_src_test() {
# QtMultimedia does not have any test suite (bug #332299)
[[ ${PN} == qtmultimedia ]] && return
+ qt4_prepare_env
+
local dir
for dir in ${QT4_TARGET_DIRECTORIES}; do
emake -j1 check -C ${dir}
@@ -385,6 +409,12 @@ qt4-build-multilib_src_test() {
# Performs the actual installation, running 'emake install'
# inside all QT4_TARGET_DIRECTORIES, and installing qconfigs.
qt4-build-multilib_src_install() {
+ multilib-minimal_src_install
+}
+
+multilib_src_install() {
+ qt4_prepare_env
+
local dir
for dir in ${QT4_TARGET_DIRECTORIES}; do
pushd ${dir} >/dev/null || die
@@ -577,15 +607,17 @@ skip_project_generation() {
sed -i -e "s:echo \"Finding:exit 0\n\necho \"Finding:g"
"${S}"/configure || die
}
-# @FUNCTION: symlink_tools_to_buildtree
+# @FUNCTION: qt4_symlink_tools_to_build_dir
# @INTERNAL
# @DESCRIPTION:
-# Symlinks generated binaries to buildtree, so they can be used during
compilation time.
-symlink_tools_to_buildtree() {
+# Symlinks qtcore tools to BUILD_DIR, so they can be used during compilation.
+qt4_symlink_tools_to_build_dir() {
+ mkdir -p "${BUILD_DIR}"/bin || die
+
local bin
for bin in "${QT4_BINDIR}"/{qmake,moc,rcc,uic}; do
if [[ -e ${bin} ]]; then
- ln -s "${bin}" "${S}"/bin/ || die "failed to symlink
${bin}"
+ ln -s "${bin}" "${BUILD_DIR}"/bin/ || die "failed to
symlink ${bin}"
fi
done
}