diff --git a/artiq/compiler/targets.py b/artiq/compiler/targets.py index 5f043eb0e3..5e4d0d78da 100644 --- a/artiq/compiler/targets.py +++ b/artiq/compiler/targets.py @@ -2,7 +2,6 @@ from artiq.compiler import types, ir from llvmlite import ir as ll, binding as llvm -llvm.initialize() llvm.initialize_all_targets() llvm.initialize_all_asmprinters() @@ -108,35 +107,19 @@ def target_machine(self): return llmachine def optimize(self, llmodule): - llpassmgr = llvm.create_module_pass_manager() - - # Register our alias analysis passes. - llpassmgr.add_basic_alias_analysis_pass() - llpassmgr.add_type_based_alias_analysis_pass() - - # Start by cleaning up after our codegen and exposing as much - # information to LLVM as possible. - llpassmgr.add_constant_merge_pass() - llpassmgr.add_cfg_simplification_pass() - llpassmgr.add_instruction_combining_pass() - llpassmgr.add_sroa_pass() - llpassmgr.add_dead_code_elimination_pass() - llpassmgr.add_function_attrs_pass() - llpassmgr.add_global_optimizer_pass() - - # Now, actually optimize the code. - llpassmgr.add_function_inlining_pass(275) - llpassmgr.add_ipsccp_pass() - llpassmgr.add_instruction_combining_pass() - llpassmgr.add_gvn_pass() - llpassmgr.add_cfg_simplification_pass() - llpassmgr.add_licm_pass() - - # Clean up after optimizing. - llpassmgr.add_dead_arg_elimination_pass() - llpassmgr.add_global_dce_pass() - - llpassmgr.run(llmodule) + llmachine = self.target_machine() + pto = llvm.create_pipeline_tuning_options(size_level=1) + + # This combination of levels gets mapped to the -Os PassManagerBuilder default in + # llvmlite 0.45. The mapping is slightly nonsensical in that -Oz (which is more + # aggressively optimizing for size at the expense of runtime) is accessed via + # speed_level=size_level=2. + pto.speed_level = 1 + + pb = llvm.create_pass_builder(llmachine, pto) + llpassmgr = pb.getModulePassManager() + + llpassmgr.run(llmodule, pb) def compile(self, module): """Compile the module to a relocatable object for this target.""" diff --git a/artiq/firmware/ksupport/ksupport.ld b/artiq/firmware/ksupport/ksupport.ld index 24c4d2524f..4f3dd6265a 100644 --- a/artiq/firmware/ksupport/ksupport.ld +++ b/artiq/firmware/ksupport/ksupport.ld @@ -71,5 +71,6 @@ SECTIONS /DISCARD/ : { *(.debug*) + *(.riscv.attributes) } } diff --git a/artiq/test/lit/embedding/annotation.py b/artiq/test/lit/embedding/annotation.py index 21ae253322..7d79fbfc07 100644 --- a/artiq/test/lit/embedding/annotation.py +++ b/artiq/test/lit/embedding/annotation.py @@ -4,7 +4,7 @@ from artiq.language.core import * from artiq.language.types import * -# CHECK: i64 @_Z13testbench.foozz\(i64 %ARG.x, \{ i1, i64 \} %ARG.y\) +# CHECK-L: i64 @_Z13testbench.foozz(i64 @kernel def foo(x: TInt64, y: TInt64 = 1) -> TInt64: diff --git a/artiq/test/lit/embedding/annotation_py.py b/artiq/test/lit/embedding/annotation_py.py index c790b69145..86da7f031e 100644 --- a/artiq/test/lit/embedding/annotation_py.py +++ b/artiq/test/lit/embedding/annotation_py.py @@ -8,19 +8,19 @@ from artiq.language.core import * from artiq.language.types import * -# CHECK-L: i64 @_Z13testbench.foozz(i64 %ARG.x, { i1, i32 } %ARG.y) +# CHECK-L: i64 @_Z13testbench.foozz(i64 @kernel def foo(x: np.int64, y: np.int32 = 1) -> np.int64: print(x + y) return x + y -# CHECK-L: void @_Z13testbench.barzz() +# CHECK-L: void @_Z13testbench.barzz(i32 @kernel def bar(x: np.int32) -> None: print(x) -# CHECK-L: @_Z21testbench.unpack_listzz({ i1, i64 }* nocapture writeonly sret({ i1, i64 }) %.1, { i64*, i32 }* %ARG.xs) +# CHECK-L: @_Z21testbench.unpack_listzz(ptr @kernel def unpack_list(xs: List[np.int64]) -> Tuple[bool, np.int64]: print(xs) diff --git a/artiq/test/lit/embedding/index_tuple.py b/artiq/test/lit/embedding/index_tuple.py index fced902016..90f8f47e3d 100644 --- a/artiq/test/lit/embedding/index_tuple.py +++ b/artiq/test/lit/embedding/index_tuple.py @@ -4,7 +4,7 @@ from artiq.language.core import * from artiq.language.types import * -# CHECK-L: void @_Z16testbench.unpackzz({ i32, { i8*, i32 }, i1 } %ARG.x) +# CHECK-L: void @_Z16testbench.unpackzz({ i32, { ptr, i32 }, i1 } %ARG.x) @kernel def unpack(x): diff --git a/artiq/test/lit/embedding/invariant_propagation.py b/artiq/test/lit/embedding/invariant_propagation.py index e1af5c9c1c..71a7f852b7 100644 --- a/artiq/test/lit/embedding/invariant_propagation.py +++ b/artiq/test/lit/embedding/invariant_propagation.py @@ -15,8 +15,8 @@ def run(self): if self.foo: print("bar") else: - # Make sure all the code for this branch will be completely elided: - # CHECK-NOT: baz + # The kernel_invariant annotation should generate !invariant.load metadata + # CHECK: invariant.load print("baz") obj = Class() diff --git a/artiq/test/lit/embedding/subkernel_message_recv.py b/artiq/test/lit/embedding/subkernel_message_recv.py index 35e094aa64..dcc4e70503 100644 --- a/artiq/test/lit/embedding/subkernel_message_recv.py +++ b/artiq/test/lit/embedding/subkernel_message_recv.py @@ -9,13 +9,13 @@ def entrypoint(): # CHECK: call void @subkernel_load_run\(i32 1, i8 1, i1 true\), !dbg !. message_pass() # CHECK-NOT: call void @subkernel_send_message\(i32 ., i1 false, i8 1, i8 1, .*\), !dbg !. - # CHECK: call i8 @subkernel_await_message\(i32 2, i64 -1, { i8\*, i32 }\* nonnull .*, i8 1, i8 1\), !dbg !. + # CHECK: call i8 @subkernel_await_message\(i32 2, i64 -1, ptr nonnull .*, i8 1, i8 1\), !dbg !. subkernel_recv("message", TInt32) # CHECK-L: declare void @subkernel_load_run(i32, i8, i1) local_unnamed_addr # CHECK-NOT-L: declare void @subkernel_send_message(i32, i1, i8, i8, { i8*, i32 }*, i8**) local_unnamed_addr -# CHECK-L: declare i8 @subkernel_await_message(i32, i64, { i8*, i32 }*, i8, i8) local_unnamed_addr +# CHECK-L: declare i8 @subkernel_await_message(i32, i64, ptr, i8, i8) local_unnamed_addr # CHECK-NOT-L: declare void @subkernel_await_finish(i32, i64) local_unnamed_addr @subkernel(destination=1) def message_pass() -> TNone: diff --git a/artiq/test/lit/embedding/subkernel_message_send.py b/artiq/test/lit/embedding/subkernel_message_send.py index 3f0f77e357..04b9da0359 100644 --- a/artiq/test/lit/embedding/subkernel_message_send.py +++ b/artiq/test/lit/embedding/subkernel_message_send.py @@ -14,7 +14,7 @@ def entrypoint(): # CHECK-L: declare void @subkernel_load_run(i32, i8, i1) local_unnamed_addr -# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, { i8*, i32 }*, i8**) local_unnamed_addr +# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, ptr, ptr) local_unnamed_addr @subkernel(destination=1) def message_pass() -> TNone: subkernel_recv("message", TInt32) diff --git a/artiq/test/lit/embedding/subkernel_return.py b/artiq/test/lit/embedding/subkernel_return.py index 3c9d1169af..fe1777253a 100644 --- a/artiq/test/lit/embedding/subkernel_return.py +++ b/artiq/test/lit/embedding/subkernel_return.py @@ -9,13 +9,13 @@ def entrypoint(): # CHECK: call void @subkernel_load_run\(i32 1, i8 1, i1 true\), !dbg !. # CHECK-NOT: call void @subkernel_send_message\(.*\), !dbg !. returning() - # CHECK: call i8 @subkernel_await_message\(i32 1, i64 -1, { i8\*, i32 }\* nonnull .*, i8 1, i8 1\), !dbg !. + # CHECK: call i8 @subkernel_await_message\(i32 1, i64 -1, ptr nonnull .*, i8 1, i8 1\), !dbg !. # CHECK: call void @subkernel_await_finish\(i32 1, i64 -1\), !dbg !. subkernel_await(returning) # CHECK-L: declare void @subkernel_load_run(i32, i8, i1) local_unnamed_addr # CHECK-NOT-L: declare void @subkernel_send_message(i32, i1, i8, i8, { i8*, i32 }*, i8**) local_unnamed_addr -# CHECK-L: declare i8 @subkernel_await_message(i32, i64, { i8*, i32 }*, i8, i8) local_unnamed_addr +# CHECK-L: declare i8 @subkernel_await_message(i32, i64, ptr, i8, i8) local_unnamed_addr # CHECK-L: declare void @subkernel_await_finish(i32, i64) local_unnamed_addr @subkernel(destination=1) def returning() -> TInt32: diff --git a/artiq/test/lit/embedding/subkernel_self_args.py b/artiq/test/lit/embedding/subkernel_self_args.py index 5aebed2e91..44aae9ab19 100644 --- a/artiq/test/lit/embedding/subkernel_self_args.py +++ b/artiq/test/lit/embedding/subkernel_self_args.py @@ -22,4 +22,4 @@ def entrypoint(): a.kernel_entrypoint() # CHECK-L: declare void @subkernel_load_run(i32, i8, i1) local_unnamed_addr -# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, { i8*, i32 }*, i8**) local_unnamed_addr +# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, ptr, ptr) local_unnamed_addr diff --git a/artiq/test/lit/embedding/subkernel_with_arg.py b/artiq/test/lit/embedding/subkernel_with_arg.py index 1145165864..86e61140f8 100644 --- a/artiq/test/lit/embedding/subkernel_with_arg.py +++ b/artiq/test/lit/embedding/subkernel_with_arg.py @@ -12,7 +12,7 @@ def entrypoint(): # CHECK-L: declare void @subkernel_load_run(i32, i8, i1) local_unnamed_addr -# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, { i8*, i32 }*, i8**) local_unnamed_addr +# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, ptr, ptr) local_unnamed_addr @subkernel(destination=1) def accept_arg(arg: TInt32) -> TNone: pass diff --git a/artiq/test/lit/embedding/subkernel_with_opt_arg.py b/artiq/test/lit/embedding/subkernel_with_opt_arg.py index fb5cc3df12..91b2c1aeeb 100644 --- a/artiq/test/lit/embedding/subkernel_with_opt_arg.py +++ b/artiq/test/lit/embedding/subkernel_with_opt_arg.py @@ -15,7 +15,7 @@ def entrypoint(): # CHECK-L: declare void @subkernel_load_run(i32, i8, i1) local_unnamed_addr -# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, { i8*, i32 }*, i8**) local_unnamed_addr +# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, ptr, ptr) local_unnamed_addr @subkernel(destination=1) def accept_arg(arg_a, arg_b=5) -> TNone: pass diff --git a/artiq/test/lit/embedding/syscall_arg_attrs.py b/artiq/test/lit/embedding/syscall_arg_attrs.py index 8d0c05c34d..616201451d 100644 --- a/artiq/test/lit/embedding/syscall_arg_attrs.py +++ b/artiq/test/lit/embedding/syscall_arg_attrs.py @@ -11,20 +11,20 @@ @kernel def entrypoint(): - # CHECK: call void @accept_str\({ i8\*, i32 } + # CHECK: call void @accept_str\({ ptr, i32 } accept_str("foo") - # CHECK: call void @return_str\({ i8\*, i32 }\* nonnull sret + # CHECK: call void @return_str\(ptr nonnull sret return_str() -# CHECK: declare void @accept_str\({ i8\*, i32 }\) +# CHECK: declare void @accept_str\({ ptr, i32 }\) @syscall def accept_str(name: TStr) -> TNone: pass -# CHECK: declare void @return_str\({ i8\*, i32 }\* sret\({ i8\*, i32 }\)\) +# CHECK: declare void @return_str\(ptr sret\({ ptr, i32 }\)\) @syscall def return_str() -> TStr: pass diff --git a/artiq/test/lit/embedding/syscall_flags.py b/artiq/test/lit/embedding/syscall_flags.py index b2e27d6a07..a7c3c3caec 100644 --- a/artiq/test/lit/embedding/syscall_flags.py +++ b/artiq/test/lit/embedding/syscall_flags.py @@ -6,7 +6,7 @@ # CHECK: call void @foo\(\)(, !dbg !\d+)? -# CHECK-L: ; Function Attrs: inaccessiblememonly nounwind +# CHECK-L: ; Function Attrs: nounwind memory(inaccessiblemem: readwrite) # CHECK-NEXT-L: declare void @foo() @syscall(flags={"nounwind", "nowrite"}) @@ -15,7 +15,7 @@ def foo() -> TNone: # sret nowrite functions shouldn't be marked inaccessiblememonly. # CHECK-L: ; Function Attrs: nounwind -# CHECK-NEXT-L: declare void @bar({ i32, i64 }* sret({ i32, i64 })) +# CHECK-NEXT-L: declare void @bar(ptr sret({ i32, i64 })) @syscall(flags={"nounwind", "nowrite"}) def bar() -> TTuple([TInt32, TInt64]): pass diff --git a/flake.nix b/flake.nix index 89aae88d62..f888e96518 100644 --- a/flake.nix +++ b/flake.nix @@ -74,8 +74,6 @@ QML2_IMPORT_PATH = "${qtbase}/${qtQmlPrefix}"; }; - inherit (pkgs.callPackage ./llvm {}) llvm_15 lld_15 llvmPackages_15; - rust = pkgs.rust-bin.nightly."2021-09-01".default.override { extensions = ["rust-src"]; targets = []; @@ -158,30 +156,6 @@ ''; }; - llvmlite-new = pkgs.python3Packages.buildPythonPackage rec { - pname = "llvmlite"; - version = "0.44.0"; - src = pkgs.fetchFromGitHub { - owner = "numba"; - repo = "llvmlite"; - rev = "v${version}"; - sha256 = "sha256-ZIA/JfK9ZP00Zn6SZuPus30Xw10hn3DArHCkzBZAUV0="; - }; - pyproject = true; - build-system = [pkgs.python3Packages.setuptools]; - nativeBuildInputs = [llvm_15]; - # Disable static linking - # https://github.com/numba/llvmlite/issues/93 - postPatch = '' - substituteInPlace ffi/Makefile.linux --replace "-static-libstdc++" "" - substituteInPlace llvmlite/tests/test_binding.py --replace "test_linux" "nope" - ''; - # Set directory containing llvm-config binary - preConfigure = '' - export LLVM_CONFIG=${llvm_15.dev}/bin/llvm-config - ''; - }; - artiq-upstream = pkgs.python3Packages.buildPythonPackage rec { pname = "artiq"; version = artiqVersion; @@ -195,10 +169,9 @@ ''; nativeBuildInputs = [pkgs.qt6.wrapQtAppsHook]; - # keep llvm_x and lld_x in sync with llvmlite propagatedBuildInputs = - [llvm_15 lld_15 sipyco.packages.x86_64-linux.sipyco pythonparser llvmlite-new pkgs.qt6.qtsvg artiq-comtools.packages.x86_64-linux.artiq-comtools] - ++ (with pkgs.python3Packages; [pyqtgraph pygit2 numpy dateutil scipy prettytable pyserial levenshtein h5py pyqt6 qasync tqdm lmdb jsonschema platformdirs]); + [pkgs.llvm_20 pkgs.lld_20 sipyco.packages.x86_64-linux.sipyco pythonparser pkgs.qt6.qtsvg artiq-comtools.packages.x86_64-linux.artiq-comtools] + ++ (with pkgs.python3Packages; [llvmlite pyqtgraph pygit2 numpy dateutil scipy prettytable pyserial levenshtein h5py pyqt6 qasync tqdm lmdb jsonschema platformdirs]); dontWrapQtApps = true; postFixup = '' @@ -219,10 +192,10 @@ "--set FONTCONFIG_FILE ${pkgs.fontconfig.out}/etc/fonts/fonts.conf" ]; - # FIXME: automatically propagate lld_15 llvm_15 dependencies + # FIXME: automatically propagate lld_20 llvm_20 dependencies # cacert is required in the check stage only, as certificates are to be # obtained from system elsewhere - nativeCheckInputs = [lld_15 llvm_15 libartiq-support pkgs.lit pkgs.outputcheck pkgs.cacert]; + nativeCheckInputs = with pkgs; [lld_20 llvm_20 lit outputcheck cacert] ++ [libartiq-support]; checkPhase = '' python -m unittest discover -v artiq.test @@ -308,9 +281,9 @@ nativeBuildInputs = [ (pkgs.python3.withPackages (ps: [migen misoc (artiq.withExperimentalFeatures experimentalFeatures) ps.packaging])) rust - llvm_15 - lld_15 - llvmPackages_15.clang-unwrapped + pkgs.llvm_20 + pkgs.lld_20 + pkgs.llvmPackages_20.clang-unwrapped vivado ]; overrideMain = _: { @@ -498,6 +471,9 @@ [ git lit + lld_20 + llvm_20 + llvmPackages_20.clang-unwrapped outputcheck pdf2svg @@ -510,9 +486,6 @@ (python3.withPackages (ps: [migen misoc microscope ps.packaging ps.paramiko] ++ artiq.propagatedBuildInputs)) ] ++ [ - llvm_15 - lld_15 - llvmPackages_15.clang-unwrapped rust latex-artiq-manual artiq-frontend-dev-wrappers @@ -538,9 +511,9 @@ packages = [ rust - llvm_15 - lld_15 - llvmPackages_15.clang-unwrapped + pkgs.llvm_20 + pkgs.lld_20 + pkgs.llvmPackages_20.clang-unwrapped packages.x86_64-linux.vivado packages.x86_64-linux.openocd-bscanspi @@ -584,8 +557,8 @@ ] ++ ps.paramiko.optional-dependencies.ed25519 )) - llvm_15 - lld_15 + pkgs.llvm_20 + pkgs.lld_20 pkgs.openssh packages.x86_64-linux.openocd-bscanspi # for the bscanspi bitstreams ]; diff --git a/llvm/15/clang/default.nix b/llvm/15/clang/default.nix deleted file mode 100644 index d4e8d3558b..0000000000 --- a/llvm/15/clang/default.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - lib, - stdenv, - cmake, - ninja, - python3, - libxml2, - runCommand, - libllvm, - src, - version, - llvm_meta, - getVersionFile, -}: -stdenv.mkDerivation { - pname = "clang"; - inherit version; - - # Extract clang from monorepo - src = runCommand "clang-src-${version}" {} '' - mkdir -p "$out" - cp -r ${src}/cmake "$out" - cp -r ${src}/clang "$out" - cp -r ${src}/clang-tools-extra "$out" - ''; - - sourceRoot = "clang-src-${version}/clang"; - - outputs = [ - "out" - "lib" - "dev" - "python" - ]; - - patches = [ - (getVersionFile "clang/purity.patch") - (getVersionFile "clang/gnu-install-dirs.patch") - ]; - - nativeBuildInputs = [ - cmake - ninja - python3 - ]; - buildInputs = [ - libxml2 - libllvm - ]; - - cmakeFlags = [ - "-DLLVM_ENABLE_RTTI=ON" - "-DCLANG_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/clang" - "-DLLVM_TABLEGEN_EXE=${libllvm.dev}/bin/llvm-tblgen" - ]; - - postPatch = '' - # Link clang-tools-extra - (cd tools && ln -s ../../clang-tools-extra extra) - ''; - - postInstall = '' - # Create cpp symlink - ln -sv $out/bin/clang $out/bin/cpp - - # Move libclang to lib output - moveToOutput "lib/libclang.*" "$lib" - moveToOutput "lib/libclang-cpp.*" "$lib" - - # Setup python output - mkdir -p $python/bin $python/share/clang/ - mv $out/bin/{git-clang-format,scan-view} $python/bin - if [ -e $out/bin/set-xcode-analyzer ]; then - mv $out/bin/set-xcode-analyzer $python/bin - fi - mv $out/share/clang/*.py $python/share/clang - - # Remove test binary - rm $out/bin/c-index-test - - # Move tblgen to dev - mkdir -p $dev/bin - cp bin/clang-tblgen $dev/bin - ''; - - passthru = { - inherit libllvm; - isClang = true; - }; - - meta = - llvm_meta - // { - description = "C language family frontend for LLVM"; - homepage = "https://clang.llvm.org/"; - }; -} diff --git a/llvm/15/clang/gnu-install-dirs.patch b/llvm/15/clang/gnu-install-dirs.patch deleted file mode 100644 index f767c56836..0000000000 --- a/llvm/15/clang/gnu-install-dirs.patch +++ /dev/null @@ -1,105 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index c27beec313d7..480f13e73c9f 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -78,15 +78,17 @@ if(CLANG_BUILT_STANDALONE) - if (NOT LLVM_CONFIG_FOUND) - # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config - # path is removed. -- set(MAIN_INCLUDE_DIR "${LLVM_INCLUDE_DIR}") -+ set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) - set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}") - # N.B. this is just a default value, the CACHE PATHs below can be overriden. - set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm") - set(TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}") - set(LIBRARY_DIR "${LLVM_LIBRARY_DIR}") -+ else() -+ set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}") - endif() - -- set(LLVM_MAIN_INCLUDE_DIR "${MAIN_INCLUDE_DIR}" CACHE PATH "Path to llvm/include") -+ set(LLVM_INCLUDE_DIRS ${INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") - set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree") - set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree") - set(LLVM_TOOLS_BINARY_DIR "${TOOLS_BINARY_DIR}" CACHE PATH "Path to llvm/bin") -@@ -128,7 +130,7 @@ if(CLANG_BUILT_STANDALONE) - set(LLVM_INCLUDE_TESTS ON) - endif() - -- include_directories("${LLVM_BINARY_DIR}/include" "${LLVM_MAIN_INCLUDE_DIR}") -+ include_directories(${LLVM_INCLUDE_DIRS}) - link_directories("${LLVM_LIBRARY_DIR}") - - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) -diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake -index 21ac332e4f5f..b16c314bd1e2 100644 ---- a/cmake/modules/AddClang.cmake -+++ b/cmake/modules/AddClang.cmake -@@ -119,8 +119,8 @@ macro(add_clang_library name) - install(TARGETS ${lib} - COMPONENT ${lib} - ${export_to_clangtargets} -- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} -- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} -+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" -+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - - if (NOT LLVM_ENABLE_IDE) -diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt -index 6e2060991b92..b9bc930d26b8 100644 ---- a/lib/Headers/CMakeLists.txt -+++ b/lib/Headers/CMakeLists.txt -@@ -420,7 +420,7 @@ add_header_target("openmp-resource-headers" ${openmp_wrapper_files}) - add_header_target("windows-resource-headers" ${windows_only_files}) - add_header_target("utility-resource-headers" ${utility_files}) - --set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) -+set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) - - ############################################################# - # Install rules for the catch-all clang-resource-headers target -diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt -index 8d95d0900e8c..ebc70ff7526d 100644 ---- a/tools/libclang/CMakeLists.txt -+++ b/tools/libclang/CMakeLists.txt -@@ -180,7 +180,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS}) - COMPONENT - libclang-python-bindings - DESTINATION -- "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages") -+ "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages") - endforeach() - if(NOT LLVM_ENABLE_IDE) - add_custom_target(libclang-python-bindings) -diff --git a/tools/scan-build-py/CMakeLists.txt b/tools/scan-build-py/CMakeLists.txt -index 061dc7ef4dd9..adc54b2edc32 100644 ---- a/tools/scan-build-py/CMakeLists.txt -+++ b/tools/scan-build-py/CMakeLists.txt -@@ -88,7 +88,7 @@ foreach(lib ${LibScanbuild}) - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib}) - list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib}) - install(PROGRAMS lib/libscanbuild/${lib} -- DESTINATION lib/libscanbuild -+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild" - COMPONENT scan-build-py) - endforeach() - -@@ -106,7 +106,7 @@ foreach(resource ${LibScanbuildResources}) - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource}) - list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource}) - install(PROGRAMS lib/libscanbuild/resources/${resource} -- DESTINATION lib/libscanbuild/resources -+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libscanbuild/resources" - COMPONENT scan-build-py) - endforeach() - -@@ -122,7 +122,7 @@ foreach(lib ${LibEar}) - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib}) - list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib}) - install(PROGRAMS lib/libear/${lib} -- DESTINATION lib/libear -+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/libear" - COMPONENT scan-build-py) - endforeach() - diff --git a/llvm/15/clang/purity.patch b/llvm/15/clang/purity.patch deleted file mode 100644 index 1c94f293eb..0000000000 --- a/llvm/15/clang/purity.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001 -From: Will Dietz -Date: Thu, 18 May 2017 11:56:12 -0500 -Subject: [PATCH] "purity" patch for 5.0 - ---- - lib/Driver/ToolChains/Gnu.cpp | 7 ------- - 1 file changed, 7 deletions(-) - -diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp -index fe3c0191bb..c6a482bece 100644 ---- a/lib/Driver/ToolChains/Gnu.cpp -+++ b/lib/Driver/ToolChains/Gnu.cpp -@@ -487,13 +487,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, - } else { - if (Args.hasArg(options::OPT_rdynamic)) - CmdArgs.push_back("-export-dynamic"); - -- if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE && -- !Args.hasArg(options::OPT_r)) { -- CmdArgs.push_back("-dynamic-linker"); -- CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) + -- ToolChain.getDynamicLinker(Args))); -- } - } - - CmdArgs.push_back("-o"); --- -2.11.0 diff --git a/llvm/15/lld/default.nix b/llvm/15/lld/default.nix deleted file mode 100644 index 653c33727b..0000000000 --- a/llvm/15/lld/default.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - lib, - stdenv, - cmake, - ninja, - libxml2, - libllvm, - runCommand, - src, - version, - llvm_meta, - getVersionFile, -}: -stdenv.mkDerivation { - pname = "lld"; - inherit version; - - src = runCommand "lld-src-${version}" {} '' - mkdir -p "$out" - cp -r ${src}/cmake "$out" - cp -r ${src}/lld "$out" - mkdir -p "$out/libunwind" - cp -r ${src}/libunwind/include "$out/libunwind" - mkdir -p "$out/llvm" - ''; - - sourceRoot = "lld-src-${version}/lld"; - - outputs = ["out" "lib" "dev"]; - - patches = [ - (getVersionFile "lld/gnu-install-dirs.patch") - ]; - - nativeBuildInputs = [cmake ninja]; - buildInputs = [libllvm libxml2]; - - cmakeFlags = [ - "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld" - "-DLLVM_TABLEGEN_EXE=${libllvm.dev}/bin/llvm-tblgen" - ]; - - meta = - llvm_meta - // { - description = "LLVM linker"; - homepage = "https://lld.llvm.org/"; - }; -} diff --git a/llvm/15/lld/gnu-install-dirs.patch b/llvm/15/lld/gnu-install-dirs.patch deleted file mode 100644 index ea62b2ad50..0000000000 --- a/llvm/15/lld/gnu-install-dirs.patch +++ /dev/null @@ -1,46 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index dcc649629a4b..58dca54642e4 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -70,13 +70,15 @@ if(LLD_BUILT_STANDALONE) - if (NOT LLVM_CONFIG_FOUND) - # Pull values from LLVMConfig.cmake. We can drop this once the llvm-config - # path is removed. -- set(MAIN_INCLUDE_DIR "${LLVM_INCLUDE_DIR}") -+ set(INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}) - set(LLVM_OBJ_DIR "${LLVM_BINARY_DIR}") - # N.B. this is just a default value, the CACHE PATHs below can be overridden. - set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm") -+ else() -+ set(INCLUDE_DIRS "${LLVM_BINARY_DIR}/include" "${MAIN_INCLUDE_DIR}") - endif() - -- set(LLVM_MAIN_INCLUDE_DIR "${MAIN_INCLUDE_DIR}" CACHE PATH "Path to llvm/include") -+ set(LLVM_INCLUDE_DIRS ${INCLUDE_DIRS} CACHE PATH "Path to llvm/include and any other header dirs needed") - set(LLVM_BINARY_DIR "${LLVM_OBJ_ROOT}" CACHE PATH "Path to LLVM build tree") - set(LLVM_MAIN_SRC_DIR "${MAIN_SRC_DIR}" CACHE PATH "Path to LLVM source tree") - -@@ -95,7 +97,7 @@ if(LLD_BUILT_STANDALONE) - - set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}") - -- include_directories("${LLVM_BINARY_DIR}/include" ${LLVM_INCLUDE_DIRS}) -+ include_directories(${LLVM_INCLUDE_DIRS}) - link_directories(${LLVM_LIBRARY_DIRS}) - - if(LLVM_INCLUDE_TESTS) -diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake -index d3924f7243d4..42a7cd62281c 100644 ---- a/cmake/modules/AddLLD.cmake -+++ b/cmake/modules/AddLLD.cmake -@@ -18,8 +18,8 @@ macro(add_lld_library name) - install(TARGETS ${name} - COMPONENT ${name} - ${export_to_lldtargets} -- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} -- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} -+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" -+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - - if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) diff --git a/llvm/15/llvm/default.nix b/llvm/15/llvm/default.nix deleted file mode 100644 index 8cbf6c75f9..0000000000 --- a/llvm/15/llvm/default.nix +++ /dev/null @@ -1,86 +0,0 @@ -{ - lib, - stdenv, - cmake, - ninja, - python3, - libffi, - libxml2, - ncurses, - zlib, - runCommand, - src, - version, - llvm_meta, - getVersionFile, -}: -stdenv.mkDerivation { - pname = "llvm"; - inherit version; - - src = runCommand "llvm-src-${version}" {} '' - mkdir -p "$out" - cp -r ${src}/llvm "$out" - cp -r ${src}/cmake "$out" - cp -r ${src}/third-party "$out" - ''; - - sourceRoot = "llvm-src-${version}/llvm"; - - outputs = ["out" "lib" "dev" "python"]; - - patches = [ - (getVersionFile "llvm/gnu-install-dirs.patch") - (getVersionFile "llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch") - (getVersionFile "llvm/lit-shell-script-runner-set-dyld-library-path.patch") - ]; - - nativeBuildInputs = [cmake ninja python3]; - buildInputs = [libxml2 libffi]; - propagatedBuildInputs = [ncurses zlib]; - - cmakeBuildType = "Release"; - - cmakeFlags = [ - "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm" - "-DLLVM_ENABLE_RTTI=ON" - "-DLLVM_LINK_LLVM_DYLIB=ON" - "-DLLVM_INSTALL_UTILS=ON" - "-DLLVM_BUILD_TESTS=OFF" - "-DLLVM_ENABLE_FFI=ON" - "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}" - "-DLLVM_ENABLE_DUMP=ON" - "-DLLVM_ENABLE_TERMINFO=ON" - "-DLLVM_INCLUDE_TESTS=OFF" - ]; - - LDFLAGS = "-Wl,--build-id=sha1"; - - postInstall = '' - # Move opt-viewer to python output - mkdir -p $python/share - mv $out/share/opt-viewer $python/share/opt-viewer - - # Move llvm-config to dev output - moveToOutput "bin/llvm-config*" "$dev" - - # Move llvm-tblgen to dev output (needed by clang and lld) - moveToOutput "bin/llvm-tblgen" "$dev" - - # Fix cmake config to point to dev output - substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-release.cmake" \ - --replace-fail "$out/bin/llvm-config" "$dev/bin/llvm-config" \ - --replace-fail "$out/bin/llvm-tblgen" "$dev/bin/llvm-tblgen" - - substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \ - --replace-fail 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")' - ''; - - meta = - llvm_meta - // { - description = "LLVM compiler infrastructure"; - homepage = "https://llvm.org/"; - }; -} diff --git a/llvm/15/llvm/gnu-install-dirs.patch b/llvm/15/llvm/gnu-install-dirs.patch deleted file mode 100644 index 0ef317af8c..0000000000 --- a/llvm/15/llvm/gnu-install-dirs.patch +++ /dev/null @@ -1,138 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 45399dc0537e..5d946e9e6583 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -942,7 +942,7 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "") - add_subdirectory(${TENSORFLOW_AOT_PATH}/xla_aot_runtime_src - ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime) - install(TARGETS tf_xla_runtime EXPORT LLVMExports -- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime) -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime) - set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime) - # Once we add more modules, we should handle this more automatically. - if (DEFINED LLVM_OVERRIDE_MODEL_HEADER_INLINERSIZEMODEL) -diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake -index 057431208322..56f0dcb258da 100644 ---- a/cmake/modules/AddLLVM.cmake -+++ b/cmake/modules/AddLLVM.cmake -@@ -844,8 +844,8 @@ macro(add_llvm_library name) - get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella}) - install(TARGETS ${name} - ${export_to_llvmexports} -- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name} -- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name} -+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name} -+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name}) - - if (NOT LLVM_ENABLE_IDE) -@@ -2007,7 +2007,7 @@ function(llvm_install_library_symlink name dest type) - set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX}) - set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX}) - -- set(output_dir lib${LLVM_LIBDIR_SUFFIX}) -+ set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}) - if(WIN32 AND "${type}" STREQUAL "SHARED") - set(output_dir "${CMAKE_INSTALL_BINDIR}") - endif() -@@ -2271,15 +2271,15 @@ function(llvm_setup_rpath name) - - if (APPLE) - set(_install_name_dir INSTALL_NAME_DIR "@rpath") -- set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) - elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS) - # $ORIGIN is not interpreted at link time by aix ld. - # Since BUILD_SHARED_LIBS is only recommended for use by developers, - # hardcode the rpath to build/install lib dir first in this mode. - # FIXME: update this when there is better solution. -- set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) - elseif(UNIX) -- set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) -+ set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir}) - if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") - set_property(TARGET ${name} APPEND_STRING PROPERTY - LINK_FLAGS " -Wl,-z,origin ") -diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake -index 891c9e6d618c..8d963f3b0069 100644 ---- a/cmake/modules/AddOCaml.cmake -+++ b/cmake/modules/AddOCaml.cmake -@@ -147,9 +147,9 @@ function(add_ocaml_library name) - endforeach() - - if( APPLE ) -- set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}") -+ set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") - elseif( UNIX ) -- set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}") -+ set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}") - endif() - list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}") - -diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt -index d4b0ab959148..26ed981fd09f 100644 ---- a/cmake/modules/CMakeLists.txt -+++ b/cmake/modules/CMakeLists.txt -@@ -128,7 +128,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS - ) - list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS) - --extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "lib\${LLVM_LIBDIR_SUFFIX}") -+extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}") - set(LLVM_CONFIG_LIBRARY_DIRS - "${LLVM_CONFIG_LIBRARY_DIR}" - # FIXME: Should there be other entries here? -diff --git a/docs/CMake.rst b/docs/CMake.rst -index 879b7b231d4c..9c31d14e8950 100644 ---- a/docs/CMake.rst -+++ b/docs/CMake.rst -@@ -250,7 +250,7 @@ description is in `LLVM-related variables`_ below. - **LLVM_LIBDIR_SUFFIX**:STRING - Extra suffix to append to the directory where libraries are to be - installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64`` -- to install libraries to ``/usr/lib64``. -+ to install libraries to ``/usr/lib64``. See also ``CMAKE_INSTALL_LIBDIR``. - - **LLVM_PARALLEL_{COMPILE,LINK}_JOBS**:STRING - Building the llvm toolchain can use a lot of resources, particularly -@@ -284,6 +284,10 @@ manual, or execute ``cmake --help-variable VARIABLE_NAME``. - The path to install executables, relative to the *CMAKE_INSTALL_PREFIX*. - Defaults to "bin". - -+**CMAKE_INSTALL_LIBDIR**:PATH -+ The path to install libraries, relative to the *CMAKE_INSTALL_PREFIX*. -+ Defaults to "lib". -+ - **CMAKE_INSTALL_INCLUDEDIR**:PATH - The path to install header files, relative to the *CMAKE_INSTALL_PREFIX*. - Defaults to "include". -diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in -index 370005cd8d7d..7e790bc52111 100644 ---- a/tools/llvm-config/BuildVariables.inc.in -+++ b/tools/llvm-config/BuildVariables.inc.in -@@ -23,6 +23,7 @@ - #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@" - #define LLVM_BUILDMODE "@LLVM_BUILDMODE@" - #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@" -+#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@" - #define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@" - #define LLVM_INSTALL_PACKAGE_DIR "@LLVM_INSTALL_PACKAGE_DIR@" - #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@" -diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp -index 2c6c55f89d38..f6d2068a0827 100644 ---- a/tools/llvm-config/llvm-config.cpp -+++ b/tools/llvm-config/llvm-config.cpp -@@ -369,7 +369,11 @@ int main(int argc, char **argv) { - sys::fs::make_absolute(ActivePrefix, Path); - ActiveBinDir = std::string(Path.str()); - } -- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX; -+ { -+ SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX); -+ sys::fs::make_absolute(ActivePrefix, Path); -+ ActiveLibDir = std::string(Path.str()); -+ } - { - SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR); - sys::fs::make_absolute(ActivePrefix, Path); diff --git a/llvm/15/llvm/lit-shell-script-runner-set-dyld-library-path.patch b/llvm/15/llvm/lit-shell-script-runner-set-dyld-library-path.patch deleted file mode 100644 index 32f1d13a9d..0000000000 --- a/llvm/15/llvm/lit-shell-script-runner-set-dyld-library-path.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py -index 0242e0b75af3..d732011306f7 100644 ---- a/utils/lit/lit/TestRunner.py -+++ b/utils/lit/lit/TestRunner.py -@@ -1029,6 +1029,12 @@ def executeScript(test, litConfig, tmpBase, commands, cwd): - f.write('@echo off\n') - f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands)) - else: -+ # This env var is *purged* when invoking subprocesses so we have to -+ # manually set it from within the bash script in order for the commands -+ # in run lines to see this var: -+ if "DYLD_LIBRARY_PATH" in test.config.environment: -+ f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n') -+ - for i, ln in enumerate(commands): - match = re.match(kPdbgRegex, ln) - if match: -@@ -1363,7 +1369,7 @@ def applySubstitutions(script, substitutions, conditions={}, - return processed - - process = processLine if recursion_limit is None else processLineToFixedPoint -- -+ - return [unescapePercents(process(ln)) for ln in script] - - diff --git a/llvm/15/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch b/llvm/15/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch deleted file mode 100644 index d824516c0a..0000000000 --- a/llvm/15/llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch +++ /dev/null @@ -1,79 +0,0 @@ -diff --git a/test/Unit/lit.cfg.py b/test/Unit/lit.cfg.py -index 81e8dc04acea..479ff95681e2 100644 ---- a/test/Unit/lit.cfg.py -+++ b/test/Unit/lit.cfg.py -@@ -3,6 +3,7 @@ - # Configuration file for the 'lit' test runner. - - import os -+import platform - import subprocess - - import lit.formats -@@ -55,3 +56,26 @@ if sys.platform in ['win32', 'cygwin'] and os.path.isdir(config.shlibdir): - # Win32 may use %SYSTEMDRIVE% during file system shell operations, so propogate. - if sys.platform == 'win32' and 'SYSTEMDRIVE' in os.environ: - config.environment['SYSTEMDRIVE'] = os.environ['SYSTEMDRIVE'] -+ -+# Add the LLVM dynamic libs to the platform-specific loader search path env var: -+# -+# TODO: this is copied from `clang`'s `lit.cfg.py`; should unify.. -+def find_shlibpath_var(): -+ if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'OpenBSD', 'SunOS']: -+ yield 'LD_LIBRARY_PATH' -+ elif platform.system() == 'Darwin': -+ yield 'DYLD_LIBRARY_PATH' -+ elif platform.system() == 'Windows': -+ yield 'PATH' -+ elif platform.system() == 'AIX': -+ yield 'LIBPATH' -+ -+for shlibpath_var in find_shlibpath_var(): -+ shlibpath = os.path.pathsep.join( -+ (config.shlibdir, -+ config.environment.get(shlibpath_var, ''))) -+ config.environment[shlibpath_var] = shlibpath -+ break -+else: -+ lit_config.warning("unable to inject shared library path on '{}'" -+ .format(platform.system())) -diff --git a/test/lit.cfg.py b/test/lit.cfg.py -index 75a38b4c5dad..856fc75c9d74 100644 ---- a/test/lit.cfg.py -+++ b/test/lit.cfg.py -@@ -42,6 +42,26 @@ llvm_config.with_environment('PATH', config.llvm_tools_dir, append_path=True) - llvm_config.with_system_environment( - ['HOME', 'INCLUDE', 'LIB', 'TMP', 'TEMP']) - -+# Add the LLVM dynamic libs to the platform-specific loader search path env var: -+# -+# TODO: this is copied from `clang`'s `lit.cfg.py`; should unify.. -+def find_shlibpath_var(): -+ if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'OpenBSD', 'SunOS']: -+ yield 'LD_LIBRARY_PATH' -+ elif platform.system() == 'Darwin': -+ yield 'DYLD_LIBRARY_PATH' -+ elif platform.system() == 'Windows': -+ yield 'PATH' -+ elif platform.system() == 'AIX': -+ yield 'LIBPATH' -+ -+for shlibpath_var in find_shlibpath_var(): -+ shlibpath = config.llvm_shlib_dir -+ llvm_config.with_environment(shlibpath_var, shlibpath, append_path = True) -+ break -+else: -+ lit_config.warning("unable to inject shared library path on '{}'" -+ .format(platform.system())) - - # Set up OCAMLPATH to include newly built OCaml libraries. - top_ocaml_lib = os.path.join(config.llvm_lib_dir, 'ocaml') -@@ -318,7 +338,7 @@ def have_cxx_shared_library(): - - try: - readobj_cmd = subprocess.Popen( -- [readobj_exe, '--needed-libs', readobj_exe], stdout=subprocess.PIPE) -+ [readobj_exe, '--needed-libs', readobj_exe], stdout=subprocess.PIPE, env=config.environment) - except OSError: - print('could not exec llvm-readobj') - return False diff --git a/llvm/default.nix b/llvm/default.nix deleted file mode 100644 index 3602c84ea4..0000000000 --- a/llvm/default.nix +++ /dev/null @@ -1,87 +0,0 @@ -{ - lib, - stdenv, - callPackage, - fetchFromGitHub, - cmake, - ninja, - python3, - libffi, - libxml2, - ncurses, - zlib, - runCommand, -}: let - version = "15.0.7"; - - src = fetchFromGitHub { - owner = "llvm"; - repo = "llvm-project"; - rev = "llvmorg-${version}"; - sha256 = "sha256-wjuZQyXQ/jsmvy6y1aksCcEDXGBjuhpgngF3XQJ/T4s="; - }; - - llvm_meta = { - license = lib.licenses.ncsa; - platforms = lib.platforms.unix; - }; - - getVersionFile = p: ./15 + "/${p}"; - - # Build LLVM first (provides libllvm and llvm-tblgen) - libllvm = callPackage ./15/llvm { - inherit - lib - stdenv - cmake - ninja - python3 - libffi - libxml2 - ncurses - zlib - runCommand - src - version - llvm_meta - getVersionFile - ; - }; - - clang-unwrapped = callPackage ./15/clang { - inherit - lib - stdenv - cmake - ninja - python3 - libxml2 - runCommand - libllvm - src - version - llvm_meta - getVersionFile - ; - }; - - lld = callPackage ./15/lld { - inherit - lib - stdenv - cmake - ninja - libxml2 - libllvm - runCommand - src - version - llvm_meta - getVersionFile - ; - }; -in { - llvm_15 = libllvm; - lld_15 = lld; - llvmPackages_15 = {clang-unwrapped = clang-unwrapped;}; -}