#############################################################################
#@TYPE: Distribution
#@NAME: Minimal
#@DESCRIPTION: Embedded Linux Distribution Configuration
#
#@COMMENT: This distribution configuration can serve as a starting point for
#@COMMENT: the integration of new target platforms, machines, or distributions.
#############################################################################

#############################################################################
# NAME and VERSION
#############################################################################
DISTRO_NAME ?= "minimal"
DISTRO_VERSION = ".dev-snapshot-${SRCDATE}"
#DISTRO_TYPE = "release"
DISTRO_TYPE ?= "debug"

# Ensure some form of release config, so error out if someone thinks he knows better
DISTRO_CHECK := "${@bb.data.getVar("DISTRO_VERSION",d,1) or bb.fatal('Remove this line or set a dummy DISTRO_VERSION")

#############################################################################
# FEATURE SELECTION
#############################################################################
# Use bluetooth 4.0
DISTRO_BLUETOOTH_MANAGER = "bluez4"
# We want images supporting the following features (for task-base)
DISTRO_FEATURES = "nfs smbfs wifi ppp alsa ext2 vfat pcmcia usbgadget usbhost pci"
# Following features are for ARM and E500 based machines
DISTRO_FEATURES += "eabi"

#############################################################################
# LIBRARY NAMES
#############################################################################
# libfoo -> libfoo0-2 (etc)
INHERIT += "debian"

#############################################################################
# STAGING AREA
#############################################################################
# Controlled by packaging system
INHERIT += "packaged-staging"

#############################################################################
# PACKAGING & FEEDS
#############################################################################
# Chose the packaging system
INHERIT += "package_ipk"
IMAGE_FSTYPES ?= "tar.gz jffs2"

require conf/distro/include/sane-feed.inc
PREFERRED_PKG_FORMAT ?= "ipk"
require conf/distro/include/sane-feed-${PREFERRED_PKG_FORMAT}.inc

# If we're using an .ipk based rootfs, we want to have opkg-nogpg installed so postinst script can run
IPKG_VARIANT = "opkg-nogpg"

#############################################################################
# IMAGES
#############################################################################
# Name the generated images in a sane way
IMAGE_NAME = "${DISTRO_NAME}-${IMAGE_BASENAME}-${LIBC}-${PREFERRED_PKG_FORMAT}-${DISTRO_VERSION}-${MACHINE}"
CACHE ?= "${TMPDIR}/cache/${LIBC}/${MACHINE}"
DEPLOY_DIR ?= "${TMPDIR}/deploy/${LIBC}"
DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}"

# increase inode/block ratio for ext2 filesystem 
EXTRA_IMAGECMD_ext2 = "-i 8192"

#############################################################################
# KERNEL
#############################################################################
KERNEL = "kernel26"
MACHINE_KERNEL_VERSION = "2.6"

#############################################################################
# OVERWRITES adjusted from bitbake.conf to feature the MACHINE_CLASS
#############################################################################
OVERRIDES = "local:${MACHINE}:${MACHINE_CLASS}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}"

#############################################################################
# TOOLCHAIN
#############################################################################
LIBC ?= "eglibc"
require conf/distro/include/sane-toolchain.inc

#############################################################################
# PREFERRED PROVIDERS
#############################################################################
PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
PREFERRED_PROVIDER_avahi = "avahi"
PREFERRED_PROVIDER_gconf = "gconf-dbus"
PREFERRED_PROVIDER_gtk+ = "gtk+"
PREFERRED_PROVIDER_libgpewidget = "libgpewidget"
PREFERRED_PROVIDER_virtual/db = "db3"
PREFERRED_PROVIDER_virtual/db-native = "db3-native"
PREFERRED_PROVIDER_virtual/libsdl = "libsdl-x11"
PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
PREFERRED_PROVIDER_virtual/libusb0 ?= "libusb"

#############################################################################
# PREFERRED VERSIONS
#############################################################################
require conf/distro/include/sane-srcdates.inc
require conf/distro/include/sane-srcrevs.inc
require conf/distro/include/preferred-e-versions.inc
require conf/distro/include/preferred-opie-versions-1.2.4.inc
require conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc
require conf/distro/include/preferred-xorg-versions-X11R7.4.inc

#############################################################################
# CONTENTS
#############################################################################

# Ship extra debug utils in the rootfs when doing a debug build 
DISTRO_EXTRA_APPS ?= ""
DISTRO_EXTRA_APPS += '${@base_conditional("DISTRO_TYPE", "release", "", "task-cli-tools-debug",d)}'

# Additional content I (only valid if you include task-base)
# distro-feed-configs: configuration files for the online feeds
# util-linux-ng-mount util-linux-ng-umount: busybox mount is broken
# angstrom-libc-fixup-hack: fixes an obscure bug with libc.so symlink
DISTRO_EXTRA_RDEPENDS += "\
  distro-feed-configs \
  util-linux-ng-mount util-linux-ng-umount \
  angstrom-libc-fixup-hack \
  ${DISTRO_EXTRA_APPS} \
"

# Additional content II (can be masked with BAD_RECOMMENDATIONS)
DISTRO_EXTRA_RRECOMMENDS += " \
    kernel-module-vfat \
    kernel-module-ext2 \
    kernel-module-ext3 \
    kernel-module-af-packet \
    avahi-daemon \
    avahi-autoipd \
    openssh-sftp-server \
"