-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
69 lines (53 loc) · 1.3 KB
/
Makefile
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
CLANG := clang-9
AS := nasm
FUSE_LD := lld-link
.PHONY: all clean run
default: all
TARGET := ../bin/efi/boot/BOOTX64.EFI
SRCS += $(shell find src/ -name '*.c')
# ASM_SRCS += $(shell find src/ -name '*.asm')
OBJS := $(SRCS:%=build/%.o)
ASM_OBJS :=
# ASM_OBJS := $(ASM_SRCS:%=build/%.o)
INCLUDE_DIRS += include
INCLUDE_DIRS += edk2/MdePkg/Include
INCLUDE_DIRS += edk2/MdePkg/Include/X64
INCLUDE_DIRS += edk2/MdePkg/Include/Protocol
INCLUDE_DIRS += edk2/basetools/source/c/genfw
INCLUDE_DIRS += edk2/MdePkg/Include/Pi
INCLUDE_DIRS += edk2/MdePkg/Include/Library
INCLUDE_DIRS += edk2/MdeModulePkg/Include/Guid
ASFLAGS = -fwin64
CFLAGS := \
-target x86_64-unknown-windows \
-ffreestanding \
-fshort-wchar \
-nostdlib \
-std=c11 \
-Wall \
-Werror \
-fasm-blocks \
-flto \
-g
CFLAGS += $(INCLUDE_DIRS:%=-I%)
LDFLAGS := \
-target x86_64-unknown-windows \
-nostdlib \
-Wl,-entry:EfiMain \
-Wl,-subsystem:efi_application \
-fuse-ld=$(FUSE_LD)
clean:
@rm -rf build
all: $(TARGET)
$(TARGET): $(ASM_OBJS) $(OBJS)
@mkdir -p $(@D)
@$(CLANG) $(LDFLAGS) -o $@ $(OBJS) $(ASM_OBJS)
remake: clean all
build/%.c.o: %.c
@mkdir -p $(@D)
@echo "\033[35m[Compiling]\033[0m $@"
@$(CLANG) $(CFLAGS) -c -o $@ $<
build/%.asm.o: %.asm
@mkdir -p $(@D)
@echo "\033[36m[Assembling]\033[0m $@"
@$(AS) $(ASFLAGS) -o $@ $<