--- trunk/core/include/multilib.sminc 2009/12/27 23:16:16 4780 +++ trunk/include/multilib.sminc 2018/12/18 13:15:14 31848 @@ -1,6 +1,18 @@ -# $Header: /magellan-cvs/smage/include/multilib.sminc,v 1.33 2007-11-13 15:49:09 niro Exp $ +# $Id$ # multilib abis +# tell the buildsystem that we are doing a multilib build +export MULTILIB_BUILD="true" + +# be verbose or nor (true|false} +: ${MULTILIB_VERBOSE="true"} + +# enter the abi srcdir as default setting +: ${MULTILIB_ENTER_SRCDIR="true"} + +# multilib should call all dependant includes, which gets overridden +sminclude mtools + # do not define EMUL_LINUX_32 after inherit of multlib !! # it may break i*86 builds @@ -14,8 +26,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 +45,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="$(marchsdepend EMUL_LINUX_32_SDEPEND)" else SDEPEND="${SDEPEND} - \$(eval echo \\\$EMUL_LINUX_32_SDEPENDS_\${ARCH/i*86/x86} | tr ';' '\n')" + $(marchsdepend EMUL_LINUX_32_SDEPEND)" fi fi @@ -63,42 +75,63 @@ export ABI_LIBDIR="lib" if [[ ${EXPORT_ABI_LDFLAGS} != false ]] then - export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}" + local saved_ldflags="${LDFLAGS}" + export LDFLAGS="${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} SRCDIR${COLDEFAULT}='${SRCDIR}/${SRCSUBDIR}'" + 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" + local orig_chost="${CHOST}" && export CHOST="i686-pc-linux-gnu" + fi + if [[ ${MULTILIB_VERBOSE} = true ]] + then + echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'" fi - echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'" # run any given command + if [[ ${MULTILIB_VERBOSE} = true ]] + then + echo -e "${COLGREEN}Executing:${COLDEFAULT} '$@'" + fi eval $@ || die - unset ABI CC CXX ABI_LIBDIR LDFLAGS PKG_CONFIG_PATH + unset ABI CC CXX ABI_LIBDIR + # keep pkgconfig clean + export PKG_CONFIG_PATH="${orig_pkg_config_path}" + export LDFLAGS="${saved_ldflags}" # restore original settings if [[ ${EMUL_LINUX_32} = true ]] then unset uname - export CHOST="${ORIG_CHOST}" && unset ORIG_CHOST + export CHOST="${orig_chost}" && unset orig_chost fi } @@ -110,28 +143,42 @@ export ABI_LIBDIR="lib64" if [[ ${EXPORT_ABI_LDFLAGS} != false ]] then + local saved_ldflags="${LDFLAGS}" 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} SRCDIR${COLDEFAULT}='${SRCDIR}/${SRCSUBDIR}'" + 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 + if [[ ${MULTILIB_VERBOSE} = true ]] + then + echo -e "${COLGREEN}Executing:${COLDEFAULT} '$@'" + fi eval $@ || die - unset ABI CC CXX ABI_LIBDIR LDFLAGS PKG_CONFIG_PATH + unset ABI CC CXX ABI_LIBDIR + # keep pkgconfig clean + export PKG_CONFIG_PATH="${orig_pkg_config_path}" + export LDFLAGS="${saved_ldflags}" } only-m32() @@ -146,7 +193,10 @@ # export this for mpatch etc (to repect only-${abi}) export MULTILIB_ONLY_ABI=${abi} - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi abi-${abi} $@ || die # unset this is very important @@ -167,7 +217,10 @@ # export this for mpatch etc (to repect only-${abi}) export MULTILIB_ONLY_ABI=${abi} - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi abi-${abi} $@ || die # unset this is very important @@ -181,11 +234,44 @@ local abi for abi in ${MULTILIB_ABIS} do - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi abi-${abi} $@ || die done } +mabi() +{ + echo \${ABI} +} + +mabi-cc() +{ + echo "gcc -\${ABI}" +} + +mabi-cxx() +{ + echo "g++ -\${ABI}" +} + +mabi-cflags() +{ + echo "\${CFLAGS}" +} + +mabi-cxxflags() +{ + echo "\${CXXFLAGS}" +} + +mabi-ldflags() +{ + echo "\${LDFLAGS}" +} + ## # multilib compile functions ## @@ -194,8 +280,8 @@ then # rename the old one old_mconfigure=old$(typeset -f mconfigure) - eval ${old_mconfigure} -fi + eval "${old_mconfigure}" + mconfigure() { local abi @@ -206,41 +292,21 @@ for abi in ${abis_to_run} do - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi abi-${abi} oldmconfigure $@ || die 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 -} if [[ ! -z $(typeset -f munpack) ]] then # rename the old one old_munpack=old$(typeset -f munpack) eval "${old_munpack}" -fi + munpack() { local abi @@ -252,17 +318,18 @@ for abi in ${abis_to_run} do echo -e "${COLBLUE}*** ${COLGREEN}unpacking for ABI -${abi}${COLDEFAULT}" - oldmunpack ${SRCFILE} || die + oldmunpack $@ || die mv ${SRCDIR} ${SRCDIR}-${abi} || die done } +fi if [[ ! -z $(typeset -f mmake) ]] then # rename the old one old_mmake=old$(typeset -f mmake) eval "${old_mmake}" -fi + mmake() { local abi @@ -274,17 +341,21 @@ for abi in ${abis_to_run} do echo -e "${COLBLUE}*** ${COLGREEN}compiling for ABI -${abi}${COLDEFAULT}" - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi abi-${abi} oldmmake $@ || die done } +fi if [[ ! -z $(typeset -f minstall) ]] then # rename the old one old_minstall=old$(typeset -f minstall) eval "${old_minstall}" -fi + minstall() { local abi @@ -296,10 +367,14 @@ for abi in ${abis_to_run} do echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}" - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi abi-${abi} oldminstall $@ || die done } +fi minstall_destdir() { @@ -312,7 +387,10 @@ for abi in ${abis_to_run} do echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}" - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi make DESTDIR=${BINDIR} $@ install || die done } @@ -322,7 +400,7 @@ # rename the old one old_mpatch=old$(typeset -f mpatch) eval "${old_mpatch}" -fi + mpatch() { local abi @@ -334,17 +412,21 @@ for abi in ${abis_to_run} do echo -e "${COLBLUE}*** ${COLGREEN}appling patch for ABI -${abi}${COLDEFAULT}" - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi oldmpatch $@ || die done } +fi if [[ ! -z $(typeset -f mlibtoolize) ]] then # rename the old one old_mlibtoolize=old$(typeset -f mlibtoolize) eval "${old_mlibtoolize}" -fi + mlibtoolize() { local abi @@ -356,17 +438,24 @@ for abi in ${abis_to_run} do echo -e "${COLBLUE}*** ${COLGREEN}running mlibtoolize for ABI -${abi}${COLDEFAULT}" - cd ${SRCDIR}-${abi} + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi oldmlibtoolize $@ || die done } +fi -minstalldocs() +if [[ ! -z $(typeset -f mautoreconf) ]] +then + # rename the old one + old_mautoreconf=old$(typeset -f mautoreconf) + eval "${old_mautoreconf}" + +mautoreconf() { local abi - local docfiles - docfiles="$@" - local abis_to_run="${MULTILIB_ABIS}" # respect MULTILIB_ONLY_ABI variable @@ -374,52 +463,39 @@ for abi in ${abis_to_run} do - cd ${SRCDIR}-${abi} - if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ] + echo -e "${COLBLUE}*** ${COLGREEN}running mautoreconf for ABI -${abi}${COLDEFAULT}" + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] then - install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs." + cd ${SRCDIR}-${abi}/${SRCSUBDIR} 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 + oldmautoreconf $@ || die done } +fi -## -# multilib mbuild wrappers -## -multilib_src_prepare() -{ - munpack -} +if [[ ! -z $(typeset -f minstalldocs) ]] +then + # rename the old one + old_minstalldocs=old$(typeset -f minstalldocs) + eval "${old_minstalldocs}" -multilib_src_compile() +minstalldocs() { - mconfigure - mmake -} + local abi + local docfiles -multilib_src_install() -{ - minstall_destdir + local abis_to_run="${MULTILIB_ABIS}" - local i - for abi in ${MULTILIB_ABIS} + # respect MULTILIB_ONLY_ABI variable + [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}" + + for abi in ${abis_to_run} do - cd ${SRCDIR}-${abi} - for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ - FAQ LICENSE NEWS README TODO - do - if [ -f ${SRCDIR}-${abi}/${i} ] - then - minstalldocs ${i} || die - fi - done + if [[ ${MULTILIB_ENTER_SRCDIR} = true ]] + then + cd ${SRCDIR}-${abi}/${SRCSUBDIR} + fi + oldminstalldocs $@ || die done } - -export_inherits multilib src_prepare src_compile src_install +fi