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 and libpng configuration flags
36 LIBFLAGS
= -DDYNAMIC_CRC_TABLE
-DPNG_NO_CONSOLE_IO \
37 -DPNG_NO_WRITE_SUPPORTED \
38 -DPNG_NO_MNG_FEATURES \
39 -DPNG_NO_READ_tIME
-DPNG_NO_WRITE_tIME
41 # We need some features in libpng which apparently aren't available in the
42 # fixed-point versions. It's OK, because we have to have a non-graphical
43 # fallback anyway, just use that on old machines...
44 # LIBFLAGS += -DPNG_NO_FLOATING_POINT_SUPPORTED
46 REQFLAGS
= $(GCCOPT
) -g
-D__COM32__ \
47 -nostdinc
-iwithprefix
include -I.
-I
$(SRC
)/sys \
48 -I
$(SRC
)/..
/include -I
$(com32
)/include/sys \
49 -I
$(topdir
)/core
/include -I
$(com32
)/lib
/ \
50 -I
$(com32
)/lib
/sys
/module
-I
$(OBJ
)/..
/..
51 OPTFLAGS
= -Os
-march
=$(MARCH
) -falign-functions
=0 -falign-jumps
=0 \
52 -falign-labels
=0 -ffast-math
-fomit-frame-pointer
53 WARNFLAGS
= $(GCCWARN
) -Wpointer-arith
-Wwrite-strings
-Wstrict-prototypes
-Winline
55 CFLAGS
= $(OPTFLAGS
) $(REQFLAGS
) $(WARNFLAGS
) $(LIBFLAGS
)
59 atoi.o atol.o atoll.o calloc.o creat.o \
60 fgets.o fprintf.o fputc.o \
62 getopt.o getopt_long.o \
63 lrand48.o stack.o memccpy.o memchr.o \
64 mempcpy.o memmem.o memmove.o memswap.o \
65 perror.o qsort.o seed48.o \
66 srand48.o sscanf.o strcasecmp.o strcat.o \
67 strerror.o errlist.o \
71 strntoimax.o strntoumax.o strsep.o strspn.o strstr.o \
72 strtoimax.o strtok.o strtol.o strtoll.o strtoul.o strtoull.o \
73 strtoumax.o vprintf.o vsprintf.o \
74 asprintf.o vasprintf.o \
79 inet.o dhcppack.o dhcpunpack.o \
85 getcwd.o fdopendir.o \
88 sys
/colortable.o sys
/screensize.o \
90 sys
/stdcon_read.o sys
/stdcon_write.o sys
/rawcon_read.o \
92 sys
/null_read.o sys
/null_write.o sys
/serial_write.o \
98 sys
/ansicon_write.o sys
/ansiserial_write.o \
100 pci
/cfgtype.o pci
/scan.o pci
/bios.o \
101 pci
/readb.o pci
/readw.o pci
/readl.o \
102 pci
/writeb.o pci
/writew.o pci
/writel.o \
104 sys
/x86_init_fpu.o math
/pow.o math
/strtod.o \
107 syslinux
/setup_data.o
109 ## CORE OBJECTS, INCLUDED IN THE ROOT COM32 MODULE
111 sys
/intcall.o sys
/farcall.o sys
/cfarcall.o sys
/zeroregs.o \
112 sys
/argv.o sys
/sleep.o \
113 sys
/fileinfo.o sys
/opendev.o sys
/read.o sys
/write.o sys
/ftell.o \
114 sys
/close.o sys
/open.o sys
/fileread.o sys
/fileclose.o \
116 sys
/isatty.o sys
/fstat.o \
118 dprintf.o vdprintf.o \
125 libgcc
/__ashldi3.o libgcc
/__udivdi3.o \
126 libgcc
/__negdi2.o libgcc
/__ashrdi3.o libgcc
/__lshrdi3.o \
127 libgcc
/__muldi3.o libgcc
/__udivmoddi4.o libgcc
/__umoddi3.o \
128 libgcc
/__divdi3.o libgcc
/__moddi3.o
132 sys
/openconsole.o sys
/line_input.o \
133 sys
/colortable.o sys
/screensize.o \
135 sys
/stdcon_read.o sys
/rawcon_read.o \
137 sys
/null_write.o sys
/serial_write.o \
139 sys
/xserial_write.o \
143 sys
/ansicon_write.o sys
/ansiserial_write.o \
148 syslinux
/addlist.o syslinux
/freelist.o syslinux
/memmap.o \
149 syslinux
/movebits.o syslinux
/shuffle.o syslinux
/shuffle_pm.o \
150 syslinux
/shuffle_rm.o syslinux
/zonelist.o \
151 syslinux
/dump_mmap.o syslinux
/dump_movelist.o \
153 syslinux
/run_default.o syslinux
/run_command.o \
154 syslinux
/cleanup.o syslinux
/localboot.o syslinux
/runimage.o \
156 syslinux
/loadfile.o syslinux
/floadfile.o syslinux
/zloadfile.o \
158 syslinux
/load_linux.o syslinux
/initramfs.o \
159 syslinux
/initramfs_file.o syslinux
/initramfs_loadfile.o \
160 syslinux
/initramfs_archive.o
163 sys
/module
/common.o sys
/module
/$(ARCH
)/elf_module.o \
164 sys
/module
/elfutils.o \
165 sys
/module
/exec.o sys
/module
/elf_module.o
167 # ZIP library object files
169 zlib
/adler32.o zlib
/compress.o zlib
/crc32.o \
170 zlib
/uncompr.o zlib
/deflate.o zlib
/trees.o zlib
/zutil.o \
171 zlib
/inflate.o zlib
/infback.o zlib
/inftrees.o zlib
/inffast.o \
172 sys
/zfile.o sys
/zfopen.o
175 $(addprefix $(OBJ
)/,syslinux
/ipappend.o \
185 memcpy.o memset.o memcmp.o printf.o strncmp.o vfprintf.o \
186 strlen.o vsnprintf.o snprintf.o stpcpy.o strcmp.o strdup.o \
187 strcpy.o strncpy.o setjmp.o fopen.o fread.o fread2.o puts.o \
188 sprintf.o strlcat.o strchr.o strlcpy.o strncasecmp.o ctypes.o \
189 fputs.o fwrite2.o fwrite.o fgetc.o fclose.o errno.o lmalloc.o \
190 sys
/err_read.o sys
/err_write.o sys
/null_read.o \
192 syslinux
/memscan.o strrchr.o \
193 libgcc
/__ashldi3.o libgcc
/__udivdi3.o \
194 libgcc
/__negdi2.o libgcc
/__ashrdi3.o libgcc
/__lshrdi3.o \
195 libgcc
/__muldi3.o libgcc
/__udivmoddi4.o libgcc
/__umoddi3.o \
196 libgcc
/__divdi3.o libgcc
/__moddi3.o \
200 LDFLAGS
= -m elf_
$(ARCH
) --hash-style
=gnu
-T
$(com32
)/lib
/$(ARCH
)/elf.
ld
202 .SUFFIXES
: .c .o .a .so .lo .i .S .s .ls .ss .lss
204 % : %.c
# Cancel default rule
209 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -c
-o
$@
$<
212 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -E
-o
$@
$<
215 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -S
-o
$@
$<
218 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -D__ASSEMBLY__
-c
-o
$@
$<
221 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -D__ASSEMBLY__
-E
-o
$@
$<
224 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -D__ASSEMBLY__
-c
-o
$@
$<
227 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -D__ASSEMBLY__
-E
-o
$@
$<
229 %(OBJ
)/%.o
: $(SRC
)/%.s
230 $(CC
) $(MAKEDEPS
) $(CFLAGS
) -x assembler
-c
-o
$@
$<
233 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -x assembler
-c
-o
$@
$<
236 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -c
-o
$@
$<
239 $(CC
) $(MAKEDEPS
) $(CFLAGS
) $(SOFLAGS
) -S
-o
$@
$<
242 $(OBJCOPY
) --strip-debug
--strip-unneeded
$< $@