]> code.delx.au - refind/blobdiff - filesystems/Make.gnuefi
New files related to building drivers using GNU-EFI
[refind] / filesystems / Make.gnuefi
diff --git a/filesystems/Make.gnuefi b/filesystems/Make.gnuefi
new file mode 100644 (file)
index 0000000..4d69b91
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# filesystems/Make.gnuefi
+# Build control file for the EFI drivers, as built with GNU-EFI
+#
+
+SRCDIR = .
+
+VPATH = $(SRCDIR)
+
+HOSTARCH        = $(shell uname -m | sed s,i[3456789]86,ia32,)
+ARCH            ?= $(HOSTARCH)
+
+# Note: IA64 options are untested; taken from Debian's rEFIt package.
+ifeq ($(ARCH),ia64)
+  # EFI specs allows only lower floating point partition to be used
+  ARCH_C_CFLAGS  = -frename-registers -mfixed-range=f32-f127
+  # TODO: Add FILENAME_CODE as appropriate
+endif
+
+ifeq ($(ARCH),ia32)
+  LIBEG = build32
+  ARCH_C_FLAGS = -m32 -malign-double
+  FILENAME_CODE = ia32
+  LD_CODE = elf_i386
+endif
+
+ifeq ($(ARCH),x86_64)
+  LIBEG = build64
+  ARCH_C_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -m64
+  FILENAME_CODE = x64
+  LD_CODE = elf_x86_64
+endif
+
+LOCAL_CPPFLAGS   = -DFSTYPE=$(DRIVERNAME) $(ARCH_C_FLAGS) -I$(SRCDIR) -I$(SRCDIR)/../include -I$(SRCDIR)/../libeg
+
+OBJS            = fsw_core.o fsw_efi.o fsw_efi_lib.o fsw_lib.o fsw_$(DRIVERNAME).o
+TARGET          = $(DRIVERNAME)_$(FILENAME_CODE).efi
+
+all: $(TARGET)
+
+include $(SRCDIR)/../Make.common
+
+$(TARGET): $(SHLIB_TARGET)
+       $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
+                  -j .rela -j .reloc --target=$(FORMAT_DRIVER)  $< $@
+       cp $(TARGET) ../drivers_$(FILENAME_CODE)
+
+# EOF