From 5c711bd4ba528c3561fb6324a0e2412cd535ef9f Mon Sep 17 00:00:00 2001 From: Daniel Leung Date: Mon, 7 Oct 2019 11:34:29 -0700 Subject: [PATCH] sdk: add support for Zephyr SDK 0.11 This adds support for Zephyr SDK 0.11.* is based on the 0.10 support with the following changes: Handle how xtensa toolchains for given targets are organized in SDK 0.11.x. They have their own directories per specific xtensa SoC. The x86_64 toolchain in the SDK has been updated to build for 32-bit targets (as it has 32-bit soft float libraries). Use this toolchain for all x86 builds. Signed-off-by: Daniel Leung Signed-off-by: Kumar Gala --- cmake/toolchain/zephyr/0.11/generic.cmake | 14 ++++++++ cmake/toolchain/zephyr/0.11/host-tools.cmake | 12 +++++++ cmake/toolchain/zephyr/0.11/target.cmake | 37 ++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 cmake/toolchain/zephyr/0.11/generic.cmake create mode 100644 cmake/toolchain/zephyr/0.11/host-tools.cmake create mode 100644 cmake/toolchain/zephyr/0.11/target.cmake diff --git a/cmake/toolchain/zephyr/0.11/generic.cmake b/cmake/toolchain/zephyr/0.11/generic.cmake new file mode 100644 index 00000000000..84dc684f8bb --- /dev/null +++ b/cmake/toolchain/zephyr/0.11/generic.cmake @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: Apache-2.0 + +set(TOOLCHAIN_HOME ${ZEPHYR_SDK_INSTALL_DIR}) + +set(COMPILER gcc) +set(LINKER ld) +set(BINTOOLS gnu) + +set(CROSS_COMPILE_TARGET x86_64-${TOOLCHAIN_VENDOR}-elf) +set(SYSROOT_TARGET x86_64-${TOOLCHAIN_VENDOR}-elf) + +set(CROSS_COMPILE ${TOOLCHAIN_HOME}/${CROSS_COMPILE_TARGET}/bin/${CROSS_COMPILE_TARGET}-) +set(SYSROOT_DIR ${ZEPHYR_SDK_INSTALL_DIR}/sysroots/${SYSROOT_TARGET}/usr) +set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib") diff --git a/cmake/toolchain/zephyr/0.11/host-tools.cmake b/cmake/toolchain/zephyr/0.11/host-tools.cmake new file mode 100644 index 00000000000..604c8ade4ca --- /dev/null +++ b/cmake/toolchain/zephyr/0.11/host-tools.cmake @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: Apache-2.0 + +set(HOST_TOOLS_HOME ${ZEPHYR_SDK_INSTALL_DIR}/sysroots/${TOOLCHAIN_ARCH}-pokysdk-linux) + +# Path used for searching by the find_*() functions, with appropriate +# suffixes added. Ensures that the SDK's host tools will be found when +# we call, e.g. find_program(QEMU qemu-system-x86) +list(APPEND CMAKE_PREFIX_PATH ${HOST_TOOLS_HOME}/usr) + +# TODO: Use find_* somehow for these as well? +set_ifndef(QEMU_BIOS ${HOST_TOOLS_HOME}/usr/share/qemu) +set_ifndef(OPENOCD_DEFAULT_PATH ${HOST_TOOLS_HOME}/usr/share/openocd/scripts) diff --git a/cmake/toolchain/zephyr/0.11/target.cmake b/cmake/toolchain/zephyr/0.11/target.cmake new file mode 100644 index 00000000000..f7923e47b2e --- /dev/null +++ b/cmake/toolchain/zephyr/0.11/target.cmake @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: Apache-2.0 + +set(CROSS_COMPILE_TARGET_arm arm-zephyr-eabi) +set(CROSS_COMPILE_TARGET_nios2 nios2-zephyr-elf) +set(CROSS_COMPILE_TARGET_riscv riscv64-zephyr-elf) +set(CROSS_COMPILE_TARGET_mips mipsel-zephyr-elf) +set(CROSS_COMPILE_TARGET_xtensa xtensa-zephyr-elf) +set(CROSS_COMPILE_TARGET_arc arc-zephyr-elf) +set(CROSS_COMPILE_TARGET_x86 x86_64-zephyr-elf) + +set(CROSS_COMPILE_TARGET ${CROSS_COMPILE_TARGET_${ARCH}}) +set(SYSROOT_TARGET ${CROSS_COMPILE_TARGET}) + +if("${ARCH}" STREQUAL "xtensa") + set(SYSROOT_DIR ${TOOLCHAIN_HOME}/xtensa/${SOC_NAME}/${SYSROOT_TARGET}) + set(TOOLCHAIN_INCLUDES + ${SYSROOT_DIR}/include/arch/include + ${SYSROOT_DIR}/include + ) + + LIST(APPEND TOOLCHAIN_LIBS hal) + LIST(APPEND LIB_INCLUDE_DIR -L${SYSROOT_DIR}/lib) + set(CROSS_COMPILE ${TOOLCHAIN_HOME}/xtensa/${SOC_NAME}/${CROSS_COMPILE_TARGET}/bin/${CROSS_COMPILE_TARGET}-) +else() + set(SYSROOT_DIR ${TOOLCHAIN_HOME}/${SYSROOT_TARGET}/${SYSROOT_TARGET}) + set(CROSS_COMPILE ${TOOLCHAIN_HOME}/${CROSS_COMPILE_TARGET}/bin/${CROSS_COMPILE_TARGET}-) +endif() + +if("${ARCH}" STREQUAL "x86") + if(CONFIG_X86_64) + list(APPEND TOOLCHAIN_C_FLAGS -m64) + list(APPEND TOOLCHAIN_LD_FLAGS -m64) + else() + list(APPEND TOOLCHAIN_C_FLAGS -m32) + list(APPEND TOOLCHAIN_LD_FLAGS -m32) + endif() +endif()