mirror of
https://github.com/ventoy/Ventoy.git
synced 2025-08-28 08:21:14 +00:00
1. Optimization for WIMBOOT mode.
2. Add WIMBOOT for UEFI mode.
This commit is contained in:
187
wimboot/wimboot-2.7.3/src/Makefile
Normal file
187
wimboot/wimboot-2.7.3/src/Makefile
Normal file
@@ -0,0 +1,187 @@
|
||||
VERSION := v2.7.3
|
||||
|
||||
OBJECTS := prefix.o startup.o callback.o main.o vsprintf.o string.o peloader.o
|
||||
OBJECTS += int13.o vdisk.o cpio.o stdio.o lznt1.o xca.o die.o efi.o efimain.o
|
||||
OBJECTS += efiguid.o efifile.o efipath.o efiboot.o efiblock.o cmdline.o
|
||||
OBJECTS += wimpatch.o huffman.o lzx.o wim.o wimfile.o pause.o sha1.o cookie.o
|
||||
OBJECTS += paging.o memmap.o
|
||||
|
||||
OBJECTS_i386 := $(patsubst %.o,%.i386.o,$(OBJECTS))
|
||||
OBJECTS_x86_64 := $(patsubst %.o,%.x86_64.o,$(OBJECTS))
|
||||
OBJECTS_i386_x86_64 := $(patsubst %.o,%.i386.x86_64.o,$(OBJECTS))
|
||||
|
||||
HEADERS := $(wildcard *.h)
|
||||
|
||||
HOST_CC := $(CC)
|
||||
AS := $(AS)
|
||||
ECHO := echo
|
||||
OBJCOPY := objcopy
|
||||
AR := ar
|
||||
RANLIB := ranlib
|
||||
CP := cp
|
||||
RM := rm
|
||||
GCAB := gcab
|
||||
PESIGN := pesign
|
||||
DIFF := diff
|
||||
CUT := cut
|
||||
BINUTILS_DIR := /usr
|
||||
BFD_DIR := $(BINUTILS_DIR)
|
||||
ZLIB_DIR := /usr
|
||||
|
||||
HOST_CFLAGS += -Wall -W -Werror
|
||||
|
||||
CFLAGS += -Os -ffreestanding -Wall -W -Werror -nostdinc -I. -fshort-wchar
|
||||
CFLAGS += -DVERSION="\"$(VERSION)\""
|
||||
|
||||
CFLAGS_i386 += -m32 -march=i386 -malign-double -fno-pic
|
||||
CFLAGS_x86_64 += -m64 -mno-red-zone -fpie
|
||||
|
||||
# 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)
|
||||
|
||||
# Inhibit unwanted debugging information
|
||||
CFI_TEST = $(CC) -fno-dwarf2-cfi-asm -fno-exceptions -fno-unwind-tables \
|
||||
-fno-asynchronous-unwind-tables -x c -c /dev/null \
|
||||
-o /dev/null >/dev/null 2>&1
|
||||
CFI_FLAGS := $(shell $(CFI_TEST) && \
|
||||
$(ECHO) '-fno-dwarf2-cfi-asm -fno-exceptions ' \
|
||||
'-fno-unwind-tables -fno-asynchronous-unwind-tables')
|
||||
WORKAROUND_CFLAGS += $(CFI_FLAGS)
|
||||
|
||||
# Add -maccumulate-outgoing-args if required by this version of gcc
|
||||
MS_ABI_TEST_CODE := extern void __attribute__ (( ms_abi )) ms_abi(); \
|
||||
void sysv_abi ( void ) { ms_abi(); }
|
||||
MS_ABI_TEST = $(ECHO) '$(MS_ABI_TEST_CODE)' | \
|
||||
$(CC) -m64 -mno-accumulate-outgoing-args -x c -c - -o /dev/null \
|
||||
>/dev/null 2>&1
|
||||
MS_ABI_FLAGS := $(shell $(MS_ABI_TEST) || $(ECHO) '-maccumulate-outgoing-args')
|
||||
WORKAROUND_CFLAGS += $(MS_ABI_FLAGS)
|
||||
|
||||
# Inhibit warnings from taking address of packed struct members
|
||||
WNAPM_TEST = $(CC) -Wno-address-of-packed-member -x c -c /dev/null \
|
||||
-o /dev/null >/dev/null 2>&1
|
||||
WNAPM_FLAGS := $(shell $(WNAPM_TEST) && \
|
||||
$(ECHO) '-Wno-address-of-packed-member')
|
||||
WORKAROUND_CFLAGS += $(WNAPM_FLAGS)
|
||||
|
||||
# Inhibit LTO
|
||||
LTO_TEST = $(CC) -fno-lto -x c -c /dev/null -o /dev/null >/dev/null 2>&1
|
||||
LTO_FLAGS := $(shell $(LTO_TEST) && $(ECHO) '-fno-lto')
|
||||
WORKAROUND_CFLAGS += $(LTO_FLAGS)
|
||||
|
||||
CFLAGS += $(WORKAROUND_CFLAGS)
|
||||
CFLAGS += $(EXTRA_CFLAGS)
|
||||
|
||||
ifneq ($(DEBUG),)
|
||||
CFLAGS += -DDEBUG=$(DEBUG)
|
||||
endif
|
||||
|
||||
CFLAGS += -include compiler.h
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Final targets
|
||||
|
||||
all : wimboot wimboot.i386 wimboot.x86_64 wimboot.cab
|
||||
|
||||
wimboot : wimboot.x86_64 Makefile
|
||||
$(CP) $< $@
|
||||
$(CP) $@ ../$@
|
||||
|
||||
wimboot.%.elf : prefix.%.o lib.%.a script.lds Makefile
|
||||
$(LD) -m elf_$* -T script.lds -o $@ -q -Map wimboot.$*.map \
|
||||
prefix.$*.o lib.$*.a
|
||||
|
||||
wimboot.%.unsigned : wimboot.%.elf efireloc Makefile
|
||||
$(OBJCOPY) -Obinary $< $@
|
||||
./efireloc $< $@
|
||||
|
||||
wimboot.%.unsigned.hash : wimboot.%.unsigned Makefile
|
||||
$(PESIGN) -h -i $< | $(CUT) -d" " -f2- > $@
|
||||
|
||||
wimboot.%.efi : wimboot.%.unsigned Makefile
|
||||
$(CP) $< $@
|
||||
|
||||
wimboot.%.efi.hash : wimboot.%.efi Makefile
|
||||
$(PESIGN) -h -i $< | $(CUT) -d" " -f2- > $@
|
||||
|
||||
wimboot.% : wimboot.%.efi wimboot.%.efi.hash wimboot.%.unsigned.hash Makefile
|
||||
$(DIFF) wimboot.$*.efi.hash wimboot.$*.unsigned.hash
|
||||
$(CP) $< $@
|
||||
|
||||
wimboot.cab : wimboot.i386.efi wimboot.x86_64.efi Makefile
|
||||
$(GCAB) -n -c $@ wimboot.i386.efi wimboot.x86_64.efi
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# i386 objects
|
||||
|
||||
%.i386.s : %.S $(HEADERS) Makefile
|
||||
$(CC) $(CFLAGS) $(CFLAGS_i386) -DASSEMBLY -Ui386 -E $< -o $@
|
||||
|
||||
%.i386.s : %.c $(HEADERS) Makefile
|
||||
$(CC) $(CFLAGS) $(CFLAGS_i386) -S $< -o $@
|
||||
|
||||
%.i386.o : %.i386.s i386.i Makefile
|
||||
$(AS) --32 i386.i $< -o $@
|
||||
|
||||
lib.i386.a : $(OBJECTS_i386) Makefile
|
||||
$(RM) -f $@
|
||||
$(AR) r $@ $(OBJECTS_i386)
|
||||
$(RANLIB) $@
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# i386 objects to be linked into an x86_64 binary
|
||||
|
||||
%.i386.x86_64.raw.o : %.i386.s i386.i Makefile
|
||||
$(AS) --64 i386.i $< -o $@
|
||||
|
||||
%.i386.x86_64.o : %.i386.x86_64.raw.o Makefile
|
||||
$(OBJCOPY) --prefix-symbols=__i386_ $< $@
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# x86_64 objects
|
||||
|
||||
%.x86_64.s : %.S $(HEADERS) Makefile
|
||||
$(CC) $(CFLAGS) $(CFLAGS_x86_64) -DASSEMBLY -Ui386 -E $< -o $@
|
||||
|
||||
%.x86_64.s : %.c $(HEADERS) Makefile
|
||||
$(CC) $(CFLAGS) $(CFLAGS_x86_64) -S $< -o $@
|
||||
|
||||
%.x86_64.o : %.x86_64.s x86_64.i Makefile
|
||||
$(AS) --64 x86_64.i $< -o $@
|
||||
|
||||
lib.x86_64.a : $(OBJECTS_x86_64) $(OBJECTS_i386_x86_64) Makefile
|
||||
$(RM) -f $@
|
||||
$(AR) r $@ $(OBJECTS_x86_64) $(OBJECTS_i386_x86_64)
|
||||
$(RANLIB) $@
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# EFI relocator
|
||||
|
||||
EFIRELOC_CFLAGS := -I$(BINUTILS_DIR)/include -I$(BFD_DIR)/include \
|
||||
-I$(ZLIB_DIR)/include -idirafter .
|
||||
EFIRELOC_LDFLAGS := -L$(BINUTILS_DIR)/lib -L$(BFD_DIR)/lib -L$(ZLIB_DIR)/lib \
|
||||
-lbfd -ldl -liberty -lz -Wl,--no-warn-search-mismatch
|
||||
|
||||
efireloc : efireloc.c Makefile
|
||||
$(CC) $(HOST_CFLAGS) $(EFIRELOC_CFLAGS) $< $(EFIRELOC_LDFLAGS) -o $@
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Cleanup
|
||||
|
||||
clean :
|
||||
$(RM) -f *.s *.o *.a *.elf *.map
|
||||
$(RM) -f efireloc
|
||||
$(RM) -f wimboot wimboot.i386 wimboot.x86_64 ../wimboot
|
||||
$(RM) -f wimboot.i386.unsigned wimboot.x86_64.unsigned
|
||||
$(RM) -f wimboot.i386.efi wimboot.x86_64.efi wimboot.cab
|
Reference in New Issue
Block a user