#
# This file is your local configuration file and is where all local user settings
# are placed. The comments in this file give some guide to the options a new user
# to the system might want to change but pretty much any configuration option can
# be set in this file. More adventurous users can look at local.conf.extended
# which contains other examples of configuration which can be placed in this file
# but new users likely don't need any of them initially.
#
# Lines starting with the '#' character are commented out and in some cases the
# default values are provided as comments to show people example syntax. Enabling
# the option is a question of removing the # character and making any change to the
# variable as required.

#
# Parallelism Options
#
# These two options control how much parallelism BitBake should use. The first
# option determines how many tasks bitbake should run in parallel:
#
#BB_NUMBER_THREADS ?= " 16"
#
# The second option controls how many processes make should run in parallel when
# running compile tasks:
#
#PARALLEL_MAKE ?= "-j 16"
#
# For a quadcore, BB_NUMBER_THREADS = "4", PARALLEL_MAKE = "-j 4" would
# be appropriate for example.

#
# Machine Selection
#
MACHINE ??= "apq8009-robot"

#
# Product Selection
#
PRODUCT ??= "robot"

#
# Variant Selection
#
VARIANT ??= ""

# Show PRODUCT, VARIANT in pre-build configuration output
BUILDCFG_VARS += "PRODUCT VARIANT"

#
# Where to place downloads
#
# During a first build the system will download many differernt source code tarballs
# from various upstream projects. This can take a while, particularly if your network
# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
# can preserve this directory to speed up this part of subsequent builds. This directory
# is safe to share between multiple builds on the same machine too.
#
# The default is a downloads directory under TOPDIR which is the build directory.
#
DL_DIR ?= "${TOPDIR}/downloads"

# Create tarballs when pulling from a source control repository.
BB_GENERATE_MIRROR_TARBALLS = "1"

#
# Where to place shared-state files
#
# BitBake has the capability to accelerate builds based on previously built output.
# This is done using "shared state" files which can be through of as cache objects
# and this option determines where those files are placed.
#
# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
# from these files if no chages were made to the configuration. If changes were made
# to the configuration, only shared state files where the state was still valid would
# be used (done using checksums).
#
# The default is a sstate-cache directory under TOPDIR.
#
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

#
# Where to place the build output
#
# This option specifies where the bulk of the building work should be done and
# where BitBake should place its temporary files and output. Keep in mind that
# this includes the extraction and complation of many applications and the toolchain
# which can use Gigabytes of hard disk space.
#
# The default is a tmp directory under TOPDIR.
#
TMPDIR = "${TOPDIR}/tmp-glibc"

#
# Default policy config
#
# The distribution setting controls which policy settings are used as defaults.
#
DISTRO ??= "mdm"

#
# Package Management configuration
#
# This variable lists which packaging formats to enable. Multiple package backends
# can be enabled at once and the first item listed in the variable will be used
# to generate the root filesystems.
# Options are:
#  - 'package_deb' for debian style deb files
#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
#  - 'package_rpm' for rpm style packages
# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
PACKAGE_CLASSES ?= "package_ipk"
PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"

#
# SDK/ADT target architecture
#
# This variable specified the architecture to build SDK/ADT items for and means
# you can build the SDK packages for architectures other than the machine you are
# running the build on (i.e. building i686 packages on an x86_64 host._
# Supported values are i686 and x86_64
#SDKMACHINE ?= "i686"

#
# Extra image configuration defaults
#
# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
# images. Some of these options are added to certain image types automatically. The
# variable can contain the following options:
#  "dbg-pkgs"       - add -dbg packages for all installed packages
#                     (adds symbol information for debugging/profiling)
#  "dev-pkgs"       - add -dev packages for all installed packages
#                     (useful if you want to develop against libs in the image)
#  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
#  "tools-debug"    - add debugging tools (gdb, strace)
#  "tools-profile"  - add profiling tools (oprofile, exmap, lttng valgrind (x86 only))
#  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
#  "debug-tweaks"   - make an image for suitable of development
#                     e.g. ssh root access has a blank password
# There are other application targets that can be uses here too, see
# meta/classes/core-image.bbclass and meta/recipes-core/tasks/task-core.bb for more details.
# We default to enabling the debugging tweaks.
#EXTRA_IMAGE_FEATURES = "debug-tweaks"

#
# Additional image features
#
# The following is a list of additional classes to use when building images which
# enable extra features. Some available options which can be included in this variable
# are:
#   - 'image-mklibs' to reduce shared library files size for an image
#   - 'image-prelink' in order to prelink the filesystem image
#   - 'image-swab' to perform host system intrusion detection
#   - 'cve-check' to check known CVEs of all packages and generate a report
# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
# NOTE: cve-check will download a local NVD in the download folder and query every package in the build process. It will slow down the build process.
USER_CLASSES ?= "buildname"

# ${BUILDNAME} is used to set the content of /etc/version
BUILDNAME = "${@get_git_latest_tag('${WORKSPACE}/.repo/manifests', d)}"

#
# Runtime testing of images
#
# The build system can test booting virtual machine images under qemu (an emulator)
# after any root filesystems are created and run tests against those images. To
# enable this uncomment this line
#IMAGETEST = "qemu"
#
# This variable controls which tests are run against virtual images if enabled
# above. The following would enable bat, oot test case under sanity suite and
# toolchain tests
#TEST_SCEN = "sanity bat sanity:boot toolchain"
#
# Because of the QEMU booting slowness issue(see bug #646 and #618), autobuilder
# may suffer a timeout issue when running sanity test. We introduce variable
# TEST_SERIALIZE here to reduce the time on sanity test. It is by default set
# to 1. This will start image and run cases in the same image without reboot
# or kill. If it is set to 0, the image will be copied and tested for each
# case, which will take longer but be more precise.
#TEST_SERIALIZE = "1"

#
# Interactive shell configuration
#
# Under certain circumstances the system may need input from you and to do this it
# can launch an interactive shell. It needs to do this since the build is
# multithreaded and needs to be able to handle the case where more than one parallel
# process may require the user's attention. The default is to use xterm.
#
# Examples of the occasions this may happen are when resolving patches which cannot
# be applied, to use the devshell or the kernel menuconfig
#
# If you do not use (or have installed) xterm you will need to
# uncomment these variables and set them to the terminal you wish to use
#
# Supported shell prefixes for *_TERMCMD and *_TERMCMDRUN are:
# GNOME, SCREEN, XTERM and KONSOLE
# Note: currently, Konsole support only works for KDE 3.x due to the way
# newer Konsole versions behave
# ---------------------------------------------------------------------------
# Default to SCREEN mode operations since this could be on a headless system.
TERMCMD = "${SCREEN_TERMCMD}"
TERMCMDRUN = "${SCREEN_TERMCMDRUN}"

# By default disable interactive patch resolution (tasks will just fail instead):
PATCHRESOLVE = "noop"

#
# Shared-state files from other locations
#
# As mentioned above, shared state files are prebuilt cache data objects which can
# used to accelerate build time. This variable can be used to configure the system
# to search other mirror locations for these objects before it builds the data itself.
#
# This can be a filesystem directory, or a remote url such as http or ftp. These
# would contain the sstate-cache results from previous builds (possibly from other
# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
# cache locations to check for the shared objects.
#SSTATE_MIRRORS ?= "\
#file://.* http://someserver.tld/share/sstate/ \n \
#file://.* file:///some/local/dir/sstate/"


# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
# track the version of this file when it was generated. This can safely be ignored if
# this doesn't mean anything to you.
#CONF_VERSION = "1"

# BB_HASHBASE_WHITELIST Tells bitbake to ignore variables
# The default list is reproduced here from meta/conf/bitbake.conf
# Because appending to it was not working
# The WORKSPACE variable is added through build/conf/bblayers.conf
BB_BASEHASH_IGNORE_VARS = "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST PRSERV_PORT PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE EXTERNAL_TOOLCHAIN"
BB_BASEHASH_IGNORE_VARS += "WORKSPACE LICENSE_DIR"

# Let pkgs install files that other pkgs want to install for the recovery images.
OPKG_ARGS:append = " --force-overwrite"

# Use sstate packages that don't track state change
BB_SIGNATURE_HANDLER = "noop"

# Add --retry-connrefused to the wget execution.
FETCHCMD_wget      = "/usr/bin/env wget    --retry-connrefused -t 5 -T 30 -nv --passive-ftp --no-check-certificate"
FETCHCOMMAND_wget  = "/usr/bin/env wget    --retry-connrefused -t 5 -T 30 -nv --passive-ftp --no-check-certificate -P ${DL_DIR} ${URI}"
RESUMECOMMAND_wget = "/usr/bin/env wget -c --retry-connrefused -t 5 -T 30 -nv --passive-ftp --no-check-certificate -P ${DL_DIR} ${URI}"

# Use the following line to enable the security compiler and linker flags to your build
require conf/distro/include/security_flags.inc

export userfsdatadir = "${base_prefix}/data"

# Anki's product name
ANKI_PRODUCT_NAME = "Vector"

# Set the default hostname to our product name
hostname:pn-base-files = "${ANKI_PRODUCT_NAME}"

CONF_VERSION = "2"

BB_STRICT_CHECKSUM:forcevariable = "0"

# vector's kernel is old :(
OLDEST_KERNEL = "3.18"

# our way of getting around WPA3 SAE stuff in newer wpa-supplicant
PREFERRED_VERSION_wpa-supplicant = "2.6"
PREFERRED_VERSION_connman = "1.36"

# caused big crash, not really sure why. seems to be a Yocto issue
INHERIT:remove = "create-spdx"

# sorry
ERROR_QA:remove = "patch-status buildpaths obsolete-license host-user-contaminated uppercase-pn license-exists license-file-missing 32bit-time"
WARN_QA:remove = " patch-status buildpaths obsolete-license host-user-contaminated native-last license-exists license-file-missing 32bit-time"

# old toolchain used for ALSA only. it's fine for that
INSANE_SKIP = "32bit-time"

# we don't want coreutils anymore
VIRTUAL-RUNTIME_base-utils = "busybox"

ROOT_HOME = "/root"
INIT_MANAGER = "systemd"

# kernel doesn't support 64-bit time
GLIBC_64BIT_TIME_FLAGS:forcevariable = ""
GLIBC_64BIT_TIME_FLAGS = ""
