forked from Mirrors/opensbi
Makefile: don't pass -mstrict-align if not supported
Support for that option will be added in LLVM 18:
23ce536840
Clang 17.0.6, however, will error when passed the
`-mstrict-align` flag.
We should only use the flag if it is supported.
Signed-off-by: Kalle Wachsmuth <kalle.wachsmuth@gmail.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Reviewed-by: Xiang W <wxjstz@126.com>
This commit is contained in:

committed by
Anup Patel

parent
21caaa3f56
commit
4a76f79ff5
17
Makefile
17
Makefile
@@ -170,6 +170,9 @@ OPENSBI_LD_PIE := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) $(USE_LD_FLAG) -fP
|
|||||||
# Check whether the compiler supports -m(no-)save-restore
|
# Check whether the compiler supports -m(no-)save-restore
|
||||||
CC_SUPPORT_SAVE_RESTORE := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) -nostdlib -mno-save-restore -x c /dev/null -o /dev/null 2>&1 | grep -e "-save-restore" >/dev/null && echo n || echo y)
|
CC_SUPPORT_SAVE_RESTORE := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) -nostdlib -mno-save-restore -x c /dev/null -o /dev/null 2>&1 | grep -e "-save-restore" >/dev/null && echo n || echo y)
|
||||||
|
|
||||||
|
# Check whether the compiler supports -m(no-)strict-align
|
||||||
|
CC_SUPPORT_STRICT_ALIGN := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) -nostdlib -mstrict-align -x c /dev/null -o /dev/null 2>&1 | grep -e "-mstrict-align\|-mno-unaligned-access" >/dev/null && echo n || echo y)
|
||||||
|
|
||||||
# Check whether the assembler and the compiler support the Zicsr and Zifencei extensions
|
# Check whether the assembler and the compiler support the Zicsr and Zifencei extensions
|
||||||
CC_SUPPORT_ZICSR_ZIFENCEI := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) -nostdlib -march=rv$(OPENSBI_CC_XLEN)imafd_zicsr_zifencei -x c /dev/null -o /dev/null 2>&1 | grep "zicsr\|zifencei" > /dev/null && echo n || echo y)
|
CC_SUPPORT_ZICSR_ZIFENCEI := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) -nostdlib -march=rv$(OPENSBI_CC_XLEN)imafd_zicsr_zifencei -x c /dev/null -o /dev/null 2>&1 | grep "zicsr\|zifencei" > /dev/null && echo n || echo y)
|
||||||
|
|
||||||
@@ -337,11 +340,14 @@ CFLAGS += -O0
|
|||||||
else
|
else
|
||||||
CFLAGS += -O2
|
CFLAGS += -O2
|
||||||
endif
|
endif
|
||||||
CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls -mstrict-align
|
CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||||
# enable -m(no-)save-restore option by CC_SUPPORT_SAVE_RESTORE
|
# Optionally supported flags
|
||||||
ifeq ($(CC_SUPPORT_SAVE_RESTORE),y)
|
ifeq ($(CC_SUPPORT_SAVE_RESTORE),y)
|
||||||
CFLAGS += -mno-save-restore
|
CFLAGS += -mno-save-restore
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CC_SUPPORT_STRICT_ALIGN),y)
|
||||||
|
CFLAGS += -mstrict-align
|
||||||
|
endif
|
||||||
CFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
|
CFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
|
||||||
CFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
|
CFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
|
||||||
CFLAGS += $(RELAX_FLAG)
|
CFLAGS += $(RELAX_FLAG)
|
||||||
@@ -355,11 +361,14 @@ CPPFLAGS += $(platform-cppflags-y)
|
|||||||
CPPFLAGS += $(firmware-cppflags-y)
|
CPPFLAGS += $(firmware-cppflags-y)
|
||||||
|
|
||||||
ASFLAGS = -g -Wall -nostdlib
|
ASFLAGS = -g -Wall -nostdlib
|
||||||
ASFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls -mstrict-align
|
ASFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||||
# enable -m(no-)save-restore option by CC_SUPPORT_SAVE_RESTORE
|
# Optionally supported flags
|
||||||
ifeq ($(CC_SUPPORT_SAVE_RESTORE),y)
|
ifeq ($(CC_SUPPORT_SAVE_RESTORE),y)
|
||||||
ASFLAGS += -mno-save-restore
|
ASFLAGS += -mno-save-restore
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CC_SUPPORT_STRICT_ALIGN),y)
|
||||||
|
ASFLAGS += -mstrict-align
|
||||||
|
endif
|
||||||
ASFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
|
ASFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
|
||||||
ASFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
|
ASFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
|
||||||
ASFLAGS += $(RELAX_FLAG)
|
ASFLAGS += $(RELAX_FLAG)
|
||||||
|
Reference in New Issue
Block a user