diff --git a/cmake/bintools/gnu/target.cmake b/cmake/bintools/gnu/target.cmake new file mode 100644 index 00000000000..db4195be260 --- /dev/null +++ b/cmake/bintools/gnu/target.cmake @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Configures binary tools as GNU binutils + +find_program(CMAKE_OBJCOPY ${CROSS_COMPILE}objcopy PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_OBJDUMP ${CROSS_COMPILE}objdump PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_AS ${CROSS_COMPILE}as PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_AR ${CROSS_COMPILE}ar PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_RANLIB ${CROSS_COMPILE}ranlib PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_READELF ${CROSS_COMPILE}readelf PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_NM ${CROSS_COMPILE}nm PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) + +find_program(CMAKE_GDB ${CROSS_COMPILE}gdb PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_GDB gdb-multiarch PATH ${TOOLCHAIN_HOME} ) diff --git a/cmake/bintools/host-gnu/target.cmake b/cmake/bintools/host-gnu/target.cmake new file mode 100644 index 00000000000..5b79e5b6fc1 --- /dev/null +++ b/cmake/bintools/host-gnu/target.cmake @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Configures binary tools as host GNU binutils + +find_program(CMAKE_OBJCOPY objcopy) +find_program(CMAKE_OBJDUMP objdump) +find_program(CMAKE_AR ar ) +find_program(CMAKE_RANLILB ranlib ) +find_program(CMAKE_READELF readelf) + +find_program(CMAKE_GDB gdb ) diff --git a/cmake/bintools/llvm/target.cmake b/cmake/bintools/llvm/target.cmake new file mode 100644 index 00000000000..d0c81e3b090 --- /dev/null +++ b/cmake/bintools/llvm/target.cmake @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Configures binary toos as llvm binary tool set + +if(DEFINED TOOLCHAIN_HOME) + set(find_program_clang_args PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) + set(find_program_binutils_args PATH ${TOOLCHAIN_HOME}) +endif() + +find_program(CMAKE_AR llvm-ar ${find_program_clang_args} ) +find_program(CMAKE_NM llvm-nm ${find_program_clang_args} ) +find_program(CMAKE_OBJDUMP llvm-objdump ${find_program_clang_args} ) +find_program(CMAKE_RANLIB llvm-ranlib ${find_program_clang_args} ) +find_program(CMAKE_OBJCOPY objcopy ${find_program_binutils_args}) +find_program(CMAKE_READELF readelf ${find_program_binutils_args}) diff --git a/cmake/compiler/clang/target.cmake b/cmake/compiler/clang/target.cmake index 2fd15bf177a..7bbccc7a832 100644 --- a/cmake/compiler/clang/target.cmake +++ b/cmake/compiler/clang/target.cmake @@ -13,20 +13,10 @@ endif() if(DEFINED TOOLCHAIN_HOME) set(find_program_clang_args PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) - set(find_program_binutils_args PATH ${TOOLCHAIN_HOME}) endif() - -find_program(CMAKE_C_COMPILER clang ${find_program_clang_args}) -find_program(CMAKE_CXX_COMPILER clang++ ${find_program_clang_args}) -find_program(CMAKE_AR llvm-ar ${find_program_clang_args}) -find_program(CMAKE_LINKER llvm-link ${find_program_clang_args}) -find_program(CMAKE_NM llvm-nm ${find_program_clang_args}) -find_program(CMAKE_OBJDUMP llvm-objdump ${find_program_clang_args}) -find_program(CMAKE_RANLIB llvm-ranlib ${find_program_clang_args}) - -find_program(CMAKE_OBJCOPY objcopy ${find_program_binutils_args}) -find_program(CMAKE_READELF readelf ${find_program_binutils_args}) +find_program(CMAKE_C_COMPILER clang ${find_program_clang_args}) +find_program(CMAKE_CXX_COMPILER clang++ ${find_program_clang_args}) if(NOT "${ARCH}" STREQUAL "posix") diff --git a/cmake/compiler/gcc/target.cmake b/cmake/compiler/gcc/target.cmake index 991a49c0946..b3f8edb2e38 100644 --- a/cmake/compiler/gcc/target.cmake +++ b/cmake/compiler/gcc/target.cmake @@ -5,16 +5,7 @@ set_ifndef(C++ g++) # Configures CMake for using GCC, this script is re-used by several # GCC-based toolchains -find_program(CMAKE_C_COMPILER ${CROSS_COMPILE}${CC} PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_OBJCOPY ${CROSS_COMPILE}objcopy PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_OBJDUMP ${CROSS_COMPILE}objdump PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_AS ${CROSS_COMPILE}as PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_AR ${CROSS_COMPILE}ar PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_RANLIB ${CROSS_COMPILE}ranlib PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_READELF ${CROSS_COMPILE}readelf PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_GDB ${CROSS_COMPILE}gdb PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_GDB gdb-multiarch PATH ${TOOLCHAIN_HOME} ) -find_program(CMAKE_NM ${CROSS_COMPILE}nm PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_C_COMPILER ${CROSS_COMPILE}${CC} PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) if(CONFIG_CPLUSPLUS) set(cplusplus_compiler ${CROSS_COMPILE}${C++}) diff --git a/cmake/compiler/host-gcc/target.cmake b/cmake/compiler/host-gcc/target.cmake index 79dab0b2cc8..9a4ed555438 100644 --- a/cmake/compiler/host-gcc/target.cmake +++ b/cmake/compiler/host-gcc/target.cmake @@ -2,14 +2,7 @@ # Configures CMake for using GCC -find_program(CMAKE_C_COMPILER gcc ) -find_program(CMAKE_OBJCOPY objcopy) -find_program(CMAKE_OBJDUMP objdump) -#find_program(CMAKE_LINKER ld ) # Not in use yet -find_program(CMAKE_AR ar ) -find_program(CMAKE_RANLILB ranlib ) -find_program(CMAKE_READELF readelf) -find_program(CMAKE_GDB gdb ) +find_program(CMAKE_C_COMPILER gcc) # -march={pentium,lakemont,...} do not automagically imply -m32, so # adding it here. diff --git a/cmake/compiler/xcc/target.cmake b/cmake/compiler/xcc/target.cmake index 3bb4a9e8a7e..14c23b8cdbd 100644 --- a/cmake/compiler/xcc/target.cmake +++ b/cmake/compiler/xcc/target.cmake @@ -5,17 +5,7 @@ set_ifndef(C++ g++) # Configures CMake for using GCC, this script is re-used by several # GCC-based toolchains -find_program(CMAKE_C_COMPILER ${CROSS_COMPILE}${CC} PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_OBJCOPY ${CROSS_COMPILE}objcopy PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_OBJDUMP ${CROSS_COMPILE}objdump PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_AS ${CROSS_COMPILE}as PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_LINKER ${CROSS_COMPILE}ld PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_AR ${CROSS_COMPILE}ar PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_RANLIB ${CROSS_COMPILE}ranlib PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_READELF ${CROSS_COMPILE}readelf PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_GDB ${CROSS_COMPILE}gdb PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) -find_program(CMAKE_GDB gdb-multiarch PATH ${TOOLCHAIN_HOME} ) -find_program(CMAKE_NM ${CROSS_COMPILE}nm PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) +find_program(CMAKE_C_COMPILER ${CROSS_COMPILE}${CC} PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) if(CONFIG_CPLUSPLUS) set(cplusplus_compiler ${CROSS_COMPILE}${C++}) diff --git a/cmake/generic_toolchain.cmake b/cmake/generic_toolchain.cmake index 90c06748994..c579ea76dc1 100644 --- a/cmake/generic_toolchain.cmake +++ b/cmake/generic_toolchain.cmake @@ -67,3 +67,4 @@ include(${TOOLCHAIN_ROOT}/cmake/toolchain/${ZEPHYR_TOOLCHAIN_VARIANT}/generic.cm # (gcc, host-gcc etc.) include(${TOOLCHAIN_ROOT}/cmake/compiler/${COMPILER}/generic.cmake OPTIONAL) include(${TOOLCHAIN_ROOT}/cmake/linker/${LINKER}/generic.cmake OPTIONAL) +include(${TOOLCHAIN_ROOT}/cmake/bintools/${BINTOOLS}/generic.cmake OPTIONAL) diff --git a/cmake/target_toolchain.cmake b/cmake/target_toolchain.cmake index 307c942a133..a117538d608 100644 --- a/cmake/target_toolchain.cmake +++ b/cmake/target_toolchain.cmake @@ -48,6 +48,7 @@ unset(CMAKE_C_COMPILER CACHE) # E.g. toolchain/llvm may pick {clang, ld} or {clang, lld}. include(${TOOLCHAIN_ROOT}/cmake/compiler/${COMPILER}/target.cmake OPTIONAL) include(${TOOLCHAIN_ROOT}/cmake/linker/${LINKER}/target.cmake OPTIONAL) +include(${TOOLCHAIN_ROOT}/cmake/bintools/${BINTOOLS}/target.cmake OPTIONAL) # Uniquely identify the toolchain wrt. it's capabilities. # diff --git a/cmake/toolchain/cross-compile/generic.cmake b/cmake/toolchain/cross-compile/generic.cmake index ebf9d04001d..ed90dc5bb99 100644 --- a/cmake/toolchain/cross-compile/generic.cmake +++ b/cmake/toolchain/cross-compile/generic.cmake @@ -26,3 +26,4 @@ assert(CROSS_COMPILE "CROSS_COMPILE is not set") set(COMPILER gcc) set(LINKER ld) +set(BINTOOLS gnu) diff --git a/cmake/toolchain/espressif/generic.cmake b/cmake/toolchain/espressif/generic.cmake index daab9ff3ea3..df9ed248143 100644 --- a/cmake/toolchain/espressif/generic.cmake +++ b/cmake/toolchain/espressif/generic.cmake @@ -8,6 +8,7 @@ set(TOOLCHAIN_HOME ${ESPRESSIF_TOOLCHAIN_PATH}) set(COMPILER gcc) set(LINKER ld) +set(BINTOOLS gnu) set(CROSS_COMPILE_TARGET xtensa-esp32-elf) set(SYSROOT_TARGET xtensa-esp32-elf) diff --git a/cmake/toolchain/gnuarmemb/generic.cmake b/cmake/toolchain/gnuarmemb/generic.cmake index 90a32744194..aacd4a9d6a3 100644 --- a/cmake/toolchain/gnuarmemb/generic.cmake +++ b/cmake/toolchain/gnuarmemb/generic.cmake @@ -20,6 +20,7 @@ set(TOOLCHAIN_HOME ${GNUARMEMB_TOOLCHAIN_PATH}) set(COMPILER gcc) set(LINKER ld) +set(BINTOOLS gnu) set(CROSS_COMPILE_TARGET arm-none-eabi) set(SYSROOT_TARGET arm-none-eabi) diff --git a/cmake/toolchain/host/generic.cmake b/cmake/toolchain/host/generic.cmake index 9cf7ba94960..4bbf8201d7f 100644 --- a/cmake/toolchain/host/generic.cmake +++ b/cmake/toolchain/host/generic.cmake @@ -2,4 +2,6 @@ set(COMPILER host-gcc) set(LINKER ld) +set(BINTOOLS host-gnu) + set(TOOLCHAIN_HAS_NEWLIB OFF CACHE BOOL "True if toolchain supports newlib") diff --git a/cmake/toolchain/llvm/generic.cmake b/cmake/toolchain/llvm/generic.cmake index 5b8781d2c51..3ed4b933e44 100644 --- a/cmake/toolchain/llvm/generic.cmake +++ b/cmake/toolchain/llvm/generic.cmake @@ -14,6 +14,7 @@ endif() set(COMPILER clang) set(LINKER ld) # TODO: Use lld eventually rather than GNU ld +set(BINTOOLS llvm) if("${ARCH}" STREQUAL "arm") set(triple arm-none-eabi) diff --git a/cmake/toolchain/xcc/generic.cmake b/cmake/toolchain/xcc/generic.cmake index 6f519612e07..37e3c2994ef 100644 --- a/cmake/toolchain/xcc/generic.cmake +++ b/cmake/toolchain/xcc/generic.cmake @@ -12,6 +12,7 @@ set(TOOLCHAIN_HOME ${XTENSA_TOOLCHAIN_PATH}/XtDevTools/install/tools/$ENV{TOOLCH set(COMPILER xcc) set(LINKER ld) +set(BINTOOLS gnu) set(CROSS_COMPILE_TARGET xt) set(SYSROOT_TARGET xtensa-elf) diff --git a/cmake/toolchain/xtools/generic.cmake b/cmake/toolchain/xtools/generic.cmake index 0f00ba2c389..2b3c6b12b83 100644 --- a/cmake/toolchain/xtools/generic.cmake +++ b/cmake/toolchain/xtools/generic.cmake @@ -8,6 +8,7 @@ set(TOOLCHAIN_HOME ${XTOOLS_TOOLCHAIN_PATH}) set(COMPILER gcc) set(LINKER ld) +set(BINTOOLS gnu) # Choose one of the toolchains in 'TOOLCHAIN_HOME' at random to use as # a 'generic' toolchain until we know for sure which toolchain we diff --git a/cmake/toolchain/zephyr/0.10.0/generic.cmake b/cmake/toolchain/zephyr/0.10.0/generic.cmake index 6968e5930a0..7d31614da9b 100644 --- a/cmake/toolchain/zephyr/0.10.0/generic.cmake +++ b/cmake/toolchain/zephyr/0.10.0/generic.cmake @@ -4,6 +4,7 @@ set(TOOLCHAIN_HOME ${ZEPHYR_SDK_INSTALL_DIR}) set(COMPILER gcc) set(LINKER ld) +set(BINTOOLS gnu) set(CROSS_COMPILE_TARGET i586-${TOOLCHAIN_VENDOR}-elf) set(SYSROOT_TARGET i586-${TOOLCHAIN_VENDOR}-elf) diff --git a/cmake/toolchain/zephyr/0.10.1/generic.cmake b/cmake/toolchain/zephyr/0.10.1/generic.cmake index 6968e5930a0..7d31614da9b 100644 --- a/cmake/toolchain/zephyr/0.10.1/generic.cmake +++ b/cmake/toolchain/zephyr/0.10.1/generic.cmake @@ -4,6 +4,7 @@ set(TOOLCHAIN_HOME ${ZEPHYR_SDK_INSTALL_DIR}) set(COMPILER gcc) set(LINKER ld) +set(BINTOOLS gnu) set(CROSS_COMPILE_TARGET i586-${TOOLCHAIN_VENDOR}-elf) set(SYSROOT_TARGET i586-${TOOLCHAIN_VENDOR}-elf)