# $Id$ # meson config tools SDEPEND="${SDEPEND} >= dev-util/meson-0.43 >= dev-util/ninja-1.8" # enables features like --enable-blah with make meson_enable() { local feature="$1" local option="$2" [[ -z ${option} ]] && option="true" echo "-Denable-${feature}=${option}" } # disables features like --disable-blah with make meson_disable() { local feature="$1" echo "-Denable-${feature}=false" } # enables features like --with-blah with make meson_with() { local feature="$1" local option="$2" [[ -z ${option} ]] && option="true" echo "-Dwith-${feature}=${option}" } # enables features like --with-blah with make meson_without() { local feature="$1" echo "-Dwith-{feature}=false" } # generic meson opts meson_opt() { local feature="$1" local option="$2" echo "-D${feature}=${option}" } meson_src_prepare() { munpack ${SRCFILE} || die } meson_configure() { local configure_opts="$@" local default_opts default_opts+=" --buildtype=release" default_opts+=" --prefix=/usr" default_opts+=" --sysconfdir=/etc" default_opts+=" --localstatedir=/var/lib" default_opts+=' --libdir=/usr/$(mlibdir)' default_opts+=' --libexecdir=/usr/$(mlibdir)/${PNAME}' if [[ ${MULTILIB_BUILD} = true ]] then all-abis meson setup ${default_opts} ${configure_opts} ${SRCDIR}-$(mabi)/${SRCSUBDIR} ${BUILDDIR}/build-$(mabi) || die else meson setup ${default_opts} ${configure_opts} ${SRCDIR}/${SRCSUBDIR} ${BUILDDIR}/build || die fi } mninja() { if [[ ${MULTILIB_BUILD} = true ]] then all-abis ninja -C ${SRCDIR}-$(mabi)/${SRCSUBDIR} -C ${BUILDDIR}/build-$(mabi) -v ${MAKEOPTS} "$@" else ninja -C ${SRCDIR}/${SRCSUBDIR} -C ${BUILDDIR}/build -v ${MAKEOPTS} "$@" fi } meson_setup_builddir() { if [[ ${MULTILIB_BUILD} = true ]] then all-abis install -d ${BUILDDIR}/build-$(mabi) || die else install -d ${BUILDDIR}/build || die fi } meson_src_compile() { if [[ ${MULTILIB_BUILD} != true ]] then cd ${SRCDIR} fi meson_setup_builddir || die meson_configure "$@" || die mninja || die } meson_src_check() { cd ${BUILDDIR}/build meson test || die } meson_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} meson test || die done } meson_src_install() { cd ${BUILDDIR}/build DESTDIR=${BINDIR} ninja install || die cd ${SRCDIR} local i for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ FAQ LICENSE NEWS README TODO do if [ -f ${SRCDIR}/${i} ] then minstalldocs ${i} || die fi done } meson_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} DESTDIR=${BINDIR} ninja 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 meson src_prepare src_compile if [[ ${MULTILIB_BUILD} = true ]] then export_inherits meson_multilib src_check src_install else export_inherits meson src_check src_install fi