mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-24 07:06:42 +00:00
13daaa1203
both linux/coreboot: - save_in_defconfig_format_in_place : takes whatever coreboot config file for a make BOARD=xyz statement and saves it in defconfig - save_in_oldefconfig_format_in_place : takes whatever coreboot config file for a make BOARD=xyz statement and saves it in oldefconfig linux: - linux.prompt_for_new_config_options_for_kernel_version_bump: - The most useful helper as of now when doing kernel version bump. - Requires to save current kernel config in oldconfig (make BOARD=xyz linux.save_in_oldefconfig_format_in_place) first, then bump kernel version in board config and then use that helper to review new options and save in tree.
211 lines
8.0 KiB
Makefile
211 lines
8.0 KiB
Makefile
modules-$(CONFIG_COREBOOT) += coreboot
|
|
|
|
ifeq "$(CONFIG_COREBOOT)" "y"
|
|
|
|
CONFIG_COREBOOT_ROM ?= coreboot.rom
|
|
CONFIG_COREBOOT_BOOTBLOCK ?=
|
|
|
|
ifeq "$(CONFIG_TARGET_ARCH)" "x86"
|
|
COREBOOT_TARGET := i386
|
|
LINUX_IMAGE_FILE := bzImage
|
|
else ifeq "$(CONFIG_TARGET_ARCH)" "ppc64"
|
|
COREBOOT_TARGET := ppc64
|
|
LINUX_IMAGE_FILE := zImage
|
|
else
|
|
$(error "$(CONFIG_TARGET_ARCH) target isn't supported by this module")
|
|
endif
|
|
|
|
ifeq "$(CONFIG_COREBOOT_VERSION)" "4.8.1"
|
|
coreboot_version := 4.8.1
|
|
coreboot_hash := f0ddf4db0628c1fe1e8348c40084d9cbeb5771400c963fd419cda3995b69ad23
|
|
coreboot-blobs_hash := 18aa509ae3af005a05d7b1e0b0246dc640249c14fc828f5144b6fd20bb10e295
|
|
else ifeq "$(CONFIG_COREBOOT_VERSION)" "4.11"
|
|
coreboot_version := 4.11
|
|
coreboot_hash := 97fd859b4c39a25534fe33c30eb86e54a233952e08a024c55858d11598a8ad87
|
|
coreboot-blobs_hash := aa7855c5bd385b3360dadc043ea6bc93f564e6e4840d9b3ee5b9e696bbd055db
|
|
coreboot_depends := $(if $(CONFIG_PURISM_BLOBS), purism-blobs)
|
|
else ifeq "$(CONFIG_COREBOOT_VERSION)" "4.13"
|
|
coreboot_version := 4.13
|
|
coreboot_hash := 4779da645a25ddebc78f1bd2bd0b740fb1e6479572648d4650042a2b9502856a
|
|
coreboot-blobs_hash := 060656b46a7859d038ddeec3f7e086e85f146a50b280c4babec23c1188264dc8
|
|
coreboot_depends := $(if $(CONFIG_PURISM_BLOBS), purism-blobs)
|
|
else ifeq "$(CONFIG_COREBOOT_VERSION)" "4.17"
|
|
coreboot_version := 4.17
|
|
coreboot_hash := 95da11d1c6a450385101a68799258a398ce965f4e46cce6fe8d5ebd74e50c125
|
|
coreboot-blobs_hash := a2277fe7a2b2aab5da0aa335158460e00b852382f6736f2179992805702eb607
|
|
coreboot_depends := $(if $(CONFIG_PURISM_BLOBS), purism-blobs)
|
|
EXTRA_FLAGS := -fdebug-prefix-map=$(pwd)=heads -gno-record-gcc-switches -Wno-error=packed-not-aligned -Wno-error=address-of-packed-member
|
|
else ifeq "$(CONFIG_COREBOOT_VERSION)" "4.19"
|
|
coreboot_version := 4.19
|
|
coreboot_hash := 65ccb2f46535b996e0066a1b76f81c8cf1ff3e27df84b3f97d8ad7b3e7cf0a43
|
|
coreboot-blobs_hash := 30214caed07b25f11e47bec022ff6234841376e36689eb674de2330a3e980cbc
|
|
coreboot_depends := $(if $(CONFIG_PURISM_BLOBS), purism-blobs)
|
|
EXTRA_FLAGS := -fdebug-prefix-map=$(pwd)=heads -gno-record-gcc-switches -Wno-error=packed-not-aligned -Wno-error=address-of-packed-member
|
|
else ifeq "$(CONFIG_COREBOOT_VERSION)" "talos_2"
|
|
coreboot_version = git
|
|
coreboot_patch_version = talos_2
|
|
coreboot_commit_hash = 068ad520e4ae898d356add72ea7d2a13913b76ab
|
|
coreboot_repo := https://github.com/Dasharo/coreboot
|
|
|
|
else
|
|
$(error "$(BOARD): does not specify coreboot version under CONFIG_COREBOOT_VERSION")
|
|
endif
|
|
|
|
#coreboot_version := git
|
|
#coreboot_repo := https://github.com/osresearch/coreboot
|
|
coreboot_base_dir := coreboot-$(coreboot_version)
|
|
coreboot_dir := $(coreboot_base_dir)/$(BOARD)
|
|
coreboot_tar := coreboot-$(coreboot_version).tar.xz
|
|
coreboot_url := https://www.coreboot.org/releases/$(coreboot_tar)
|
|
|
|
# coreboot builds are specialized on a per-target basis.
|
|
# The builds are done in a per-target subdirectory
|
|
CONFIG_COREBOOT_CONFIG ?= config/coreboot-$(BOARD).config
|
|
|
|
# Ensure that touching the config file will force a rebuild
|
|
$(build)/$(coreboot_dir)/.configured: $(CONFIG_COREBOOT_CONFIG)
|
|
|
|
EXTRA_FLAGS ?= -fdebug-prefix-map=$(pwd)=heads -gno-record-gcc-switches -Wno-error=packed-not-aligned
|
|
|
|
coreboot_configure := \
|
|
mkdir -p "$(build)/$(coreboot_dir)" \
|
|
&& $(call install_config,$(pwd)/$(CONFIG_COREBOOT_CONFIG),$(build)/$(coreboot_dir)/.config) \
|
|
&& echo 'CONFIG_LOCALVERSION="Heads-$(HEADS_GIT_VERSION)"' >> $(build)/$(coreboot_dir)/.config \
|
|
&& echo 'CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="$(BOARD)"' >> $(build)/$(coreboot_dir)/.config \
|
|
&& $(MAKE) olddefconfig \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
obj="$(build)/$(coreboot_dir)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
BUILD_TIMELESS=1 \
|
|
CFLAGS_x86_32="$(EXTRA_FLAGS)" \
|
|
CFLAGS_x86_64="$(EXTRA_FLAGS)" \
|
|
|
|
COREBOOT_IASL="$(build)/$(coreboot_base_dir)/util/crossgcc/xgcc/bin/iasl"
|
|
|
|
# coreboot for x86 is built with the 32-bit compiler; ideally we could use the
|
|
# same x86_64-linux-musl -m32 to build it, but this causes some link errors that
|
|
# need to be tracked down.
|
|
# CROSS="$(CROSS)" \
|
|
|
|
ifeq "$(CONFIG_TARGET_ARCH)" "x86"
|
|
COREBOOT_CROSS := $(dir $(CROSS))i386-linux-musl-
|
|
else
|
|
COREBOOT_CROSS := $(CROSS)
|
|
endif
|
|
|
|
coreboot_target := \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
obj="$(build)/$(coreboot_dir)" \
|
|
CROSS="$(COREBOOT_CROSS)" \
|
|
IASL="$(COREBOOT_IASL)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
xcompile="$(build)/$(coreboot_base_dir)/.xcompile" \
|
|
BUILD_TIMELESS=1 \
|
|
CFLAGS_x86_32="$(EXTRA_FLAGS)" \
|
|
CFLAGS_x86_64="$(EXTRA_FLAGS)" \
|
|
$(MAKE_JOBS)
|
|
|
|
coreboot_output := $(CONFIG_COREBOOT_ROM)
|
|
coreboot_output += $(CONFIG_COREBOOT_BOOTBLOCK)
|
|
coreboot_depend += linux initrd $(musl_dep)
|
|
|
|
COREBOOT_TOOLCHAIN=$(build)/$(coreboot_base_dir)/.xcompile
|
|
$(COREBOOT_TOOLCHAIN): $(build)/$(coreboot_base_dir)/.canary
|
|
$(MAKE) -C "$(build)/$(coreboot_base_dir)" CPUS=$(CPUS) "crossgcc-$(COREBOOT_TARGET)"
|
|
|
|
$(build)/$(coreboot_dir)/.configured: $(COREBOOT_TOOLCHAIN)
|
|
|
|
# Force a rebuild if the inputs have changed
|
|
$(build)/$(coreboot_dir)/.build: \
|
|
$(build)/$(BOARD)/$(LINUX_IMAGE_FILE) \
|
|
$(build)/$(BOARD)/initrd.cpio.xz \
|
|
|
|
# This produces a ROM image that is written with the flashrom program
|
|
ifneq ($(CONFIG_COREBOOT),)
|
|
|
|
$(build)/$(BOARD)/$(CB_OUTPUT_FILE): $(build)/$(coreboot_dir)/.build
|
|
# Use coreboot.rom, because custom output files might not be processed by cbfstool
|
|
"$(build)/$(coreboot_dir)/cbfstool" "$(dir $<)coreboot.rom" print
|
|
$(call do-copy,$(dir $<)$(CONFIG_COREBOOT_ROM),$@)
|
|
@touch $@ # update the time stamp
|
|
|
|
ifneq ($(CONFIG_COREBOOT_BOOTBLOCK),)
|
|
$(build)/$(BOARD)/$(CB_BOOTBLOCK_FILE): $(build)/$(coreboot_dir)/.build
|
|
$(call do-copy,$(dir $<)$(CONFIG_COREBOOT_BOOTBLOCK),$@)
|
|
@touch $@ # update the time stamp
|
|
endif
|
|
|
|
endif
|
|
|
|
#
|
|
# Helpful target for reconfiguring the coreboot target
|
|
#
|
|
coreboot.save_in_defconfig_format_in_place:
|
|
mkdir -p "$(build)/$(coreboot_dir)" && \
|
|
cp "$(pwd)/$(CONFIG_COREBOOT_CONFIG)" "$(build)/$(coreboot_dir)/.config" && \
|
|
$(MAKE) \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
olddefconfig && \
|
|
$(MAKE) \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
savedefconfig && \
|
|
mv "$(build)/$(coreboot_base_dir)/defconfig" "$(pwd)/$(CONFIG_COREBOOT_CONFIG)"
|
|
|
|
coreboot.save_in_oldconfig_format_in_place:
|
|
mkdir -p "$(build)/$(coreboot_dir)" && \
|
|
cp "$(pwd)/$(CONFIG_COREBOOT_CONFIG)" "$(build)/$(coreboot_dir)/.config" && \
|
|
$(MAKE) \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
olddefconfig \
|
|
&& mv "$(build)/$(coreboot_dir)/.config" "$(pwd)/$(CONFIG_COREBOOT_CONFIG)"
|
|
|
|
coreboot.modify_defconfig_in_place:
|
|
mkdir -p "$(build)/$(coreboot_dir)" && \
|
|
cp "$(pwd)/$(CONFIG_COREBOOT_CONFIG)" "$(build)/$(coreboot_dir)/.config" && \
|
|
$(MAKE) \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
menuconfig \
|
|
&& $(MAKE) \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
DEFCONFIG="$(pwd)/$(CONFIG_COREBOOT_CONFIG)" \
|
|
savedefconfig
|
|
|
|
coreboot.modify_and_save_oldconfig_in_place:
|
|
mkdir -p "$(build)/$(coreboot_dir)" && \
|
|
$(MAKE) menuconfig \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
obj="$(build)/$(coreboot_dir)" \
|
|
DOTCONFIG="$(pwd)/$(CONFIG_COREBOOT_CONFIG)"
|
|
|
|
# if we are not building from a git checkout,
|
|
# we must also download the coreboot-blobs tree
|
|
ifneq "$(coreboot_version)" "git"
|
|
|
|
coreboot_depends += coreboot-blobs
|
|
modules-y += coreboot-blobs
|
|
|
|
coreboot-blobs_version := $(coreboot_version)
|
|
coreboot-blobs_tar := coreboot-blobs-$(coreboot-blobs_version).tar.xz
|
|
coreboot-blobs_url := https://www.coreboot.org/releases/$(coreboot-blobs_tar)
|
|
|
|
ifeq "$(CONFIG_COREBOOT_VERSION)" "4.8.1"
|
|
coreboot-blobs_tar_opt := --strip 3
|
|
coreboot-blobs_dir := coreboot-$(coreboot-blobs_version)/3rdparty/blobs
|
|
else
|
|
coreboot-blobs_tar_opt := --strip 2
|
|
coreboot-blobs_dir := coreboot-$(coreboot-blobs_version)/3rdparty
|
|
endif
|
|
|
|
## there is nothing to build for the blobs, this should be
|
|
## made easier to make happen
|
|
coreboot-blobs_output := .built
|
|
coreboot-blobs_configure := echo -e 'all:\n\ttouch .built' > Makefile
|
|
|
|
endif
|
|
endif
|