diff options
author | Tom McLaughlin <tom@codedown.io> | 2022-11-22 15:11:46 -0800 |
---|---|---|
committer | Tom McLaughlin <tom@codedown.io> | 2023-04-04 16:38:48 -0700 |
commit | 3405841706c4c5c41f35d3fa3a1c5cac42c9ee7b (patch) | |
tree | 10125728e727287d6d547eb2fca0657c29469b8e /pkgs/development/interpreters/cling | |
parent | 838dae41887ef044a93655830d7b563e3acc391b (diff) |
Bringing over more patches
Diffstat (limited to 'pkgs/development/interpreters/cling')
-rw-r--r-- | pkgs/development/interpreters/cling/default.nix | 24 | ||||
-rw-r--r-- | pkgs/development/interpreters/cling/use-patched-llvm.patch | 34 |
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() |