1 # --- T2-COPYRIGHT-NOTE-BEGIN ---
2 # T2 SDE: package/*/llvm/llvm.conf
3 # Copyright (C) 2009 - 2024 The T2 SDE Project
5 # This Copyright note is generated by scripts/Create-CopyPatch,
6 # more information can be found in the files COPYING and README.
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License version 2.
10 # --- T2-COPYRIGHT-NOTE-END ---
15 tar $taropt `match_source_file -p cmake` -C ..
16 mv -vf ../cmake-*src ../../cmake
18 hook_add preconf 5 cmake_mod
20 [ "$SDECFG_SPARC64_32BIT" = 1 ] &&
21 var_append patchfiles " " "$confdir/*sparcv9*.diff"
23 create_llvm_config_x() {
24 # TODO: check -lz -lnucrses deps!
26 [[ $arch = x86* ]] && host=NaN # TODO: != native llvm target
27 cat <<-EOT > $root/TOOLCHAIN/$toolsdir/bin/llvm-config-x
31 -e 's, $host[^ ]*,,g' \\
32 -e 's,-L$root/TOOLCHAIN/cross/lib,-L$root$libdir,g' \\
33 -e 's,-I$root/TOOLCHAIN/cross/include,,g' \\
34 -e 's,-lLLVM,-lz -lncurses &,'
36 chmod +x $root/TOOLCHAIN/$toolsdir/bin/llvm-config-x
39 # TODO: Lanai MSP430 NVPTX VE DirectX
41 # keep in sync w/ rustc! ;-)
42 targets="AMDGPU;BPF;WebAssembly;host" # host for cross compilation
46 arc) var_insert xtargets ';' 'ARC' ;;
47 arm) var_insert targets ';' 'ARM' ;;
48 avr) var_insert targets ';' 'AVR' ;;
49 arm64) var_insert targets ';' 'AArch64' ;;
50 csky) var_insert xtargets ';' 'CSKY' ;;
51 hexagon) var_insert targets ';' 'Hexagon' ;;
52 loongarch*) var_insert targets ';' 'Loongarch' ;;
53 #m68k*) var_insert xtargets ';' 'M68k' ;;
54 mips*) var_insert targets ';' 'Mips' ;;
55 powerpc*) var_insert targets ';' 'PowerPC' ;;
56 riscv*) var_insert targets ';' 'RISCV' ;;
57 s390*) var_insert targets ';' 'SystemZ' ;;
58 sparc*) var_insert targets ';' 'Sparc' ;;
59 x86*) var_insert targets ';' 'X86' ;;
60 xtensa) var_insert xtargets ';' 'Xtensa' ;;
61 *) var_insert targets ';' 'X86'; target=x86-t2-linux-gnu ;;
64 # TODO: fix and maybe add a config.in option?
65 #var_append cmakeopt " " "-DLLVM_TARGETS_TO_BUILD='$targets'"
66 var_append cmakeopt " " "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='$xtargets'"
67 var_append cmakeopt " " "-DLLVM_DEFAULT_TARGET_TRIPLE=$target"
69 if atstage toolchain; then
70 var_append cmakeopt " " "-DLLVM_HOST_TRIPLE=$arch_build"
71 elif atstage cross; then
72 var_append cmakeopt " " "-DLLVM_TABLEGEN=$root/TOOLCHAIN/$toolsdir/bin/llvm-tblgen"
73 var_append cmakeopt " " "-DLLVM_CONFIG_PATH=$root/TOOLCHAIN/$toolsdir/bin/llvm-config"
74 var_append GCC_WRAPPER_FILTER '|' "sed 's,^/lib64/libcurses.so,-lcurses,'"
75 var_append GCC_WRAPPER_FILTER '|' "sed 's,$root/lib64/libcurses.so,-lcurses,'"
77 hook_add premake 5 "create_llvm_config_x"
80 [ "${libdir##*/lib}" ] && var_append cmakeopt " " "-DLLVM_LIBDIR_SUFFIX=${libdir##*/lib}"
81 # builds libraries as static and links all of them into an unique shared one
82 var_append cmakeopt " " "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON"
83 #var_append cmakeopt " " "-DBUILD_SHARED_LIBS=ON"
85 var_append cmakeopt " " "-DLLVM_ENABLE_ZLIB=ON"
86 var_append cmakeopt " " "-DLLVM_ENABLE_TERMINFO=OFF"
87 var_append cmakeopt " " "-DLLVM_ENABLE_BACKTRACES=OFF"
89 if pkginstalled binutils; then
90 [ $stagelevel -gt 1 ] &&
91 var_append cmakeopt " " "-DLLVM_BINUTILS_INCDIR=$root/usr/include"
93 var_append cmakeopt " " "-DLLVM_BINUTILS_INCDIR=$root/TOOLCHAIN/cross/usr/$arch_build/$arch_target/include"
96 var_append cmakeopt " " "-DLLVM_ENABLE_RTTI=ON" # for Mesa?
97 var_append cmakeopt " " "-DLLVM_BUILD_TESTS=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_INCLUDE_TESTS=OFF"
98 var_append cmakeopt " " "-DLLVM_ENABLE_BINDINGS=OFF -DLLVM_INCLUDE_GO_TESTS=OFF"
99 var_append cmakeopt " " "-DLLVM_ENABLE_ZSTD=OFF" # TODO: .a's need -lzstd?
101 # required by rustc-1.81.x to link against the "llvm::machineinstr::dump() const" function
102 var_append cmakeopt " " -DLLVM_ENABLE_DUMP=ON