Rework linker scripts so they work on new version of ld.
[seabios.git] / Makefile
index eebc4d1507aba3deea5f7b4ff5ca9c1008faf06c..1df23b4417e9654486f9accd6c608762c3e82026 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,7 @@ SRCBOTH=output.c util.c floppy.c ata.c misc.c mouse.c kbd.c pci.c \
         serial.c clock.c pic.c cdrom.c ps2port.c smpdetect.c resume.c \
         pnpbios.c pirtable.c
 SRC16=$(SRCBOTH) system.c disk.c apm.c pcibios.c vgahooks.c font.c
-SRC32=$(SRCBOTH) post.c shadow.c post_menu.c memmap.c coreboot.c boot.c \
+SRC32=$(SRCBOTH) post.c shadow.c memmap.c coreboot.c boot.c \
       acpi.c smm.c mptable.c smbios.c pciinit.c optionroms.c mtrr.c
 
 cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc \
@@ -20,7 +20,7 @@ cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc \
 
 # Default compiler flags
 COMMONCFLAGS = -Wall -Os -MD -m32 -march=i386 -mregparm=3 \
-               -mpreferred-stack-boundary=2 -mrtd \
+               -mpreferred-stack-boundary=2 -mrtd -freg-struct-return \
                -ffreestanding -fwhole-program -fomit-frame-pointer \
                -fno-delete-null-pointer-checks -Wno-strict-aliasing
 COMMONCFLAGS += $(call cc-option,$(CC),-nopie,)
@@ -54,10 +54,19 @@ vpath %.S src
 
 ################ Build rules
 
+TESTGCC:=$(shell CC=$(CC) tools/test-gcc.sh)
+ifeq "$(TESTGCC)" "-1"
+$(error "Please upgrade GCC")
+endif
+
+ifndef AVOIDCOMBINE
+AVOIDCOMBINE=$(TESTGCC)
+endif
+
 # Do a whole file compile - two methods are supported.  The first
 # involves including all the content textually via #include
 # directives.  The second method uses gcc's "-combine" option.
-ifdef AVOIDCOMBINE
+ifeq "$(AVOIDCOMBINE)" "1"
 define whole-compile
 @echo "  Compiling whole program $3"
 $(Q)printf '$(foreach i,$2,#include "../$i"\n)' > $3.tmp.c
@@ -93,7 +102,7 @@ $(OUT)ccode32.o: ; $(call whole-compile, $(CFLAGS), $(addprefix src/, $(SRC32)),
 
 $(OUT)rom32.o: $(OUT)ccode32.o $(OUT)rombios32.lds
        @echo "  Linking (no relocs) $@"
-       $(Q)$(LD) -r -d -T $(OUT)rombios32.lds $< -o $@
+       $(Q)$(LD) -r -T $(OUT)rombios32.lds $< -o $@
 
 $(OUT)romlayout.lds: $(OUT)romlayout16.o
        @echo "  Building layout information $@"