# $Header: /magellan-cvs/smage/include/cmake.sminc,v 1.9 2008/04/20 17:40:19 niro Exp $ # cmake config tools SDEPEND="${SDEPEND} >= dev-util/cmake-2.4.7 >= virtual/sed" # enables features like --enable-blah with make cmake_enable() { local feature="$1" local option="$2" [[ -z ${option} ]] && option=ON echo "-DENABLE_${feature}=${option}" } # disables features like --disable-blah with make cmake_disable() { local feature="$1" echo "-DENABLE_${feature}=OFF" } # enables features like --with-blah with make cmake_with() { local feature="$1" local option="$2" [[ -z ${option} ]] && option=ON echo "-DWITH_${feature}=${option}" } # enables features like --with-blah with make cmake_without() { local feature="$1" echo "-DWITH_${feature}=OFF" } # tell cmake that we support a feature cmake_have() { local feature="$1" local option="$2" [[ -z ${option} ]] && option=ON echo "-DHAVE_${feature}=${option}" } # tell cmake that we don't support a feature cmake_have_not() { local feature="$1" echo "-DHAVE_${feature}=OFF" } # tell cmake that we want a feature cmake_want() { local feature="$1" local option="$2" [[ -z ${option} ]] && option=ON echo "-DWANT_${feature}=${option}" } # tell cmake that we don't want a feature cmake_want_not() { local feature="$1" echo "-DWANT_${feature}=OFF" } # tell cmake that we don't want a feature using -DNO cmake_no() { local feature="$1" echo "-DNO_${feature}=1" } # tell cmake that we forcefully build a feature cmake_build() { local feature="$1" local option="$2" [[ -z ${option} ]] && option=ON echo "-DBUILD_${feature}=${option}" } # tell cmake that we don't build a feature cmake_build_not() { local feature="$1" 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 } cmake_configure() { local configure_opts="$@" local default_opts [[ -n ${CMAKE_SRCDIR} ]] || local CMAKE_SRCDIR [[ -n ${CMAKE_BUILDDIR} ]] || local CMAKE_BUILDDIR # disable colors if requested if [[ ${NOCOLORS} = true ]] then 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}" 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)' default_opts+=' -DCMAKE_INSTALL_LIBDIR=${PREFIX:-/usr}/$(mlibdir)' 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)" default_opts+=" -DCMAKE_INSTALL_LIBDIR=${PREFIX:-/usr}/$(mlibdir)" 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 #: ${CMAKE_SRCDIR="${SRCDIR}-${abi}/${SRCSUBDIR}"} #: ${CMAKE_BUILDDIR="${BUILDDIR}/build-${abi}"} CMAKE_SRCDIR="${SRCDIR}-${abi}/${SRCSUBDIR}" CMAKE_BUILDDIR="${BUILDDIR}/build-${abi}" cd ${CMAKE_BUILDDIR} abi-${abi} cmake ${default_opts} ${configure_opts} ${CMAKE_SRCDIR} || die done else : ${CMAKE_SRCDIR="${SRCDIR}/${SRCSUBDIR}"} : ${CMAKE_BUILDDIR="${BUILDDIR}/build"} cd ${BUILDDIR}/build cmake ${default_opts} ${configure_opts} ${SRCDIR}/${SRCSUBDIR} || die fi } cmake_setup_builddir() { [[ -n ${CMAKE_BUILDDIR} ]] || local CMAKE_BUILDDIR if [[ ${MULTILIB_BUILD} = true ]] then : ${CMAKE_BUILDDIR="${BUILDDIR}/build-$(mabi)"} all-abis install -d ${CMAKE_BUILDDIR} || die else : ${CMAKE_BUILDDIR="${BUILDDIR}/build"} install -d ${CMAKE_BUILDDIR} || die fi } cmake_mmake() { [[ -n ${CMAKE_BUILDDIR} ]] || local CMAKE_BUILDDIR if [[ ${MULTILIB_BUILD} = true ]] then : ${CMAKE_BUILDDIR="${BUILDDIR}/build-$(mabi)"} mmake -C ${CMAKE_BUILDDIR} "$@" || die else : ${CMAKE_BUILDDIR="${BUILDDIR}/build"} mmake -C ${CMAKE_BUILDDIR} "$@" || die fi } cmake_src_compile() { [[ -n ${CMAKE_SRCDIR} ]] || local CMAKE_SRCDIR if [[ ${MULTILIB_BUILD} = true ]] then : ${CMAKE_SRCDIR="${SRCDIR}-$(mabi)/${SRCSUBDIR}"} else : ${CMAKE_SRCDIR="${SRCDIR}"} fi cd ${CMAKE_SRCDIR} cmake_setup_builddir || die cmake_configure "$@" || die cmake_mmake || die } cmake_src_check() { #[[ -n ${CMAKE_BUILDDIR} ]] || local CMAKE_BUILDDIR # #: ${CMAKE_BUILDDIR="${BUILDDIR}/build"} #cd ${CMAKE_BUILDDIR} #mmake -j1 -k check || die return 0 } cmake_multilib_src_check() { #[[ -n ${CMAKE_BUILDDIR} ]] || local CMAKE_BUILDDIR # #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 # : ${CMAKE_BUILDDIR="${BUILDDIR}/build-${abi}"} # cd ${CMAKE_BUILDDIR} # mmake -j1 -k check || die #done return 0 } cmake_src_install() { [[ -n ${CMAKE_SRCDIR} ]] || local CMAKE_SRCDIR : ${CMAKE_SRCDIR="${SRCDIR}"} cmake_mmake DESTDIR=${BINDIR} install || die cd ${CMAKE_SRCDIR} local i for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ FAQ LICENSE NEWS README TODO do if [ -f ${CMAKE_SRCDIR}/${i} ] then minstalldocs ${i} || die fi done } cmake_multilib_src_install() { local abi local abis_to_run="${MULTILIB_ABIS}" [[ -n ${CMAKE_SRCDIR} ]] || local CMAKE_SRCDIR 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 : ${CMAKE_SRCDIR="${SRCDIR}-${abi}"} cd ${CMAKE_SRCDIR} local i for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ FAQ LICENSE NEWS README TODO do if [ -f ${CMAKE_SRCDIR}/${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