1 include $(MAKEDIR
)/syslinux.mk
3 com32
= $(topdir
)/com32
6 # Support IA32 and x86_64 platforms with one build
7 # Set up architecture specifics; for cross compilation, set ARCH as apt
8 # gnuefi sets up architecture specifics in ia32 or x86_64 sub directories
9 # set up the LIBDIR and EFIINC for building for the appropriate architecture
10 GCCOPT
:= $(call gcc_ok
,-fno-stack-protector
,)
11 EFIINC
= $(objdir
)/include/efi
12 LIBDIR
= $(objdir
)/lib
15 ARCHOPT
= -m32
-march
=i386
19 ARCHOPT
= -m64
-march
=x86-64
24 FORMAT
=efi-app-
$(EFI_SUBARCH
)
26 CFLAGS
= -I
$(EFIINC
) -I
$(EFIINC
)/$(EFI_SUBARCH
) \
27 -DEFI_FUNCTION_WRAPPER
-fPIC
-fshort-wchar
-ffreestanding \
28 -Wall
-I
$(com32
)/include -I
$(com32
)/include/sys \
29 -I
$(core
)/include -I
$(core
)/ $(ARCHOPT
) \
30 -I
$(com32
)/lib
/ -I
$(com32
)/libutil
/include -std
=gnu99 \
31 -DELF_DEBUG
-DSYSLINUX_EFI
-I
$(objdir
) \
32 $(GCCWARN
) -D__COM32__
-D__FIRMWARE_
$(FIRMWARE
)__
-mno-red-zone \
33 -DLDLINUX
=\"$(LDLINUX
)\" -fvisibility
=hidden \
34 -Wno-unused-parameter
$(GCCOPT
)
36 CRT0
:= $(LIBDIR
)/crt0-efi-
$(EFI_SUBARCH
).o
37 LDSCRIPT
:= $(LIBDIR
)/elf_
$(EFI_SUBARCH
)_efi.lds
39 LDFLAGS
= -T
$(SRC
)/$(ARCH
)/syslinux.
ld -Bsymbolic
-pie
-nostdlib
-znocombreloc \
40 -L
$(LIBDIR
) --hash-style
=gnu
-m elf_
$(ARCH
) $(CRT0
) -E
42 SFLAGS
= $(GCCOPT
) $(GCCWARN
) $(ARCHOPT
) \
43 -fomit-frame-pointer
-D__COM32__
-D__FIRMWARE_
$(FIRMWARE
)__ \
44 -nostdinc
-iwithprefix
include \
45 -I
$(com32
)/libutil
/include -I
$(com32
)/include -I
$(com32
)/include/sys
$(GPLINCLUDE
)
47 LIBEFI
= $(objdir
)/lib
/libefi.a
50 @echo Building gnu-efi for
$(EFI_SUBARCH
)
51 $(topdir
)/efi
/check-gnu-efi.sh
$(EFI_SUBARCH
) $(objdir
)
53 %.o
: %.S
# Cancel old rule
59 $(CC
) $(SFLAGS
) -c
-o
$@
$<
63 $(CC
) $(CFLAGS
) -c
-o
$@
$<
66 # $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
67 # -j .rela -j .reloc --target=$(FORMAT) $*.so $@