-
Notifications
You must be signed in to change notification settings - Fork 9
/
Makefile
83 lines (67 loc) · 2.42 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# This file is part of VirtualBiosMod, a virtual bios setup interface
# Copyright (C) 2020 Alexandru Marc Serdeliuc
#
# https://github.com/serdeliuk/VirtualBiosMod
#
# VirtualBiosMod is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# VirtualBiosMod is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with VirtualBiosMod. If not, see <http://www.gnu.org/licenses/>.
#
# Please keep this header in all your source code.
ARCH = $(shell uname -m)
OBJS = VirtualBiosMod.o
TARGET = VirtualBiosMod.efi
EFI_INC = /usr/include/efi
EFI_LIB = /usr/lib
EFI_CRT_OBJS = $(EFI_LIB)/crt0-efi-$(ARCH).o
EFI_LDS = $(EFI_LIB)/elf_$(ARCH)_efi.lds
CFLAGS = -nostdlib \
-fno-stack-protector \
-fno-strict-aliasing \
-fno-builtin \
-fpic \
-fshort-wchar \
-mno-red-zone \
-Wall
ifeq ($(ARCH),x86_64)
CFLAGS += -DEFI_FUNCTION_WRAPPER
endif
CFLAGS += -I$(EFI_INC) \
-I$(EFI_INC)/$(ARCH) \
-I$(EFI_INC)/protocol
LDFLAGS = -nostdlib \
-znocombreloc \
-shared \
-no-undefined \
-Bsymbolic
LDFLAGS += -T $(EFI_LDS) \
-L$(EFI_LIB) \
$(EFI_CRT_OBJS)
LIBS = -lefi \
-lgnuefi
OBJCOPYFLAGS = -j .text \
-j .sdata \
-j .data \
-j .dynamic \
-j .dynsym \
-j .rel \
-j .rela \
-j .reloc \
--target=efi-app-$(ARCH)
all: $(TARGET)
VirtualBiosMod.so: $(OBJS)
ld $(LDFLAGS) $(OBJS) -o $@ $(LIBS)
%.efi: %.so
objcopy $(OBJCOPYFLAGS) $^ $@
.PHONY: clean
clean:
rm -f $(OBJS) $(TARGET) VirtualBiosMod.so