mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-19 04:57:55 +00:00
268fb90623
* patches/coreboot-4.12: Add patch for Cannonlake ME status Add patch print ME status regardless of enablement state Signed-off-by: Matt DeVillier <matt.devillier@puri.sm> * modules: add purism-blobs module Rather than require users to manually run a script to download the required blobs to build Purism Librem boards, automate it so the correct version is automatically downloaded/extracted. Restrict to coreboot 4.12 for now since 4.8.1 still needs FSP blobs, which are not in module. Signed-off-by: Matt DeVillier <matt.devillier@puri.sm> * configs/linux-librem13v2: unset CONFIG_RETPOLINE Fixes compilation issue with newer kernels, ignored by older ones which don't need it Signed-off-by: Matt DeVillier <matt.devillier@puri.sm> * Add new board: Librem Mini Add Librem Mini board patch for coreboot 4.12, board config and coreboot config. Continue reusing existing librem13v2 Linux config, same as all other Librem boards currently. Use new purism-blobs module. Signed-off-by: Matt DeVillier <matt.devillier@puri.sm> * board/librem*: rename for consistency Use 'librem_<board>' notation for consistency across all models. Rename linux config file since used by multiple Librem models. Signed-off-by: Matt DeVillier <matt.devillier@puri.sm> * CircleCI: add librem_mini board to test Signed-off-by: Matt DeVillier <matt.devillier@puri.sm>
132 lines
4.6 KiB
Plaintext
132 lines
4.6 KiB
Plaintext
modules-$(CONFIG_COREBOOT) += coreboot
|
|
|
|
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.12"
|
|
coreboot_version := 4.12
|
|
coreboot_hash := edcad000ee9b73183c396ea76155629b3d27c693e0f1ae83e3424c4d936e2be2
|
|
coreboot-blobs_hash := 4735ee6850d55d1e65dee8b08cc9b28b8af00b42acf31365f5d9545406579104
|
|
coreboot_depends := $(if $(CONFIG_PURISM_BLOBS), purism-blobs)
|
|
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)" \
|
|
&& cp "$(pwd)/$(CONFIG_COREBOOT_CONFIG)" "$(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 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)" \
|
|
|
|
coreboot_target := \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
obj="$(build)/$(coreboot_dir)" \
|
|
CROSS="$(dir $(CROSS))i386-linux-musl-" \
|
|
IASL="$(COREBOOT_IASL)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
BUILD_TIMELESS=1 \
|
|
CFLAGS_x86_32="$(EXTRA_FLAGS)" \
|
|
CFLAGS_x86_64="$(EXTRA_FLAGS)" \
|
|
$(MAKE_JOBS)
|
|
|
|
coreboot_output := coreboot.rom
|
|
coreboot_depend += linux initrd $(musl_dep)
|
|
|
|
ifeq "$(CONFIG_COREBOOT_VERSION)" "4.8.1"
|
|
COREBOOT_TOOLCHAIN=""
|
|
$(COREBOOT_TOOLCHAIN):
|
|
else
|
|
COREBOOT_TOOLCHAIN="$(build)/$(coreboot_base_dir)/.xcompile"
|
|
$(COREBOOT_TOOLCHAIN): $(build)/$(coreboot_base_dir)/.canary
|
|
$(MAKE) -C "$(build)/$(coreboot_base_dir)" CPUS=`nproc` crossgcc-i386
|
|
endif
|
|
|
|
$(build)/$(coreboot_dir)/.configured: $(COREBOOT_IASL) $(COREBOOT_TOOLCHAIN)
|
|
$(COREBOOT_IASL): $(build)/$(coreboot_base_dir)/.canary
|
|
$(MAKE) -C "$(build)/$(coreboot_base_dir)" CPUS=`nproc` iasl
|
|
|
|
# Force a rebuild if the inputs have changed
|
|
$(build)/$(coreboot_dir)/.build: \
|
|
$(build)/$(BOARD)/bzImage \
|
|
$(build)/$(BOARD)/initrd.cpio.xz \
|
|
|
|
# This produces a ROM image that is written with the flashrom program
|
|
$(build)/$(BOARD)/coreboot.rom: $(build)/$(coreboot_dir)/.build
|
|
"$(build)/$(coreboot_dir)/cbfstool" "$(dir $<)coreboot.rom" print
|
|
$(call do-copy,$(dir $<)coreboot.rom,$@)
|
|
@touch $@ # update the time stamp
|
|
|
|
#
|
|
# Helpful target for reconfiguring the coreboot target
|
|
#
|
|
coreboot.menuconfig:
|
|
$(MAKE) \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
menuconfig
|
|
|
|
# The config file in the repo is stored as a "defconfig" format
|
|
# which only includes the options that have changed from the defaults.
|
|
coreboot.saveconfig:
|
|
$(MAKE) \
|
|
-C "$(build)/$(coreboot_base_dir)" \
|
|
DOTCONFIG="$(build)/$(coreboot_dir)/.config" \
|
|
DEFCONFIG="$(pwd)/$(CONFIG_COREBOOT_CONFIG)" \
|
|
savedefconfig
|
|
|
|
|
|
# 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
|