forked from semios/semios-packages
feat: improve llvm packaging
Signed-off-by: sisungo <[email protected]>
This commit is contained in:
+259
-231
@@ -1,155 +1,12 @@
|
|||||||
|
import glob
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
import lib.cpp as cpp
|
upstream_version = "22.1.7"
|
||||||
from lib import arch
|
[upstream_major, upstream_minor, upstream_rev] = upstream_version.split(".")
|
||||||
from lib.make import *
|
|
||||||
|
|
||||||
version("22.1.7")
|
# Begin of file lists
|
||||||
source_url(
|
LLVM_TOOLS = [
|
||||||
"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",
|
"bugpoint",
|
||||||
"dsymutil",
|
"dsymutil",
|
||||||
"llc",
|
"llc",
|
||||||
@@ -240,45 +97,7 @@ def pack_llvm(composer):
|
|||||||
"sanstats",
|
"sanstats",
|
||||||
"verify-uselistorder",
|
"verify-uselistorder",
|
||||||
]
|
]
|
||||||
composer.makedir("bin")
|
LLDB_BINARIES = [
|
||||||
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",
|
||||||
"lldb-argdumper",
|
"lldb-argdumper",
|
||||||
"lldb-dap",
|
"lldb-dap",
|
||||||
@@ -287,37 +106,12 @@ def pack_lldb(composer):
|
|||||||
"lldb-server",
|
"lldb-server",
|
||||||
"yaml2macho-core",
|
"yaml2macho-core",
|
||||||
]
|
]
|
||||||
composer.makedir("bin")
|
LLD_BINARIES = ["lld", "lld-link", "ld64.lld", "wasm-ld", "wrapper://ld.lld~ld.lld"]
|
||||||
for bin in BINARIES:
|
CLANG_BINARIES = [
|
||||||
composer.addfile(f"bin/{bin}", f"bin/{bin}")
|
f"clang-{upstream_major}~llvm-clang",
|
||||||
|
"wrapper://clang~clang",
|
||||||
|
"wrapper://clang++~clang++",
|
||||||
package("lldb")
|
f"wrapper://clang~clang-{upstream_major}",
|
||||||
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-check",
|
||||||
"clang-cl",
|
"clang-cl",
|
||||||
"clang-cpp",
|
"clang-cpp",
|
||||||
@@ -345,22 +139,256 @@ def pack_clang(composer):
|
|||||||
"scan-build",
|
"scan-build",
|
||||||
"scan-build-py",
|
"scan-build-py",
|
||||||
"scan-view",
|
"scan-view",
|
||||||
|
"libexec/analyze-c++",
|
||||||
|
"libexec/analyze-cc",
|
||||||
|
"libexec/c++-analyzer",
|
||||||
|
"libexec/ccc-analyzer",
|
||||||
|
"libexec/intercept-c++",
|
||||||
|
"libexec/intercept-cc",
|
||||||
]
|
]
|
||||||
LIBEXEC = [
|
# End of file lists
|
||||||
"analyze-c++",
|
|
||||||
"analyze-cc",
|
|
||||||
"c++-analyzer",
|
import lib.cpp as cpp
|
||||||
"ccc-analyzer",
|
from lib import arch
|
||||||
"intercept-c++",
|
from lib.make import *
|
||||||
"intercept-cc",
|
|
||||||
|
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_ENABLE_LLD=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)
|
||||||
|
|
||||||
|
|
||||||
|
# Begin of helper functions
|
||||||
|
package_dir = os.getcwd()
|
||||||
|
|
||||||
|
|
||||||
|
def install_wrapper(composer, name: str, dst: str):
|
||||||
|
composer.addfile(f"{package_dir}/wrapper/{name}.wrapper", dst)
|
||||||
|
with open(f"{composer.workdir}/bundle/{dst}", "r") as f:
|
||||||
|
s = f.read()
|
||||||
|
s = s.replace("LLVM_VERSION=", f"LLVM_VERSION={upstream_version}").replace(
|
||||||
|
"ARCHITECTURE=", "ARCHITECTURE=" + arch.get_target()
|
||||||
|
)
|
||||||
|
with open(f"{composer.workdir}/bundle/{dst}", "w") as f:
|
||||||
|
f.write(s)
|
||||||
|
os.chmod(f"{composer.workdir}/bundle/{dst}", 0o755)
|
||||||
|
|
||||||
|
|
||||||
|
def auto_pack_llvm_runtime(composer, prefix, dev):
|
||||||
|
composer.makedirs("lib")
|
||||||
|
parent_dir = f"./lib/{llvm_host_triple()}"
|
||||||
|
for i in os.listdir(parent_dir):
|
||||||
|
fullpath = f"{parent_dir}/{i}"
|
||||||
|
if i.split(".")[0] != prefix:
|
||||||
|
continue
|
||||||
|
if dev:
|
||||||
|
if ".so" in i:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
if not ".so" in i:
|
||||||
|
continue
|
||||||
|
composer.addfile(fullpath, f"lib/{i}")
|
||||||
|
if not dev:
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def auto_pack_llvm_runtime_dev(composer, condition):
|
||||||
|
composer.makedir("include")
|
||||||
|
parent_include = f"./usr/include"
|
||||||
|
for i in condition:
|
||||||
|
if i.startswith("lib:"):
|
||||||
|
auto_pack_llvm_runtime(composer, i.replace("lib:", ""), True)
|
||||||
|
continue
|
||||||
|
i = i.replace("include:", "")
|
||||||
|
for file in glob.glob(f"{parent_include}/{i}"):
|
||||||
|
name = file.replace(f"{parent_include}/", "")
|
||||||
|
if "/" in name:
|
||||||
|
composer.makedirs(f"include/{os.path.dirname(name)}")
|
||||||
|
if os.path.isdir(file):
|
||||||
|
composer.add_dir(file, f"include/{name}")
|
||||||
|
else:
|
||||||
|
composer.addfile(file, f"include/{name}")
|
||||||
|
|
||||||
|
|
||||||
|
def use_llvm_runtime_auto_pack(prefix: str):
|
||||||
|
on_pack(lambda composer: auto_pack_llvm_runtime(composer, prefix, False))
|
||||||
|
|
||||||
|
|
||||||
|
def use_llvm_runtime_dev_auto_pack(des: list[str]):
|
||||||
|
on_pack(lambda composer: auto_pack_llvm_runtime_dev(composer, des))
|
||||||
|
|
||||||
|
|
||||||
|
def auto_pack_llvm_libs(composer, prefixes: list[str]):
|
||||||
|
composer.makedirs("lib")
|
||||||
|
parent_dir = f"./lib/"
|
||||||
|
for i in os.listdir(parent_dir):
|
||||||
|
fullpath = f"{parent_dir}/{i}"
|
||||||
|
if not i.split(".")[0] in prefixes:
|
||||||
|
continue
|
||||||
|
if not ".so" in i:
|
||||||
|
continue
|
||||||
|
composer.addfile(fullpath, f"lib/{i}")
|
||||||
|
|
||||||
|
|
||||||
|
def use_llvm_libs_auto_pack(prefixes: list[str]):
|
||||||
|
on_pack(lambda composer: auto_pack_llvm_libs(composer, prefixes))
|
||||||
|
|
||||||
|
|
||||||
|
def auto_pack_bin(composer, conditions: list[str]):
|
||||||
|
for i in conditions:
|
||||||
|
prefix = "bin"
|
||||||
|
if i.startswith("libexec/"):
|
||||||
|
i = i.replace("libexec/", "")
|
||||||
|
prefix = "libexec"
|
||||||
|
composer.makedirs(prefix)
|
||||||
|
src = i
|
||||||
|
dst = f"{prefix}/{i}"
|
||||||
|
if len(i.split("~")) == 2:
|
||||||
|
src = i.split("~")[0]
|
||||||
|
dst = f"bin/{i.split('~')[1]}"
|
||||||
|
if src.startswith("wrapper://"):
|
||||||
|
src = src.replace("wrapper://", "")
|
||||||
|
if len(i.split("~")) == 1:
|
||||||
|
dst = f"bin/{src}.wrapper"
|
||||||
|
install_wrapper(composer, src, dst)
|
||||||
|
continue
|
||||||
|
if os.path.exists(f"{prefix}/{src}"):
|
||||||
|
src = f"{prefix}/{src}"
|
||||||
|
elif os.path.exists(f"usr/{prefix}/{src}"):
|
||||||
|
src = f"usr/{prefix}/{src}"
|
||||||
|
composer.addfile(src, dst)
|
||||||
|
|
||||||
|
|
||||||
|
def use_bin_auto_pack(conditions: list[str]):
|
||||||
|
on_pack(lambda composer: auto_pack_bin(composer, conditions))
|
||||||
|
|
||||||
|
|
||||||
|
# End of helper functions
|
||||||
|
|
||||||
|
# Begin of packages
|
||||||
|
|
||||||
|
package("libunwind")
|
||||||
|
dep("semi-libc @same-arch")
|
||||||
|
use_llvm_runtime_auto_pack("libunwind")
|
||||||
|
|
||||||
|
package("libunwind-dev")
|
||||||
|
dep("libunwind (same)")
|
||||||
|
use_llvm_runtime_dev_auto_pack(
|
||||||
|
["lib:libunwind", "include:mach-o", "include:*unwind*.h"]
|
||||||
|
)
|
||||||
|
|
||||||
|
package("libcxxabi")
|
||||||
|
dep("libunwind (same)")
|
||||||
|
use_llvm_runtime_auto_pack("libc++abi")
|
||||||
|
|
||||||
|
package("libcxxabi-dev")
|
||||||
|
dep("libcxxabi (same)")
|
||||||
|
use_llvm_runtime_dev_auto_pack(["lib:libc++abi"])
|
||||||
|
|
||||||
|
|
||||||
|
package("libcxx")
|
||||||
|
dep("libcxxabi (same)")
|
||||||
|
use_llvm_runtime_auto_pack("libc++")
|
||||||
|
|
||||||
|
package("libcxx-dev")
|
||||||
|
dep("libcxx (same)")
|
||||||
|
use_llvm_runtime_dev_auto_pack(
|
||||||
|
[
|
||||||
|
"lib:libc++",
|
||||||
|
"lib:libc++experimental",
|
||||||
|
f"include:{llvm_host_triple()}/c++/v1/__config_site",
|
||||||
|
"include:c++/v1",
|
||||||
]
|
]
|
||||||
composer.makedir("bin")
|
)
|
||||||
for bin in BINARIES:
|
|
||||||
composer.addfile(f"usr/bin/{bin}", f"bin/{bin}")
|
|
||||||
composer.makedir("libexec")
|
package("libllvm")
|
||||||
for libexec in LIBEXEC:
|
dep("libcxx @same-arch")
|
||||||
composer.addfile(f"usr/libexec/{libexec}", f"libexec/{libexec}")
|
use_llvm_libs_auto_pack(["libLLVM", "libLTO", "libRemarks"])
|
||||||
|
|
||||||
|
package("llvm")
|
||||||
|
dep("libllvm (same)")
|
||||||
|
use_bin_auto_pack(LLVM_TOOLS)
|
||||||
|
for i in ["strip", "ar", "ranlib", "readelf", "objcopy", "objdump", "strings", "nm"]:
|
||||||
|
link(f"bin/llvm-{i}", f"/bin/{i}")
|
||||||
|
|
||||||
|
|
||||||
|
package("lld")
|
||||||
|
dep("libcxx @same-arch")
|
||||||
|
use_bin_auto_pack(LLD_BINARIES)
|
||||||
|
link("bin/ld.lld", "/bin/ld")
|
||||||
|
|
||||||
|
package("liblldb")
|
||||||
|
dep("libcxx @same-arch")
|
||||||
|
use_llvm_libs_auto_pack(["liblldb", "liblldbIntelFeatures"])
|
||||||
|
|
||||||
|
|
||||||
|
package("lldb")
|
||||||
|
dep("libcxx @same-arch")
|
||||||
|
dep("liblldb (same)")
|
||||||
|
use_bin_auto_pack(LLDB_BINARIES)
|
||||||
|
|
||||||
|
|
||||||
|
package("libclang")
|
||||||
|
dep("libcxx @same-arch")
|
||||||
|
dep("libllvm (same)")
|
||||||
|
use_llvm_libs_auto_pack(["libclang", "libclang-cpp"])
|
||||||
|
|
||||||
|
|
||||||
|
def pack_clang(composer):
|
||||||
|
auto_pack_bin(composer, CLANG_BINARIES)
|
||||||
|
composer.makedirs("lib/clang/22/lib")
|
||||||
|
composer.add_dir(
|
||||||
|
f"lib/clang/22/lib/{llvm_host_triple()}",
|
||||||
|
f"lib/clang/22/lib/{llvm_host_triple()}",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
package("clang")
|
package("clang")
|
||||||
|
dep("libclang (same)")
|
||||||
on_pack(pack_clang)
|
on_pack(pack_clang)
|
||||||
|
|
||||||
|
# End of packages
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
LLVM_VERSION=
|
||||||
|
ARCHITECTURE=
|
||||||
|
|
||||||
|
CLANG=$(packie print package.prefix."clang (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/llvm-clang
|
||||||
|
|
||||||
|
exec ${CLANG} -x c++ \
|
||||||
|
-isystem /lib/${ARCHITECTURE}/include \
|
||||||
|
-stdlib=libc++ \
|
||||||
|
-rtlib=compiler-rt \
|
||||||
|
-B /lib/${ARCHITECTURE} \
|
||||||
|
"$@"
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
LLVM_VERSION=
|
||||||
|
ARCHITECTURE=
|
||||||
|
|
||||||
|
CLANG=$(packie print package.prefix."clang (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/llvm-clang
|
||||||
|
|
||||||
|
exec ${CLANG} \
|
||||||
|
-isystem /lib/${ARCHITECTURE}/include \
|
||||||
|
-rtlib=compiler-rt \
|
||||||
|
-B /lib/${ARCHITECTURE} \
|
||||||
|
"$@"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
LLVM_VERSION=
|
||||||
|
ARCHITECTURE=
|
||||||
|
|
||||||
|
LLD=$(packie print package.prefix."lld (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/lld
|
||||||
|
|
||||||
|
exec ${LLD} -flavor gnu -L/lib/${ARCHITECTURE} "$@"
|
||||||
Reference in New Issue
Block a user