Skip to content

Commit a0db250

Browse files
committed
Makefile: port to arm/aarch64
Signed-off-by: Peter Jones <pjones@redhat.com>
1 parent 140e83b commit a0db250

File tree

1 file changed

+48
-6
lines changed

1 file changed

+48
-6
lines changed

Makefile

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,65 @@ VERSION = 0.4
22
ARCH = $(shell uname -m | sed s,i[3456789]86,ia32,)
33
DATADIR := /usr/share
44
LIBDIR := /usr/lib64
5+
GNUEFIDIR ?= $(LIBDIR)/gnuefi/
56
CC = gcc
6-
CFLAGS = -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -mno-red-zone -DCONFIG_$(ARCH) -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c99 -I/usr/include/efi -I/usr/include/efi/$(ARCH) -I/usr/include/efi/protocol
7+
CFLAGS ?= -O0 -g3
8+
BUILDFLAGS := $(CFLAGS) -fpic -Werror -Wall -Wextra -fshort-wchar \
9+
-fno-merge-constants -ffreestanding \
10+
-fno-stack-protector -fno-stack-check --std=gnu11 -DCONFIG_$(ARCH) \
11+
-I/usr/include/efi/ -I/usr/include/efi/$(ARCH)/ \
12+
-I/usr/include/efi/protocol
13+
CCLDFLAGS ?= -nostdlib -Wl,--warn-common \
14+
-Wl,--no-undefined -Wl,--fatal-warnings \
15+
-Wl,-shared -Wl,-Bsymbolic -L$(LIBDIR) -L$(GNUEFIDIR) \
16+
-Wl,--build-id=sha1 -Wl,--hash-style=sysv \
17+
$(GNUEFIDIR)/crt0-efi-$(ARCH).o
718
LD = ld
8-
LDFLAGS = -nostdlib -T $(LIBDIR)/gnuefi/elf_$(ARCH)_efi.lds -shared -Bsymbolic -L$(LIBDIR) $(LIBDIR)/gnuefi/crt0-efi-$(ARCH).o
919
OBJCOPY = objcopy
20+
OBJCOPY_GTE224 = $(shell expr `$(OBJCOPY) --version |grep ^"GNU objcopy" | sed 's/^.* //g' | cut -f1-2 -d.` \>= 2.24)
21+
22+
ifeq ($(ARCH),x86_64)
23+
FORMAT = --target efi-app-$(ARCH)
24+
BUILDFLAGS += -mno-mmx -mno-sse -mno-red-zone -nostdinc \
25+
-maccumulate-outgoing-args -DEFI_FUNCTION_WRAPPER \
26+
-DGNU_EFI_USE_MS_ABI -I$(shell $(CC) -print-file-name=include)
27+
endif
28+
ifeq ($(ARCH),ia32)
29+
FORMAT = --target efi-app-$(ARCH)
30+
BUILDFLAGS += -mno-mmx -mno-sse -mno-red-zone -nostdinc \
31+
-maccumulate-outgoing-args -m32 \
32+
-I$(shell $(CC) -print-file-name=include)
33+
endif
34+
35+
ifeq ($(ARCH),aarch64)
36+
FORMAT = -O binary
37+
CCLDFLAGS += -Wl,--defsym=EFI_SUBSYSTEM=0xa
38+
BUILDFLAGS += -ffreestanding -I$(shell $(CC) -print-file-name=include)
39+
endif
40+
41+
ifeq ($(ARCH),arm)
42+
FORMAT = -O binary
43+
CCLDFLAGS += -Wl,--defsym=EFI_SUBSYSTEM=0xa
44+
BUILDFLAGS += -ffreestanding -I$(shell $(CC) -print-file-name=include)
45+
endif
1046

1147
all : pesign-test-app.efi
1248

1349
%.efi : %.so
14-
$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
15-
-j .rela -j .reloc --target=efi-app-$(ARCH) $^ $@
50+
ifneq ($(OBJCOPY_GTE224),1)
51+
$(error objcopy >= 2.24 is required)
52+
endif
53+
$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym \
54+
-j .rel* -j .rela* -j .reloc -j .eh_frame \
55+
$(FORMAT) $^ $@
1656

1757
%.so : %.o
18-
$(LD) $(LDFLAGS) -o $@ $^ -lefi -lgnuefi
58+
$(CC) $(CCLDFLAGS) -o $@ $^ -lefi -lgnuefi \
59+
$(shell $(CC) -print-libgcc-file-name) \
60+
-T $(GNUEFIDIR)/elf_$(ARCH)_efi.lds
1961

2062
%.o : %.c
21-
$(CC) $(CFLAGS) -c -o $@ $^
63+
$(CC) $(BUILDFLAGS) -c -o $@ $^
2264

2365
clean :
2466
@rm -vf *.o *.so *.efi

0 commit comments

Comments
 (0)