1# Inherit this class in recipes to enable building their introspection files 2 3# python3native is inherited to prevent introspection tools being run with 4# host's python 3 (they need to be run with native python 3) 5# 6# This also sets up autoconf-based recipes to build introspection data (or not), 7# depending on distro and machine features (see gobject-introspection-data class). 8inherit python3native gobject-introspection-data 9 10# meson: default option name to enable/disable introspection. This matches most 11# project's configuration. In doubts - check meson_options.txt in project's 12# source path. 13GIR_MESON_OPTION ?= 'introspection' 14GIR_MESON_ENABLE_FLAG ?= 'true' 15GIR_MESON_DISABLE_FLAG ?= 'false' 16 17# Define g-i options such that they can be disabled completely when GIR_MESON_OPTION is empty 18GIRMESONTARGET = "-D${GIR_MESON_OPTION}=${@bb.utils.contains('GI_DATA_ENABLED', 'True', '${GIR_MESON_ENABLE_FLAG}', '${GIR_MESON_DISABLE_FLAG}', d)} " 19GIRMESONBUILD = "-D${GIR_MESON_OPTION}=${GIR_MESON_DISABLE_FLAG} " 20# Auto enable/disable based on GI_DATA_ENABLED 21EXTRA_OECONF:prepend:class-target = "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection', '--disable-introspection', d)} " 22EXTRA_OEMESON:prepend:class-target = "${@['', '${GIRMESONTARGET}'][d.getVar('GIR_MESON_OPTION') != '']}" 23# When building native recipes, disable introspection, as it is not necessary, 24# pulls in additional dependencies, and makes build times longer 25EXTRA_OECONF:prepend:class-native = "--disable-introspection " 26EXTRA_OECONF:prepend:class-nativesdk = "--disable-introspection " 27EXTRA_OEMESON:prepend:class-native = "${@['', '${GIRMESONBUILD}'][d.getVar('GIR_MESON_OPTION') != '']}" 28EXTRA_OEMESON:prepend:class-nativesdk = "${@['', '${GIRMESONBUILD}'][d.getVar('GIR_MESON_OPTION') != '']}" 29 30# Generating introspection data depends on a combination of native and target 31# introspection tools, and qemu to run the target tools. 32DEPENDS:append:class-target = " gobject-introspection gobject-introspection-native qemu-native" 33 34# Even though introspection is disabled on -native, gobject-introspection package is still 35# needed for m4 macros. 36DEPENDS:append:class-native = " gobject-introspection-native" 37DEPENDS:append:class-nativesdk = " gobject-introspection-native" 38 39# This is used by introspection tools to find .gir includes 40export XDG_DATA_DIRS = "${STAGING_DATADIR}:${STAGING_LIBDIR}" 41 42do_configure:prepend:class-target () { 43 # introspection.m4 pre-packaged with upstream tarballs does not yet 44 # have our fixes 45 mkdir -p ${S}/m4 46 cp ${STAGING_DIR_TARGET}/${datadir}/aclocal/introspection.m4 ${S}/m4 47} 48 49# .typelib files are needed at runtime and so they go to the main package (so 50# they'll be together with libraries they support). 51FILES:${PN}:append = " ${libdir}/girepository-*/*.typelib" 52 53# .gir files go to dev package, as they're needed for developing (but not for 54# running) things that depends on introspection. 55FILES:${PN}-dev:append = " ${datadir}/gir-*/*.gir ${libdir}/gir-*/*.gir" 56