]> code.delx.au - refind/blob - filesystems/Make.gnuefi
6eab253332b6d5e79dd3fb168df5713cc2081bae
[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 # This program is licensed under the terms of the GNU GPL, version 3,
7 # or (at your option) any later version.
8 # You should have received a copy of the GNU General Public License
9 # along with this program. If not, see <http://www.gnu.org/licenses/>.
10
11 SRCDIR = .
12
13 VPATH = $(SRCDIR)
14
15 HOSTARCH = $(shell uname -m | sed s,i[3456789]86,ia32,)
16 ARCH ?= $(HOSTARCH)
17
18 # Note: IA64 options are untested; taken from Debian's rEFIt package.
19 ifeq ($(ARCH),ia64)
20 # EFI specs allows only lower floating point partition to be used
21 ARCH_C_CFLAGS = -frename-registers -mfixed-range=f32-f127
22 # TODO: Add FILENAME_CODE as appropriate
23 endif
24
25 ifeq ($(ARCH),ia32)
26 LIBEG = build32
27 ARCH_C_FLAGS = -m32
28 FILENAME_CODE = ia32
29 LD_CODE = elf_i386
30 endif
31
32 ifeq ($(ARCH),x86_64)
33 LIBEG = build64
34 ARCH_C_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -m64
35 FILENAME_CODE = x64
36 LD_CODE = elf_x86_64
37 endif
38
39 ifeq ($(ARCH),aarch64)
40 LIBEG = build64
41 ARCH_C_FLAGS =
42 FILENAME_CODE = aa64
43 LD_CODE = elf_aarch64
44 FORMAT_DRIVER = -O binary
45 endif
46
47 LOCAL_CPPFLAGS = -DFSTYPE=$(DRIVERNAME) $(ARCH_C_FLAGS) -I$(SRCDIR) -I$(SRCDIR)/../include -I$(SRCDIR)/../libeg
48
49 OBJS = fsw_core.o fsw_efi.o fsw_efi_lib.o fsw_lib.o fsw_$(DRIVERNAME).o
50 TARGET = $(DRIVERNAME)_$(FILENAME_CODE).efi
51
52 all: $(TARGET)
53
54 include $(SRCDIR)/../Make.common
55
56 $(SHLIB_TARGET): $(OBJS)
57 $(LD) $(LOCAL_LDFLAGS) $(DRV_LDFLAGS) $(OBJS) -o $@ $(LOCAL_LIBS) $(LIBS)
58
59 $(TARGET): $(SHLIB_TARGET)
60 $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
61 -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
62 -j .reloc $(FORMAT_DRIVER) $< $@
63 chmod a-x $(TARGET)
64 mkdir -p ../drivers_$(FILENAME_CODE)
65 cp $(TARGET) ../drivers_$(FILENAME_CODE)
66
67 # EOF