mirror of
https://abf.rosa.ru/djam/llvm.git
synced 2025-02-24 00:32:49 +00:00
LOG New version 3.3, too many spec changes to mention
This commit is contained in:
parent
95a084eda9
commit
861fec9cdd
5 changed files with 363 additions and 107 deletions
6
.abf.yml
6
.abf.yml
|
@ -1,3 +1,5 @@
|
||||||
sources:
|
sources:
|
||||||
"clang-3.1.src.tar.gz": 19f33b187a50d22fda2a6f9ed989699a9a9efd62
|
llvm-3.3.src.tar.gz: c6c22d5593419e3cb47cbcf16d967640e5cce133
|
||||||
"llvm-3.1.src.tar.gz": 234c96e73ef81aec9a54da92fc2a9024d653b059
|
cfe-3.3.src.tar.gz: ccd6dbf2cdb1189a028b70bcb8a22509c25c74c8
|
||||||
|
clang-tools-extra-3.3.src.tar.gz: 6f7af9ba8014f7e286a02e4ae2e3f2017b8bfac2
|
||||||
|
polly-3.3.src.tar.gz: eb75f5674fedf77425d16c9c0caec04961f03e04
|
||||||
|
|
144
0000-clang-mandriva.patch
Normal file
144
0000-clang-mandriva.patch
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
--- clang/lib/Driver/ToolChains.cpp.orig 2013-05-06 12:08:21.033135389 +0200
|
||||||
|
+++ clang/lib/Driver/ToolChains.cpp 2013-05-06 12:53:31.740246887 +0200
|
||||||
|
@@ -1082,11 +1082,23 @@ Generic_GCC::GCCInstallationDetector::GC
|
||||||
|
static const char *const ARMLibDirs[] = { "/lib" };
|
||||||
|
static const char *const ARMTriples[] = {
|
||||||
|
"arm-linux-gnueabi",
|
||||||
|
- "arm-linux-androideabi"
|
||||||
|
+ "arm-linux-androideabi",
|
||||||
|
+ "arm-mandriva-linux-gnueabi",
|
||||||
|
+ "arm-mandriva-linux-androideabi",
|
||||||
|
+ "armv6-mandriva-linux-gnueabi",
|
||||||
|
+ "armv6-mandriva-linux-androideabi",
|
||||||
|
+ "armv7-mandriva-linux-gnueabi",
|
||||||
|
+ "armv7-mandriva-linux-androideabi",
|
||||||
|
+ "armv7hl-mandriva-linux-gnueabi",
|
||||||
|
+ "armv7hl-mandriva-linux-androideabi",
|
||||||
|
};
|
||||||
|
static const char *const ARMHFTriples[] = {
|
||||||
|
"arm-linux-gnueabihf",
|
||||||
|
"armv7hl-redhat-linux-gnueabi"
|
||||||
|
+ "arm-mandriva-linux-gnueabihf",
|
||||||
|
+ "armv6-mandriva-linux-gnueabihf",
|
||||||
|
+ "armv7-mandriva-linux-gnueabihf",
|
||||||
|
+ "armv7hl-mandriva-linux-gnueabihf",
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *const X86_64LibDirs[] = { "/lib64", "/lib" };
|
||||||
|
@@ -1094,6 +1106,7 @@ Generic_GCC::GCCInstallationDetector::GC
|
||||||
|
"x86_64-linux-gnu",
|
||||||
|
"x86_64-unknown-linux-gnu",
|
||||||
|
"x86_64-pc-linux-gnu",
|
||||||
|
+ "x86_64-mandriva-linux-gnu",
|
||||||
|
"x86_64-redhat-linux6E",
|
||||||
|
"x86_64-redhat-linux",
|
||||||
|
"x86_64-suse-linux",
|
||||||
|
@@ -1107,6 +1120,8 @@ Generic_GCC::GCCInstallationDetector::GC
|
||||||
|
"i686-pc-linux-gnu",
|
||||||
|
"i486-linux-gnu",
|
||||||
|
"i386-linux-gnu",
|
||||||
|
+ "i586-mandriva-linux-gnu",
|
||||||
|
+ "i686-mandriva-linux-gnu",
|
||||||
|
"i386-redhat-linux6E",
|
||||||
|
"i686-redhat-linux",
|
||||||
|
"i586-redhat-linux",
|
||||||
|
@@ -1135,11 +1150,13 @@ Generic_GCC::GCCInstallationDetector::GC
|
||||||
|
"powerpc-linux-gnu",
|
||||||
|
"powerpc-unknown-linux-gnu",
|
||||||
|
"powerpc-linux-gnuspe",
|
||||||
|
+ "powerpc-mandriva-linux-gnu",
|
||||||
|
"powerpc-suse-linux",
|
||||||
|
"powerpc-montavista-linuxspe"
|
||||||
|
};
|
||||||
|
static const char *const PPC64LibDirs[] = { "/lib64", "/lib" };
|
||||||
|
static const char *const PPC64Triples[] = {
|
||||||
|
+ "powerpc64-mandriva-linux-gnu",
|
||||||
|
"powerpc64-linux-gnu",
|
||||||
|
"powerpc64-unknown-linux-gnu",
|
||||||
|
"powerpc64-suse-linux",
|
||||||
|
@@ -1993,6 +2010,9 @@ enum Distro {
|
||||||
|
UbuntuPrecise,
|
||||||
|
UbuntuQuantal,
|
||||||
|
UbuntuRaring,
|
||||||
|
+ Mandriva,
|
||||||
|
+ OpenMandriva,
|
||||||
|
+ ROSA,
|
||||||
|
UnknownDistro
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -2013,6 +2033,10 @@ static bool IsUbuntu(enum Distro Distro)
|
||||||
|
return Distro >= UbuntuHardy && Distro <= UbuntuRaring;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static bool IsMandriva(enum Distro Distro) {
|
||||||
|
+ return Distro >= Mandriva && Distro <= ROSA;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static Distro DetectDistro(llvm::Triple::ArchType Arch) {
|
||||||
|
OwningPtr<llvm::MemoryBuffer> File;
|
||||||
|
if (!llvm::MemoryBuffer::getFile("/etc/lsb-release", File)) {
|
||||||
|
@@ -2020,7 +2044,15 @@ static Distro DetectDistro(llvm::Triple:
|
||||||
|
SmallVector<StringRef, 8> Lines;
|
||||||
|
Data.split(Lines, "\n");
|
||||||
|
Distro Version = UnknownDistro;
|
||||||
|
- for (unsigned i = 0, s = Lines.size(); i != s; ++i)
|
||||||
|
+ for (unsigned i = 0, s = Lines.size(); i != s; ++i) {
|
||||||
|
+ if (Version == UnknownDistro && Lines[i].startswith("DISTRIB_ID=MandrivaLinux"))
|
||||||
|
+ Version = Mandriva; // It's either Mandriva or a close derivate, will get details from DISTRIB_DESCRIPTION
|
||||||
|
+ if (Version == Mandriva && Lines[i].startswith("DISTRIB_DESCRIPTION=")) {
|
||||||
|
+ if(Lines[i].substr(20).find("ROSA") != StringRef::npos)
|
||||||
|
+ Version = ROSA;
|
||||||
|
+ else if(Lines[i].substr(20).find("Open") != StringRef::npos)
|
||||||
|
+ Version = OpenMandriva;
|
||||||
|
+ }
|
||||||
|
if (Version == UnknownDistro && Lines[i].startswith("DISTRIB_CODENAME="))
|
||||||
|
Version = llvm::StringSwitch<Distro>(Lines[i].substr(17))
|
||||||
|
.Case("hardy", UbuntuHardy)
|
||||||
|
@@ -2035,6 +2067,7 @@ static Distro DetectDistro(llvm::Triple:
|
||||||
|
.Case("quantal", UbuntuQuantal)
|
||||||
|
.Case("raring", UbuntuRaring)
|
||||||
|
.Default(UnknownDistro);
|
||||||
|
+ }
|
||||||
|
return Version;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2181,8 +2214,10 @@ static bool isMipsR2Arch(llvm::Triple::A
|
||||||
|
|
||||||
|
static StringRef getMultilibDir(const llvm::Triple &Triple,
|
||||||
|
const ArgList &Args) {
|
||||||
|
- if (!isMipsArch(Triple.getArch()))
|
||||||
|
- return Triple.isArch32Bit() ? "lib32" : "lib64";
|
||||||
|
+ llvm::Triple::ArchType Arch = Triple.getArch();
|
||||||
|
+ Distro Distro = DetectDistro(Arch);
|
||||||
|
+ if (!isMipsArch(Arch))
|
||||||
|
+ return Triple.isArch32Bit() ? (IsMandriva(Distro) ? "lib" : "lib32") : "lib64";
|
||||||
|
|
||||||
|
// lib32 directory has a special meaning on MIPS targets.
|
||||||
|
// It contains N32 ABI binaries. Use this folder if produce
|
||||||
|
@@ -2208,7 +2243,7 @@ Linux::Linux(const Driver &D, const llvm
|
||||||
|
|
||||||
|
Distro Distro = DetectDistro(Arch);
|
||||||
|
|
||||||
|
- if (IsOpenSuse(Distro) || IsUbuntu(Distro)) {
|
||||||
|
+ if (IsOpenSuse(Distro) || IsUbuntu(Distro) || IsMandriva(Distro)) {
|
||||||
|
ExtraOpts.push_back("-z");
|
||||||
|
ExtraOpts.push_back("relro");
|
||||||
|
}
|
||||||
|
@@ -2228,7 +2263,7 @@ Linux::Linux(const Driver &D, const llvm
|
||||||
|
// ABI requires a mapping between the GOT and the symbol table.
|
||||||
|
// Android loader does not support .gnu.hash.
|
||||||
|
if (!IsMips && !IsAndroid) {
|
||||||
|
- if (IsRedhat(Distro) || IsOpenSuse(Distro) ||
|
||||||
|
+ if (IsRedhat(Distro) || IsOpenSuse(Distro) || IsMandriva(Distro) ||
|
||||||
|
(IsUbuntu(Distro) && Distro >= UbuntuMaverick))
|
||||||
|
ExtraOpts.push_back("--hash-style=gnu");
|
||||||
|
|
||||||
|
@@ -2246,7 +2281,7 @@ Linux::Linux(const Driver &D, const llvm
|
||||||
|
(IsUbuntu(Distro) && Distro >= UbuntuKarmic))
|
||||||
|
ExtraOpts.push_back("--build-id");
|
||||||
|
|
||||||
|
- if (IsOpenSuse(Distro))
|
||||||
|
+ if (IsOpenSuse(Distro) || IsMandriva(Distro))
|
||||||
|
ExtraOpts.push_back("--enable-new-dtags");
|
||||||
|
|
||||||
|
// The selection of paths to try here is designed to match the patterns which
|
13
clang-hardfloat-hack.patch
Normal file
13
clang-hardfloat-hack.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
--- llvm-3.2.src.orig/lib/Driver/Tools.cpp 2012-11-21 01:56:23.000000000 -0600
|
||||||
|
+++ llvm-3.2.src/lib/Driver/Tools.cpp 2013-03-31 21:08:41.890206683 -0500
|
||||||
|
@@ -688,8 +688,8 @@
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
// Assume "soft", but warn the user we are guessing.
|
||||||
|
- FloatABI = "soft";
|
||||||
|
- D.Diag(diag::warn_drv_assuming_mfloat_abi_is) << "soft";
|
||||||
|
+ FloatABI = "hard";
|
||||||
|
+ D.Diag(diag::warn_drv_assuming_mfloat_abi_is) << "hard";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
1
llvm.rpmlintrc
Normal file
1
llvm.rpmlintrc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
addFilter("E: hardcoded-library-path")
|
306
llvm.spec
306
llvm.spec
|
@ -9,39 +9,52 @@
|
||||||
|
|
||||||
%bcond_without clang
|
%bcond_without clang
|
||||||
|
|
||||||
Name: llvm
|
|
||||||
Version: 3.1
|
|
||||||
Release: 2
|
|
||||||
Summary: Low Level Virtual Machine (LLVM)
|
Summary: Low Level Virtual Machine (LLVM)
|
||||||
License: University of Illinois/NCSA Open Source License
|
Name: llvm
|
||||||
|
Version: 3.3
|
||||||
|
Release: 4
|
||||||
|
License: NCSA
|
||||||
Group: Development/Other
|
Group: Development/Other
|
||||||
URL: http://llvm.org/
|
Url: http://llvm.org/
|
||||||
|
# There's a branch of LLVM maintained at
|
||||||
|
# git://people.freedesktop.org/~tstellar/llvm
|
||||||
|
# Ir is the working branch of the AMDGPU/R600 backend needed by Mesa (and is otherwise
|
||||||
|
# more or less identical to upstream llvm).
|
||||||
|
# At times it may be necessary to package this branch instead.
|
||||||
Source0: http://llvm.org/releases/%{version}/llvm-%{version}.src.tar.gz
|
Source0: http://llvm.org/releases/%{version}/llvm-%{version}.src.tar.gz
|
||||||
Source1: http://llvm.org/releases/%{version}/clang-%{version}.src.tar.gz
|
Source1: http://llvm.org/releases/%{version}/cfe-%{version}.src.tar.gz
|
||||||
|
Source2: http://llvm.org/releases/%{version}/clang-tools-extra-%{version}.src.tar.gz
|
||||||
|
Source3: http://llvm.org/releases/%{version}/polly-%{version}.src.tar.gz
|
||||||
|
Source1000: llvm.rpmlintrc
|
||||||
# Versionize libclang.so (Anssi 08/2012):
|
# Versionize libclang.so (Anssi 08/2012):
|
||||||
Patch0: clang-soname.patch
|
Patch0: clang-soname.patch
|
||||||
# Add libclangTooling.a to libclang.so, backport from upstream
|
# Adjust search paths to match the OS
|
||||||
Patch1: clang-shared-tooling.patch
|
Patch1: 0000-clang-mandriva.patch
|
||||||
Obsoletes: llvm-ocaml
|
# ARM hardfloat hack
|
||||||
Requires: libstdc++-devel
|
# see http://llvm.org/bugs/show_bug.cgi?id=15557
|
||||||
|
# and https://bugzilla.redhat.com/show_bug.cgi?id=803433
|
||||||
|
Patch2: clang-hardfloat-hack.patch
|
||||||
BuildRequires: bison
|
BuildRequires: bison
|
||||||
BuildRequires: groff
|
|
||||||
BuildRequires: chrpath
|
BuildRequires: chrpath
|
||||||
|
BuildRequires: flex
|
||||||
|
BuildRequires: graphviz
|
||||||
|
BuildRequires: groff
|
||||||
|
BuildRequires: libtool
|
||||||
BuildRequires: ocaml
|
BuildRequires: ocaml
|
||||||
|
BuildRequires: sed
|
||||||
BuildRequires: tcl
|
BuildRequires: tcl
|
||||||
|
BuildRequires: zip
|
||||||
|
BuildRequires: libstdc++-devel
|
||||||
|
BuildRequires: pkgconfig(cloog-isl)
|
||||||
|
BuildRequires: pkgconfig(isl)
|
||||||
|
BuildRequires: pkgconfig(libffi)
|
||||||
%if %{compile_apidox}
|
%if %{compile_apidox}
|
||||||
BuildRequires: doxygen
|
BuildRequires: doxygen
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: flex
|
Requires: libstdc++-devel
|
||||||
BuildRequires: sed
|
|
||||||
BuildRequires: graphviz
|
|
||||||
BuildRequires: libstdc++-devel
|
|
||||||
BuildRequires: libtool
|
|
||||||
BuildRequires: zip
|
|
||||||
BuildRequires: libffi-devel
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
LLVM is a robust system, particularly well suited for developing new mid-level
|
LVM is a robust system, particularly well suited for developing new mid-level
|
||||||
language-independent analyses and optimizations of all sorts, including those
|
language-independent analyses and optimizations of all sorts, including those
|
||||||
that require extensive interprocedural analysis. LLVM is also a great target
|
that require extensive interprocedural analysis. LLVM is also a great target
|
||||||
for front-end development for conventional or research programming languages,
|
for front-end development for conventional or research programming languages,
|
||||||
|
@ -60,7 +73,6 @@ for effective implementation, proper tail calls or garbage collection.
|
||||||
%{_bindir}/llvm-diff
|
%{_bindir}/llvm-diff
|
||||||
%{_bindir}/llvm-dis
|
%{_bindir}/llvm-dis
|
||||||
%{_bindir}/llvm-extract
|
%{_bindir}/llvm-extract
|
||||||
%{_bindir}/llvm-ld
|
|
||||||
%{_bindir}/llvm-link
|
%{_bindir}/llvm-link
|
||||||
%{_bindir}/llvm-mc
|
%{_bindir}/llvm-mc
|
||||||
%{_bindir}/llvm-nm
|
%{_bindir}/llvm-nm
|
||||||
|
@ -68,54 +80,51 @@ for effective implementation, proper tail calls or garbage collection.
|
||||||
%{_bindir}/llvm-prof
|
%{_bindir}/llvm-prof
|
||||||
%{_bindir}/llvm-ranlib
|
%{_bindir}/llvm-ranlib
|
||||||
%{_bindir}/llvm-readobj
|
%{_bindir}/llvm-readobj
|
||||||
%{_bindir}/llvm-stub
|
|
||||||
%{_bindir}/llvm-cov
|
%{_bindir}/llvm-cov
|
||||||
%{_bindir}/llvm-dwarfdump
|
%{_bindir}/llvm-dwarfdump
|
||||||
|
%{_bindir}/llvm-mcmarkup
|
||||||
%{_bindir}/llvm-rtdyld
|
%{_bindir}/llvm-rtdyld
|
||||||
%{_bindir}/llvm-size
|
%{_bindir}/llvm-size
|
||||||
%{_bindir}/llvm-stress
|
%{_bindir}/llvm-stress
|
||||||
|
%{_bindir}/llvm-symbolizer
|
||||||
%{_bindir}/llvm-tblgen
|
%{_bindir}/llvm-tblgen
|
||||||
%{_bindir}/macho-dump
|
%{_bindir}/macho-dump
|
||||||
%{_mandir}/man1/bugpoint.1*
|
|
||||||
%{_mandir}/man1/l*
|
|
||||||
%{_mandir}/man1/opt.1*
|
|
||||||
%{_mandir}/man1/tblgen.1*
|
|
||||||
%{_libdir}/ocaml/*
|
%{_libdir}/ocaml/*
|
||||||
|
|
||||||
#-----------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
%define major %version
|
%define major %{version}
|
||||||
%define libname %mklibname %name %major
|
%define libname %mklibname %{name} %{major}
|
||||||
|
|
||||||
%package -n %libname
|
%package -n %{libname}
|
||||||
Summary: LLVM shared libraries
|
Summary: LLVM shared libraries
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
Conflicts: llvm < 3.0-4
|
Conflicts: llvm < 3.0-4
|
||||||
|
|
||||||
%description -n %libname
|
%description -n %{libname}
|
||||||
Shared libraries for the LLVM compiler infrastructure. This is needed by
|
Shared libraries for the LLVM compiler infrastructure. This is needed by
|
||||||
programs that are dynamically linked against libLLVM.
|
programs that are dynamically linked against libLLVM.
|
||||||
|
|
||||||
%files -n %libname
|
%files -n %{libname}
|
||||||
%{_libdir}/libLLVM-%major.so
|
%{_libdir}/libLLVM-%{major}.so
|
||||||
|
|
||||||
#-----------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
%define libname_devel %mklibname -d %name
|
%define devname %mklibname -d %{name}
|
||||||
|
|
||||||
%package -n %{libname_devel}
|
%package -n %{devname}
|
||||||
Summary: Development files for LLVM
|
Summary: Development files for LLVM
|
||||||
Group: Development/Other
|
Group: Development/Other
|
||||||
Provides: llvm-devel = %version-%release
|
Provides: llvm-devel = %{EVRD}
|
||||||
Requires: %libname = %version-%release
|
Requires: %{libname} = %{EVRD}
|
||||||
Requires: %name = %version-%release
|
Requires: %{name} = %{EVRD}
|
||||||
Conflicts: llvm < 3.0-7
|
Conflicts: llvm < 3.0-7
|
||||||
Conflicts: %{_lib}llvm3.0 < 3.0-9
|
Conflicts: %{_lib}llvm3.0 < 3.0-9
|
||||||
|
|
||||||
%description -n %{libname_devel}
|
%description -n %{devname}
|
||||||
This package contains the development files for LLVM.
|
This package contains the development files for LLVM.
|
||||||
|
|
||||||
%files -n %{libname_devel}
|
%files -n %{devname}
|
||||||
%{_bindir}/%{name}-config
|
%{_bindir}/%{name}-config
|
||||||
%{_libdir}/libLLVM.so
|
%{_libdir}/libLLVM.so
|
||||||
%{_includedir}/%{name}
|
%{_includedir}/%{name}
|
||||||
|
@ -130,24 +139,21 @@ This package contains the development files for LLVM.
|
||||||
%{_libdir}/%{name}/libprofile_rt.so
|
%{_libdir}/%{name}/libprofile_rt.so
|
||||||
%{_libdir}/%{name}/libllvm*.a
|
%{_libdir}/%{name}/libllvm*.a
|
||||||
|
|
||||||
#-----------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
%package doc
|
%package doc
|
||||||
Summary: Documentation for LLVM
|
Summary: Documentation for LLVM
|
||||||
Group: Books/Computer books
|
Group: Books/Computer books
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{EVRD}
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
Obsoletes: llvm-doc-devel
|
|
||||||
|
|
||||||
%description doc
|
%description doc
|
||||||
Documentation for the LLVM compiler infrastructure.
|
Documentation for the LLVM compiler infrastructure.
|
||||||
|
|
||||||
%files doc
|
%files doc
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%doc README.txt
|
%doc README.txt
|
||||||
%doc docs/*.css
|
%doc docs/*.css
|
||||||
%doc docs/*.html
|
%doc docs/*.html
|
||||||
%doc docs/img
|
|
||||||
%doc docs/tutorial
|
%doc docs/tutorial
|
||||||
%doc docs/ocamldoc
|
%doc docs/ocamldoc
|
||||||
%doc examples
|
%doc examples
|
||||||
|
@ -155,24 +161,74 @@ Documentation for the LLVM compiler infrastructure.
|
||||||
%doc docs/doxygen
|
%doc docs/doxygen
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
#-----------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
%package polly
|
||||||
|
Summary: Polyhedral optimizations for LLVM
|
||||||
|
License: MIT
|
||||||
|
Group: Development/Other
|
||||||
|
|
||||||
|
%description polly
|
||||||
|
Polly is a polyhedral optimizer for LLVM.
|
||||||
|
|
||||||
|
Using an abstract mathematical representation it analyzes and optimizes
|
||||||
|
the memory access pattern of a program. This includes data-locality
|
||||||
|
optimizations for cache locality as well as automatic parallelization
|
||||||
|
for thread-level and SIMD parallelism.
|
||||||
|
|
||||||
|
Our overall goal is an integrated optimizer for data-locality and
|
||||||
|
parallelism that takes advantage of multi-cores, cache hierarchies,
|
||||||
|
short vector instructions as well as dedicated accelerators.
|
||||||
|
|
||||||
|
%files polly
|
||||||
|
%{_bindir}/pollycc
|
||||||
|
%{_bindir}/pollyc++
|
||||||
|
%{_libdir}/llvm/LLVMPolly.so
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
%package polly-devel
|
||||||
|
Summary: Development files for Polly
|
||||||
|
License: MIT
|
||||||
|
Group: Development/Other
|
||||||
|
|
||||||
|
%description polly-devel
|
||||||
|
Development files for Polly.
|
||||||
|
|
||||||
|
Polly is a polyhedral optimizer for LLVM.
|
||||||
|
|
||||||
|
Using an abstract mathematical representation it analyzes and optimizes
|
||||||
|
the memory access pattern of a program. This includes data-locality
|
||||||
|
optimizations for cache locality as well as automatic parallelization
|
||||||
|
for thread-level and SIMD parallelism.
|
||||||
|
|
||||||
|
Our overall goal is an integrated optimizer for data-locality and
|
||||||
|
parallelism that takes advantage of multi-cores, cache hierarchies,
|
||||||
|
short vector instructions as well as dedicated accelerators.
|
||||||
|
|
||||||
|
%files polly-devel
|
||||||
|
%{_includedir}/polly
|
||||||
|
%{_libdir}/llvm/libpollyanalysis.a
|
||||||
|
%{_libdir}/llvm/libpollycodegen.a
|
||||||
|
%{_libdir}/llvm/libpollyexchange.a
|
||||||
|
%{_libdir}/llvm/libpollyjson.a
|
||||||
|
%{_libdir}/llvm/libpollysupport.a
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
%if %{with clang}
|
%if %{with clang}
|
||||||
%define clang_major %version
|
|
||||||
%define clang_libname %mklibname clang %clang_major
|
|
||||||
|
|
||||||
# TODO: %{_bindir}/clang is linked against static libclang.a, could it be
|
# TODO: %{_bindir}/clang is linked against static libclang.a, could it be
|
||||||
# linked against libclang.so instead, like llvm-* are against livLLVM.so?
|
# linked against libclang.so instead, like llvm-* are against livLLVM.so?
|
||||||
|
|
||||||
%package -n clang
|
%package -n clang
|
||||||
Summary: A C language family front-end for LLVM
|
Summary: A C language family front-end for LLVM
|
||||||
License: NCSA
|
License: NCSA
|
||||||
Group: Development/Other
|
Group: Development/Other
|
||||||
# TODO: is this requires:llvm needed, or just legacy from fedora pkg layout?
|
# TODO: is this requires:llvm needed, or just legacy from fedora pkg layout?
|
||||||
Requires: llvm%{?_isa} = %{version}-%{release}
|
Requires: llvm = %{EVRD}
|
||||||
# clang requires gcc, clang++ requires libstdc++-devel
|
# clang requires gcc, clang++ requires libstdc++-devel
|
||||||
Requires: gcc
|
Requires: gcc
|
||||||
Requires: libstdc++-devel >= %{gcc_version}
|
Requires: libstdc++-devel >= %{gcc_version}
|
||||||
|
|
||||||
%description -n clang
|
%description -n clang
|
||||||
clang: noun
|
clang: noun
|
||||||
|
@ -187,53 +243,68 @@ as libraries and designed to be loosely-coupled and extensible.
|
||||||
%files -n clang
|
%files -n clang
|
||||||
%doc clang-docs/*
|
%doc clang-docs/*
|
||||||
%{_bindir}/clang*
|
%{_bindir}/clang*
|
||||||
|
%{_bindir}/cpp11-migrate
|
||||||
|
%{_libdir}/llvm/libmigrateCore.a
|
||||||
%{_bindir}/c-index-test
|
%{_bindir}/c-index-test
|
||||||
%{_prefix}/lib/clang
|
%{_prefix}/lib/clang
|
||||||
%doc %{_mandir}/man1/clang.1.*
|
%doc %{_mandir}/man1/clang.1.*
|
||||||
|
%endif
|
||||||
|
|
||||||
%package -n %clang_libname
|
#----------------------------------------------------------------------------
|
||||||
Summary: Shared library for clang
|
|
||||||
Group: System/Libraries
|
|
||||||
|
|
||||||
%description -n %clang_libname
|
%if %{with clang}
|
||||||
|
%define clang_major %{version}
|
||||||
|
%define libclang %mklibname clang %{clang_major}
|
||||||
|
|
||||||
|
%package -n %{libclang}
|
||||||
|
Summary: Shared library for clang
|
||||||
|
Group: System/Libraries
|
||||||
|
|
||||||
|
%description -n %{libclang}
|
||||||
Shared libraries for the clang compiler. This is needed by
|
Shared libraries for the clang compiler. This is needed by
|
||||||
programs that are dynamically linked against libclang.
|
programs that are dynamically linked against libclang.
|
||||||
|
|
||||||
%files -n %clang_libname
|
%files -n %{libclang}
|
||||||
%{_libdir}/libclang-%clang_major.so
|
%{_libdir}/libclang-%{clang_major}.so
|
||||||
|
%endif
|
||||||
|
|
||||||
#-----------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
%define clang_libname_devel %mklibname -d clang
|
%if %{with clang}
|
||||||
|
%define devclang %mklibname -d clang
|
||||||
|
|
||||||
%package -n %{clang_libname_devel}
|
%package -n %{devclang}
|
||||||
Summary: Development files for clang
|
Summary: Development files for clang
|
||||||
Group: Development/Other
|
Group: Development/Other
|
||||||
Requires: %clang_libname = %version-%release
|
Requires: %{libclang} = %{EVRD}
|
||||||
Provides: clang-devel = %version-%release
|
Provides: clang-devel = %{EVRD}
|
||||||
Conflicts: llvm-devel < 3.1
|
Conflicts: llvm-devel < 3.1
|
||||||
Obsoletes: clang-devel < 3.1
|
Obsoletes: clang-devel < 3.1
|
||||||
|
|
||||||
%description -n %{clang_libname_devel}
|
%description -n %{devclang}
|
||||||
This package contains header files and libraries needed for using
|
This package contains header files and libraries needed for using
|
||||||
libclang.
|
libclang.
|
||||||
|
|
||||||
%files -n %{clang_libname_devel}
|
%files -n %{devclang}
|
||||||
%{_includedir}/clang
|
%{_includedir}/clang
|
||||||
%{_includedir}/clang-c
|
%{_includedir}/clang-c
|
||||||
%{_libdir}/libclang.so
|
%{_libdir}/libclang.so
|
||||||
%dir %{_libdir}/%{name}
|
%dir %{_libdir}/%{name}
|
||||||
%{_libdir}/%{name}/libclang*.a
|
%{_libdir}/%{name}/libclang*.a
|
||||||
%{_libdir}/%{name}/libclang*.so
|
%{_libdir}/%{name}/libclang*.so
|
||||||
|
%endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
%if %{with clang}
|
||||||
%package -n clang-analyzer
|
%package -n clang-analyzer
|
||||||
Summary: A source code analysis framework
|
Summary: A source code analysis framework
|
||||||
License: NCSA
|
License: NCSA
|
||||||
Group: Development/Other
|
Group: Development/Other
|
||||||
Requires: clang%{?_isa} = %{version}-%{release}
|
Requires: clang = %{EVRD}
|
||||||
# not picked up automatically since files are currently not instaled
|
# not picked up automatically since files are currently not instaled
|
||||||
# in standard Python hierarchies yet
|
# in standard Python hierarchies yet
|
||||||
Requires: python
|
Requires: python
|
||||||
|
|
||||||
%description -n clang-analyzer
|
%description -n clang-analyzer
|
||||||
The Clang Static Analyzer consists of both a source code analysis
|
The Clang Static Analyzer consists of both a source code analysis
|
||||||
|
@ -245,42 +316,51 @@ intended to run in tandem with a build of a project or code base.
|
||||||
%{_bindir}/scan-build
|
%{_bindir}/scan-build
|
||||||
%{_bindir}/scan-view
|
%{_bindir}/scan-view
|
||||||
%{_libdir}/clang-analyzer
|
%{_libdir}/clang-analyzer
|
||||||
|
%endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
%if %{with clang}
|
||||||
%package -n clang-doc
|
%package -n clang-doc
|
||||||
Summary: Documentation for Clang
|
Summary: Documentation for Clang
|
||||||
Group: Books/Computer books
|
Group: Books/Computer books
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{EVRD}
|
||||||
|
|
||||||
%description -n clang-doc
|
%description -n clang-doc
|
||||||
Documentation for the Clang compiler front-end.
|
Documentation for the Clang compiler front-end.
|
||||||
|
|
||||||
%files -n clang-doc
|
%files -n clang-doc
|
||||||
%doc clang-docs-full/*
|
%doc clang-docs-full/*
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
#-----------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -qn %{name}-%{version}.src %{?with_clang:-a1}
|
%setup -qn %{name}-%{version}.src %{?with_clang:-a1 -a2 -a3}
|
||||||
rm -rf tools/clang
|
rm -rf tools/clang
|
||||||
%if %{with clang}
|
%if %{with clang}
|
||||||
mv clang-%{version}%{?prerel}.src tools/clang
|
mv cfe-%{version}%{?prerel}.src tools/clang
|
||||||
|
mv polly-%{version}%{?prerel}.src tools/polly
|
||||||
|
mv clang-tools-extra-%{version}%{?prerel}.src tools/clang/tools/extra
|
||||||
cd tools/clang
|
cd tools/clang
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
%patch1 -p1 -b .mandriva~
|
||||||
|
%patch2 -p1 -b .armhf
|
||||||
cd -
|
cd -
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%build
|
# Upstream tends to forget to remove "rc" and "svn" markers from version
|
||||||
|
# numbers before making releases
|
||||||
|
sed -i -re 's|^(AC_INIT[^,]*,\[)([0-9.]*)([^]])*(.*)|\1\2\4|' autoconf/configure.ac
|
||||||
|
sed -i -re "s|(PACKAGE_VERSION='[0-9.]*)([^']*)(.*)|\1\3|g;s|(PACKAGE_STRING='LLVM [0-9.]*)([^']*)(.*)|\1\3|g" configure
|
||||||
|
|
||||||
|
%build
|
||||||
# Build with gcc/g++, not clang if it happens to be installed
|
# Build with gcc/g++, not clang if it happens to be installed
|
||||||
# (blino) clang < 3.1 does not handle system headers from gcc 4.7
|
# (blino) clang < 3.1 does not handle system headers from gcc 4.7
|
||||||
# http://llvm.org/bugs/show_bug.cgi?id=11916
|
# http://llvm.org/bugs/show_bug.cgi?id=11916
|
||||||
export CC=gcc
|
export CC=%__cc
|
||||||
export CXX=g++
|
export CXX=%__cxx
|
||||||
|
|
||||||
%configure2_5x \
|
%configure2_5x \
|
||||||
--libdir=%{_libdir}/%{name} \
|
--libdir=%{_libdir}/%{name} \
|
||||||
|
@ -289,11 +369,14 @@ export CXX=g++
|
||||||
--enable-jit \
|
--enable-jit \
|
||||||
--enable-libffi \
|
--enable-libffi \
|
||||||
--enable-optimized \
|
--enable-optimized \
|
||||||
--enable-targets=host-only \
|
--enable-targets=all \
|
||||||
|
--enable-experimental-targets=R600 \
|
||||||
--disable-expensive-checks \
|
--disable-expensive-checks \
|
||||||
--enable-debug-runtime \
|
--enable-debug-runtime \
|
||||||
--disable-assertions \
|
--disable-assertions \
|
||||||
--enable-threads \
|
--enable-threads \
|
||||||
|
--with-cloog=%{_prefix} \
|
||||||
|
--with-isl=%{_prefix} \
|
||||||
%if %{compile_apidox}
|
%if %{compile_apidox}
|
||||||
--enable-doxygen
|
--enable-doxygen
|
||||||
%endif
|
%endif
|
||||||
|
@ -317,15 +400,15 @@ cp bindings/ocaml/llvm/META.llvm bindings/ocaml/llvm/Release/
|
||||||
PROJ_libdir=%{_libdir}/%{name}
|
PROJ_libdir=%{_libdir}/%{name}
|
||||||
|
|
||||||
# Invalid dir
|
# Invalid dir
|
||||||
rm -rf %buildroot%_bindir/.dir
|
rm -rf %{buildroot}%{_bindir}/.dir
|
||||||
|
|
||||||
# wrong rpath entries (Anssi 11/2011)
|
# wrong rpath entries (Anssi 11/2011)
|
||||||
file %{buildroot}/%{_bindir}/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
|
file %{buildroot}/%{_bindir}/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
|
||||||
file %{buildroot}/%{_libdir}/llvm/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
|
file %{buildroot}/%{_libdir}/llvm/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
|
||||||
|
|
||||||
# move shared library to standard library path and add devel symlink (Anssi 11/2011)
|
# move shared library to standard library path and add devel symlink (Anssi 11/2011)
|
||||||
mv %{buildroot}%{_libdir}/llvm/libLLVM-%major.so %{buildroot}%{_libdir}
|
mv %{buildroot}%{_libdir}/llvm/libLLVM-%{major}.so %{buildroot}%{_libdir}
|
||||||
ln -s libLLVM-%major.so %{buildroot}%{_libdir}/libLLVM.so
|
ln -s libLLVM-%{major}.so %{buildroot}%{_libdir}/libLLVM.so
|
||||||
# Also, create shared library symlinks corresponding to all the static library
|
# Also, create shared library symlinks corresponding to all the static library
|
||||||
# names, so that using e.g. "-lLLVMBitReader" will cause the binary to be linked
|
# names, so that using e.g. "-lLLVMBitReader" will cause the binary to be linked
|
||||||
# against the shared library instead of static library by default. (Anssi 08/2012)
|
# against the shared library instead of static library by default. (Anssi 08/2012)
|
||||||
|
@ -335,10 +418,10 @@ for staticlib in %{buildroot}%{_libdir}/llvm/libLLVM*.a; do
|
||||||
ln -s ../libLLVM.so "$sharedlib"
|
ln -s ../libLLVM.so "$sharedlib"
|
||||||
done
|
done
|
||||||
|
|
||||||
%if %with clang
|
%if %{with clang}
|
||||||
# Versionize libclang.so (patch0 makes the same change to soname) and move it to standard path.
|
# Versionize libclang.so (patch0 makes the same change to soname) and move it to standard path.
|
||||||
mv %{buildroot}%{_libdir}/llvm/libclang.so %{buildroot}%{_libdir}/libclang-%version.so
|
mv %{buildroot}%{_libdir}/llvm/libclang.so %{buildroot}%{_libdir}/libclang-%{version}.so
|
||||||
ln -s libclang-%clang_major.so %{buildroot}%{_libdir}/libclang.so
|
ln -s libclang-%{clang_major}.so %{buildroot}%{_libdir}/libclang.so
|
||||||
ln -s ../libclang.so %{buildroot}%{_libdir}/llvm/libclang.so
|
ln -s ../libclang.so %{buildroot}%{_libdir}/llvm/libclang.so
|
||||||
|
|
||||||
# NOTE: We don't create devel symlinks for the libclang.so for libclang*.a libraries
|
# NOTE: We don't create devel symlinks for the libclang.so for libclang*.a libraries
|
||||||
|
@ -352,7 +435,6 @@ ln -s ../libclang.so %{buildroot}%{_libdir}/llvm/libclang.so
|
||||||
strip --strip-debug %{buildroot}%{_libdir}/llvm/*.a
|
strip --strip-debug %{buildroot}%{_libdir}/llvm/*.a
|
||||||
|
|
||||||
%if %{with clang}
|
%if %{with clang}
|
||||||
|
|
||||||
# Static analyzer not installed by default:
|
# Static analyzer not installed by default:
|
||||||
# http://clang-analyzer.llvm.org/installation#OtherPlatforms
|
# http://clang-analyzer.llvm.org/installation#OtherPlatforms
|
||||||
mkdir -p %{buildroot}%{_libdir}/clang-analyzer
|
mkdir -p %{buildroot}%{_libdir}/clang-analyzer
|
||||||
|
@ -375,7 +457,21 @@ rm -rf clang-docs-full
|
||||||
cp -al tools/clang/docs clang-docs-full
|
cp -al tools/clang/docs clang-docs-full
|
||||||
rm -rf clang-docs-full/{doxygen*,Makefile*,*.graffle,tools}
|
rm -rf clang-docs-full/{doxygen*,Makefile*,*.graffle,tools}
|
||||||
|
|
||||||
|
# Polly bits as described on
|
||||||
|
# http://polly.llvm.org/example_load_Polly_into_clang.html
|
||||||
|
cat >%{buildroot}%{_bindir}/pollycc <<'EOF'
|
||||||
|
#!/bin/sh
|
||||||
|
exec %{_bindir}/clang -O3 -Xclang -load -Xclang %{_libdir}/llvm/LLVMPolly.so "$@"
|
||||||
|
EOF
|
||||||
|
cat >%{buildroot}%{_bindir}/pollyc++ <<'EOF'
|
||||||
|
#!/bin/sh
|
||||||
|
exec %{_bindir}/clang++ -O3 -Xclang -load -Xclang %{_libdir}/llvm/LLVMPolly.so "$@"
|
||||||
|
EOF
|
||||||
|
chmod 0755 %{buildroot}%{_bindir}/pollycc %{buildroot}%{_bindir}/pollyc++
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# Get rid of erroneously installed example files.
|
# Get rid of erroneously installed example files.
|
||||||
rm %{buildroot}%{_libdir}/%{name}/LLVMHello.so
|
rm %{buildroot}%{_libdir}/%{name}/LLVMHello.so
|
||||||
|
|
||||||
|
# Fix bogus permissions
|
||||||
|
find %{buildroot} -name "*.a" -a -type f|xargs chmod 0644
|
||||||
|
|
Loading…
Add table
Reference in a new issue