diff --git a/local/recipes/dev/libclc/recipe.toml b/local/recipes/dev/libclc/recipe.toml index 8842d7f3cc..f414d4a9ad 100644 --- a/local/recipes/dev/libclc/recipe.toml +++ b/local/recipes/dev/libclc/recipe.toml @@ -54,18 +54,18 @@ generate_cookbook_cmake_file "${COOKBOOK_HOST_TARGET}" "" "/usr" native_libclc.c # sysroot contains both the host Clang binary and the LLVM tools # that libclc needs to find via LLVM_DIR. cat >> native_libclc.cmake <<'NATIVE_EOF' -set(CMAKE_C_COMPILER "${COOKBOOK_SYSROOT}/bin/clang-21" CACHE FILEPATH "" FORCE) -set(CMAKE_CXX_COMPILER "${COOKBOOK_SYSROOT}/bin/clang-21" CACHE FILEPATH "" FORCE) -set(CMAKE_ASM_COMPILER "${COOKBOOK_SYSROOT}/bin/clang-21" CACHE FILEPATH "" FORCE) -set(CMAKE_AR "${COOKBOOK_SYSROOT}/bin/llvm-ar" CACHE FILEPATH "" FORCE) -set(CMAKE_NM "${COOKBOOK_SYSROOT}/bin/llvm-nm" CACHE FILEPATH "" FORCE) -set(CMAKE_RANLIB "${COOKBOOK_SYSROOT}/bin/llvm-ranlib" CACHE FILEPATH "" FORCE) +set(CMAKE_C_COMPILER "$ENV{COOKBOOK_TOOLCHAIN}/bin/clang-21" CACHE FILEPATH "" FORCE) +set(CMAKE_CXX_COMPILER "$ENV{COOKBOOK_TOOLCHAIN}/bin/clang-21" CACHE FILEPATH "" FORCE) +set(CMAKE_ASM_COMPILER "$ENV{COOKBOOK_TOOLCHAIN}/bin/clang-21" CACHE FILEPATH "" FORCE) +set(CMAKE_AR "$ENV{COOKBOOK_TOOLCHAIN}/bin/llvm-ar" CACHE FILEPATH "" FORCE) +set(CMAKE_NM "$ENV{COOKBOOK_TOOLCHAIN}/bin/llvm-nm" CACHE FILEPATH "" FORCE) +set(CMAKE_RANLIB "$ENV{COOKBOOK_TOOLCHAIN}/bin/llvm-ranlib" CACHE FILEPATH "" FORCE) set(CMAKE_C_FLAGS_INIT "" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_INIT "" CACHE STRING "" FORCE) set(CMAKE_EXE_LINKER_FLAGS_INIT "" CACHE STRING "" FORCE) set(CMAKE_SHARED_LINKER_FLAGS_INIT "" CACHE STRING "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "BYPASS" CACHE STRING "" FORCE) -set(LLVM_DIR "${COOKBOOK_SYSROOT}/lib/cmake/llvm" CACHE PATH "" FORCE) +set(LLVM_DIR "$ENV{COOKBOOK_TOOLCHAIN}/lib/cmake/llvm" CACHE PATH "" FORCE) set(LIBCLC_STANDALONE_BUILD TRUE CACHE BOOL "" FORCE) NATIVE_EOF @@ -86,7 +86,7 @@ NATIVE_EOF COOKBOOK_CMAKE_FLAGS+=( -DCMAKE_TOOLCHAIN_FILE="$(realpath native_libclc.cmake)" -DCMAKE_BUILD_TYPE=Release - -DLLVM_DIR="${COOKBOOK_SYSROOT}/lib/cmake/llvm" + -DLLVM_DIR="${COOKBOOK_TOOLCHAIN}/lib/cmake/llvm" -DLIBCLC_STANDALONE_BUILD=TRUE -DLIBCLC_TARGETS_TO_BUILD="r600--;amdgcn--;amdgcn--amdhsa;amdgcn-mesa-mesa3d" -DENABLE_RUNTIME_SUBNORMAL=OFF @@ -99,14 +99,6 @@ COOKBOOK_CMAKE_FLAGS+=( -Wno-dev ) -# Restore the cross-compile environment (libclc install is the only -# step that uses the host toolchain; if subsequent install steps -# are added to the recipe, they'd want the cross env). -export LDFLAGS="$_SAVED_LDFLAGS" -export CFLAGS="$_SAVED_CFLAGS" -export CXXFLAGS="$_SAVED_CXXFLAGS" -export CPPFLAGS="$_SAVED_CPPFLAGS" - # Source dir is the path_in_repo subdir of the cloned llvm-project. This # cookbook does not extract path_in_repo into COOKBOOK_SOURCE — it clones the # whole llvm-project there — so CMake was pointed at the repo root and failed @@ -129,6 +121,14 @@ if [ -d "${COOKBOOK_STAGE}/stage" ]; then rm -rf "${COOKBOOK_STAGE}/stage" fi +# Restore the cross-compile env for any subsequent (cross) steps. The native +# cmake/ninja above MUST run with the clean (unset) env, so this restore is +# placed AFTER the build, not before it. +export LDFLAGS="$_SAVED_LDFLAGS" +export CFLAGS="$_SAVED_CFLAGS" +export CXXFLAGS="$_SAVED_CXXFLAGS" +export CPPFLAGS="$_SAVED_CPPFLAGS" + # Mesa's clc tool expects the .bc files at /clc where # libexecdir is /share/clc (per the libclc.pc.in template). # The cmake install above places them at $COOKBOOK_STAGE/usr/share/clc