about summary refs log tree commit diff
path: root/pkgs/development/interpreters/cling
diff options
context:
space:
mode:
authorTom McLaughlin <tom@codedown.io>2022-11-22 15:11:46 -0800
committerTom McLaughlin <tom@codedown.io>2023-04-04 16:38:48 -0700
commit3405841706c4c5c41f35d3fa3a1c5cac42c9ee7b (patch)
tree10125728e727287d6d547eb2fca0657c29469b8e /pkgs/development/interpreters/cling
parent838dae41887ef044a93655830d7b563e3acc391b (diff)
Bringing over more patches
Diffstat (limited to 'pkgs/development/interpreters/cling')
-rw-r--r--pkgs/development/interpreters/cling/default.nix24
-rw-r--r--pkgs/development/interpreters/cling/use-patched-llvm.patch34
2 files changed, 54 insertions, 4 deletions
diff --git a/pkgs/development/interpreters/cling/default.nix b/pkgs/development/interpreters/cling/default.nix
index 5165afb4b9cd8..a4f5118db76fd 100644
--- a/pkgs/development/interpreters/cling/default.nix
+++ b/pkgs/development/interpreters/cling/default.nix
@@ -34,19 +34,35 @@ let
     };
     # clingSrc = /home/tom/tools/cling;
 
-    preConfigure = ''
+    llvmSrc = fetchgit {
+      url = "http://root.cern/git/llvm.git";
+      rev = "cling-v0.9";
+      sha256 = "sha256-jts7DMnXwZF/pzUfWEQeJmj5XlOb51aXn6KExMbmcXg=";
+    };
+    # llvmSrc = /home/tom/tools/llvm;
+
+    prePatch = ''
       echo "add_llvm_external_project(cling)" >> tools/CMakeLists.txt
+
       cp -r $clingSrc ./tools/cling
       chmod -R a+w ./tools/cling
-    '';
 
-    nativeBuildInputs = [ python3 git cmake llvmPackages_9.llvm.dev ];
-    buildInputs = [ libffi llvmPackages_9.llvm zlib ncurses ];
+      mkdir ./interpreter
+      cp -r $llvmSrc ./interpreter/llvm
+      chmod -R a+w ./interpreter/llvm
+    '';
 
     patches = [
+      # Applied to clang src
       ./no-clang-cpp.patch
+
+      # Applied to cling src
+      ./use-patched-llvm.patch
     ];
 
+    nativeBuildInputs = [ python3 git cmake llvmPackages_9.llvm.dev ];
+    buildInputs = [ libffi llvmPackages_9.llvm zlib ncurses ];
+
     strictDeps = true;
 
     cmakeFlags = [
diff --git a/pkgs/development/interpreters/cling/use-patched-llvm.patch b/pkgs/development/interpreters/cling/use-patched-llvm.patch
new file mode 100644
index 0000000000000..5f828ae979ad2
--- /dev/null
+++ b/pkgs/development/interpreters/cling/use-patched-llvm.patch
@@ -0,0 +1,34 @@
+diff --git a/lib/Interpreter/CMakeLists.txt b/lib/Interpreter/CMakeLists.txt
+index 75396717..6a617ab4 100644
+--- a/lib/Interpreter/CMakeLists.txt
++++ b/lib/Interpreter/CMakeLists.txt
+@@ -344,3 +344,29 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cling-compiledata.h
+ 
+ add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/CIFactory.cpp
+                       ${CMAKE_CURRENT_BINARY_DIR}/cling-compiledata.h)
++
++# If LLVM is external, but Clang is builtin, we must use some files
++# from patched (builtin) version of LLVM
++if ((NOT builtin_llvm) AND builtin_clang)
++  set(FixInclude "${CMAKE_SOURCE_DIR}/interpreter/llvm/src/include")
++
++  get_property(P SOURCE IncrementalJIT.cpp PROPERTY INCLUDE_DIRECTORIES)
++  list(INSERT P 0 ${FixInclude})
++  set_property(SOURCE IncrementalJIT.cpp PROPERTY INCLUDE_DIRECTORIES "${P}")
++
++  get_property(P SOURCE IncrementalExecutor.cpp PROPERTY INCLUDE_DIRECTORIES)
++  list(INSERT P 0 ${FixInclude})
++  set_property(SOURCE IncrementalExecutor.cpp PROPERTY INCLUDE_DIRECTORIES "${P}")
++
++  get_property(P SOURCE Interpreter.cpp PROPERTY INCLUDE_DIRECTORIES)
++  list(INSERT P 0 ${FixInclude})
++  set_property(SOURCE Interpreter.cpp PROPERTY INCLUDE_DIRECTORIES "${P}")
++
++  get_property(P SOURCE Transaction.cpp PROPERTY INCLUDE_DIRECTORIES)
++  list(INSERT P 0 ${FixInclude})
++  set_property(SOURCE Transaction.cpp PROPERTY INCLUDE_DIRECTORIES "${P}")
++
++  get_property(P SOURCE TransactionUnloader.cpp PROPERTY INCLUDE_DIRECTORIES)
++  list(INSERT P 0 ${FixInclude})
++  set_property(SOURCE TransactionUnloader.cpp PROPERTY INCLUDE_DIRECTORIES "${P}")
++endif()