# 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"

# 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 = "thud"

LICENSE_PATH += "${LAYERDIR}/licenses"

SIGGEN_EXCLUDERECIPES_ABISAFE += " \
  mplayer-common \
  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->python \
  phoronix-test-suite->php \
"

# 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-pt-sans->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 \
"

DEFAULT_TEST_SUITES_pn-meta-oe-ptest-image = " ${PTESTTESTSUITE}"
