[arch][rules] create ARCH_LDFLAGS and clean up all the arch rules files to consistently use ARCH_* vars
This commit is contained in:
committed by
Travis Geiselbrecht
parent
81fb739873
commit
5d43aa25eb
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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`"; \
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user