aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/compilers/llvm/rocm/clang.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/llvm/rocm/clang.nix')
-rw-r--r--nixpkgs/pkgs/development/compilers/llvm/rocm/clang.nix66
1 files changed, 66 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/llvm/rocm/clang.nix b/nixpkgs/pkgs/development/compilers/llvm/rocm/clang.nix
new file mode 100644
index 00000000000..6bb23b77543
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/llvm/rocm/clang.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, python
+, llvm
+, clang-tools-extra_src ? null
+, lld
+
+, version
+, src
+}:
+
+stdenv.mkDerivation rec {
+ inherit version src;
+
+ pname = "clang";
+
+ nativeBuildInputs = [ cmake python ];
+
+ buildInputs = [ llvm ];
+
+ hardeningDisable = [ "all" ];
+
+ cmakeFlags = [
+ "-DLLVM_CMAKE_PATH=${llvm}/lib/cmake/llvm"
+ "-DLLVM_MAIN_SRC_DIR=${llvm.src}"
+ "-DCLANG_SOURCE_DIR=${src}"
+ "-DLLVM_ENABLE_RTTI=ON"
+ ];
+
+ VCSVersion = ''
+ #undef LLVM_REVISION
+ #undef LLVM_REPOSITORY
+ #undef CLANG_REVISION
+ #undef CLANG_REPOSITORY
+ '';
+
+ postUnpack = stdenv.lib.optionalString (!(isNull clang-tools-extra_src)) ''
+ ln -s ${clang-tools-extra_src} $sourceRoot/tools/extra
+ '';
+
+ # Rather than let cmake extract version information from LLVM or
+ # clang source control repositories, we generate the wanted
+ # `VCSVersion.inc` file ourselves and remove it from the
+ # depencencies of the `clangBasic` target.
+ preConfigure = ''
+ sed 's/ ''${version_inc}//' -i lib/Basic/CMakeLists.txt
+ sed 's|sys::path::parent_path(BundlerExecutable)|StringRef("${llvm}/bin")|' -i tools/clang-offload-bundler/ClangOffloadBundler.cpp
+ sed 's|\([[:space:]]*std::string Linker = \)getToolChain().GetProgramPath(getShortName())|\1"${lld}/bin/ld.lld"|' -i lib/Driver/ToolChains/AMDGPU.cpp
+ substituteInPlace lib/Driver/ToolChains/AMDGPU.h --replace ld.lld ${lld}/bin/ld.lld
+ sed 's|configure_file(AST/gen_ast_dump_json_test.py ''${LLVM_TOOLS_BINARY_DIR}/gen_ast_dump_json_test.py COPYONLY)||' -i test/CMakeLists.txt
+ '';
+
+ postConfigure = ''
+ mkdir -p lib/Basic
+ echo "$VCSVersion" > lib/Basic/VCSVersion.inc
+ '';
+
+ meta = with stdenv.lib; {
+ description = "ROCm fork of the clang C/C++/Objective-C/Objective-C++ LLVM compiler frontend";
+ homepage = "https://llvm.org/";
+ license = with licenses; [ ncsa ];
+ maintainers = with maintainers; [ danieldk ];
+ platforms = platforms.linux;
+ };
+}