249 lines
7.2 KiB
Makefile
249 lines
7.2 KiB
Makefile
# -*- makefile -*-
|
|
|
|
include $(MAKEDIR)/syslinux.mk
|
|
|
|
# Support IA32 and x86_64 platforms with one build
|
|
# Set up architecture specifics; for cross compilation, set ARCH as apt
|
|
GCCOPT := $(call gcc_ok,-std=gnu99,)
|
|
ifeq ($(ARCH),i386)
|
|
GCCOPT += $(call gcc_ok,-m32,)
|
|
GCCOPT += $(call gcc_ok,-mpreferred-stack-boundary=2,)
|
|
MARCH = i386
|
|
endif
|
|
ifeq ($(ARCH),x86_64)
|
|
GCCOPT += $(call gcc_ok,-m64,)
|
|
#let preferred-stack-boundary be default(=4)
|
|
MARCH = x86-64
|
|
endif
|
|
GCCOPT += $(call gcc_ok,-fno-stack-protector,)
|
|
GCCOPT += $(call gcc_ok,-fwrapv,)
|
|
GCCOPT += $(call gcc_ok,-freg-struct-return,)
|
|
# Note -fPIE does not work with ld on x86_64, try -fPIC instead
|
|
# Does BIOS build require -fPIE?
|
|
GCCOPT += $(call gcc_ok,-fPIC)
|
|
GCCOPT += $(call gcc_ok,-fno-exceptions,)
|
|
GCCOPT += $(call gcc_ok,-fno-asynchronous-unwind-tables,)
|
|
GCCOPT += $(call gcc_ok,-fno-strict-aliasing,)
|
|
GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
|
|
GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
|
|
GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
|
|
GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
|
|
|
|
INCLUDE = -I$(SRC)
|
|
STRIP = strip --strip-all -R .comment -R .note
|
|
|
|
# zlib and libpng configuration flags
|
|
LIBFLAGS = -DDYNAMIC_CRC_TABLE -DPNG_NO_CONSOLE_IO \
|
|
-DPNG_NO_WRITE_SUPPORTED \
|
|
-DPNG_NO_MNG_FEATURES \
|
|
-DPNG_NO_READ_tIME -DPNG_NO_WRITE_tIME
|
|
|
|
# We need some features in libpng which apparently aren't available in the
|
|
# fixed-point versions. It's OK, because we have to have a non-graphical
|
|
# fallback anyway, just use that on old machines...
|
|
# LIBFLAGS += -DPNG_NO_FLOATING_POINT_SUPPORTED
|
|
|
|
REQFLAGS = $(GCCOPT) -g -D__COM32__ -D__FIRMWARE_$(FIRMWARE)__ \
|
|
-nostdinc -iwithprefix include -I. -I$(SRC)/sys \
|
|
-I$(SRC)/../include -I$(com32)/include/sys \
|
|
-I$(topdir)/core/include -I$(com32)/lib/ \
|
|
-I$(com32)/lib/sys/module -I$(OBJ)/../..
|
|
OPTFLAGS = -Os -march=$(MARCH) -falign-functions=0 -falign-jumps=0 \
|
|
-falign-labels=0 -ffast-math -fomit-frame-pointer
|
|
WARNFLAGS = $(GCCWARN) -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Winline
|
|
|
|
CFLAGS = $(OPTFLAGS) $(REQFLAGS) $(WARNFLAGS) $(LIBFLAGS)
|
|
|
|
ifndef EFI_BUILD
|
|
CFLAGS += -mregparm=3 -DREGPARM=3
|
|
endif
|
|
|
|
VPATH = $(SRC)
|
|
LIBOTHER_OBJS = \
|
|
atoi.o atol.o atoll.o calloc.o creat.o \
|
|
fgets.o fprintf.o fputc.o \
|
|
putchar.o \
|
|
getopt.o getopt_long.o \
|
|
lrand48.o stack.o memccpy.o memchr.o \
|
|
mempcpy.o memmem.o memmove.o memswap.o \
|
|
perror.o qsort.o seed48.o \
|
|
srand48.o sscanf.o \
|
|
strerror.o errlist.o \
|
|
strnlen.o \
|
|
strncat.o strndup.o \
|
|
stpncpy.o \
|
|
strntoimax.o strsep.o strspn.o strstr.o \
|
|
strtoimax.o strtok.o strtol.o strtoll.o strtoull.o \
|
|
strtoumax.o vprintf.o vsprintf.o \
|
|
asprintf.o vasprintf.o \
|
|
vsscanf.o \
|
|
skipspace.o \
|
|
chrreplace.o \
|
|
bufprintf.o \
|
|
inet.o dhcppack.o dhcpunpack.o \
|
|
strreplace.o \
|
|
lstrdup.o \
|
|
\
|
|
suffix_number.o \
|
|
\
|
|
getcwd.o fdopendir.o \
|
|
\
|
|
sys/line_input.o \
|
|
sys/colortable.o sys/screensize.o \
|
|
\
|
|
sys/stdcon_read.o sys/stdcon_write.o sys/rawcon_read.o \
|
|
sys/rawcon_write.o \
|
|
sys/null_read.o sys/null_write.o sys/serial_write.o \
|
|
\
|
|
sys/xserial_write.o \
|
|
\
|
|
sys/ansi.o \
|
|
\
|
|
sys/ansicon_write.o sys/ansiserial_write.o \
|
|
\
|
|
pci/cfgtype.o pci/scan.o pci/bios.o \
|
|
pci/readb.o pci/readw.o pci/readl.o \
|
|
pci/writeb.o pci/writew.o pci/writel.o \
|
|
\
|
|
sys/x86_init_fpu.o math/pow.o math/strtod.o \
|
|
syslinux/disk.o \
|
|
\
|
|
syslinux/setup_data.o
|
|
|
|
## CORE OBJECTS, INCLUDED IN THE ROOT COM32 MODULE
|
|
LIBENTRY_OBJS = \
|
|
sys/intcall.o sys/farcall.o sys/cfarcall.o sys/zeroregs.o \
|
|
sys/argv.o sys/sleep.o \
|
|
sys/fileinfo.o sys/opendev.o sys/read.o sys/write.o sys/ftell.o \
|
|
sys/close.o sys/open.o sys/fileread.o sys/fileclose.o \
|
|
sys/openmem.o \
|
|
sys/isatty.o sys/fstat.o \
|
|
\
|
|
dprintf.o vdprintf.o \
|
|
\
|
|
syslinux/idle.o \
|
|
\
|
|
exit.o
|
|
|
|
LIBGCC_OBJS = \
|
|
libgcc/__ashldi3.o libgcc/__udivdi3.o \
|
|
libgcc/__negdi2.o libgcc/__ashrdi3.o libgcc/__lshrdi3.o \
|
|
libgcc/__muldi3.o libgcc/__udivmoddi4.o libgcc/__umoddi3.o \
|
|
libgcc/__divdi3.o libgcc/__moddi3.o
|
|
|
|
LIBCONSOLE_OBJS = \
|
|
\
|
|
sys/openconsole.o sys/line_input.o \
|
|
sys/colortable.o sys/screensize.o \
|
|
\
|
|
sys/stdcon_read.o sys/rawcon_read.o \
|
|
sys/rawcon_write.o \
|
|
sys/null_write.o sys/serial_write.o \
|
|
\
|
|
sys/xserial_write.o \
|
|
\
|
|
sys/ansi.o \
|
|
\
|
|
sys/ansicon_write.o sys/ansiserial_write.o \
|
|
\
|
|
syslinux/serial.o
|
|
|
|
LIBLOAD_OBJS = \
|
|
syslinux/addlist.o syslinux/freelist.o syslinux/memmap.o \
|
|
syslinux/movebits.o syslinux/shuffle.o syslinux/shuffle_pm.o \
|
|
syslinux/shuffle_rm.o syslinux/biosboot.o syslinux/zonelist.o \
|
|
syslinux/dump_mmap.o syslinux/dump_movelist.o \
|
|
\
|
|
syslinux/run_default.o syslinux/run_command.o \
|
|
syslinux/cleanup.o syslinux/localboot.o syslinux/runimage.o \
|
|
\
|
|
syslinux/loadfile.o syslinux/floadfile.o syslinux/zloadfile.o \
|
|
\
|
|
syslinux/load_linux.o syslinux/initramfs.o \
|
|
syslinux/initramfs_file.o syslinux/initramfs_loadfile.o \
|
|
syslinux/initramfs_archive.o
|
|
|
|
LIBMODULE_OBJS = \
|
|
sys/module/common.o sys/module/$(ARCH)/elf_module.o \
|
|
sys/module/elfutils.o \
|
|
sys/module/exec.o sys/module/elf_module.o
|
|
|
|
# ZIP library object files
|
|
LIBZLIB_OBJS = \
|
|
zlib/adler32.o zlib/compress.o zlib/crc32.o \
|
|
zlib/uncompr.o zlib/deflate.o zlib/trees.o zlib/zutil.o \
|
|
zlib/inflate.o zlib/infback.o zlib/inftrees.o zlib/inffast.o \
|
|
sys/zfile.o sys/zfopen.o
|
|
|
|
MINLIBOBJS = \
|
|
$(addprefix $(OBJ)/,syslinux/ipappend.o \
|
|
syslinux/dsinfo.o \
|
|
$(LIBOTHER_OBJS) \
|
|
$(LIBGCC_OBJS) \
|
|
$(LIBCONSOLE_OBJS) \
|
|
$(LIBLOAD_OBJS) \
|
|
$(LIBZLIB_OBJS))
|
|
# $(LIBVESA_OBJS)
|
|
|
|
CORELIBOBJS = \
|
|
memcpy.o memset.o memcmp.o printf.o strncmp.o vfprintf.o \
|
|
strlen.o vsnprintf.o snprintf.o stpcpy.o strcmp.o strdup.o \
|
|
strcpy.o strncpy.o setjmp.o fopen.o fread.o fread2.o puts.o \
|
|
strtoul.o strntoumax.o strcasecmp.o \
|
|
sprintf.o strlcat.o strchr.o strlcpy.o strncasecmp.o ctypes.o \
|
|
fputs.o fwrite2.o fwrite.o fgetc.o fclose.o lmalloc.o \
|
|
sys/err_read.o sys/err_write.o sys/null_read.o \
|
|
sys/stdcon_write.o \
|
|
syslinux/memscan.o strrchr.o strcat.o \
|
|
libgcc/__ashldi3.o libgcc/__udivdi3.o \
|
|
libgcc/__negdi2.o libgcc/__ashrdi3.o libgcc/__lshrdi3.o \
|
|
libgcc/__muldi3.o libgcc/__udivmoddi4.o libgcc/__umoddi3.o \
|
|
libgcc/__divdi3.o libgcc/__moddi3.o \
|
|
syslinux/debug.o \
|
|
$(LIBENTRY_OBJS) \
|
|
$(LIBMODULE_OBJS)
|
|
|
|
LDFLAGS = -m elf_$(ARCH) --hash-style=gnu -T $(com32)/lib/$(ARCH)/elf.ld
|
|
|
|
.SUFFIXES: .c .o .a .so .lo .i .S .s .ls .ss .lss
|
|
|
|
% : %.c # Cancel default rule
|
|
|
|
% : %.S
|
|
|
|
%.o: %.c
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) -c -o $@ $<
|
|
|
|
.c.i:
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) -E -o $@ $<
|
|
|
|
%.s: %.c
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) -S -o $@ $<
|
|
|
|
%.o: %.S
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) -D__ASSEMBLY__ -c -o $@ $<
|
|
|
|
.S.s:
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) -D__ASSEMBLY__ -E -o $@ $<
|
|
|
|
.S.lo:
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) $(SOFLAGS) -D__ASSEMBLY__ -c -o $@ $<
|
|
|
|
.S.ls:
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) $(SOFLAGS) -D__ASSEMBLY__ -E -o $@ $<
|
|
|
|
%(OBJ)/%.o: $(SRC)/%.s
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) -x assembler -c -o $@ $<
|
|
|
|
.ls.lo:
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) $(SOFLAGS) -x assembler -c -o $@ $<
|
|
|
|
.c.lo:
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) $(SOFLAGS) -c -o $@ $<
|
|
|
|
.c.ls:
|
|
$(CC) $(MAKEDEPS) $(CFLAGS) $(SOFLAGS) -S -o $@ $<
|
|
|
|
%.c32: %.elf
|
|
$(OBJCOPY) --strip-debug --strip-unneeded $< $@
|