forked from Mirrors/opensbi
Makefile: Add option to use toolchain default ABI and ISA string
When PLATFORM_RISCV_ABI and PLATFORM_RISCV_ISA are not specified, we force "-mabi=lp64 -march=rv64gc" for RV64 and force "-mabi=ilp32 -march=rv32gc" for RV32. This can prevent users from using the toolchain default "-mabi" and "-march" options. To allow using toolchain defaults, we add compile-time option PLATFORM_RISCV_TOOLCHAIN_DEFAULT which when enabled forces the top-level makefile to use toolchain default ABI and ISA string. To enable the option, pass "PLATFORM_RISCV_TOOLCHAIN_DEFAULT=1" to top-level make. Reported-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
18
Makefile
18
Makefile
@@ -94,6 +94,8 @@ DTC = dtc
|
|||||||
|
|
||||||
# Guess the compillers xlen
|
# Guess the compillers xlen
|
||||||
OPENSBI_CC_XLEN := $(shell TMP=`$(CC) -dumpmachine | sed 's/riscv\([0-9][0-9]\).*/\1/'`; echo $${TMP})
|
OPENSBI_CC_XLEN := $(shell TMP=`$(CC) -dumpmachine | sed 's/riscv\([0-9][0-9]\).*/\1/'`; echo $${TMP})
|
||||||
|
OPENSBI_CC_ABI := $(shell TMP=`$(CC) -v 2>&1 | sed -n 's/.*\(with\-abi=\([a-zA-Z0-9]*\)\).*/\2/p'`; echo $${TMP})
|
||||||
|
OPENSBI_CC_ISA := $(shell TMP=`$(CC) -v 2>&1 | sed -n 's/.*\(with\-arch=\([a-zA-Z0-9]*\)\).*/\2/p'`; echo $${TMP})
|
||||||
|
|
||||||
# Setup platform XLEN
|
# Setup platform XLEN
|
||||||
ifndef PLATFORM_RISCV_XLEN
|
ifndef PLATFORM_RISCV_XLEN
|
||||||
@@ -143,14 +145,22 @@ deps-y+=$(firmware-objs-path-y:.o=.dep)
|
|||||||
|
|
||||||
# Setup platform ABI, ISA and Code Model
|
# Setup platform ABI, ISA and Code Model
|
||||||
ifndef PLATFORM_RISCV_ABI
|
ifndef PLATFORM_RISCV_ABI
|
||||||
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
ifneq ($(PLATFORM_RISCV_TOOLCHAIN_DEFAULT), 1)
|
||||||
PLATFORM_RISCV_ABI = ilp$(PLATFORM_RISCV_XLEN)
|
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
||||||
|
PLATFORM_RISCV_ABI = ilp$(PLATFORM_RISCV_XLEN)
|
||||||
|
else
|
||||||
|
PLATFORM_RISCV_ABI = lp$(PLATFORM_RISCV_XLEN)
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
PLATFORM_RISCV_ABI = lp$(PLATFORM_RISCV_XLEN)
|
PLATFORM_RISCV_ABI = $(OPENSBI_CC_ABI)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifndef PLATFORM_RISCV_ISA
|
ifndef PLATFORM_RISCV_ISA
|
||||||
PLATFORM_RISCV_ISA = rv$(PLATFORM_RISCV_XLEN)imafdc
|
ifneq ($(PLATFORM_RISCV_TOOLCHAIN_DEFAULT), 1)
|
||||||
|
PLATFORM_RISCV_ISA = rv$(PLATFORM_RISCV_XLEN)imafdc
|
||||||
|
else
|
||||||
|
PLATFORM_RISCV_ISA = $(OPENSBI_CC_ISA)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
ifndef PLATFORM_RISCV_CODE_MODEL
|
ifndef PLATFORM_RISCV_CODE_MODEL
|
||||||
PLATFORM_RISCV_CODE_MODEL = medany
|
PLATFORM_RISCV_CODE_MODEL = medany
|
||||||
|
Reference in New Issue
Block a user