summaryrefslogtreecommitdiff
path: root/payloads/tianocoreboot/Makefile
diff options
context:
space:
mode:
authorStefan Reinauer <reinauer@chromium.org>2013-01-15 17:02:58 -0800
committerRonald G. Minnich <rminnich@gmail.com>2013-01-30 17:34:40 +0100
commitcc5b3446624cf85e13a8130a524e81360c5f4239 (patch)
treec2fec71202092f1db74c49d4f5c03247e2c3a2cf /payloads/tianocoreboot/Makefile
parent7d3c7f1089f6861de8173cde6c0b481260b08a4f (diff)
Project PIANO aka tianocoreboot
This is a Tiano Core loader payload based on libpayload. It will load a Tiano Core DXE core from an UEFI firmware volume stored in CBFS. Currently Tiano Core dies because it does not find all the UEFI services it needs: coreboot-4.0-3316-gc5c9ff8-dirty Mon Jan 28 15:37:12 PST 2013 starting... [..] Tiano Core Loader v1.0 Copyright (C) 2013 Google Inc. All rights reserved. Memory Map (5 entries): 1. 0000000000000000 - 0000000000000fff [10] 2. 0000000000001000 - 000000000009ffff [01] 3. 00000000000c0000 - 0000000003ebffff [01] 4. 0000000003ec0000 - 0000000003ffffff [10] 5. 00000000ff800000 - 00000000ffffffff [02] DXE code: 03e80000 DXE stack: 03e60000 HOB list: 03d5c000 Found UEFI firmware volume. GUID: 8c8ce578-8a3d-4f1c-9935-896185c32dd3 length: 0x0000000000260000 Found DXE core at 0xffc14e0c Section 0: .text size=000158a0 rva=00000240 in file=000158a0/00000240 flags=60000020 Section 1: .data size=00006820 rva=00015ae0 in file=00006820/00015ae0 flags=c0000040 Section 2: .reloc size=000010a0 rva=0001c300 in file=000010a0/0001c300 flags=42000040 Jumping to DXE core at 0x3e80000 InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 3E96708 HOBLIST address in DXE = 0x3E56010 Memory Allocation 0x00000003 0x3E80000 - 0x3EBFFFF FV Hob 0xFFC14D78 - 0xFFE74D77 InstallProtocolInterface: D8117CFE-94A6-11D4-9A3A-0090273FC14D 3E95EA0 InstallProtocolInterface: EE4E5898-3914-4259-9D6E-DC7BD79403CF 3E9630C Security Arch Protocol not present!! CPU Arch Protocol not present!! Metronome Arch Protocol not present!! Timer Arch Protocol not present!! Bds Arch Protocol not present!! Watchdog Timer Arch Protocol not present!! Runtime Arch Protocol not present!! Variable Arch Protocol not present!! Variable Write Arch Protocol not present!! Capsule Arch Protocol not present!! Monotonic Counter Arch Protocol not present!! Reset Arch Protocol not present!! Real Time Clock Arch Protocol not present!! ASSERT_EFI_ERROR (Status = Not Found) ASSERT /home/reinauer/svn/Tiano/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c(461): !EFI_ERROR (Status) Change-Id: I14068e9a28ff67ab1bf03105d56dab2e8be7b230 Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-on: http://review.coreboot.org/2154 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'payloads/tianocoreboot/Makefile')
-rw-r--r--payloads/tianocoreboot/Makefile80
1 files changed, 80 insertions, 0 deletions
diff --git a/payloads/tianocoreboot/Makefile b/payloads/tianocoreboot/Makefile
new file mode 100644
index 0000000000..0d51af2738
--- /dev/null
+++ b/payloads/tianocoreboot/Makefile
@@ -0,0 +1,80 @@
+##
+## This file is part of the TianoCoreBoot project.
+##
+## Copyright (C) 2013 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.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+
+src := $(shell pwd)
+srctree := $(src)
+obj ?= $(src)/build
+
+export V := $(V)
+
+CONFIG_SHELL := sh
+UNAME_RELEASE := $(shell uname -r)
+HAVE_DOTCONFIG := $(wildcard .config)
+MAKEFLAGS += -rR --no-print-directory
+
+# Make is silent per default, but 'make V=1' will show all compiler calls.
+ifneq ($(V),1)
+Q := @
+endif
+
+LIBCONFIG_PATH := ../libpayload
+LIBPAYLOAD_DIR := $(obj)/libpayload
+LPCC := $(LIBPAYLOAD_DIR)/libpayload/bin/lpgcc
+LPAS := $(LIBPAYLOAD_DIR)/libpayload/bin/lpas
+HAVE_LIBPAYLOAD := $(wildcard $(LIBPAYLOAD_DIR)/libpayload/lib/libpayload.a)
+OBJCOPY ?= objcopy
+
+INCLUDES = -Iinclude
+CFLAGS := -Wall -Werror -Os $(INCLUDES)
+OBJECTS = tianocoreboot.o
+OBJS = $(patsubst %,$(obj)/%,$(OBJECTS))
+TARGET = $(obj)/tianocoreboot.elf
+
+all: $(TARGET)
+
+$(TARGET): prepare $(OBJS) libpayload
+ $(Q)printf " LINK $(subst $(shell pwd)/,,$(@))\n"
+ $(Q)CC="$(CC)" $(LPCC) -o $@ $(OBJS)
+ $(Q)$(OBJCOPY) --only-keep-debug $@ $(TARGET).debug
+ $(Q)$(OBJCOPY) --strip-debug $@
+ $(Q)$(OBJCOPY) --add-gnu-debuglink=$(TARGET).debug $@
+
+$(obj)/%.o: $(src)/%.c libpayload
+ $(Q)printf " CC $(subst $(shell pwd)/,,$(@))\n"
+ $(Q)CC="$(CC)" $(LPCC) $(CFLAGS) -c -o $@ $<
+
+ifneq ($(strip $(HAVE_LIBPAYLOAD)),)
+libpayload:
+ $(Q)printf "Found Libpayload $(LIBPAYLOAD_DIR).\n"
+else
+libpayload:
+ $(Q)printf "Building libpayload @ $(LIBCONFIG_PATH).\n"
+ $(Q)cp libpayload.config .config
+ $(Q)make -C $(LIBCONFIG_PATH) distclean
+ $(Q)make -C $(LIBCONFIG_PATH) DESTDIR=$(LIBPAYLOAD_DIR) install DOTCONFIG=$(shell pwd)/.config
+endif
+
+prepare:
+ $(Q)mkdir -p $(obj)
+
+clean:
+ $(Q)rm -rf $(obj) $(LIBPAYLOAD_DIR) .xcompile .config .config.old
+
+.PHONY: $(PHONY) clean
+