[efi] Use device path to locate filesystem from which we were loaded
[ipxe.git] / src / Makefile.efi
1 # -*- makefile -*- : Force emacs to use Makefile mode
2
3 # Enable stack protection if available
4 #
5 SPG_TEST = $(CC) -fstack-protector-strong -mstack-protector-guard=global \
6                  -x c -c /dev/null -o /dev/null >/dev/null 2>&1
7 SPG_FLAGS := $(shell $(SPG_TEST) && $(ECHO) '-fstack-protector-strong ' \
8                                             '-mstack-protector-guard=global')
9 CFLAGS += $(SPG_FLAGS)
10
11 # The EFI linker script
12 #
13 LDSCRIPT        = scripts/efi.lds
14
15 # Retain relocation information for elf2efi
16 #
17 LDFLAGS         += -q -S
18
19 # Media types.
20 #
21 NON_AUTO_MEDIA  += efi
22 NON_AUTO_MEDIA  += efidrv
23 NON_AUTO_MEDIA  += drv.efi
24 NON_AUTO_MEDIA  += efirom
25
26 # Include SNP driver in the all-drivers build
27 #
28 DRIVERS_net += snp
29
30 # Rules for building EFI files
31 #
32 $(BIN)/%.efi : $(BIN)/%.efi.tmp $(ELF2EFI)
33         $(QM)$(ECHO) "  [FINISH] $@"
34         $(Q)$(ELF2EFI) --subsystem=10 $< $@
35
36 $(BIN)/%.efidrv : $(BIN)/%.efidrv.tmp $(ELF2EFI)
37         $(QM)$(ECHO) "  [FINISH] $@"
38         $(Q)$(ELF2EFI) --subsystem=11 $< $@
39
40 $(BIN)/%.drv.efi : $(BIN)/%.efidrv
41         $(QM)$(ECHO) "  [FINISH] $@"
42         $(Q)$(CP) $< $@
43
44 $(BIN)/%.efirom : $(BIN)/%.efidrv $(EFIROM)
45         $(QM)$(ECHO) "  [FINISH] $@"
46         $(Q)$(EFIROM) -v $(TGT_PCI_VENDOR) -d $(TGT_PCI_DEVICE) $< $@
47
48 $(BIN)/efidrv.cab : $(BIN)/alldrv.efis # $(ALL_drv.efi) is not yet defined
49         $(QM)$(ECHO) "  [CAB] $@"
50         $(Q)$(LCAB) -n -q $(ALL_drv.efi) $@
51
52 $(BIN)/%.usb : $(BIN)/%.efi
53         $(QM)$(ECHO) "  [GENEFIDSK] $@"
54         $(Q)bash util/genefidsk -o $@ -b $(EFI_BOOT_FILE) $<