diff options
author | Martin Roth <martinroth@google.com> | 2016-03-13 13:00:43 -0600 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-04-13 17:45:37 +0200 |
commit | 888a98b872ed88f70b76103a95ef5d4140cfe2d7 (patch) | |
tree | 71d617760eee3d8b02a9694d9166be4768a1a228 /payloads/external/iPXE/Makefile | |
parent | 84129b8c6858c6d27e4e42f2b06a3b30e907e668 (diff) |
payloads: add iPXE 'payload' build
We already have the ability to add a pxe rom to cbfs, but it needs to be
configured and built separately.
This moves the existing Kconfig options for PXE from device/Kconfig and
the top level Makefile.inc to payloads, and adds the option to download
and build iPXE as part of the coreboot build process.
This configures the serial output of iPXE to match coreboot's serial
port configuration by editing the .h files. iPXE doesn't give any
real build-time method of setting these configuration options.
Change-Id: I3d77b2c6845b7f5f644440f6910c3b4533a0d415
Signed-off-by: Martin Roth <martinroth@google.com>
Reviewed-on: https://review.coreboot.org/14085
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'payloads/external/iPXE/Makefile')
-rw-r--r-- | payloads/external/iPXE/Makefile | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/payloads/external/iPXE/Makefile b/payloads/external/iPXE/Makefile new file mode 100644 index 0000000000..7e43bf82ed --- /dev/null +++ b/payloads/external/iPXE/Makefile @@ -0,0 +1,74 @@ +## +## This file is part of the coreboot project. +## +## Copyright (C) 2016 Google Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; version 2 of the License. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +# 2016.2 - Last commit of February 2016 +# When updating, change the name both here and in payloads/external/iPXE/Kconfig +STABLE_COMMIT_ID=99b5216b1c71dba22dab734e0945887525493cde + +TAG-$(CONFIG_IPXE_MASTER)=origin/master +TAG-$(CONFIG_IPXE_STABLE)=$(STABLE_COMMIT_ID) + +project_name=iPXE +project_dir=ipxe +project_git_repo=git://git.ipxe.org/ipxe.git + +all: build + +$(project_dir): + echo " Cloning $(project_name) from Git" + git clone $(project_git_repo) $(project_dir) + +fetch: $(project_dir) + cd $(project_dir); \ + git show $(TAG-y) >/dev/null 2>&1 ; \ + if [ $$? -ne 0 ] || [ "$(TAG-y)" = "origin/master" ]; then \ + echo " Fetching new commits from the $(project_name) repo"; \ + git fetch; \ + fi + +checkout: fetch + echo " Checking out $(project_name) revision $(TAG-y)" + cd $(project_dir); \ + git checkout master; \ + git branch -D coreboot 2>/dev/null; \ + git checkout -b coreboot $(TAG-y) + +config: checkout +ifeq ($(CONSOLE_SERIAL),yy) + cp "$(project_dir)/src/config/console.h" "$(project_dir)/src/config/console.h.cb" + cp "$(project_dir)/src/config/serial.h" "$(project_dir)/src/config/serial.h.cb" + sed 's|//#define\s*CONSOLE_SERIAL.*|#define CONSOLE_SERIAL|' "$(project_dir)/src/config/console.h" > "$(project_dir)/src/config/console.h.tmp" + mv "$(project_dir)/src/config/console.h.tmp" "$(project_dir)/src/config/console.h" + sed 's|#define\s*COMCONSOLE.*|#define COMCONSOLE $(IPXE_UART)|' "$(project_dir)/src/config/serial.h" > "$(project_dir)/src/config/serial.h.tmp" + sed 's|#define\s*COMSPEED.*|#define COMSPEED $(CONFIG_TTYS0_BAUD)|' "$(project_dir)/src/config/serial.h.tmp" > "$(project_dir)/src/config/serial.h" +endif + +build: config + echo " MAKE $(project_name) $(TAG-y)" + $(MAKE) -C $(project_dir)/src bin/$(PXE_ROM_PCI_ID).rom + cp $(project_dir)/src/bin/$(PXE_ROM_PCI_ID).rom $(project_dir)/ipxe.rom +ifeq ($(CONSOLE_SERIAL),yy) + cp "$(project_dir)/src/config/console.h.cb" "$(project_dir)/src/config/console.h" + cp "$(project_dir)/src/config/serial.h.cb" "$(project_dir)/src/config/serial.h" +endif + +clean: + test -d $(project_dir) && $(MAKE) -C $(project_dir)/src veryclean || exit 0 + rm -f $(project_dir)/ipxe.rom + +distclean: + rm -rf $(project_dir) + +.PHONY: all fetch config build clean distclean |