# 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 = "scarthgap styhead"

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

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 \
  initramfs-module-setup-live->udev-extraconf \
  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 \
  run-postinsts->util-linux \
"

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

# Only OE-Core should set/change this
BB_GLOBAL_PYMODULES = "os sys time"

addpylib ${LAYERDIR}/lib oe
