From e6dd47ca7fa37399beee0451c7d263a5d5e92823 Mon Sep 17 00:00:00 2001 From: sisungo Date: Sun, 21 Jun 2026 20:35:56 +0800 Subject: [PATCH] feat: add package llvm-project Signed-off-by: sisungo --- packages/llvm-project/pkgbuild.py | 366 ++++++++++++++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100644 packages/llvm-project/pkgbuild.py diff --git a/packages/llvm-project/pkgbuild.py b/packages/llvm-project/pkgbuild.py new file mode 100644 index 0000000..dc7161a --- /dev/null +++ b/packages/llvm-project/pkgbuild.py @@ -0,0 +1,366 @@ +import os +import subprocess + +import lib.cpp as cpp +from lib import arch +from lib.make import * + +version("22.1.7") +source_url( + "https://github.com/llvm/llvm-project/releases/download/llvmorg-22.1.7/llvm-project-22.1.7.src.tar.xz" +) + + +def llvm_host_triple(): + return arch.get_target().replace("-semios-linux", "-semios-linux-musl") + + +def build(): + subprocess.run( + [ + "cmake", + "-G", + "Ninja", + "-S", + "llvm", + "-B", + "build", + "-DCMAKE_BUILD_TYPE=Release", + f"-DLLVM_DEFAULT_TARGET_TRIPLE={llvm_host_triple()}", + f"-DLLVM_HOST_TRIPLE={llvm_host_triple()}", + "-DLLVM_ENABLE_PROJECTS=clang;lldb;lld;bolt", + "-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi;libunwind;compiler-rt", + "-DLLVM_ENABLE_EH=ON", + "-DLLVM_ENABLE_RTTI=ON", + "-DCMAKE_INSTALL_PREFIX=/", + "-DLLVM_ENABLE_ASSERTIONS=OFF", + "-DLLVM_BUILD_LLVM_DYLIB=ON", + "-DLLVM_ENABLE_LIBCXX=ON", + "-DLLVM_ENABLE_LIBEDIT=ON", + "-DLLVM_LINK_LLVM_DYLIB=ON", + "-DLIBCXX_HAS_MUSL_LIBC=ON", + "-DCOMPILER_RT_BUILD_GWP_ASAN=OFF", + ], + check=True, + ) + subprocess.run(["cmake", "--build", "build"], check=True) + os.environ["DESTDIR"] = os.getcwd() + "/cpp_install" + subprocess.run(["cmake", "--install", "build"], check=True) + os.chdir("cpp_install") + + +on_build(build) + + +def pack_runtime_lib(composer, files): + composer.makedir("lib") + for file in files: + composer.addfile(f"lib/{llvm_host_triple()}/{file}", f"lib/{file}") + + +def pack_runtime_dev(composer, files: list[str]): + for file in files: + if file.startswith("lib/"): + composer.makedirs("lib") + composer.addfile(file.replace("lib/", f"lib/{llvm_host_triple()}/"), file) + elif file.startswith("include/"): + realpath = file.replace("include/", "usr/include/") + composer.makedirs(os.path.dirname(file)) + if os.path.isfile(realpath): + composer.addfile(realpath, file) + elif os.path.isdir(realpath): + composer.add_dir(realpath, file) + + +package("libunwind") +on_pack( + lambda composer: pack_runtime_lib( + composer, ["libunwind.so.1.0", "libunwind.so.1", "libunwind.so"] + ) +) + +package("libunwind-dev") +on_pack( + lambda composer: pack_runtime_dev( + composer, + [ + "lib/libunwind.a", + "include/mach-o/compact_unwind_encoding.h", + "include/__libunwind_config.h", + "include/libunwind.h", + "include/libunwind.modulemap", + "include/unwind.h", + "include/unwind_arm_ehabi.h", + "include/unwind_itanium.h", + ], + ) +) + +package("libcxxabi") +on_pack( + lambda composer: pack_runtime_lib( + composer, ["libc++abi.so", "libc++abi.so.1", "libc++abi.so.1.0"] + ) +) + +package("libcxxabi-dev") +on_pack(lambda composer: pack_runtime_dev(composer, ["lib/libc++abi.a"])) + + +package("libcxx") +on_pack( + lambda composer: pack_runtime_lib( + composer, ["libc++.so", "libc++.so.1", "libc++.so.1.0"] + ) +) + +package("libcxx-dev") +on_pack( + lambda composer: pack_runtime_dev( + composer, + [ + "lib/libc++.a", + "lib/libc++experimental.a", + "lib/libc++.modules.json", + f"include/{llvm_host_triple()}/c++/v1", + "include/c++/v1", + ], + ) +) + + +def pack_libllvm(composer): + LIBRARIES = [ + "libLLVM.so.22.1", + "libLLVM.so", + "libLLVM-22.so", + "libLTO.so", + "libLTO.so.22.1", + "libRemarks.so", + "libRemarks.so.22.1", + ] + composer.makedir("lib") + for lib in LIBRARIES: + composer.addfile(f"lib/{lib}", f"lib/{lib}") + + +package("libllvm") +on_pack(pack_libllvm) + + +def pack_llvm(composer): + BINARIES = [ + "bugpoint", + "dsymutil", + "llc", + "lli", + "llvm-addr2line", + "llvm-ar", + "llvm-as", + "llvm-bcanalyzer", + "llvm-bitcode-strip", + "llvm-bolt", + "llvm-bolt-binary-analysis", + "llvm-bolt-heatmap", + "llvm-boltdiff", + "llvm-c-test", + "llvm-cas", + "llvm-cat", + "llvm-cfi-verify", + "llvm-cgdata", + "llvm-config", + "llvm-cov", + "llvm-ctxprof-util", + "llvm-cvtres", + "llvm-cxxdump", + "llvm-cxxfilt", + "llvm-cxxmap", + "llvm-debuginfo-analyzer", + "llvm-debuginfod", + "llvm-debuginfod-find", + "llvm-diff", + "llvm-dis", + "llvm-dlltool", + "llvm-dwarfdump", + "llvm-dwarfutil", + "llvm-dwp", + "llvm-exegesis", + "llvm-extract", + "llvm-gsymutil", + "llvm-ifs", + "llvm-install-name-tool", + "llvm-ir2vec", + "llvm-jitlink", + "llvm-lib", + "llvm-libtool-darwin", + "llvm-link", + "llvm-lipo", + "llvm-lto", + "llvm-lto2", + "llvm-mc", + "llvm-mca", + "llvm-ml", + "llvm-ml64", + "llvm-modextract", + "llvm-nm", + "llvm-objcopy", + "llvm-objdump", + "llvm-offload-binary", + "llvm-offload-wrapper", + "llvm-opt-report", + "llvm-otool", + "llvm-pdbutil", + "llvm-profdata", + "llvm-profgen", + "llvm-ranlib", + "llvm-rc", + "llvm-readelf", + "llvm-readobj", + "llvm-readtapi", + "llvm-reduce", + "llvm-remarkutil", + "llvm-rtdyld", + "llvm-sim", + "llvm-size", + "llvm-split", + "llvm-stress", + "llvm-strings", + "llvm-strip", + "llvm-symbolizer", + "llvm-tblgen", + "llvm-tli-checker", + "llvm-undname", + "llvm-windres", + "llvm-xray", + "merge-fdata", + "opt", + "perf2bolt", + "reduce-chunk-list", + "sancov", + "sanstats", + "verify-uselistorder", + ] + composer.makedir("bin") + for bin in BINARIES: + composer.addfile(f"usr/bin/{bin}", f"bin/{bin}") + + +package("llvm") +on_pack(pack_llvm) + + +def pack_lld(composer): + BINARIES = ["lld", "lld-link", "ld.lld", "ld64.lld", "wasm-ld"] + composer.makedir("bin") + for bin in BINARIES: + composer.addfile(f"usr/bin/{bin}", f"bin/{bin}") + + +package("lld") +on_pack(pack_lld) + + +def pack_liblldb(composer): + LIBRARIES = [ + "liblldb.so", + "liblldb.so.22.1", + "liblldb.so.22.1.7", + "liblldbIntelFeatures.so", + "liblldbIntelFeatures.so.22.1", + ] + composer.makedir("lib") + for lib in LIBRARIES: + composer.addfile(f"lib/{lib}", f"lib/{lib}") + + +package("liblldb") +on_pack(pack_liblldb) + + +def pack_lldb(composer): + BINARIES = [ + "lldb", + "lldb-argdumper", + "lldb-dap", + "lldb-instr", + "lldb-mcp", + "lldb-server", + "yaml2macho-core", + ] + composer.makedir("bin") + for bin in BINARIES: + composer.addfile(f"bin/{bin}", f"bin/{bin}") + + +package("lldb") +on_pack(pack_lldb) + + +def pack_libclang(composer): + LIBRARIES = [ + "libclang.so", + "libclang-cpp.so", + "libclang-cpp.so.22.1", + "libclang.so.22.1", + "libclang.so.22.1.7", + ] + composer.makedir("lib") + for lib in LIBRARIES: + composer.addfile(f"lib/{lib}", f"lib/{lib}") + + +package("libclang") +on_pack(pack_libclang) + + +def pack_clang(composer): + BINARIES = [ + "clang", + "clang++", + "clang-22", + "clang-check", + "clang-cl", + "clang-cpp", + "clang-extdef-mapping", + "clang-format", + "clang-installapi", + "clang-linker-wrapper", + "clang-nvlink-wrapper", + "clang-offload-bundler", + "clang-offload-packager", + "clang-refactor", + "clang-repl", + "clang-scan-deps", + "clang-sycl-linker", + "clang-tblgen", + "diagtool", + "git-clang-format", + "hmaptool", + "intercept-build", + "amdgpu-arch", + "c-index-test", + "analyze-build", + "nvptx-arch", + "offload-arch", + "scan-build", + "scan-build-py", + "scan-view", + ] + LIBEXEC = [ + "analyze-c++", + "analyze-cc", + "c++-analyzer", + "ccc-analyzer", + "intercept-c++", + "intercept-cc", + ] + composer.makedir("bin") + for bin in BINARIES: + composer.addfile(f"usr/bin/{bin}", f"bin/{bin}") + composer.makedir("libexec") + for libexec in LIBEXEC: + composer.addfile(f"usr/libexec/{libexec}", f"libexec/{libexec}") + + +package("clang") +on_pack(pack_clang) -- 2.55.0