modules-$(CONFIG_LINUXBOOT) += linuxboot linuxboot_version := git linuxboot_repo := https://github.com/osresearch/linuxboot linuxboot_dir := linuxboot-$(linuxboot_version) linuxboot_configure := \ touch .config # linuxboot builds are specialized on a per-target basis. # They can be specialized by defining $(CONFIG_LINUXBOOT_BOARD) # otherwise it is assumed that it will have the same name # as the Heads BOARD. linuxboot_board := $(or $(CONFIG_LINUXBOOT_BOARD),$(BOARD)) linuxboot_target := \ BOARD=$(linuxboot_board) \ KERNEL=$(build)/$(BOARD)/bzImage \ INITRD=$(build)/$(BOARD)/initrd.cpio.xz \ $(if $(CONFIG_LINUXBOOT_ROM), ROM=$(pwd)/$(CONFIG_LINUXBOOT_ROM)) \ all # # Most mainboards will define a ROM file that contains the vendor ROM # for the image. Provide a reasonable error if the ROM file doesn't exist. # ifneq "$(CONFIG_LINUXBOOT_ROM)" "" ifneq "y" "$(shell [ -r '$(CONFIG_LINUXBOOT_ROM)' ] && echo y)" $(error $(CONFIG_LINUXBOOT_ROM): you must provide a ROM file) endif # Force a rebuild of the LinuxBoot ROM if the vendor ROM changes linuxboot.intermediate: $(CONFIG_LINUXBOOT_ROM) endif # The output file from the LinuxBoot build is a full ROM # ready to flash onto the mainboard. There might be partial # firmware volumes as well, but that depends on the board # so this only retrieves the final one linuxboot_output := $(build)/$(linuxboot_dir)/build/$(linuxboot_board)/linuxboot.rom $(linuxboot_output): linuxboot.intermediate $(build)/$(BOARD)/linuxboot.rom: $(linuxboot_output) $(call do-copy,$<,$@) # The Linux kernel and Heads initrd must be built before linuxboot # unless the user has specified "FAST=1" on the make command line, # which will assume that the kernel and initrd are fresh ifneq "$(FAST)" "1" linuxboot_depends := linux initrd linuxboot.intermediate: $(build)/$(BOARD)/bzImage linuxboot.intermediate: $(build)/$(BOARD)/initrd.cpio.xz endif linuxboot.run: $(build)/$(BOARD)/linuxboot.rom $(MAKE) -C $(build)/$(linuxboot_dir) \ BOARD:=$(linuxboot_board) \ KERNEL=$(build)/$(BOARD)/bzImage \ INITRD=$(build)/$(BOARD)/initrd.cpio.xz \ run