--- trunk/core/include/multilib.sminc 2009/10/29 10:40:29 3671 +++ trunk/include/multilib.sminc 2012/02/11 19:33:40 11029 @@ -1,6 +1,12 @@ -# $Header: /magellan-cvs/smage/include/multilib.sminc,v 1.33 2007-11-13 15:49:09 niro Exp $ +# $Id$ # multilib abis +# be verbose or nor (true|false} +: ${MULTILIB_VERBOSE="true"} + +# multilib should call all dependant includes, which gets overridden +sminclude mtools cmake + # do not define EMUL_LINUX_32 after inherit of multlib !! # it may break i*86 builds @@ -14,8 +20,8 @@ # add linux32 to the dependencies if [[ ${EMUL_LINUX_32} = true ]] then - EMUL_LINUX_32_SDEPENDS_x86_64=">= dev-util/linux32-1" - SPECIAL_VARS="${SPECIAL_VARS} EMUL_LINUX_32_SDEPENDS_x86_64" + EMUL_LINUX_32_SDEPEND_x86_64=">= sys-apps/util-linux-2.19" + SPECIAL_VARS="${SPECIAL_VARS} EMUL_LINUX_32_SDEPEND_x86_64" fi ;; i*86) @@ -33,10 +39,10 @@ # the var ist decided with our common eval+echo magic if [[ -z ${SDEPEND} ]] then - SDEPEND="\$(eval echo \\\$EMUL_LINUX_32_SDEPENDS_\${ARCH/i*86/x86} | tr ';' '\n')" + SDEPEND="\$(eval echo \\\$EMUL_LINUX_32_SDEPEND_\${ARCH/i*86/x86} | tr ';' '\n')" else SDEPEND="${SDEPEND} - \$(eval echo \\\$EMUL_LINUX_32_SDEPENDS_\${ARCH/i*86/x86} | tr ';' '\n')" + \$(eval echo \\\$EMUL_LINUX_32_SDEPEND_\${ARCH/i*86/x86} | tr ';' '\n')" fi fi @@ -65,34 +71,47 @@ then export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}" fi - export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig" + # keep pkgconfig clean + local orig_pkg_config_path="${PKG_CONFIG_PATH}" + export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig:${PKG_CONFIG_PATH}" - echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}" - echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'" - echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'" - echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'" - echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'" - if [[ ${EXPORT_ABI_LDFLAGS} != false ]] + if [[ ${MULTILIB_VERBOSE} = true ]] then - echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'" - else - echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'" + echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}" + echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'" + echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'" + echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'" + echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'" + if [[ ${EXPORT_ABI_LDFLAGS} != false ]] + then + echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'" + else + echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'" + fi + echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'" fi - echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'" # configure a linux32 emulated build if [[ ${EMUL_LINUX_32} = true ]] then - echo -e "${COLBLUE}*** ${COLGREEN} EMUL_LINUX_32${COLDEFAULT}='${EMUL_LINUX_32}'" + if [[ ${MULTILIB_VERBOSE} = true ]] + then + echo -e "${COLBLUE}*** ${COLGREEN} EMUL_LINUX_32${COLDEFAULT}='${EMUL_LINUX_32}'" + fi uname(){ linux32 uname $@; } && export -f uname ORIG_CHOST="${CHOST}" && export CHOST="i686-pc-linux-gnu" fi - echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'" + if [[ ${MULTILIB_VERBOSE} = true ]] + then + echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'" + fi # run any given command eval $@ || die - unset ABI CC CXX ABI_LIBDIR LDFLAGS PKG_CONFIG_PATH + unset ABI CC CXX ABI_LIBDIR LDFLAGS + # keep pkgconfig clean + export PKG_CONFIG_PATH="${orig_pkg_config_path}" # restore original settings if [[ ${EMUL_LINUX_32} = true ]] @@ -112,26 +131,33 @@ then export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}" fi - export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig" + # keep pkgconfig clean + local orig_pkg_config_path="${PKG_CONFIG_PATH}" + export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig:${PKG_CONFIG_PATH}" - echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}" - echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'" - echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'" - echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'" - echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'" - if [[ ${EXPORT_ABI_LDFLAGS} != false ]] + if [[ ${MULTILIB_VERBOSE} = true ]] then - echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'" - else - echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'" + echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}" + echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'" + echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'" + echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'" + echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'" + if [[ ${EXPORT_ABI_LDFLAGS} != false ]] + then + echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'" + else + echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'" + fi + echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'" + echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'" fi - echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'" - echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'" # run any given command eval $@ || die - unset ABI CC CXX ABI_LIBDIR LDFLAGS PKG_CONFIG_PATH + unset ABI CC CXX ABI_LIBDIR LDFLAGS + # keep pkgconfig clean + export PKG_CONFIG_PATH="${orig_pkg_config_path}" } only-m32() @@ -186,6 +212,11 @@ done } +mabi() +{ + echo \${ABI} +} + ## # multilib compile functions ## @@ -194,7 +225,7 @@ then # rename the old one old_mconfigure=old$(typeset -f mconfigure) - eval ${old_mconfigure} + eval "${old_mconfigure}" fi mconfigure() { @@ -211,6 +242,31 @@ done } +if [[ ! -z $(typeset -f cmake_configure) ]] +then + # rename the old one + old_cmake_configure=old$(typeset -f cmake_configure) + eval "${old_cmake_configure}" +fi +cmake_configure() +{ + local abi + local abis_to_run="${MULTILIB_ABIS}" + + # respect MULTILIB_ONLY_ABI variable + [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}" + + local saved_SRCDIR="${SRCDIR}" + for abi in ${abis_to_run} + do + SRCDIR="${saved_SRCDIR}-${abi}" + cd ${SRCDIR} + abi-${abi} oldcmake_configure $@ || die + done + # restore SRCDIR + SRCDIR="${saved_SRCDIR}" +} + if [[ ! -z $(typeset -f munpack) ]] then # rename the old one @@ -337,11 +393,38 @@ done } +if [[ ! -z $(typeset -f mautoreconf) ]] +then + # rename the old one + old_mautoreconf=old$(typeset -f mautoreconf) + eval "${old_mautoreconf}" +fi +mautoreconf() +{ + local abi + local abis_to_run="${MULTILIB_ABIS}" + + # respect MULTILIB_ONLY_ABI variable + [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}" + + for abi in ${abis_to_run} + do + echo -e "${COLBLUE}*** ${COLGREEN}running mautoreconf for ABI -${abi}${COLDEFAULT}" + cd ${SRCDIR}-${abi} + oldmautoreconf $@ || die + done +} + +if [[ ! -z $(typeset -f minstalldocs) ]] +then + # rename the old one + old_minstalldocs=old$(typeset -f minstalldocs) + eval "${old_minstalldocs}" +fi minstalldocs() { local abi local docfiles - docfiles="$@" local abis_to_run="${MULTILIB_ABIS}" @@ -351,17 +434,7 @@ for abi in ${abis_to_run} do cd ${SRCDIR}-${abi} - if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ] - then - install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs." - fi - - for i in ${docfiles} - do - cat ${SRCDIR}-${abi}/${i} | gzip -9c > ${SRCDIR}-${abi}/${i}.gz || die "gzipping docs." - install -m 0644 ${SRCDIR}-${abi}/${i}.gz \ - ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "coping docs." - done + oldminstalldocs $@ || die done } @@ -379,6 +452,11 @@ mmake } +multilib_src_check() +{ + mmake -j1 -k check || die +} + multilib_src_install() { minstall_destdir @@ -398,4 +476,4 @@ done } -export_inherits multilib src_prepare src_compile src_install +export_inherits multilib src_prepare src_compile src_check src_install