--- trunk/core/include/cmake.sminc 2008/10/10 13:29:42 2 +++ trunk/include/cmake.sminc 2017/10/20 06:33:16 29991 @@ -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() @@ -96,6 +97,31 @@ echo "-DBUILD_${feature}=OFF" } +# install cmake opts +cmake_install() +{ + local feature="$1" + local option="$2" + echo "-DINSTALL_${feature}=${option}" +} + +# generic cmake opts +cmake_opt() +{ + local feature="$1" + local option="$2" + echo "-D${feature}=${option}" +} + +cmake_libsuffix() +{ + local libsuffix + + libsuffix="$(mlibdir)" + libsuffix="${libsuffix/lib}" + echo "${libsuffix}" +} + cmake_src_prepare() { munpack ${SRCFILE} || die @@ -104,38 +130,85 @@ 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 + + default_opts+=" -DCMAKE_VERBOSE_MAKEFILE=ON" + default_opts+=" -DCMAKE_BUILD_TYPE=Release" + default_opts+=" -DCMAKE_INSTALL_PREFIX=${PREFIX:-/usr}" + default_opts+=' -DLIB_SUFFIX=$(cmake_libsuffix)' + default_opts+=' -DLIB_INSTALL_DIR=${PREFIX:-/usr}/$(mlibdir)' + + 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 \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=${PREFIX:-/usr} \ - -DLIB_SUFFIX=${libsuffix} \ - -DLIB_INSTALL_DIR=${PREFIX:-/usr}/$(mlibdir) \ - ${configure_opts} \ - ${SRCDIR} \ - || die +cmake_setup_builddir() +{ + if [[ ${MULTILIB_BUILD} = true ]] + then + all-abis install -d ${BUILDDIR}/build-$(mabi) || die + else + install -d ${BUILDDIR}/build || die + fi } cmake_src_compile() { cd ${SRCDIR} + cmake_setup_builddir || die cmake_configure || die - mmake || die + mmake -C ${BUILDDIR}/build-$(mabi) || die +} + +cmake_src_check() +{ + #cd ${BUILDDIR}/build + #mmake -j1 -k check || die + 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 ${SRCDIR} - make DESTDIR=${BINDIR} install || die + cd ${BUILDDIR}/build + make ${MAKEOPTS} DESTDIR=${BINDIR} install || die + cd ${SRCDIR} local i for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ FAQ LICENSE NEWS README TODO @@ -147,4 +220,35 @@ done } -export_inherits cmake src_prepare src_compile src_install +cmake_multilib_src_install() +{ + 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} make ${MAKEOPTS} DESTDIR=${BINDIR} install || die + + 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