mirror of
https://gitlab.com/qemu-project/ipxe.git
synced 2025-11-03 07:59:06 +08:00
We want exclusive access to the network device, both for performance reasons and because we perform operations such as EAPoL that affect the entire link. We currently drive the network card via either a native hardware driver or via the SNP or NII/UNDI interfaces, both of which grant us this exclusive access. Add an alternative driver that drives the network card non-exclusively via the EFI_MANAGED_NETWORK_PROTOCOL interface. This can function as a fallback for situations where neither SNP nor NII/UNDI interfaces are functional, and also opens up the possibility of non-destructively installing a temporary network device over which to download the autoexec.ipxe script. Signed-off-by: Michael Brown <mcb30@ipxe.org>
60 lines
1.5 KiB
Makefile
60 lines
1.5 KiB
Makefile
# -*- makefile -*- : Force emacs to use Makefile mode
|
|
|
|
# Enable stack protection if available
|
|
#
|
|
SPG_TEST = $(CC) -fstack-protector-strong -mstack-protector-guard=global \
|
|
-x c -c /dev/null -o /dev/null >/dev/null 2>&1
|
|
SPG_FLAGS := $(shell $(SPG_TEST) && $(ECHO) '-fstack-protector-strong ' \
|
|
'-mstack-protector-guard=global')
|
|
CFLAGS += $(SPG_FLAGS)
|
|
|
|
# The EFI linker script
|
|
#
|
|
LDSCRIPT = scripts/efi.lds
|
|
|
|
# Retain relocation information for elf2efi
|
|
#
|
|
LDFLAGS += -q -S
|
|
|
|
# Media types.
|
|
#
|
|
NON_AUTO_MEDIA += efi
|
|
NON_AUTO_MEDIA += efidrv
|
|
NON_AUTO_MEDIA += drv.efi
|
|
NON_AUTO_MEDIA += efirom
|
|
|
|
# Include SNP and MNP drivers in the all-drivers build
|
|
#
|
|
DRIVERS_net += snp mnp
|
|
|
|
# Rules for building EFI files
|
|
#
|
|
$(BIN)/%.efi : $(BIN)/%.efi.tmp $(ELF2EFI)
|
|
$(QM)$(ECHO) " [FINISH] $@"
|
|
$(Q)$(ELF2EFI) --subsystem=10 $< $@
|
|
|
|
$(BIN)/%.efidrv : $(BIN)/%.efidrv.tmp $(ELF2EFI)
|
|
$(QM)$(ECHO) " [FINISH] $@"
|
|
$(Q)$(ELF2EFI) --subsystem=11 $< $@
|
|
|
|
$(BIN)/%.drv.efi : $(BIN)/%.efidrv
|
|
$(QM)$(ECHO) " [FINISH] $@"
|
|
$(Q)$(CP) $< $@
|
|
|
|
$(BIN)/%.efirom : $(BIN)/%.efidrv $(EFIROM)
|
|
$(QM)$(ECHO) " [FINISH] $@"
|
|
$(Q)$(EFIROM) -v $(firstword $(TGT_PCI_VENDOR) 0) \
|
|
-d $(firstword $(TGT_PCI_DEVICE) 0) -c $< $@
|
|
|
|
$(BIN)/efidrv.cab : $(BIN)/alldrv.efis # $(ALL_drv.efi) is not yet defined
|
|
$(QM)$(ECHO) " [CAB] $@"
|
|
$(Q)$(LCAB) -n -q $(ALL_drv.efi) $@
|
|
|
|
$(BIN)/%.iso : $(BIN)/%.efi util/genfsimg
|
|
$(QM)$(ECHO) " [GENFSIMG] $@"
|
|
$(Q)util/genfsimg -o $@ $<
|
|
|
|
$(BIN)/%.usb : $(BIN)/%.efi util/genfsimg
|
|
$(QM)$(ECHO) " [GENFSIMG] $@"
|
|
$(Q)util/genfsimg -o $@ $<
|