summaryrefslogtreecommitdiffstats
path: root/README-AGL.md
blob: 92a2c46a2dc3a605213019fc7f32404e96e53217 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Overview
========

The
[AGL Project](https://www.automotivelinux.org/) is an automotive-specific
development environment that provides a Linux distribution
[AGL UCB](https://www.automotivelinux.org/software/unified-code-base).

AGL uses layers designed to be compatible with the
[Yocto Project](https://www.yoctoproject.org) and the
[OpenEmbedded Project (OE)](https://www.openembedded.org/wiki/Main_Page).

This section provides information about the layers used by the AGL Project:

* **`meta-agl`**: Minimal set of software needed to create an AGL distribution
  used to boot a system.
  AGL profiles are built on top of this minimal set of software.

* **`meta-agl-demo`**: Provides a reference or demo platform and applications
  for the AGL Distribution.
  The reference UI is part of the `meta-agl-demo` layer.

* **`meta-agl-devel`**: Contains components under development or being tested.
  This layer also contains software packages that OEMs need but do not exist
  in AGL.


**WRITER NOTES:** The content for this section is the `README-AGL.md`
  file that is in the `meta-agl` layer, which is a Gerrit layer.
  You can clone the layer using this command:

    ```
    $ git clone https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl
dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
FILESEXTRAPATHS_prepend := "${THISDIR}/linux:"

DEPENDS += "kern-tools-native"

# returns all the elements from the src uri that are .cfg files
def find_cfgs(d):
    sources=src_patches(d, True)
    sources_list=[]
    for s in sources:
        if s.endswith('.cfg'):
            sources_list.append(s)

    return sources_list

do_configure_append () {
    [ ! -f .config ] && cp -a ${WORKDIR}/defconfig .config
    # Need to clear CONFIG_LSM for 5.1+ kernels to ensure it'll get
    # regenerated to reflect configuration changes (e.g. SMACK).
    sed -i '/^CONFIG_LSM/d' .config
    merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
    yes '' | make oldconfig
}

# Extra configuration options for the AGL kernel
SRC_URI_append = "\
            file://can-bus.cfg \
            file://usb.cfg \
            file://uvc.cfg \
            file://joystick.cfg \
            file://fanotify.cfg \
            file://uinput.cfg \
            file://hid.cfg \
            file://drm.cfg \
            file://btusb.cfg \
            file://usbaudio.cfg \
            file://usbmodem.cfg \
            file://i2c-led.cfg \
            file://nfc.cfg \
            file://overlayfs.cfg \
        "

SRC_URI_append = " ${@bb.utils.contains('AGL_XEN_GUEST_WANTED','1','file://xen_domu.cfg','',d)}"

KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/can-bus.cfg"
# Enable support for usb video class for usb camera devices
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/uvc.cfg"
# Enable support for joystick devices
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/joystick.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/fanotify.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/uinput.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/hid.cfg"
# Enable DRM support for graphics
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/drm.cfg"
# Enable Bluetooth USB devices
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/btusb.cfg"
# Enable USB audio devices
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/usbaudio.cfg"
# Enable I2C and LED for demontrator
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/i2c-led.cfg"
# Enable NFC devices
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/nfc.cfg"
# Enable overlayfs filesystem support
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/overlayfs.cfg"
# Enable XEN support of the guest
KERNEL_CONFIG_FRAGMENTS_append = " ${@bb.utils.contains('AGL_XEN_GUEST_WANTED','1','${WORKDIR}/xen_domu.cfg','',d)}"

# Enable required features for the agl-netboot feature
SRC_URI_append_netboot = " file://nbd.cfg \
	file://ramdisk.cfg"
KERNEL_CONFIG_FRAGMENTS_append_netboot = " ${WORKDIR}/nbd.cfg ${WORKDIR}/ramdisk.cfg"

# Enable support for TP-Link TL-W722N USB Wifi adapter (rev 1 and 2)
SRC_URI_append = " file://wifi.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/wifi.cfg"

# Enable support for RTLSDR
SRC_URI_append = " file://rtl_sdr.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/rtl_sdr.cfg"

# Additional drivers for virtual machines
# OVERRIDES save us some c'n'p below ...
OVERRIDES_prepend_qemux86 = "virtualmachine:"
OVERRIDES_prepend_qemux86-64 = "virtualmachine:"
SRC_URI_append_virtualmachine = " file://vbox-vmware-sata.cfg"
KERNEL_CONFIG_FRAGMENTS_append_virtualmachine = " ${WORKDIR}/vbox-vmware-sata.cfg"

# Extra configuration for using qemux86-64 image on physical hardware
SRC_URI_append_qemux86-64 = "\
    file://x86-extra-graphic-devices.cfg \
    file://x86-net-devices.cfg \
    file://x86-security-tpm.cfg \
    file://x86-usb-devices.cfg \
    file://x86-upsquare.cfg \
"
KERNEL_CONFIG_FRAGMENTS_append_qemux86-64 = "\
    ${WORKDIR}/x86-extra-graphic-devices.cfg \
    ${WORKDIR}/x86-net-devices.cfg \
    ${WORKDIR}/x86-security-tpm.cfg \
    ${WORKDIR}/x86-usb-devices.cfg \
    ${WORKDIR}/x86-upsquare.cfg \
"

# Enable support for smack
KERNEL_CONFIG_FRAGMENTS_append_with-lsm-smack = "\
       ${WORKDIR}/audit.cfg \
       ${WORKDIR}/smack.cfg \
       ${WORKDIR}/smack-default-lsm.cfg \
"

# ALSA support and other sound related configuration
SRC_URI_append = " file://sound.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/sound.cfg"

# add hda audio for qemu
SRC_URI_append_qemuall = " file://sound-hda.cfg"
KERNEL_CONFIG_FRAGMENTS_append_qemuall = " ${WORKDIR}/sound-hda.cfg"

# iio-dummy-device support for test iiodevice
SRC_URI_append = " file://iiodevice.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/iiodevice.cfg"

# external rtc support via e.g. http://wiki.seeedstudio.com/Grove-RTC/
SRC_URI_append = " file://rtc.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/rtc.cfg"

# netfilter options
SRC_URI_append = " file://netfilter.cfg"
KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/netfilter.cfg"

# Enable support for SystemTap
SRC_URI_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'file://systemtap.cfg', '', d)}"
KERNEL_CONFIG_FRAGMENTS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', '${WORKDIR}/systemtap.cfg', '', d)}"