commit:     6feaa4f92f24205c0bb63a68585f6d4baa3bd20c
Author:     Davide Pesavento <pesa <AT> gentoo <DOT> org>
AuthorDate: Tue Jun  3 14:04:30 2014 +0000
Commit:     Davide Pesavento <pesa <AT> gentoo <DOT> org>
CommitDate: Tue Jun  3 14:04:30 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/qt.git;a=commit;h=6feaa4f9

[qt4-build-multilib.eclass] Refactoring.

---
 eclass/qt4-build-multilib.eclass | 68 ++++++++++++++++++++++------------------
 1 file changed, 37 insertions(+), 31 deletions(-)

diff --git a/eclass/qt4-build-multilib.eclass b/eclass/qt4-build-multilib.eclass
index 9c0d397..86285af 100644
--- a/eclass/qt4-build-multilib.eclass
+++ b/eclass/qt4-build-multilib.eclass
@@ -350,21 +350,8 @@ multilib_src_configure() {
        sed -i -e '/^QMAKE_LFLAGS =/ s:$: $$QMAKE_LFLAGS:' \
                .qmake.cache || die "sed .qmake.cache failed"
 
-       local dir
-       for dir in . ${QT4_TARGET_DIRECTORIES}; do
-               mkdir -p "${dir}" || die
-               pushd "${dir}" >/dev/null || die
-
-               local projectdir=${PWD/#${BUILD_DIR}/${S}}
-               einfo "Running qmake in: ${dir}"
-               "${BUILD_DIR}"/bin/qmake \
-                       CONFIG+=nostrip \
-                       LIBS+=-L"${QT4_LIBDIR}" \
-                       "${projectdir}" \
-                       || die "qmake failed (${projectdir})"
-
-               popd >/dev/null || die
-       done
+       qt4_qmake
+       qt4_foreach_target_subdir qt4_qmake
 }
 
 # @FUNCTION: qt4-build-multilib_src_compile
@@ -377,12 +364,7 @@ qt4-build-multilib_src_compile() {
 multilib_src_compile() {
        qt4_prepare_env
 
-       local dir
-       for dir in ${QT4_TARGET_DIRECTORIES}; do
-               pushd ${dir} >/dev/null || die
-               emake
-               popd >/dev/null || die
-       done
+       qt4_foreach_target_subdir emake
 }
 
 # @FUNCTION: qt4-build-multilib_src_test
@@ -398,10 +380,7 @@ multilib_src_test() {
 
        qt4_prepare_env
 
-       local dir
-       for dir in ${QT4_TARGET_DIRECTORIES}; do
-               emake -j1 check -C ${dir}
-       done
+       qt4_foreach_target_subdir emake -j1 check
 }
 
 # @FUNCTION: qt4-build-multilib_src_install
@@ -415,12 +394,7 @@ qt4-build-multilib_src_install() {
 multilib_src_install() {
        qt4_prepare_env
 
-       local dir
-       for dir in ${QT4_TARGET_DIRECTORIES}; do
-               pushd ${dir} >/dev/null || die
-               emake INSTALL_ROOT="${D}" install
-               popd >/dev/null || die
-       done
+       qt4_foreach_target_subdir emake INSTALL_ROOT="${D}" install
 
        # install private headers of a few modules
        if has ${PN} qtcore qtdeclarative qtgui qtscript; then
@@ -493,6 +467,38 @@ qt4_prepare_env() {
        export XDG_CONFIG_HOME="${T}"
 }
 
+# @FUNCTION: qt4_foreach_target_subdir
+# @INTERNAL
+# @DESCRIPTION:
+# Executes the given command inside each directory listed in 
QT4_TARGET_DIRECTORIES.
+qt4_foreach_target_subdir() {
+       local subdir
+       for subdir in ${QT4_TARGET_DIRECTORIES}; do
+               mkdir -p "${subdir}" || die
+               pushd "${subdir}" >/dev/null || die
+
+               einfo "Running $* ${subdir:+in ${subdir}}"
+               "$@"
+
+               popd >/dev/null || die
+       done
+}
+
+# @FUNCTION: qt4_qmake
+# @INTERNAL
+# @DESCRIPTION:
+# Helper function that runs qmake in the current target subdir.
+# Intended to be called by qt4_foreach_target_subdir().
+qt4_qmake() {
+       local projectdir=${PWD/#${BUILD_DIR}/${S}}
+
+       "${BUILD_DIR}"/bin/qmake \
+               CONFIG+=nostrip \
+               LIBS+=-L"${QT4_LIBDIR}" \
+               "${projectdir}" \
+               || die "qmake failed (${projectdir})"
+}
+
 # @ECLASS-VARIABLE: QCONFIG_ADD
 # @DESCRIPTION:
 # List options that need to be added to QT_CONFIG in qconfig.pri

Reply via email to