# $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" } meson_bool_true() { local feature="$1" meson_opt "${feature}" "true" } meson_bool_false() { local feature="$1" meson_opt "${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 [[ -n ${MESON_SRCDIR} ]] || local MESON_SRCDIR [[ -n ${MESON_BUILDDIR} ]] || local MESON_BUILDDIR default_opts+=" --buildtype=release" default_opts+=" --prefix=/usr" default_opts+=" --sysconfdir=/etc" default_opts+=" --localstatedir=/var/lib" if [[ ${MULTILIB_BUILD} = true ]] then # must be escaped so the mlibdir variable gets evaluated later default_opts+=' --libdir=/usr/$(mlibdir)' default_opts+=' --libexecdir=/usr/$(mlibdir)/${PNAME}' : ${MESON_SRCDIR="${SRCDIR}-$(mabi)/${SRCSUBDIR}"} : ${MESON_BUILDDIR="${BUILDDIR}/build-$(mabi)"} all-abis meson setup ${default_opts} ${configure_opts} ${MESON_SRCDIR} ${MESON_BUILDDIR} || die else # the mlibdir variable gets right now evaluated default_opts+=" --libdir=/usr/$(mlibdir)" default_opts+=" --libexecdir=/usr/$(mlibdir)/${PNAME}" : ${MESON_SRCDIR="${SRCDIR}/${SRCSUBDIR}"} : ${MESON_BUILDDIR="${BUILDDIR}/build"} meson setup ${default_opts} ${configure_opts} ${MESON_SRCDIR} ${MESON_BUILDDIR} || die fi } mninja() { local abi local abis_to_run="${MULTILIB_ABIS}" [[ -n ${MESON_SRCDIR} ]] || local MESON_SRCDIR [[ -n ${MESON_BUILDDIR} ]] || local MESON_BUILDDIR # respect MULTILIB_ONLY_ABI variable [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}" if [[ ${MULTILIB_BUILD} = true ]] then for abi in ${abis_to_run} do echo -e "${COLBLUE}*** ${COLGREEN}running ninja for ABI -${abi}${COLDEFAULT}" : ${MESON_SRCDIR="${SRCDIR}-$(mabi)/${SRCSUBDIR}"} : ${MESON_BUILDDIR="${BUILDDIR}/build-$(mabi)"} abi-${abi} ninja -C ${MESON_SRCDIR} -C ${MESON_BUILDDIR} -v ${MAKEOPTS} "$@" done else : ${MESON_SRCDIR="${SRCDIR}/${SRCSUBDIR}"} : ${MESON_BUILDDIR="${BUILDDIR}/build"} ninja -C ${MESON_SRCDIR} -C ${MESON_BUILDDIR} -v ${MAKEOPTS} "$@" fi } meson_setup_builddir() { local abi local abis_to_run="${MULTILIB_ABIS}" [[ -n ${MESON_BUILDDIR} ]] || local MESON_BUILDDIR # respect MULTILIB_ONLY_ABI variable [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}" if [[ ${MULTILIB_BUILD} = true ]] then for abi in ${abis_to_run} do echo -e "${COLBLUE}*** ${COLGREEN}running ninja for ABI -${abi}${COLDEFAULT}" : ${MESON_BUILDDIR="${BUILDDIR}/build-$(mabi)"} abi-${abi} install -d ${MESON_BUILDDIR} || die done else : ${MESON_BUILDDIR="${BUILDDIR}/build"} install -d ${MESON_BUILDDIR} || die fi } meson_src_compile() { [[ -n ${MESON_SRCDIR} ]] || local MESON_SRCDIR if [[ ${MULTILIB_BUILD} != true ]] then : ${MESON_SRCDIR="${SRCDIR}"} cd ${MESON_SRCDIR} fi meson_setup_builddir || die meson_configure "$@" || die mninja || die } meson_src_check() { [[ -n ${MESON_BUILDDIR} ]] || local MESON_BUILDDIR : ${MESON_BUILDDIR="${BUILDDIR}/build"} meson test -C ${MESON_BUILDDIR} || die } meson_multilib_src_check() { local abi local abis_to_run="${MULTILIB_ABIS}" [[ -n ${MESON_BUILDDIR} ]] || local MESON_BUILDDIR # respect MULTILIB_ONLY_ABI variable [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}" for abi in ${abis_to_run} do : ${MESON_BUILDDIR="${BUILDDIR}/build-$(mabi)"} abi-${abi} meson test -C ${MESON_BUILDDIR} || die done } meson_src_install() { [[ -n ${MESON_SRCDIR} ]] || local MESON_SRCDIR : ${MESON_SRCDIR="${SRCDIR}"} DESTDIR=${BINDIR} mninja install || die cd ${MESON_SRCDIR} local i for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ FAQ LICENSE NEWS README TODO do if [ -f ${MESON_SRCDIR}/${i} ] then minstalldocs ${i} || die fi done } meson_multilib_src_install() { local abi local abis_to_run="${MULTILIB_ABIS}" [[ -n ${MESON_SRCDIR} ]] || local MESON_SRCDIR DESTDIR=${BINDIR} mninja install || die # respect MULTILIB_ONLY_ABI variable [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}" for abi in ${abis_to_run} do : ${MESON_SRCDIR="${SRCDIR}-${abi}"} cd ${MESON_SRCDIR} local i for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ FAQ LICENSE NEWS README TODO do if [ -f ${MESON_SRCDIR}/${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