Commit f6678fdd authored by Stephanos Ioannidis's avatar Stephanos Ioannidis
Browse files

cmake: toolchain: Introduce TOOLCHAIN_HAS_GLIBCXX

This commit introduces `TOOLCHAIN_HAS_GLIBCXX` CMake variable, which is
set to `y` when GNU C++ Standard Library aka. libstdc++ is available.

This helps filter libstdc++-specific Kconfig and tests in a more refined
manner.

Signed-off-by: default avatarStephanos Ioannidis <root@stephanos.io>
parent 41e54273
Loading
Loading
Loading
Loading
+7 −0
Changes for cmake/modules/kconfig.cmake: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -129,6 +129,12 @@ else()
  set(_local_TOOLCHAIN_HAS_PICOLIBC n)
endif()

if(TOOLCHAIN_HAS_GLIBCXX)
  set(_local_TOOLCHAIN_HAS_GLIBCXX y)
else()
  set(_local_TOOLCHAIN_HAS_GLIBCXX n)
endif()

# APP_DIR: Path to the main image (sysbuild) or synonym for APPLICATION_SOURCE_DIR (non-sysbuild)
zephyr_get(APP_DIR VAR APP_DIR APPLICATION_SOURCE_DIR)

@@ -154,6 +160,7 @@ set(COMMON_KCONFIG_ENV_SETTINGS
  TOOLCHAIN_KCONFIG_DIR=${TOOLCHAIN_KCONFIG_DIR}
  TOOLCHAIN_HAS_NEWLIB=${_local_TOOLCHAIN_HAS_NEWLIB}
  TOOLCHAIN_HAS_PICOLIBC=${_local_TOOLCHAIN_HAS_PICOLIBC}
  TOOLCHAIN_HAS_GLIBCXX=${_local_TOOLCHAIN_HAS_GLIBCXX}
  EDT_PICKLE=${EDT_PICKLE}
  # Export all Zephyr modules to Kconfig
  ${ZEPHYR_KCONFIG_MODULES_DIR}
+1 −0
Changes for cmake/toolchain/espressif/generic.cmake: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -54,3 +54,4 @@ if(NOT CROSS_COMPILE_TARGET)
endif()

set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib")
set(TOOLCHAIN_HAS_GLIBCXX ON CACHE BOOL "True if toolchain supports libstdc++")
+2 −0
Changes for cmake/toolchain/gnuarmemb/generic.cmake: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ set(SYSROOT_TARGET arm-none-eabi)

set(CROSS_COMPILE ${TOOLCHAIN_HOME}/bin/${CROSS_COMPILE_TARGET}-)
set(SYSROOT_DIR   ${TOOLCHAIN_HOME}/${SYSROOT_TARGET})

set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib")
set(TOOLCHAIN_HAS_GLIBCXX ON CACHE BOOL "True if toolchain supports libstdc++")

message(STATUS "Found toolchain: gnuarmemb (${GNUARMEMB_TOOLCHAIN_PATH})")
+1 −0
Changes for cmake/toolchain/host/generic.cmake: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -5,5 +5,6 @@ set(LINKER ld)
set(BINTOOLS host-gnu)

set(TOOLCHAIN_HAS_NEWLIB OFF CACHE BOOL "True if toolchain supports newlib")
set(TOOLCHAIN_HAS_GLIBCXX ON CACHE BOOL "True if toolchain supports libstdc++")

message(STATUS "Found toolchain: host (gcc/ld)")
+4 −1
Changes for cmake/toolchain/zephyr/generic.cmake: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -4,4 +4,7 @@ include(${ZEPHYR_SDK_INSTALL_DIR}/cmake/zephyr/generic.cmake)

set(TOOLCHAIN_KCONFIG_DIR ${ZEPHYR_SDK_INSTALL_DIR}/cmake/zephyr)

message(STATUS "Found toolchain: zephyr ${SDK_VERSION} (${ZEPHYR_SDK_INSTALL_DIR})")
# Zephyr SDK < 0.17.1 does not set TOOLCHAIN_HAS_GLIBCXX
set(TOOLCHAIN_HAS_GLIBCXX ON CACHE BOOL "True if toolchain supports libstdc++")

message(STATUS "Found toolchain: zephyr-sdk-gnu ${SDK_VERSION} (${ZEPHYR_SDK_INSTALL_DIR})")
Loading