[COPY] --- T2-COPYRIGHT-BEGIN --- [COPY] t2/package/*/llvm/llvm.desc [COPY] Copyright (C) 2008 - 2025 The T2 SDE Project [COPY] SPDX-License-Identifier: GPL-2.0 [COPY] --- T2-COPYRIGHT-END --- [I] Low Level Virtual Machine [T] Low-Level Virtual Machine (LLVM) is a compiler infrastructure designed for [T] compile-time, link-time, run-time, and "idle-time" optimization of [T] programs from arbitrary programming languages. It currently supports [T] compilation of C, Objective-C, and C++ programs, using front-ends derived [T] from GCC 4.0, GCC 4.2, and a custom new front-end, "clang". It supports [T] x86, x86-64, ia64, PowerPC, and SPARC, with support for Alpha and ARM [T] under development. [U] https://llvm.org/ [U] https://clang.llvm.org/ [U] https://vmkit.llvm.org/ [A] University of Illinois/NCSA [A] Chris Lattner [M] Rene Rebe [C] base/system # LTO works, but either becomes large, and/or does segfault [F] CROSS OBJDIR NO-LTO.gcc LATOMIC.sparc LATOMIC.sparc64 [R] - alpha arc avr32 blackfin m68k microblaze nios2 openrisc [L] BSD [S] Stable [V] 20.1.4 [P] X 01---5---9 102.500 [CV-GROUP] llvmorg [D] e0a6028c6e8358507ac6f380f8475370c4aacdd1694e2d73820f8886 llvm-20.1.4.src.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.4/ [D] a9713c0e19a33e061a143e6c6a7cd5c3d5706a8796c5507caa26469f llvm-cmake-20.1.4.src.tar.xz !https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.4/cmake-20.1.4.src.tar.xz runconf=0 cmake_mod() { tar $taropt `match_source_file -p cmake` -C .. mv -vf ../cmake-*src ../../cmake } hook_add preconf 5 cmake_mod create_llvm_config_x() { # TODO: check -lz -lnucrses deps! local host=x86 [[ $arch = x86* ]] && host=NaN # TODO: != native llvm target cat <<-EOT > $root/TOOLCHAIN/$toolsdir/bin/llvm-config-x #!/bin/bash llvm-config "\$@" | sed \ -e 's, $host[^ ]*,,g' \\ -e 's,-L$root/TOOLCHAIN/cross/lib,-L$root$libdir,g' \\ -e 's,-I$root/TOOLCHAIN/cross/include,,g' \\ -e 's,-lLLVM,-lz -lncurses &,' EOT chmod +x $root/TOOLCHAIN/$toolsdir/bin/llvm-config-x } targets="AMDGPU;BPF;WebAssembly;host" # host for cross compilation xtargets="SPIRV" target="$arch_target" . $base/package/*/*/llvm-conf.in # TODO: fix and maybe add a config.in option? #var_append cmakeopt ' ' "-DLLVM_TARGETS_TO_BUILD='$targets'" var_append cmakeopt ' ' "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='$xtargets'" var_append cmakeopt ' ' -DLLVM_DEFAULT_TARGET_TRIPLE=$target if atstage toolchain; then var_append cmakeopt ' ' -DLLVM_HOST_TRIPLE=$arch_build elif atstage cross; then var_append cmakeopt ' ' -DLLVM_TABLEGEN=$root/TOOLCHAIN/$toolsdir/bin/llvm-tblgen var_append cmakeopt ' ' -DLLVM_CONFIG_PATH=$root/TOOLCHAIN/$toolsdir/bin/llvm-config var_append GCC_WRAPPER_FILTER '|' "sed 's,^/lib64/libcurses.so,-lcurses,'" var_append GCC_WRAPPER_FILTER '|' "sed 's,$root/lib64/libcurses.so,-lcurses,'" hook_add premake 5 "create_llvm_config_x" fi [ "${libdir##*/lib}" ] && var_append cmakeopt ' ' "-DLLVM_LIBDIR_SUFFIX=${libdir##*/lib}" # builds libraries as static and links all of them into an unique shared one var_append cmakeopt ' ' "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON" #var_append cmakeopt ' ' -DBUILD_SHARED_LIBS=ON var_append cmakeopt ' ' -DLLVM_ENABLE_ZLIB=ON var_append cmakeopt ' ' -DLLVM_ENABLE_TERMINFO=OFF var_append cmakeopt ' ' -DLLVM_ENABLE_BACKTRACES=OFF if pkginstalled binutils; then [ $stagelevel -gt 1 ] && var_append cmakeopt ' ' -DLLVM_BINUTILS_INCDIR=$root/usr/include atstage toolchain && var_append cmakeopt ' ' -DLLVM_BINUTILS_INCDIR=$root/TOOLCHAIN/cross/usr/$arch_build/$arch_target/include fi var_append cmakeopt ' ' "-DLLVM_ENABLE_RTTI=ON" # for Mesa? var_append cmakeopt ' ' "-DLLVM_BUILD_TESTS=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_INCLUDE_TESTS=OFF" var_append cmakeopt ' ' "-DLLVM_ENABLE_BINDINGS=OFF -DLLVM_INCLUDE_GO_TESTS=OFF" var_append cmakeopt ' ' "-DLLVM_ENABLE_ZSTD=OFF" # TODO: .a's need -lzstd? # required by rustc-1.81.x to link against the "llvm::machineinstr::dump() const" function var_append cmakeopt ' ' -DLLVM_ENABLE_DUMP=ON