blob: f5820066e6594853aff002dffda311c0b9f5726c [file] [log] [blame]
Bill Richardson3a5a8d62010-05-21 11:35:01 -07001#
2# Copyright (C) 1999-2001 Hewlett-Packard Co.
3# Contributed by David Mosberger <davidm@hpl.hp.com>
4# Contributed by Stephane Eranian <eranian@hpl.hp.com>
5#
6# This file is part of the gnu-efi package.
7#
8# GNU-EFI is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2, or (at your option)
11# any later version.
12#
13# GNU-EFI is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with GNU-EFI; see the file COPYING. If not, write to the Free
20# Software Foundation, 59 Temple Place - Suite 330, Boston, MA
21# 02111-1307, USA.
22#
23
24PREFIX ?= /usr/bin/x86_64-pc-linux-gnu-
25CC ?= $(PREFIX)gcc
26LD ?= $(PREFIX)ld
27OBJCOPY ?= $(PREFIX)objcopy
28
29
30EFIINC = /usr/include/efi
31EFILIB = /usr/lib
32EFICRT0 = /usr/lib
33
34ARCH = $(shell uname -m | sed s,i[3456789]86,ia32,)
35
36INCDIR = -I$(EFIINC) -I$(EFIINC)/$(ARCH)
37
38CPPFLAGS = -DCONFIG_$(ARCH)
39
40OPTIMFLAGS = -O2
41DEBUGFLAGS = -Wall
42CFLAGS = $(OPTIMFLAGS) -fpic -fshort-wchar $(DEBUGFLAGS)
43CFLAGS += -DEFI_FUNCTION_WRAPPER
44LDFLAGS = -nostdlib -znocombreloc
45
46
47CRTOBJS = $(EFICRT0)/crt0-efi-$(ARCH).o
48LDSCRIPT = $(EFICRT0)/elf_$(ARCH)_efi.lds
49
50LDFLAGS += -T $(LDSCRIPT) -shared -Bsymbolic -L$(EFILIB) $(CRTOBJS)
51LOADLIBES = -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name)
52FORMAT = efi-app-$(ARCH)
53
54
55TARGETS = bootstub.efi
56
57all: $(TARGETS)
58
59clean:
60 rm -f $(TARGETS) *~ *.o *.so
61
62install: bootstub.efi
63 mkdir -p $(DESTDIR)
64 cp -f $^ $(DESTDIR)
65
66.PHONY: all clean install
67
68
69bootstub.so: bootstub.o trampoline.o
70 $(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES)
71
72%.efi: %.so
73 $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
74 -j .rela -j .reloc --target=$(FORMAT) $*.so $@
75
76%.so: %.o
77 $(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES)
78
79%.o: %.c
80 $(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
81
82%.o: %.S
83 $(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@