--- smage/trunk/include/cmake.sminc 2014/10/17 07:59:57 5866 +++ smage/trunk/include/cmake.sminc 2017/12/21 09:38:04 11527 @@ -2,7 +2,8 @@ # cmake config tools SDEPEND="${SDEPEND} - >= dev-util/cmake-2.4.7" + >= dev-util/cmake-2.4.7 + >= virtual/sed" # enables features like --enable-blah with make cmake_enable() @@ -112,6 +113,15 @@ echo "-D${feature}=${option}" } +cmake_libsuffix() +{ + local libsuffix + + libsuffix="$(mlibdir)" + libsuffix="${libsuffix/lib}" + echo "${libsuffix}" +} + cmake_src_prepare() { munpack ${SRCFILE} || die @@ -120,39 +130,75 @@ cmake_configure() { local configure_opts="$@" - local libsuffix="$(mlibdir)" - local libsuffix="${libsuffix/lib}" + local default_opts # disable colors if requested if [[ ${NOCOLORS} = true ]] then - configure_opts="${configure_opts} -DCMAKE_COLOR_MAKEFILE=OFF" + default_opts+=" -DCMAKE_COLOR_MAKEFILE=OFF" fi - cmake \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=${PREFIX:-/usr} \ - -DLIB_SUFFIX=${libsuffix} \ - -DLIB_INSTALL_DIR=${PREFIX:-/usr}/$(mlibdir) \ - ${configure_opts} \ - ${SRCDIR}/${SRCSUBDIR} \ - || die + default_opts+=" -DCMAKE_VERBOSE_MAKEFILE=ON" + default_opts+=" -DCMAKE_BUILD_TYPE=Release" + default_opts+=" -DCMAKE_INSTALL_PREFIX=${PREFIX:-/usr}" + if [[ ${MULTILIB_BUILD} = true ]] + then + # eval these variables later with the abi-${ABI} caller + default_opts+=' -DLIB_SUFFIX=$(cmake_libsuffix)' + default_opts+=' -DLIB_INSTALL_DIR=${PREFIX:-/usr}/$(mlibdir)' + default_opts+=' -DLIB_SUFFIX=$(cmake_libsuffix)' + else + # eval these variables now + default_opts+=" -DLIB_SUFFIX=$(cmake_libsuffix)" + default_opts+=" -DLIB_INSTALL_DIR=${PREFIX:-/usr}/$(mlibdir)" + default_opts+=" -DLIB_SUFFIX=$(cmake_libsuffix)" + fi + + if [[ ${MULTILIB_BUILD} = true ]] + then + 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 + cd ${BUILDDIR}/build-${abi} + abi-${abi} cmake ${default_opts} ${configure_opts} ${SRCDIR}-${abi}/${SRCSUBDIR} || die + done + else + cd ${BUILDDIR}/build + cmake ${default_opts} ${configure_opts} ${SRCDIR}/${SRCSUBDIR} || die + fi } -cmake_src_compile() +cmake_setup_builddir() { - cd ${SRCDIR} + if [[ ${MULTILIB_BUILD} = true ]] + then + all-abis install -d ${BUILDDIR}/build-$(mabi) || die + else + install -d ${BUILDDIR}/build || die + fi +} - # remove build dir if exist - [[ -d ${BUILDDIR}/build ]] && rm -rf ${BUILDDIR}/build +cmake_mmake() +{ + if [[ ${MULTILIB_BUILD} = true ]] + then + mmake -C ${BUILDDIR}/build-$(mabi) "$@" || die + else + mmake -C ${BUILDDIR}/build "$@" || die + fi +} - # build outside of the source dir - install -d ${BUILDDIR}/build || die - cd ${BUILDDIR}/build +cmake_src_compile() +{ + cd ${SRCDIR} - cmake_configure || die - mmake || die + cmake_setup_builddir || die + cmake_configure "$@" || die + cmake_mmake || die } cmake_src_check() @@ -162,10 +208,24 @@ return 0 } +cmake_multilib_src_check() +{ + #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 + # cd ${BUILDDIR}/build-${abi} + # mmake -j1 -k check || die + #done + return 0 +} + cmake_src_install() { - cd ${BUILDDIR}/build - make DESTDIR=${BINDIR} install || die + cmake_mmake DESTDIR=${BINDIR} install || die cd ${SRCDIR} local i @@ -179,4 +239,34 @@ done } -export_inherits cmake src_prepare src_compile src_check src_install +cmake_multilib_src_install() +{ + local abi + local abis_to_run="${MULTILIB_ABIS}" + + cmake_mmake DESTDIR=${BINDIR} install || die + + # 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} + local i + 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 + done +} + +export_inherits cmake src_prepare src_compile +if [[ ${MULTILIB_BUILD} = true ]] +then + export_inherits cmake_multilib src_check src_install +else + export_inherits cmake src_check src_install +fi