118 lines
4.6 KiB
Python
118 lines
4.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Licensed under the GNU General Public License, version 3.
|
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
|
|
|
from pisi.actionsapi import autotools
|
|
from pisi.actionsapi import pisitools
|
|
from pisi.actionsapi import shelltools
|
|
from pisi.actionsapi import cmaketools
|
|
from pisi.actionsapi import get
|
|
|
|
import subprocess
|
|
|
|
projects = "clang;mlir" if get.buildTYPE() == "emul32" else "clang;clang-tools-extra;lld;lldb;polly;compiler-rt;mlir"
|
|
libdir = "/usr/lib32/llvm" if get.buildTYPE() == "emul32" else "/usr/lib/llvm"
|
|
lib = "lib32" if get.buildTYPE() == "emul32" else "lib"
|
|
libsuffix = "32" if get.buildTYPE() == "emul32" else " "
|
|
|
|
jobs = jobs = "-j"+ subprocess.check_output("nproc 2>/dev/null", shell=True).rstrip("\n")
|
|
|
|
NoStrip = ["/usr/lib/clang/%s/lib/linux" % get.srcVERSION()]
|
|
|
|
WorkDir = "llvm-project-%s.src/llvm" % get.srcVERSION()
|
|
|
|
def setup():
|
|
#pisitools.ldflags.add("-fuse-ld=lld")
|
|
#pisitools.cflags.remove("-D_FORTIFY_SOURCE=2")
|
|
#pisitools.cxxflags.remove("-D_FORTIFY_SOURCE=2")
|
|
#pisitools.cflags.add("-mllvm -polly -Wno-unused-command-line-argument")
|
|
#pisitools.cxxflags.add("-mllvm -polly -Wno-unused-command-line-argument")
|
|
#shelltools.export("CC", "clang")
|
|
#shelltools.export("CXX", "clang++")
|
|
#shelltools.export("AR", "llvm-ar")
|
|
#shelltools.export("NM", "llvm-nm")
|
|
#shelltools.export("RANLIB", "llvm-ranlib")
|
|
|
|
|
|
if get.buildTYPE() == "emul32":
|
|
shelltools.export("CC", "gcc -m32")
|
|
shelltools.export("CXX", "g++ -m32")
|
|
#shelltools.export("CC", "clang -m32")
|
|
#shelltools.export("CXX", "clang++ -m32")
|
|
shelltools.export("PKG_CONFIG_PATH","/usr/lib32/pkgconfig")
|
|
|
|
#clang patch
|
|
#shelltools.cd("tools")
|
|
#shelltools.system("patch -p1 < enable-SSP-and-PIE-by-default.patch")
|
|
#shelltools.cd("..")
|
|
else:
|
|
shelltools.export("CC", "gcc")
|
|
shelltools.export("CXX", "g++")
|
|
#shelltools.export("CC", "clang")
|
|
#shelltools.export("CXX", "clang++")
|
|
|
|
shelltools.makedirs("build")
|
|
|
|
shelltools.cd("build")
|
|
|
|
if get.buildTYPE() != "emul32":
|
|
# shelltools.system("sed '/^diff.*inline-asm-memop.ll/,$d' 46505b3cbfc5.patch | patch -Np2")
|
|
pisitools.cflags.add("-m64 ")
|
|
pisitools.cxxflags.add("-m64")
|
|
options = "-DLLVM_TARGET_ARCH:STRING=x86_64 \
|
|
-DLLDB_ENABLE_LUA=OFF \
|
|
-DLLVM_DEFAULT_TARGET_TRIPLE=%s " % get.HOST()
|
|
|
|
|
|
if get.buildTYPE() == "emul32":
|
|
shelltools.export("CC", "gcc -m32")
|
|
shelltools.export("CXX", "g++ -m32")
|
|
pisitools.cflags.add("-m32 ")
|
|
pisitools.cxxflags.add("-m32")
|
|
shelltools.export("PKG_CONFIG_PATH","/usr/lib32/pkgconfig")
|
|
options = " -DCMAKE_INSTALL_PREFIX=/emul32 \
|
|
-DLLVM_TARGET_ARCH:STRING=i686 \
|
|
-DLLVM_ENABLE_ZSTD:STRING=OFF \
|
|
-DCLANG_DEFAULT_PIE_ON_LINUX=ON \
|
|
-DLLVM_DEFAULT_TARGET_TRIPLE='i686-pc-linux-gnu'"
|
|
|
|
|
|
cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \
|
|
-G 'Unix Makefiles' \
|
|
%s \
|
|
-DLLVM_ENABLE_PROJECTS='%s' \
|
|
-DLLVM_LIBDIR_SUFFIX=%s \
|
|
-DLLVM_ENABLE_FFI=ON \
|
|
-DLLVM_BUILD_DOCS=OFF \
|
|
-DLLVM_ENABLE_RTTI=ON \
|
|
-DLLVM_ENABLE_EH=ON \
|
|
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
|
-DLLVM_LINK_LLVM_DYLIB=ON \
|
|
-DLLDB_USE_SYSTEM_SIX=1 \
|
|
-DLLVM_INCLUDEDIR=/usr/include \
|
|
-DLLVM_ENABLE_ASSERTIONS=OFF \
|
|
-DFFI_INCLUDE_DIR=/usr/include \
|
|
-DCOMPILER_RT_USE_LIBCXX=OFF" % (options, projects, libsuffix), sourceDir=".." )
|
|
|
|
def build():
|
|
shelltools.cd("build")
|
|
#shelltools.system("ninja")
|
|
cmaketools.make(jobs)
|
|
|
|
def install():
|
|
shelltools.cd("build")
|
|
#shelltools.system("DESTDIR=%s ninja install" % get.installDIR())
|
|
cmaketools.rawInstall("DESTDIR=%s" % get.installDIR())
|
|
|
|
if get.buildTYPE() == "emul32":
|
|
pisitools.domove("/emul32/lib32/", "/usr/")
|
|
pisitools.insinto("/usr/include/llvm/Config/","%s/emul32/include/llvm/Config/llvm-config.h" % get.installDIR(),"llvm-config-32.h")
|
|
pisitools.insinto("/usr/bin/","%s/emul32/bin/llvm-config" % get.installDIR(),"llvm-config-32")
|
|
pisitools.removeDir("/emul32")
|
|
#pisitools.remove("/usr/lib/python3.8/site-packages/six.py")
|
|
|
|
shelltools.cd ("..")
|
|
|
|
pisitools.dodoc("LICENSE.TXT", "README.*")
|