3 include $(MAKEDIR
)/syslinux.mk
5 # Support IA32 and x86_64 platforms with one build
6 # Set up architecture specifics; for cross compilation, set ARCH as apt
7 GCCOPT
:= $(call gcc_ok
,-std
=gnu99
,)
9 GCCOPT
+= $(call gcc_ok
,-m32
,)
10 GCCOPT
+= $(call gcc_ok
,-mpreferred-stack-boundary
=2,)
14 GCCOPT
+= $(call gcc_ok
,-m64
,)
15 #let preferred-stack-boundary be default(=4)
18 GCCOPT
+= $(call gcc_ok
,-fno-stack-protector
,)
19 GCCOPT
+= $(call gcc_ok
,-fwrapv
,)
20 GCCOPT
+= $(call gcc_ok
,-freg-struct-return
,)
21 # Note -fPIE does not work with ld on x86_64, try -fPIC instead
22 # Does BIOS build require -fPIE?
23 GCCOPT
+= $(call gcc_ok
,-fPIC
)
24 GCCOPT
+= $(call gcc_ok
,-fno-exceptions
,)
25 GCCOPT
+= $(call gcc_ok
,-fno-asynchronous-unwind-tables
,)
26 GCCOPT
+= $(call gcc_ok
,-fno-strict-aliasing
,)
27 GCCOPT
+= $(call gcc_ok
,-falign-functions
=0,-malign-functions
=0)
28 GCCOPT
+= $(call gcc_ok
,-falign-jumps
=0,-malign-jumps
=0)
29 GCCOPT
+= $(call gcc_ok
,-falign-labels
=0,-malign-labels
=0)
30 GCCOPT
+= $(call gcc_ok
,-falign-loops
=0,-malign-loops
=0)
33 STRIP
= strip --strip-all
-R .comment
-R .note
35 # zlib configuration flags
36 LIBFLAGS
= -DDYNAMIC_CRC_TABLE
38 # We need some features in libpng which apparently aren't available in the
39 # fixed-point versions. It's OK, because we have to have a non-graphical
40 # fallback anyway, just use that on old machines...
41 # LIBFLAGS += -DPNG_NO_FLOATING_POINT_SUPPORTED
43 REQFLAGS
= $(GCCOPT
) -g
-D__COM32__
-D__FIRMWARE_
$(FIRMWARE
)__ \
44 -nostdinc
-iwithprefix
include -I.
-I
$(SRC
)/sys \
45 -I
$(SRC
)/..
/include -I
$(com32
)/include/sys \
46 -I
$(topdir
)/core
/include -I
$(com32
)/lib
/ \
47 -I
$(com32
)/lib
/sys
/module
-I
$(OBJ
)/..
/..
48 OPTFLAGS
= -Os
-march
=$(MARCH
) -falign-functions
=0 -falign-jumps
=0 \
49 -falign-labels
=0 -ffast-math
-fomit-frame-pointer
50 WARNFLAGS
= $(GCCWARN
) -Wpointer-arith
-Wwrite-strings
-Wstrict-prototypes
-Winline
52 CFLAGS
= $(OPTFLAGS
) $(REQFLAGS
) $(WARNFLAGS
) $(LIBFLAGS
)
55 CFLAGS
+= -mno-red-zone
57 CFLAGS
+= -mregparm
=3 -DREGPARM
=3
61 $(patsubst $(com32
)/lib
/%.c
,%.o
,$(wildcard $(com32
)/lib
/$(ARCH
)/math
/*.c
)) \
62 $(patsubst $(com32
)/lib
/%.S
,%.o
,$(wildcard $(com32
)/lib
/$(ARCH
)/math
/*.S
))
66 atoi.o atol.o atoll.o calloc.o creat.o \
67 fgets.o fprintf.o fputc.o \
69 getopt.o getopt_long.o \
70 lrand48.o stack.o memccpy.o memchr.o \
71 mempcpy.o memmem.o memmove.o memswap.o \
72 perror.o qsort.o seed48.o \
74 strerror.o errlist.o \
78 strntoimax.o strsep.o strspn.o strstr.o \
79 strtoimax.o strtok.o strtol.o strtoll.o strtoull.o \
80 strtoumax.o vprintf.o vsprintf.o \
81 asprintf.o vasprintf.o \
86 inet.o dhcppack.o dhcpunpack.o \
92 getcwd.o fdopendir.o \
95 sys
/colortable.o sys
/screensize.o \
97 sys
/stdcon_read.o sys
/stdcon_write.o sys
/rawcon_read.o \
99 sys
/null_read.o sys
/null_write.o sys
/serial_write.o \
101 sys
/xserial_write.o \
105 sys
/ansicon_write.o sys
/ansiserial_write.o \
107 pci
/cfgtype.o pci
/scan.o pci
/bios.o \
108 pci
/readb.o pci
/readw.o pci
/readl.o \
109 pci
/writeb.o pci
/writew.o pci
/writel.o \
115 syslinux
/setup_data.o
117 ## CORE OBJECTS, INCLUDED IN THE ROOT COM32 MODULE
119 sys
/intcall.o sys
/farcall.o sys
/cfarcall.o sys
/zeroregs.o \
120 sys
/argv.o sys
/sleep.o \
121 sys
/fileinfo.o sys
/opendev.o sys
/read.o sys
/write.o sys
/ftell.o \
122 sys
/close.o sys
/open.o sys
/fileread.o sys
/fileclose.o \
124 sys
/isatty.o sys
/fstat.o \
126 dprintf.o vdprintf.o \
133 $(patsubst $(com32
)/lib
/%.c
,%.o
,$(wildcard $(com32
)/lib
/$(ARCH
)/libgcc
/*.c
)) \
134 $(patsubst $(com32
)/lib
/%.S
,%.o
,$(wildcard $(com32
)/lib
/$(ARCH
)/libgcc
/*.S
))
138 sys
/openconsole.o sys
/line_input.o \
139 sys
/colortable.o sys
/screensize.o \
141 sys
/stdcon_read.o sys
/rawcon_read.o \
143 sys
/null_write.o sys
/serial_write.o \
145 sys
/xserial_write.o \
149 sys
/ansicon_write.o sys
/ansiserial_write.o \
154 syslinux
/addlist.o syslinux
/freelist.o syslinux
/memmap.o \
155 syslinux
/movebits.o syslinux
/shuffle.o syslinux
/shuffle_pm.o \
156 syslinux
/shuffle_rm.o syslinux
/biosboot.o syslinux
/zonelist.o \
157 syslinux
/dump_mmap.o syslinux
/dump_movelist.o \
159 syslinux
/run_default.o syslinux
/run_command.o \
160 syslinux
/cleanup.o syslinux
/localboot.o syslinux
/runimage.o \
162 syslinux
/loadfile.o syslinux
/floadfile.o syslinux
/zloadfile.o \
164 syslinux
/load_linux.o syslinux
/initramfs.o \
165 syslinux
/initramfs_file.o syslinux
/initramfs_loadfile.o \
166 syslinux
/initramfs_archive.o
169 sys
/module
/common.o sys
/module
/$(ARCH
)/elf_module.o \
170 sys
/module
/elfutils.o \
171 sys
/module
/exec.o sys
/module
/elf_module.o
173 # ZIP library object files
175 zlib
/adler32.o zlib
/compress.o zlib
/crc32.o \
176 zlib
/uncompr.o zlib
/deflate.o zlib
/trees.o zlib
/zutil.o \
177 zlib
/inflate.o zlib
/infback.o zlib
/inftrees.o zlib
/inffast.o \
178 sys
/zfile.o sys
/zfopen.o
181 $(addprefix $(OBJ
)/,syslinux
/ipappend.o \
191 memcmp.o printf.o strncmp.o vfprintf.o \
192 strlen.o vsnprintf.o snprintf.o stpcpy.o strcmp.o strdup.o \
193 strcpy.o strncpy.o fopen.o fread.o fread2.o puts.o \
194 strtoul.o strntoumax.o strcasecmp.o \
195 sprintf.o strlcat.o strchr.o strlcpy.o strncasecmp.o ctypes.o \
196 fputs.o fwrite2.o fwrite.o fgetc.o fclose.o lmalloc.o \
197 sys
/err_read.o sys
/err_write.o sys
/null_read.o \
199 syslinux
/memscan.o strrchr.o strcat.o \
205 ifneq ($(FWCLASS
),EFI
)
206 # For EFI, these are part of gnu-efi
207 CORELIBOBJS
+= $(ARCH
)/setjmp.o memcpy.o memset.o
210 LDFLAGS
= -m elf_
$(ARCH
) --hash-style
=gnu
-T
$(com32
)/lib
/$(ARCH
)/elf.
ld
212 .SUFFIXES
: .c .o .a .so .lo .i .S .s .ls .ss .lss
214 % : %.c
# Cancel default rule
219 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -c
-o
$@
$<
222 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -E
-o
$@
$<
225 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -S
-o
$@
$<
228 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -D__ASSEMBLY__
-c
-o
$@
$<
231 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -D__ASSEMBLY__
-E
-o
$@
$<
234 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -D__ASSEMBLY__
-c
-o
$@
$<
237 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -D__ASSEMBLY__
-E
-o
$@
$<
239 %(OBJ
)/%.o
: $(SRC
)/%.s
240 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -x assembler
-c
-o
$@
$<
243 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -x assembler
-c
-o
$@
$<
246 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -c
-o
$@
$<
249 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -S
-o
$@
$<
252 $(OBJCOPY
) --strip-debug
--strip-unneeded
$< $@