build: Inline kernel building as a buildtime task
Kernel image integration is now done in the build system. The "one true way" of doing this is to download the kernel source into kernel/TARGET_BOOTLOADER_NAME (by usage of the cm.dependencies mechanism or otherwise), and defining the TARGET_KERNEL_CONFIG variable in the device's BoardConfig makefile If the kernel's location doesn't match the automagic location (multi-device kernel source, for instance), TARGET_KERNEL_SOURCE can be used to specify a kernel path (i.e., "TARGET_KERNEL_SOURCE := kernel/shared-whatever") If the device requires out-of-kernel-tree modules to be built, the TARGET_KERNEL_MODULES variable can be used, pointing to a _make target_ that will build and install such modules. Definition of such a target is the device author's responsibility, the only restriction is that it is a normal makefile recipe (example below) Optionally (or as an alternative), a prebuilt binary can also be defined at BoardConfig, by usage of the TARGET_PREBUILT_KERNEL variable. This binary will be used if the kernel source is absent (or undefined). A minimal BoardConfig.mk should look something like this: TARGET_KERNEL_CONFIG := cyanogenmod_<device>_defconfig TARGET_PREBUILT_KERNEL := device/<vendor>/<device>/kernel To include, for example, the TI WLAN modules, this can be used: ----------------------------- TIWLAN_MODULES: make -C hardware/ti/wlan/wl1283/platforms/os/linux/ KERNEL_DIR=$(KERNEL_OUT) ARCH="arm" CROSS_COMPILE="arm-eabi-" TNETW=1273 RANDOM_MAC=n REPORT_LOG=n mv hardware/ti/wlan/wl1283/platforms/os/linux/tiwlan_drv.ko $(KERNEL_MODULES_OUT) make -C hardware/ti/wlan/wl1283_softAP/platforms/os/linux/ KERNEL_DIR=$(KERNEL_OUT) ARCH="arm" CROSS_COMPILE="arm-eabi-" TNETW=1273 REPORT_LOG=n mv hardware/ti/wlan/wl1283_softAP/platforms/os/linux/tiap_drv.ko $(KERNEL_MODULES_OUT) TARGET_KERNEL_MODULES := TIWLAN_MODULES --------------------------- Change-Id: I8634fa4c788a42dc6f62e62ca170825b66db126a
Loading
Please register or sign in to comment