# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb"

BBFILE_COLLECTIONS += "core"
BBFILE_PATTERN_core = "^${LAYERDIR}/"
BBFILE_PRIORITY_core = "5"

LAYERSERIES_CORENAMES = "langdale"

# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
LAYERVERSION_core = "14"
LAYERSERIES_COMPAT_core = "kirkstone langdale"

BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core"

# Set a variable to get to the top of the metadata location
COREBASE = '${@os.path.normpath("${LAYERDIR}/../")}'

# opkg-utils is for update-alternatives :(
SIGGEN_EXCLUDERECIPES_ABISAFE += " \
  sysvinit-inittab \
  busybox-inittab \
  shadow-securetty \
  opkg-arch-config \
  netbase \
  init-ifupdown \
  connman-conf \
  formfactor \
  xserver-xf86-config \
  pointercal-xinput \
  base-files \
  keymaps \
  udev-extraconf \
  packagegroup-x11-xserver \
  systemd-serialgetty \
  initscripts \
  shadow \
  shadow-sysroot \
  base-passwd \
  opkg-utils \
  gstreamer1.0-meta-base \
  ca-certificates \
  shared-mime-info \
  desktop-file-utils \
"

SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
  *->patch-native \
  *->quilt-native \
  *->subversion-native \
  *->git-native \
  *->icecc-create-env-native \
  gcc-cross-${TARGET_ARCH}->linux-libc-headers \
  ppp-dialin->ppp \
  resolvconf->bash \
  docbook-xsl-stylesheets->perl \
  ca-certificates->openssl \
  initramfs-framework->${VIRTUAL-RUNTIME_base-utils} \
  initramfs-framework->eudev \
  initramfs-framework->systemd \
  initramfs-module-install-efi->dosfstools \
  initramfs-module-install-efi->e2fsprogs \
  initramfs-module-install-efi->parted \
  initramfs-module-install-efi->util-linux \
  initramfs-module-install->e2fsprogs \
  initramfs-module-install->grub \
  initramfs-module-install->parted \
  initramfs-module-install->util-linux \
  grub-efi->grub-bootconf \
  liberation-fonts->fontconfig \
  cantarell-fonts->fontconfig \
  ttf-bitstream-vera->fontconfig \
  gnome-icon-theme->librsvg \
  font-alias->font-util \
  systemd-boot->systemd-bootconf \
  systemd->systemd-conf \
  weston->weston-init \
  weston-init->weston \
  weston-init->kbd \
  connman->xl2tpd \
  lttng-tools->lttng-modules \
  sato-icon-theme->gdk-pixbuf \
  sato-icon-theme->gtk+3 \
  adwaita-icon-theme->gdk-pixbuf \
  adwaita-icon-theme->gtk+3 \
"

# Avoid adding bison-native to the sysroot without a specific
# dependency in the recipe. This means indirect dependencies
# (e.g. X -> Y -> binutils-cross -> bison-native) no longer meet the
# dependency incidentally. This improves determinism and avoids build
# failures when people switch to external toolchains.
# libarchive only needs e2fsprogs headers at buildtime
SSTATE_EXCLUDEDEPS_SYSROOT += "\
    .*->autoconf-native \
    .*->automake-native \
    .*->bison-native \
    .*->meson-native \
    .*->ninja-native \
    .*->patch-native \
    .*->pkgconfig-native \
    .*->quilt-native \
    ^(?!gtk-doc-native).*->xmlto-native \
    .*->gperf-native \
    .*->help2man-native \
    .*->gtk-doc-native \
    .*->texinfo-native \
    .*->perlcross-native \
    libarchive-native->e2fsprogs-native \
"
# Nothing needs to depend on libc-initial
# base-passwd/shadow-sysroot don't need their dependencies
SSTATE_EXCLUDEDEPS_SYSROOT += "\
    .*->.*-initial.* \
    .*(base-passwd|shadow-sysroot)->.* \
"
# Avoid adding autoconf-archive-native to sysroot without a specific
# dependency in the recipe.
SSTATE_EXCLUDEDEPS_SYSROOT += ".*->autoconf-archive-native"

# We need to keep bitbake tools in PATH
# Avoid empty path entries
BITBAKEPATH := "${@os.path.dirname(bb.utils.which(d.getVar('PATH'),'bitbake'))}"
PATH := "${@'${BITBAKEPATH}:' if '${BITBAKEPATH}' != '' else ''}${HOSTTOOLS_DIR}"
