blob: cd7cbba4a227f17a81f45fb9a2f048367f6085c9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#CC = gcc-4.8.3
#ARCH = $(shell uname -m | sed s,i[3456789]86,ia32,)
EFI_ARCH = x86_64
ARCH = x86-64
OBJS = main.o misc.o ELF.o disk.o vga.o vmmem.o paging.o memory.o other.o
TARGET = hello.efi
EFIINC = /usr/include/efi
EFIINCS = -I$(EFIINC) -I$(EFIINC)/$(EFI_ARCH) -I$(EFIINC)/protocol
LIB = /usr/lib
EFILIB = /usr/lib
EFI_CRT_OBJS = $(EFILIB)/crt0-efi-$(EFI_ARCH).o
EFI_LDS = $(EFILIB)/elf_$(EFI_ARCH)_efi.lds
CFLAGS = $(EFIINCS) -fno-stack-protector -fpic \
-fshort-wchar -mno-red-zone -Wall -ggdb3 -O0 -fpic -ffreestanding -fno-stack-protector -fno-stack-check -fshort-wchar -mno-red-zone -maccumulate-outgoing-args -mno-avx -mno-sse
ifeq ($(ARCH),x86-64)
CFLAGS += -DEFI_FUNCTION_WRAPPER
endif
LDFLAGS = -T $(EFI_LDS) -shared \
-Bsymbolic -L $(EFILIB) -L $(LIB) $(EFI_CRT_OBJS)
# -nostdlib -znocombreloc -T $(EFI_LDS) -shared \
.PHONY: all debug clean
all: $(TARGET)
hello.so: $(OBJS)
ld $(LDFLAGS) $(OBJS) -o $@ -lefi -lgnuefi
%.efi: %.so
objcopy -v -j .text -j .sdata -j .data -j .rodata -j .dynamic \
-j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc \
--output-target=efi-app-x86_64 --subsystem=10 $^ $@
# --target=efi-app-$(ARCH) $^ $@
debug: all
objcopy -j .text -j .sdata -j .data -j .dynamic \
-j .dynsym -j .rel -j .rela -j .reloc \
-j .debug_info -j .debug_abbrev -j .debug_loc \
-j .debug_aranges -j .debug_line -j .debug_macinfo -j .debug_str\
--target=pei-$(ARCH) hello.so hello-debug.so
# --target=efi-app-$(ARCH) hello.so hello-debug.so
clean:
rm *.so *.efi *.o
|