]> code.delx.au - refind/blob - filesystems/Make.gnuefi
9fb1676e785200137fa42f8d2987d652f742a1dd
[refind] / filesystems / Make.gnuefi
1 #
2 # filesystems/Make.gnuefi
3 # Build control file for the EFI drivers, as built with GNU-EFI
4 #
5
6 SRCDIR = .
7
8 VPATH = $(SRCDIR)
9
10 HOSTARCH = $(shell uname -m | sed s,i[3456789]86,ia32,)
11 ARCH ?= $(HOSTARCH)
12
13 # Note: IA64 options are untested; taken from Debian's rEFIt package.
14 ifeq ($(ARCH),ia64)
15 # EFI specs allows only lower floating point partition to be used
16 ARCH_C_CFLAGS = -frename-registers -mfixed-range=f32-f127
17 # TODO: Add FILENAME_CODE as appropriate
18 endif
19
20 ifeq ($(ARCH),ia32)
21 LIBEG = build32
22 ARCH_C_FLAGS = -m32 -malign-double
23 FILENAME_CODE = ia32
24 LD_CODE = elf_i386
25 endif
26
27 ifeq ($(ARCH),x86_64)
28 LIBEG = build64
29 ARCH_C_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -m64
30 FILENAME_CODE = x64
31 LD_CODE = elf_x86_64
32 endif
33
34 ifeq ($(ARCH),aarch64)
35 LIBEG = build64
36 ARCH_C_FLAGS =
37 FILENAME_CODE = aa64
38 LD_CODE = elf_aarch64
39 FORMAT_DRIVER = -O binary
40 endif
41
42 LOCAL_CPPFLAGS = -DFSTYPE=$(DRIVERNAME) $(ARCH_C_FLAGS) -I$(SRCDIR) -I$(SRCDIR)/../include -I$(SRCDIR)/../libeg
43
44 OBJS = fsw_core.o fsw_efi.o fsw_efi_lib.o fsw_lib.o fsw_$(DRIVERNAME).o
45 TARGET = $(DRIVERNAME)_$(FILENAME_CODE).efi
46
47 all: $(TARGET)
48
49 include $(SRCDIR)/../Make.common
50
51 $(SHLIB_TARGET): $(OBJS)
52 $(LD) $(LOCAL_LDFLAGS) $(DRV_LDFLAGS) $(OBJS) -o $@ $(LOCAL_LIBS) $(LIBS)
53
54 $(TARGET): $(SHLIB_TARGET)
55 $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
56 -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
57 -j .reloc $(FORMAT_DRIVER) $< $@
58 chmod a-x $(TARGET)
59 mkdir -p ../drivers_$(FILENAME_CODE)
60 cp $(TARGET) ../drivers_$(FILENAME_CODE)
61
62 # EOF