From 312f0a9cb8072da52b85d89b66f73eabb921aef1 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 29 Oct 2025 13:45:57 -0700 Subject: [PATCH] Restore current Zephyr compatibility This patch restores the abilty to use this SDK without any changes to Zephyr. It moves the GNU toolchains back to the top level, places hosttools at the top level and moves the cmake/zephyr/gnu files back to cmake/zephyr. The goal is to change the sequencing of the restructuring to ease migration. Instead of requiring synchronous changes between SDK and Zephyr, we'll plan on updating Zephyr with the ability to handle either structure, then modify the SDK structure once Zephyr is ready. Signed-off-by: Keith Packard --- .github/workflows/ci.yml | 9 +++++---- cmake/zephyr/{gnu => }/generic.cmake | 2 +- cmake/zephyr/{gnu => }/target.cmake | 4 ++-- scripts/template_setup_posix | 29 ++++++++++------------------ scripts/template_setup_win | 7 ++----- 5 files changed, 20 insertions(+), 31 deletions(-) rename cmake/zephyr/{gnu => }/generic.cmake (95%) rename cmake/zephyr/{gnu => }/target.cmake (88%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 788d93c1..41d5cb6d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1467,8 +1467,7 @@ jobs: fi # Stage GNU toolchains - mkdir ${ARCHIVE_DIR}/gnu - pushd ${ARCHIVE_DIR}/gnu + pushd ${ARCHIVE_DIR} ## Generate target list from the workflow matrix TARGETS=$(echo '${{ needs.setup.outputs.targets }}' | jq -cr '.[]') @@ -1497,8 +1496,10 @@ jobs: 7z a -t7z -l ${ARCHIVE_NAME}_gnu.${EXT} ${ARCHIVE_DIR} fi - # Unstage GNU toolchain directory - rm -rf ${ARCHIVE_DIR}/gnu + # Unstage GNU toolchain directories + for TARGET in ${TARGETS}; do + rm -rf ${ARCHIVE_DIR}/${TARGET} + done # Stage LLVM toolchains pushd ${ARCHIVE_DIR} diff --git a/cmake/zephyr/gnu/generic.cmake b/cmake/zephyr/generic.cmake similarity index 95% rename from cmake/zephyr/gnu/generic.cmake rename to cmake/zephyr/generic.cmake index 21f423fb..4b889cce 100644 --- a/cmake/zephyr/gnu/generic.cmake +++ b/cmake/zephyr/generic.cmake @@ -1,6 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 -set(TOOLCHAIN_HOME ${ZEPHYR_SDK_INSTALL_DIR}/gnu) +set(TOOLCHAIN_HOME ${ZEPHYR_SDK_INSTALL_DIR}) set(COMPILER gcc) set(LINKER ld) diff --git a/cmake/zephyr/gnu/target.cmake b/cmake/zephyr/target.cmake similarity index 88% rename from cmake/zephyr/gnu/target.cmake rename to cmake/zephyr/target.cmake index 205958c3..0808e670 100644 --- a/cmake/zephyr/gnu/target.cmake +++ b/cmake/zephyr/target.cmake @@ -27,8 +27,8 @@ set(CROSS_COMPILE_TARGET_sparc sparc-zephyr-elf) set(CROSS_COMPILE_TARGET ${CROSS_COMPILE_TARGET_${ARCH}}) set(SYSROOT_TARGET ${CROSS_COMPILE_TARGET}) -set(SYSROOT_DIR ${ZEPHYR_SDK_INSTALL_DIR}/gnu/${SYSROOT_TARGET}/${SYSROOT_TARGET}) -set(CROSS_COMPILE ${ZEPHYR_SDK_INSTALL_DIR}/gnu/${CROSS_COMPILE_TARGET}/bin/${CROSS_COMPILE_TARGET}-) +set(SYSROOT_DIR ${ZEPHYR_SDK_INSTALL_DIR}/${SYSROOT_TARGET}/${SYSROOT_TARGET}) +set(CROSS_COMPILE ${ZEPHYR_SDK_INSTALL_DIR}/${CROSS_COMPILE_TARGET}/bin/${CROSS_COMPILE_TARGET}-) if("${ARCH}" STREQUAL "x86") if(CONFIG_X86_64) diff --git a/scripts/template_setup_posix b/scripts/template_setup_posix index 2a9f9a63..722af8b1 100644 --- a/scripts/template_setup_posix +++ b/scripts/template_setup_posix @@ -52,7 +52,7 @@ check_command() check_full_gnu_sdk() { for toolchain in ${gnu_toolchains[@]}; do - if [ ! -d "gnu/${toolchain}" ]; then + if [ ! -d "${toolchain}" ]; then return 1 fi done @@ -101,7 +101,7 @@ user_prompt() inst_gnu_toolchains=(${gnu_toolchains[*]}) else for toolchain in ${gnu_toolchains[@]}; do - if [ ! -d "gnu/${toolchain}" ]; then + if [ ! -d "${toolchain}" ]; then ask_yn "Install '${toolchain}' GNU toolchain" && inst_gnu_toolchains+=("${toolchain}") fi done @@ -118,8 +118,6 @@ user_prompt() # Environment Configurations ask_yn "Register Zephyr SDK CMake package" && do_cmake_pkg="y" - ask_yn "Create symbolic links for old Zephyr bisectability" && do_old_zephyr="y" - echo } @@ -211,6 +209,13 @@ dl_llvm_toolchain_filename='toolchain_llvm_${host}.tar.xz' echo "Zephyr SDK ${version} Setup" echo +# Move anything left in gnu/ to here. This won't be +# needed once the CI script is updated +if [ -d gnu ]; then + mv gnu/* . + rmdir gnu +fi + # Check dependencies check_command cmake 90 [[ "${host}" =~ ^linux-.* ]] && check_command wget 91 @@ -235,8 +240,6 @@ fi # Install GNU toolchains if [ "${do_gnu_toolchain}" = "y" ]; then - mkdir -p gnu - pushd gnu for toolchain in ${inst_gnu_toolchains[@]}; do eval toolchain_filename="${dl_gnu_toolchain_filename}" @@ -266,7 +269,6 @@ if [ "${do_gnu_toolchain}" = "y" ]; then echo done - popd fi # Install LLVM toolchain @@ -299,10 +301,8 @@ if [ "${do_hosttools}" = "y" ]; then echo "Installing host tools ..." case ${host} in linux-*) - pushd hosttools - ./zephyr-sdk-${HOSTTYPE}-hosttools-standalone-0.10.sh -y -d . &> /dev/null + ./hosttools/zephyr-sdk-${HOSTTYPE}-hosttools-standalone-0.10.sh -y -d . &> /dev/null assert_rc "ERROR: Host tools installation failed" 30 - popd ;; macos-*) echo "SKIPPED: macOS host tools are not available yet." @@ -319,15 +319,6 @@ if [ "${do_cmake_pkg}" = "y" ]; then echo fi -# Create links for old Zephyr versions -if [ "${do_old_zephyr}" = "y" ]; then - echo "Creating links for old Zephyr bisectability ..." - ln -sr gnu/* . || assert_rc "ERROR: Creating toolchain links" 50 - ln -sr cmake/zephyr/gnu/* cmake/zephyr || assert_rc "ERROR: Creating cmake links" 50 - ln -sr hosttools/* . || assert_rc "ERROR: Creating hosttools links" 50 - echo -fi - echo "All done." if [ "${interactive}" = "y" ]; then read -n 1 -s -r -p "Press any key to exit ..." diff --git a/scripts/template_setup_win b/scripts/template_setup_win index ef9a890b..046ab7cc 100644 --- a/scripts/template_setup_win +++ b/scripts/template_setup_win @@ -109,7 +109,7 @@ echo. REM # Check installation type for %%t in (%GNU_TOOLCHAINS%) do ( - if not exist gnu\%%t\ ( + if not exist %%t\ ( set IS_PARTIAL_GNU_SDK=y ) ) @@ -124,7 +124,7 @@ if [!ERRORLEVEL!] equ [1] ( set INST_GNU_TOOLCHAINS=%GNU_TOOLCHAINS% ) else ( for %%t in (%GNU_TOOLCHAINS%) do ( - if not exist gnu\%%t\ ( + if not exist %%t\ ( choice /c:yn /m:"Install '%%t' GNU toolchain" if [!ERRORLEVEL!] equ [1] ( set INST_GNU_TOOLCHAINS=!INST_GNU_TOOLCHAINS! %%t @@ -149,8 +149,6 @@ echo. :process REM # Install GNU toolchains if [%DO_GNU_TOOLCHAIN%] neq [] ( - if not exist gnu\ mkdir gnu - pushd gnu for %%t in (%INST_GNU_TOOLCHAINS%) do ( set TOOLCHAIN_FILENAME=%DL_GNU_TOOLCHAIN_FILENAME% @@ -180,7 +178,6 @@ if [%DO_GNU_TOOLCHAIN%] neq [] ( del /q !TOOLCHAIN_FILENAME! ) ) - popd ) REM # Install LLVM toolchain