[arch] make sure the arch rules file sets TOOLCHAIN_PREFIX, make sure riscv picks up the alt selector
ARCH_riscv*_TOOLCHAIN_PREFIX should override TOOLCHAIN_PREFIX like it does on some other arches. While was at it clean up the rules.mk file a bit.
This commit is contained in:
@@ -116,23 +116,24 @@ GLOBAL_DEFINES += ROMBASE=$(ROMBASE)
|
||||
GLOBAL_DEFINES += MEMBASE=$(MEMBASE)
|
||||
GLOBAL_DEFINES += MEMSIZE=$(MEMSIZE)
|
||||
|
||||
# if ARCH_riscv{32|64}_TOOLCHAIN_PREFIX is set use it as an override
|
||||
# for toolchain prefix.
|
||||
ifdef ARCH_$(ARCH)$(SUBARCH)_TOOLCHAIN_PREFIX
|
||||
TOOLCHAIN_PREFIX := $(ARCH_$(ARCH)$(SUBARCH)_TOOLCHAIN_PREFIX)
|
||||
endif
|
||||
|
||||
# default toolchain is riscv{32|64}-elf-. assume its in the path.
|
||||
ifndef TOOLCHAIN_PREFIX
|
||||
TOOLCHAIN_PREFIX := riscv$(SUBARCH)-elf-
|
||||
endif
|
||||
|
||||
# based on 32 or 64 bitness, select the right toolchain and some
|
||||
# compiler codegen flags
|
||||
ifeq ($(SUBARCH),32)
|
||||
|
||||
ifndef TOOLCHAIN_PREFIX
|
||||
TOOLCHAIN_PREFIX := riscv32-elf-
|
||||
endif
|
||||
ARCH_COMPILEFLAGS := -march=rv32imac -mabi=ilp32
|
||||
|
||||
else ifeq ($(SUBARCH),64)
|
||||
|
||||
ifndef TOOLCHAIN_PREFIX
|
||||
TOOLCHAIN_PREFIX := riscv64-elf-
|
||||
endif
|
||||
ARCH_COMPILEFLAGS := -march=rv64imac -mabi=lp64 -mcmodel=medany
|
||||
GLOBAL_DEFINES += IS_64BIT=1
|
||||
|
||||
else
|
||||
$(error SUBARCH not set or set to something unknown)
|
||||
endif
|
||||
@@ -142,11 +143,11 @@ endif
|
||||
ifeq (true,$(call TOBOOL,$(ARCH_RISCV_EMBEDDED)))
|
||||
ARCH_OPTFLAGS ?= -Os
|
||||
GLOBAL_DEFINES += ARCH_RISCV_EMBEDDED=1
|
||||
WITH_LINKER_GC ?= 1
|
||||
else
|
||||
ARCH_OPTFLAGS ?= -O2
|
||||
endif
|
||||
|
||||
WITH_LINKER_GC ?= 0
|
||||
endif
|
||||
|
||||
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(GLOBAL_CFLAGS) -print-libgcc-file-name)
|
||||
$(info LIBGCC = $(LIBGCC))
|
||||
|
||||
@@ -148,11 +148,15 @@ ifndef ARCH
|
||||
$(error couldn't find arch or platform doesn't define arch)
|
||||
endif
|
||||
include arch/$(ARCH)/rules.mk
|
||||
ifndef TOOLCHAIN_PREFIX
|
||||
$(error TOOLCHAIN_PREFIX not set in the arch rules.mk)
|
||||
endif
|
||||
|
||||
$(info PROJECT = $(PROJECT))
|
||||
$(info PLATFORM = $(PLATFORM))
|
||||
$(info TARGET = $(TARGET))
|
||||
$(info ARCH = $(ARCH))
|
||||
$(info TOOLCHAIN_PREFIX = $(TOOLCHAIN_PREFIX))
|
||||
|
||||
# include the top level module that includes basic always-there modules
|
||||
include top/rules.mk
|
||||
@@ -232,6 +236,7 @@ GLOBAL_DEFINES += ARCH_CFLAGS=\"$(subst $(SPACE),_,$(ARCH_CFLAGS))\"
|
||||
GLOBAL_DEFINES += ARCH_CPPFLAGS=\"$(subst $(SPACE),_,$(ARCH_CPPFLAGS))\"
|
||||
GLOBAL_DEFINES += ARCH_ASMFLAGS=\"$(subst $(SPACE),_,$(ARCH_ASMFLAGS))\"
|
||||
GLOBAL_DEFINES += ARCH_LDFLAGS=\"$(subst $(SPACE),_,$(ARCH_LDFLAGS))\"
|
||||
GLOBAL_DEFINES += TOOLCHAIN_PREFIX=\"$(subst $(SPACE),_,$(TOOLCHAIN_PREFIX))\"
|
||||
|
||||
ifneq ($(OBJS),)
|
||||
$(warning OBJS=$(OBJS))
|
||||
|
||||
Reference in New Issue
Block a user