summaryrefslogtreecommitdiff
path: root/payloads/external/iPXE/Makefile
diff options
context:
space:
mode:
authorMartin Roth <martinroth@google.com>2016-03-13 13:00:43 -0600
committerMartin Roth <martinroth@google.com>2016-04-13 17:45:37 +0200
commit888a98b872ed88f70b76103a95ef5d4140cfe2d7 (patch)
tree71d617760eee3d8b02a9694d9166be4768a1a228 /payloads/external/iPXE/Makefile
parent84129b8c6858c6d27e4e42f2b06a3b30e907e668 (diff)
downloadcoreboot-888a98b872ed88f70b76103a95ef5d4140cfe2d7.tar.xz
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/Makefile74
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