# It really depends on order of the layers appearing in BBLAYERS
# variable in toplevel bblayers.conf file, where bitbake will search
# for .inc files and others where bitbake uses BBPATH since it will
# search the directories from first to last as specified in BBPATH
# Therefore if you want a given layer to be considered high priority
# for the .inc and .conf etc. then consider it adding at the beginning
# of BBPATH. For bblayers bitbake will use BBFILES_PRIORITY to resolve
# the recipe contention so the order of directories in BBFILES does 
# not matter.

# We have a conf and classes directory, append to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have a recipes directory, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "openembedded-layer"
BBFILE_PATTERN_openembedded-layer := "^${LAYERDIR}/"

# Define the priority for recipes (.bb files) from this layer,
# choosing carefully how this layer interacts with all of the
# other layers.

BBFILE_PRIORITY_openembedded-layer = "6"

# only activates content when identified layers are present,
# to ensure yocto compatibility check pass
BBFILES_DYNAMIC += " \
    meta-python:${LAYERDIR}/dynamic-layers/meta-python/recipes-*/*/*.bb \
    meta-python:${LAYERDIR}/dynamic-layers/meta-python/recipes-*/*/*.bbappend \
    networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/recipes-*/*/*.bb \
    networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/recipes-*/*/*.bbappend \
    gnome-layer:${LAYERDIR}/dynamic-layers/gnome-layer/recipes-*/*/*.bb \
    gnome-layer:${LAYERDIR}/dynamic-layers/gnome-layer/recipes-*/*/*.bbappend \
    perl-layer:${LAYERDIR}/dynamic-layers/perl-layer/recipes-*/*/*.bb \
    perl-layer:${LAYERDIR}/dynamic-layers/perl-layer/recipes-*/*/*.bbappend \
"

# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
LAYERVERSION_openembedded-layer = "1"

LAYERDEPENDS_openembedded-layer = "core"

LAYERSERIES_COMPAT_openembedded-layer = "honister"

LICENSE_PATH += "${LAYERDIR}/licenses"

PREFERRED_RPROVIDER_libdevmapper = "lvm2"
PREFERRED_PROVIDER_android-tools-conf ?= "android-tools-conf"

SIGGEN_EXCLUDERECIPES_ABISAFE += " \
  fbset-modes \
  gpsd-machine-conf \
  distro-feed-configs \
  ca-certificates \
  pointercal \
"

SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
  android-tools->android-tools-conf \
  usb-modeswitch-data->usb-modeswitch \
  lmsensors->lmsensors-config \
  phoronix-test-suite->bash \
  phoronix-test-suite->python3 \
  phoronix-test-suite->php \
  phoronix-test-suite->lsb-release \
  phoronix-test-suite->util-linux \
  phoronix-test-suite->busybox \
  phoronix-test-suite->shared-mime-info \
  phoronix-test-suite->desktop-file-utils \
"

# ttf.inc inherits fontcache which adds fontconfig-utils to RDEPENDS
SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
  terminus-font->fontconfig \
  ttf-abyssinica->fontconfig \
  ttf-arphic-uming->fontconfig \
  ttf-dejavu->fontconfig \
  ttf-droid->fontconfig \
  ttf-gentium->fontconfig \
  ttf-hunkyfonts->fontconfig \
  ttf-inconsolata->fontconfig \
  ttf-liberation->fontconfig \
  ttf-liberation-sans-narrow->fontconfig \
  ttf-lklug->fontconfig \
  ttf-lohit->fontconfig \
  ttf-noto-emoji->fontconfig \
  ttf-pt-sans->fontconfig \
  ttf-roboto->fontconfig \
  ttf-mplus->fontconfig \
  ttf-sazanami->fontconfig \
  ttf-tlwg->fontconfig \
  ttf-ubuntu-font-family->fontconfig \
  ttf-vlgothic->fontconfig \
  ttf-wqy-zenhei->fontconfig \
  source-han-sans-cn-fonts->fontconfig \
  source-han-sans-jp-fonts->fontconfig \
  source-han-sans-kr-fonts->fontconfig \
  source-han-sans-tw-fonts->fontconfig \
  source-code-pro-fonts->fontconfig \
"

DEFAULT_TEST_SUITES:pn-meta-oe-ptest-image = " ${PTESTTESTSUITE}"

NON_MULTILIB_RECIPES:append = " crash"
