[arch][rules] create ARCH_LDFLAGS and clean up all the arch rules files to consistently use ARCH_* vars

This commit is contained in:
Travis Geiselbrecht
2018-10-13 11:40:10 -07:00
committed by Travis Geiselbrecht
parent 81fb739873
commit 5d43aa25eb
8 changed files with 30 additions and 28 deletions

View File

@@ -306,7 +306,7 @@ ARCH_COMPILEFLAGS += $(ARCH_$(ARCH)_COMPILEFLAGS)
GLOBAL_COMPILEFLAGS += $(THUMBINTERWORK) GLOBAL_COMPILEFLAGS += $(THUMBINTERWORK)
# set the max page size to something more reasonables (defaults to 64K or above) # set the max page size to something more reasonables (defaults to 64K or above)
GLOBAL_LDFLAGS += -z max-page-size=4096 ARCH_LDFLAGS += -z max-page-size=4096
# find the direct path to libgcc.a for our particular multilib variant # find the direct path to libgcc.a for our particular multilib variant
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(THUMBCFLAGS) -print-libgcc-file-name) LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(THUMBCFLAGS) -print-libgcc-file-name)

View File

@@ -92,9 +92,9 @@ $(info TOOLCHAIN_PREFIX = $(TOOLCHAIN_PREFIX))
ARCH_COMPILEFLAGS += $(ARCH_$(ARCH)_COMPILEFLAGS) ARCH_COMPILEFLAGS += $(ARCH_$(ARCH)_COMPILEFLAGS)
GLOBAL_LDFLAGS += -z max-page-size=4096 ARCH_LDFLAGS += -z max-page-size=4096
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) -print-libgcc-file-name) LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) -print-libgcc-file-name)
# make sure some bits were set up # make sure some bits were set up
MEMVARS_SET := 0 MEMVARS_SET := 0

View File

@@ -29,21 +29,20 @@ WITH_LINKER_GC ?= 0
LITTLE_ENDIAN ?= 0 LITTLE_ENDIAN ?= 0
ifneq ($(LITTLE_ENDIAN),0) ifneq ($(LITTLE_ENDIAN),0)
GLOBAL_COMPILEFLAGS += -mlittle-endian ARCH_COMPILEFLAGS += -mlittle-endian
GLOBAL_LDFLAGS += -EL ARCH_LDFLAGS += -EL
GLOBAL_MODULE_LDFLAGS += -EL GLOBAL_MODULE_LDFLAGS += -EL
endif endif
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(GLOBAL_CFLAGS) -print-libgcc-file-name) LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(GLOBAL_COMPILEFLAGS) -print-libgcc-file-name)
$(info LIBGCC = $(LIBGCC)) $(info LIBGCC = $(LIBGCC))
cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \ cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \
then echo "$(2)"; else echo "$(3)"; fi ;) then echo "$(2)"; else echo "$(3)"; fi ;)
ARCH_COMPILEFLAGS :=
ARCH_OPTFLAGS := -O2 ARCH_OPTFLAGS := -O2
GLOBAL_LDFLAGS += -relax ARCH_LDFLAGS += -relax
KERNEL_BASE ?= $(MEMBASE) KERNEL_BASE ?= $(MEMBASE)
KERNEL_LOAD_OFFSET ?= 0 KERNEL_LOAD_OFFSET ?= 0

View File

@@ -30,13 +30,13 @@ WITH_LINKER_GC ?= 0
LITTLE_ENDIAN ?= 0 LITTLE_ENDIAN ?= 0
ifneq ($(LITTLE_ENDIAN),0) ifneq ($(LITTLE_ENDIAN),0)
GLOBAL_COMPILEFLAGS += -EL ARCH_COMPILEFLAGS += -EL
GLOBAL_ASFLAGS += -EL ARCH_ASFLAGS += -EL
GLOBAL_LDFLAGS += -EL ARCH_LDFLAGS += -EL
GLOBAL_MODULE_LDFLAGS += -EL GLOBAL_MODULE_LDFLAGS += -EL
endif endif
ARCH_COMPILEFLAGS := -mno-gpopt ARCH_COMPILEFLAGS += -mno-gpopt
ARCH_OPTFLAGS := -O2 ARCH_OPTFLAGS := -O2
ifeq ($(MIPS_CPU),m14k) ifeq ($(MIPS_CPU),m14k)
@@ -46,7 +46,7 @@ ifeq ($(MIPS_CPU),microaptiv-uc)
ARCH_COMPILEFLAGS += -march=m14k ARCH_COMPILEFLAGS += -march=m14k
endif endif
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(GLOBAL_CFLAGS) -print-libgcc-file-name) LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) -print-libgcc-file-name)
$(info LIBGCC = $(LIBGCC)) $(info LIBGCC = $(LIBGCC))
cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \ cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \

View File

@@ -20,15 +20,15 @@ ifndef TOOLCHAIN_PREFIX
TOOLCHAIN_PREFIX := or1k-elf- TOOLCHAIN_PREFIX := or1k-elf-
endif endif
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(CFLAGS) -print-libgcc-file-name)
$(info LIBGCC = $(LIBGCC))
cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \ cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \
then echo "$(2)"; else echo "$(3)"; fi ;) then echo "$(2)"; else echo "$(3)"; fi ;)
ARCH_OPTFLAGS := -O2 ARCH_OPTFLAGS := -O2
GLOBAL_LDFLAGS += -relax ARCH_LDFLAGS += -relax
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) -print-libgcc-file-name)
$(info LIBGCC = $(LIBGCC))
KERNEL_BASE ?= $(MEMBASE) KERNEL_BASE ?= $(MEMBASE)
KERNEL_LOAD_OFFSET ?= 0 KERNEL_LOAD_OFFSET ?= 0

View File

@@ -74,28 +74,28 @@ $(warning ARCH_x86_TOOLCHAIN_PREFIX = $(ARCH_x86_TOOLCHAIN_PREFIX))
$(warning ARCH_x86_64_TOOLCHAIN_PREFIX = $(ARCH_x86_64_TOOLCHAIN_PREFIX)) $(warning ARCH_x86_64_TOOLCHAIN_PREFIX = $(ARCH_x86_64_TOOLCHAIN_PREFIX))
$(warning TOOLCHAIN_PREFIX = $(TOOLCHAIN_PREFIX)) $(warning TOOLCHAIN_PREFIX = $(TOOLCHAIN_PREFIX))
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(CFLAGS) -print-libgcc-file-name)
cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \ cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \
then echo "$(2)"; else echo "$(3)"; fi ;) then echo "$(2)"; else echo "$(3)"; fi ;)
# disable SSP if the compiler supports it; it will break stuff # disable SSP if the compiler supports it; it will break stuff
GLOBAL_CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) GLOBAL_CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,)
GLOBAL_COMPILEFLAGS += -fasynchronous-unwind-tables ARCH_COMPILEFLAGS += -fasynchronous-unwind-tables
GLOBAL_COMPILEFLAGS += -gdwarf-2 ARCH_COMPILEFLAGS += -gdwarf-2
GLOBAL_COMPILEFLAGS += -fno-pic ARCH_COMPILEFLAGS += -fno-pic
GLOBAL_LDFLAGS += -z max-page-size=4096 ARCH_LDFLAGS += -z max-page-size=4096
ifeq ($(SUBARCH),x86-64) ifeq ($(SUBARCH),x86-64)
GLOBAL_COMPILEFLAGS += -fno-stack-protector ARCH_COMPILEFLAGS += -fno-stack-protector
GLOBAL_COMPILEFLAGS += -mcmodel=kernel ARCH_COMPILEFLAGS += -mcmodel=kernel
GLOBAL_COMPILEFLAGS += -mno-red-zone ARCH_COMPILEFLAGS += -mno-red-zone
endif # SUBARCH x86-64 endif # SUBARCH x86-64
ARCH_OPTFLAGS := -O2 ARCH_OPTFLAGS := -O2
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) -print-libgcc-file-name)
$(warning LIBGCC = $(LIBGCC))
LINKER_SCRIPT += $(SUBARCH_BUILDDIR)/kernel.ld LINKER_SCRIPT += $(SUBARCH_BUILDDIR)/kernel.ld
# potentially generated files that should be cleaned out with clean make rule # potentially generated files that should be cleaned out with clean make rule

View File

@@ -72,6 +72,7 @@ ARCH_COMPILEFLAGS :=
ARCH_CFLAGS := ARCH_CFLAGS :=
ARCH_CPPFLAGS := ARCH_CPPFLAGS :=
ARCH_ASMFLAGS := ARCH_ASMFLAGS :=
ARCH_LDFLAGS :=
# top level rule # top level rule
all:: $(OUTBIN) $(OUTELF).lst $(OUTELF).debug.lst $(OUTELF).sym $(OUTELF).sym.sorted $(OUTELF).size $(OUTELF).dump $(BUILDDIR)/srcfiles.txt $(BUILDDIR)/include_paths.txt all:: $(OUTBIN) $(OUTELF).lst $(OUTELF).debug.lst $(OUTELF).sym $(OUTELF).sym.sorted $(OUTELF).size $(OUTELF).dump $(BUILDDIR)/srcfiles.txt $(BUILDDIR)/include_paths.txt
@@ -220,6 +221,7 @@ GLOBAL_DEFINES += ARCH_COMPILEFLAGS=\"$(subst $(SPACE),_,$(ARCH_COMPILEFLAGS))\"
GLOBAL_DEFINES += ARCH_CFLAGS=\"$(subst $(SPACE),_,$(ARCH_CFLAGS))\" GLOBAL_DEFINES += ARCH_CFLAGS=\"$(subst $(SPACE),_,$(ARCH_CFLAGS))\"
GLOBAL_DEFINES += ARCH_CPPFLAGS=\"$(subst $(SPACE),_,$(ARCH_CPPFLAGS))\" GLOBAL_DEFINES += ARCH_CPPFLAGS=\"$(subst $(SPACE),_,$(ARCH_CPPFLAGS))\"
GLOBAL_DEFINES += ARCH_ASMFLAGS=\"$(subst $(SPACE),_,$(ARCH_ASMFLAGS))\" GLOBAL_DEFINES += ARCH_ASMFLAGS=\"$(subst $(SPACE),_,$(ARCH_ASMFLAGS))\"
GLOBAL_DEFINES += ARCH_LDFLAGS=\"$(subst $(SPACE),_,$(ARCH_LDFLAGS))\"
ifneq ($(OBJS),) ifneq ($(OBJS),)
$(warning OBJS=$(OBJS)) $(warning OBJS=$(OBJS))

View File

@@ -22,7 +22,8 @@ $(OUTELF).hex: $(OUTELF)
$(OUTELF): $(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LINKER_SCRIPT) $(EXTRA_LINKER_SCRIPTS) $(OUTELF): $(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LINKER_SCRIPT) $(EXTRA_LINKER_SCRIPTS)
@echo linking $@ @echo linking $@
$(NOECHO)$(SIZE) -t --common $(sort $(ALLMODULE_OBJS)) $(EXTRA_OBJS) $(NOECHO)$(SIZE) -t --common $(sort $(ALLMODULE_OBJS)) $(EXTRA_OBJS)
$(NOECHO)$(LD) $(GLOBAL_LDFLAGS) -dT $(LINKER_SCRIPT) $(addprefix -T,$(EXTRA_LINKER_SCRIPTS)) \ $(NOECHO)$(LD) $(GLOBAL_LDFLAGS) $(ARCH_LDFLAGS) -dT $(LINKER_SCRIPT) \
$(addprefix -T,$(EXTRA_LINKER_SCRIPTS)) \
$(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LIBGCC) -Map=$(OUTELF).map -o $@ $(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LIBGCC) -Map=$(OUTELF).map -o $@
$(OUTELF).sym: $(OUTELF) $(OUTELF).sym: $(OUTELF)