# 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 = "kirkstone 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 \
  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}"
