Skip to content

Commit

Permalink
Add GCCVER define to Toolchain.cmake
Browse files Browse the repository at this point in the history
Since GCCVER will also be used in the toolchain, it needs to be defined in advance.

Signed-off-by: cuiziwei <[email protected]>
  • Loading branch information
cuiziweizw committed Oct 16, 2024
1 parent aaace10 commit 896a500
Show file tree
Hide file tree
Showing 9 changed files with 55 additions and 10 deletions.
7 changes: 7 additions & 0 deletions arch/arm/src/common/Toolchain.defs
Original file line number Diff line number Diff line change
Expand Up @@ -309,11 +309,18 @@ else
# Wrong warning array subscript [0] is outside array bounds:
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523

ifeq ($(GCCVER),)
export GCCVER := $(shell $(CC) --version | grep gcc | sed -E "s/.* ([0-9]+\.[0-9]+).*/\1/" | cut -d'.' -f1)
endif

ifeq ($(shell expr "$(GCCVER)" \>= 12), 1)
ARCHOPTIMIZATION += --param=min-pagesize=0
ifeq ($(CONFIG_ARCH_RAMFUNCS),y)
LDFLAGS += --no-warn-rwx-segments
endif
ifeq ($(CONFIG_ARCH_TOOLCHAIN_CLANG),y)
LDFLAGS += --no-warn-rwx-segments
endif
endif

LDFLAGS += --entry=__start
Expand Down
8 changes: 7 additions & 1 deletion arch/arm64/src/Toolchain.defs
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,14 @@ ifeq ($(CONFIG_LTO_FULL),y)
endif
endif

ifeq ($(GCCVER),)
export GCCVER := $(shell $(CC) --version | grep gcc | sed -E "s/.* ([0-9]+\.[0-9]+).*/\1/" | cut -d'.' -f1)
endif

ifeq ($(CONFIG_ARCH_TOOLCHAIN_GNU),y)
LDFLAGS += --no-warn-rwx-segments
ifeq ($(shell expr "$(GCCVER)" \>= 12), 1)
LDFLAGS += --no-warn-rwx-segments
endif
endif

# Add the builtin library
Expand Down
11 changes: 10 additions & 1 deletion arch/arm64/src/cmake/Toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -190,5 +190,14 @@ if(CONFIG_DEBUG_SYMBOLS)
endif()

if(CONFIG_ARCH_TOOLCHAIN_GNU)
add_link_options(-Wl,--no-warn-rwx-segments)
if(NOT GCCVER)
execute_process(COMMAND ${CMAKE_C_COMPILER} --version
OUTPUT_VARIABLE GCC_VERSION_INFO)
string(REGEX MATCH "[0-9]+\\.[0-9]+" GCC_VERSION ${GCC_VERSION_INFO})
string(REGEX REPLACE "\\..*" "" GCCVER ${GCC_VERSION})
set(GCCVER ${CMAKE_MATCH_1})
endif()
if(GCCVER GREATER_EQUAL 12)
add_link_options(-Wl,--no-warn-rwx-segments)
endif()
endif()
2 changes: 1 addition & 1 deletion arch/risc-v/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ config ARCH_RV_MACHINE_ISA_1_13
which extend the range of exception codes from 0 ~ 15 to 0 ~ 19.

config ARCH_RV_ISA_ZICSR_ZIFENCEI
bool
bool "Enable Zicsr and Zifencei extensions (GCC >= 12.1.0.)"
default y
---help---
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc
Expand Down
12 changes: 11 additions & 1 deletion arch/risc-v/src/cmake/Toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -258,8 +258,18 @@ if(CONFIG_RISCV_TOOLCHAIN STREQUAL GNU_RVG)
set(ARCHCPUEXTFLAGS ${ARCHCPUEXTFLAGS}v)
endif()

if(NOT DEFINED GCCVER)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version
OUTPUT_VARIABLE GCC_VERSION_OUTPUT)
string(REGEX MATCH "\\+\\+.* ([0-9]+)\\.[0-9]+" GCC_VERSION_REGEX
"${GCC_VERSION_OUTPUT}")
set(GCCVER ${CMAKE_MATCH_1})
endif()

if(CONFIG_ARCH_RV_ISA_ZICSR_ZIFENCEI)
set(ARCHCPUEXTFLAGS ${ARCHCPUEXTFLAGS}_zicsr_zifencei)
if(GCCVER GREATER_EQUAL 12 OR CONFIG_ARCH_TOOLCHAIN_CLANG)
set(ARCHCPUEXTFLAGS ${ARCHCPUEXTFLAGS}_zicsr_zifencei)
endif()
endif()

if(CONFIG_ARCH_RV_EXPERIMENTAL_EXTENSIONS)
Expand Down
8 changes: 7 additions & 1 deletion arch/risc-v/src/common/Toolchain.defs
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,14 @@ ifeq ($(CONFIG_RISCV_TOOLCHAIN),GNU_RVG)
ARCHCPUEXTFLAGS := $(ARCHCPUEXTFLAGS)v
endif

ifeq ($(GCCVER),)
export GCCVER = ${shell $(CROSSDEV)gcc --version | grep gcc | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | tail -n 1 | cut -d"." -f1 }
endif

ifeq ($(CONFIG_ARCH_RV_ISA_ZICSR_ZIFENCEI),y)
ARCHCPUEXTFLAGS := $(ARCHCPUEXTFLAGS)_zicsr_zifencei
ifeq ($(shell expr "$(GCCVER)" \>= 12), 1)
ARCHCPUEXTFLAGS := $(ARCHCPUEXTFLAGS)_zicsr_zifencei
endif
endif

ARCH_RV_EXPERIMENTAL_EXTENSIONS = $(strip $(subst ",,$(CONFIG_ARCH_RV_EXPERIMENTAL_EXTENSIONS)))
Expand Down
8 changes: 8 additions & 0 deletions libs/libxx/libcxx.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,14 @@ list(APPEND SRCS ${SRCSTMP})
set(FLAGS -Wno-attributes -Wno-deprecated-declarations -Wno-shadow
-Wno-sign-compare)

if(NOT GCCVER)
execute_process(COMMAND ${CMAKE_C_COMPILER} --version
OUTPUT_VARIABLE GCC_VERSION_INFO)
string(REGEX MATCH "[0-9]+\\.[0-9]+" GCC_VERSION ${GCC_VERSION_INFO})
string(REGEX REPLACE "\\..*" "" GCCVER ${GCC_VERSION})
set(GCCVER ${CMAKE_MATCH_1})
endif()

if(GCCVER GREATER_EQUAL 12)
list(APPEND FLAGS -Wno-maybe-uninitialized -Wno-alloc-size-larger-than)
endif()
Expand Down
4 changes: 4 additions & 0 deletions libs/libxx/libcxx.defs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ endif
CXXFLAGS += -Wno-shadow -Wno-sign-compare
CXXFLAGS += -Wno-attributes -Wno-deprecated-declarations

ifeq ($(GCCVER),)
export GCCVER := $(shell $(CC) --version | grep gcc | sed -E "s/.* ([0-9]+\.[0-9]+).*/\1/" | cut -d'.' -f1)
endif

ifeq ($(shell expr "$(GCCVER)" \>= 12), 1)
CXXFLAGS += -Wno-maybe-uninitialized -Wno-alloc-size-larger-than
endif
Expand Down
5 changes: 0 additions & 5 deletions tools/Config.mk
Original file line number Diff line number Diff line change
Expand Up @@ -732,11 +732,6 @@ export DEFINE_PREFIX ?= $(subst X,,${shell $(DEFINE) "$(CC)" X 2> ${EMPTYFILE}})
export INCDIR_PREFIX ?= $(subst "X",,${shell $(INCDIR) "$(CC)" X 2> ${EMPTYFILE}})
export INCSYSDIR_PREFIX ?= $(subst "X",,${shell $(INCDIR) -s "$(CC)" X 2> ${EMPTYFILE}})

# Get the GCC version number
ifeq ($(CONFIG_ARCH_TOOLCHAIN_GNU), y)
export GCCVER = $(shell $(CXX) --version | grep ++ | sed -E 's/.* ([0-9]+\.[0-9]+).*/\1/' | cut -d'.' -f1)
endif

# ARCHxxx means the predefined setting(either toolchain, arch, or system specific)
ARCHDEFINES += ${DEFINE_PREFIX}__NuttX__
ifeq ($(CONFIG_NDEBUG),y)
Expand Down

0 comments on commit 896a500

Please sign in to comment.