aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@linux.intel.com>2011-03-11 12:49:39 +0000
committerMatt Fleming <matt.fleming@linux.intel.com>2011-03-11 13:50:29 +0000
commitad15232a0e0b2f5ff3d8311c96fe850225ab61bd (patch)
tree06068cadb29e12cc576b69d346238bc152f36479
parent5b07ae8ff9d7516e55120e89942aa4f206905358 (diff)
downloadefilinux-ad15232a0e0b2f5ff3d8311c96fe850225ab61bd.tar.gz
Makefile: Allow buildling for ia32
Extract all the architecture-specific options and infer which architecture we're building from $(CC) -dumpmachine. Currently, only x86-64 and ia32 are supported, but it would be trivial to add ia64 support. Signed-off-by: Matt Fleming <matt.fleming@linux.intel.com>
-rw-r--r--Makefile21
1 files changed, 16 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index e84bb42..ec2f073 100644
--- a/Makefile
+++ b/Makefile
@@ -21,14 +21,25 @@
-j .rela -j .reloc --target=$(FORMAT) $*.so $@
OBJCOPY=objcopy
-ARCH=x86-64
-FORMAT=efi-app-$(ARCH)
-LDSCRIPT=/usr/lib64/gnuefi/elf_x86_64_efi.lds
+MACHINE=$(shell $(CC) -dumpmachine | sed "s/\(-\).*$$//")
-CFLAGS=-I. -I/usr/include/efi -I/usr/include/efi/x86_64 \
+ifeq ($(MACHINE),x86_64)
+ ARCH=$(MACHINE)
+ LIBDIR=/usr/lib64
+ FORMAT=efi-app-x86-64
+else
+ ARCH=ia32
+ LIBDIR=/usr/lib
+ FORMAT=efi-app-$(ARCH)
+endif
+
+CRT0=$(LIBDIR)/gnuefi/crt0-efi-$(ARCH).o
+LDSCRIPT=$(LIBDIR)/gnuefi/elf_$(ARCH)_efi.lds
+
+CFLAGS=-I. -I/usr/include/efi -I/usr/include/efi/$(ARCH) \
-DEFI_FUNCTION_WRAPPER -fPIC -fshort-wchar
-LDFLAGS=-T $(LDSCRIPT) -Bsymbolic -shared -nostdlib -L/usr/lib64/ /usr/lib64/gnuefi/crt0-efi-x86_64.o
+LDFLAGS=-T $(LDSCRIPT) -Bsymbolic -shared -nostdlib -L$(LIBDIR) $(CRT0)
IMAGE=efilinux.efi
OBJS = entry.o