From 06aa1fc5d43e2e6ea5b39e150fbf0fbea4baa893 Mon Sep 17 00:00:00 2001 From: Aleix Roca Nonell Date: Tue, 15 Jul 2025 17:12:29 +0200 Subject: [PATCH] Fix clang cross-build --- overlay.nix | 8 ++++---- pkgs/llvm-ompss2/clang.nix | 27 +++++++++++++++++---------- pkgs/llvm-ompss2/default.nix | 3 ++- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/overlay.nix b/overlay.nix index 27d92c5e..ea44f869 100644 --- a/overlay.nix +++ b/overlay.nix @@ -56,10 +56,10 @@ let #psmpi = callPackage ./pkgs/parastation/psmpi.nix { }; # Unmaintaned slurm = import ./pkgs/slurm/default.nix { slurm = prev.slurm; }; sonar = callPackage ./pkgs/sonar/default.nix { }; - stdenvClangOmpss2 = final.stdenv.override { cc = final.clangOmpss2; allowedRequisites = null; }; - stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.clangOmpss2Nanos6; allowedRequisites = null; }; - stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.clangOmpss2Nodes; allowedRequisites = null; }; - stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.clangOmpss2NodesOmpv; allowedRequisites = null; }; + stdenvClangOmpss2 = final.stdenv.override { cc = final.buildPackages.clangOmpss2; allowedRequisites = null; }; + stdenvClangOmpss2Nanos6 = final.stdenv.override { cc = final.buildPackages.clangOmpss2Nanos6; allowedRequisites = null; }; + stdenvClangOmpss2Nodes = final.stdenv.override { cc = final.buildPackages.clangOmpss2Nodes; allowedRequisites = null; }; + stdenvClangOmpss2NodesOmpv = final.stdenv.override { cc = final.buildPackages.clangOmpss2NodesOmpv; allowedRequisites = null; }; tagaspi = callPackage ./pkgs/tagaspi/default.nix { }; tampi = callPackage ./pkgs/tampi/default.nix { }; upc-qaire-exporter = prev.callPackage ./pkgs/upc-qaire-exporter/default.nix { }; diff --git a/pkgs/llvm-ompss2/clang.nix b/pkgs/llvm-ompss2/clang.nix index 05af0f27..9a1b7654 100644 --- a/pkgs/llvm-ompss2/clang.nix +++ b/pkgs/llvm-ompss2/clang.nix @@ -1,9 +1,9 @@ { - llvmPackages_latest + stdenv +, llvmPackages_latest , lib , fetchFromGitHub , cmake -, bash , python3 , perl , which @@ -11,7 +11,6 @@ , libffi , zlib , pkg-config -, gcc # needed to set the rpath of libstdc++ for clang-tblgen , enableDebug ? false , useGit ? false , gitUrl ? "ssh://git@bscpm04.bsc.es/llvm-ompss/llvm-mono.git" @@ -20,7 +19,10 @@ }: let - stdenv = llvmPackages_latest.stdenv; + llvmPackages = llvmPackages_latest; + llvmStdenv = llvmPackages.stdenv; + # needed to set the rpath of libstdc++ for clang-tblgen + gcc = stdenv.cc; release = rec { version = "2025.11"; @@ -43,7 +45,7 @@ let source = if (useGit) then git else release; -in stdenv.mkDerivation { +in llvmStdenv.mkDerivation { pname = "clang-ompss2"; inherit (source) src version; @@ -61,13 +63,12 @@ in stdenv.mkDerivation { }; nativeBuildInputs = [ - bash cmake elfutils - llvmPackages_latest.lld + llvmPackages.lld + perl pkg-config python3 - perl which zlib ]; @@ -98,8 +99,13 @@ in stdenv.mkDerivation { cd build cmakeDir="../llvm" cmakeFlagsArray=( - "-DLLVM_HOST_TRIPLE=${stdenv.targetPlatform.config}" + "-DLLVM_HOST_TRIPLE=${llvmStdenv.targetPlatform.config}" + '' + (if "${llvmStdenv.targetPlatform.config}" == "riscv64-unknown-linux-gnu" then '' + "-DLLVM_DEFAULT_TARGET_TRIPLE=riscv64-unknown-linux-gnu" + "-DLLVM_TARGETS_TO_BUILD=RISCV" + '' else '' "-DLLVM_TARGETS_TO_BUILD=host" + '') + '' "-DLLVM_BUILD_LLVM_DYLIB=ON" "-DLLVM_LINK_LLVM_DYLIB=ON" # Required to run clang-ast-dump and clang-tblgen during build @@ -108,7 +114,8 @@ in stdenv.mkDerivation { "-DCMAKE_CXX_FLAGS_DEBUG=-g -ggnu-pubnames" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG=-Wl,--gdb-index" "-DLLVM_LIT_ARGS=-sv --xunit-xml-output=xunit.xml" - "-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;lld" + "-DLLVM_ENABLE_PROJECTS=clang;lld" + "-DLLVM_ENABLE_RUNTIMES=compiler-rt" "-DLLVM_ENABLE_ASSERTIONS=ON" "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON" "-DCMAKE_INSTALL_BINDIR=bin" diff --git a/pkgs/llvm-ompss2/default.nix b/pkgs/llvm-ompss2/default.nix index 9a812693..bee0d548 100644 --- a/pkgs/llvm-ompss2/default.nix +++ b/pkgs/llvm-ompss2/default.nix @@ -56,7 +56,8 @@ in wrapCCWith { echo "--gcc-toolchain=${gcc}" >> $out/nix-support/cc-cflags - wrap clang++ $wrapper $ccPath/clang++ + wrap ${targetConfig}clang++ $wrapper $ccPath/clang++ + wrap ${targetConfig}clang $wrapper $ccPath/clang '' + optionalString (openmp != null) '' echo "export OPENMP_RUNTIME=${ompname}" >> $out/nix-support/cc-wrapper-hook