SHA256
1
0
forked from pool/llvm

Accepting request 433539 from devel:tools:compiler

- Remove unneeded emacs-nox dependency. 

- BuildIgnore emacs and vim to avoid cycles. 

- Split out llvm and lldb into a version-specific package.
- Turn this package into a wrapper around the version-specific
  packages.
- Remove patches:
   * default-to-i586.patch
   * assume-opensuse.patch
   * glibc-2.23-libcxx.patch
   * arm_suse_support.diff
   * llvm-remove-clang-only-flags.patch
   * clang-resourcedirs.patch
   * lldb-add-pthread-dl-libs.patch
   * llvm-nonvoid-return.patch
   * glibc-2.24-libcxx.patch
   * revert-cmake-soname.patch
   * set-revision.patch
   * lldb-cmake.patch
   * D15067.id41365.diff
   * llvm-fix-find-gcc5-install.patch

OBS-URL: https://build.opensuse.org/request/show/433539
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/llvm?expand=0&rev=88
This commit is contained in:
Dominique Leuenberger 2016-10-10 15:26:35 +00:00 committed by Git OBS Bridge
commit 00c234f8a5
32 changed files with 308 additions and 5172 deletions

File diff suppressed because it is too large Load Diff

139
README.packaging Normal file
View File

@ -0,0 +1,139 @@
========
OVERVIEW
This package is a dummy package that always depends on the
version of corresponding LLVM packages that openSUSE
currently supports. This file documents the procedure for
updating the various LLVM components.
There are three major update scenarios that will be addressed
here, patch-level updates to the current LLVM version,
patch-level updates to older LLVM versions, and major/minor
version updates.
LLVM version numbers come in three levels. For version
X.Y.Z, changes to the X level are major updates, changes to
the Y level are minor updates, and changes to the Z level
are patch-level updates. Library .so numbers are based on
the major and minor version, for example libllvm.so.X.Y.
Patch-level updates do not update the version number of
libraries. For this reason, only changes to major and minor
version numbers get a new llvm package.
There are up to three packages that need to be handled in a
given update. This package, the base "llvm" package, the
current "llvmX_Y" package (X and Y are the major and minor
version numbers, respectively), and the next "llvmX_Y"
package if the major or minor version has been changed.
NOTE: This package should always have the same "License"
tag as the currently-supported version of the llvmX_Y
package.
===========================================
PATCH-LEVEL UPDATES TO CURRENT LLVM VERSION
For patch level updates, this package (llvm) and the current
llvmX_Y package need to be updated.
1. llvmX_Y package:
1. Add the new sources to the package and delete the old
ones
2. Update the "Version" tag in llvmX_Y.spec and
lldbX_Y.spec to match the new sources.
3. Update the "_revsn" tag in llvmX_Y.spec and
lldbX_Y.spec to match the revision number of the
tag. This can be found on
http://lists.llvm.org/pipermail/llvm-branch-commits
and should have like "[llvm-tag]" and
"Creating release candidate final" in the subject
line. You want to find the one for the current LLVM
release.
4. Update the "_relver" tag in llvmX_Y.spec to match
the "Version" tag.
5. Confirm everything builds successfully and there are
no new rpmlint issues.
2. llvm package:
1. Update the "Version" tag to match the new llvmX_Y
version.
========================================
PATCH-LEVEL UPDATES TO OLD LLVM VERSIONS
For patch-level updates to versions of LLVM before the
current version, only the corresponding llvmX_Y package
needs to be updated.
1. llvmX_Y package:
1. Add the new sources to the package and delete the old
ones
2. Update the "Version" tag in llvmX_Y.spec and
lldbX_Y.spec to match the new sources.
3. Update the "_revsn" tag in llvmX_Y.spec and
lldbX_Y.spec to match the revision number of the
tag. This can be found on
http://lists.llvm.org/pipermail/llvm-branch-commits
and should have like "[llvm-tag]" and
"Creating release candidate final" in the subject
line. You want to find the one for the current LLVM
release.
4. Update the "_relver" tag in llvmX_Y.spec to match
the "Version" tag.
5. Confirm everything builds successfully and there are
no new rpmlint issues.
===============================
MAJOR AND MINOR VERSION UPDATES
For updates that change the major or minor version number,
this package (llvm) needs to be updated, a new llvmX_Y
package needs to be created, and the old llvmX_Y package
needs to be modified.
1. New llvmX_Y package:
1. Copy (do not link) the old llvmX_Y to the new
major/minor version number.
2. Rename the .spec, .changes, and rpmlintrc files in the
new llvmX_Y package to the new major/minor version
number
3. Rename the base llvm and lldb package in their
respective .spec files to match the new package name.
4. Change the "_sonum" tag in llvmX_Y.spec and
lldbX_Y.spec to match the new major/minor versions.
It should be of the form "X" if if the "X" minor
version is 0 or "X_Y" if theminor version is greater
than 0.
5. Change the "_minor" tag in llvmX_Y.spec to match
the new major/minor versions. It should be of the
form "X.Y".
6. Update the "Version", "_revsn", and "_relver" tags
as described in PATCH-LEVEL UPDATES above.
7. Confirm llvmX_Y.spec builds successfully and there are
no new rpmlint issues.
8. Check whether the .so number of "libc++.so.W.V" has
changed. If so, change "_socxx" tag to match.
It should be of the form "W" if the "V" value is 0
or "W_V" if the "V" value is greater than 0.
9. Confirm everything builds successfully and there are
no new rpmlint issues.
2. Old llvmX_Y package:
1. If the .so number of libc++.so.W.V has not changed,
remove the "%if" and %ifarch" tests around
%bcond_without/%bcond_with libcxx in llvmX_Y.spec
and make it always %bcond_with. If the .so numbers
have changed, these can be left-as-is.
2. Remove the "%if" and %ifarch" tests around
%bcond_without/%bcond_with libomp in llvmX_Y.spec
and make it always %bcond_with.
3. Change "%bcond_without pyclang" to
"%bcond_with pyclang" in llvmX_Y.spec.
4. Change BuildRequires "llvm%{_sonum}-gold = %{version}"
to "llvm-gold" in lldbX_Y.spec.
5. Confirm everything builds successfully and there are
no new rpmlint issues.
3. llvm package:
1. update the "Version" tag to match the new llvmX_Y
version.
2. Change the "_sonum" tag to match the one in the
new "llvmX_Y.spec" and "lldbX_Y.spec" files.

View File

@ -1,32 +0,0 @@
<?xml version="1.0"?>
<constraints>
<hardware>
<disk>
<size unit="G">20</size>
</disk>
<memory>
<size unit="M">4000</size>
</memory>
</hardware>
<overwrite>
<conditions>
<arch>armv6l</arch>
<arch>armv7l</arch>
</conditions>
<hardware>
<memory>
<size unit="M">768</size>
</memory>
</hardware>
</overwrite>
<overwrite>
<conditions>
<arch>ppc64le</arch>
</conditions>
<hardware>
<memory>
<size unit="M">4096</size>
</memory>
</hardware>
</overwrite>
</constraints>

View File

@ -1,24 +0,0 @@
Index: cfe-3.8.1.src/lib/Driver/ToolChains.cpp
===================================================================
--- cfe-3.8.1.src/lib/Driver/ToolChains.cpp.orig
+++ cfe-3.8.1.src/lib/Driver/ToolChains.cpp
@@ -1418,7 +1418,7 @@ bool Generic_GCC::GCCInstallationDetecto
static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
static const char *const AArch64Triples[] = {
"aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-linux-android",
- "aarch64-redhat-linux"};
+ "aarch64-redhat-linux", "aarch64-suse-linux"};
static const char *const AArch64beLibDirs[] = {"/lib"};
static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu",
"aarch64_be-linux-gnu"};
@@ -1427,7 +1427,9 @@ bool Generic_GCC::GCCInstallationDetecto
static const char *const ARMTriples[] = {"arm-linux-gnueabi",
"arm-linux-androideabi"};
static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
- "armv7hl-redhat-linux-gnueabi"};
+ "armv7hl-redhat-linux-gnueabi",
+ "armv6hl-suse-linux-gnueabi",
+ "armv7hl-suse-linux-gnueabi"};
static const char *const ARMebLibDirs[] = {"/lib"};
static const char *const ARMebTriples[] = {"armeb-linux-gnueabi",
"armeb-linux-androideabi"};

View File

@ -1,21 +0,0 @@
Index: cfe-3.8.1.src/lib/Driver/ToolChains.cpp
===================================================================
--- cfe-3.8.1.src/lib/Driver/ToolChains.cpp.orig
+++ cfe-3.8.1.src/lib/Driver/ToolChains.cpp
@@ -3422,6 +3422,7 @@ static bool IsUbuntu(enum Distro Distro)
}
static Distro DetectDistro(const Driver &D, llvm::Triple::ArchType Arch) {
+#if 0
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
llvm::MemoryBuffer::getFile("/etc/lsb-release");
if (File) {
@@ -3498,6 +3499,8 @@ static Distro DetectDistro(const Driver
return ArchLinux;
return UnknownDistro;
+#endif
+ return OpenSUSE;
}
/// \brief Get our best guess at the multiarch triple for a target.

View File

@ -1,4 +1,5 @@
libLLVM3_8
libclang3_8
llvm-devel llvm-devel
lldb-devel
clang-devel clang-devel
llvm-LTO-devel
llvm-gold

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4cd3836dfb4b88b597e075341cae86d61c63ce3963e45c7fe6a8bf59bb382cdf
size 9605548

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5656cc4d88e364f4d8ec30a16f051296a0ae10b15ce67e439b4c4caf3a6a9d2a
size 671716

View File

@ -1,13 +0,0 @@
Index: cfe-3.8.1.src/lib/Driver/Driver.cpp
===================================================================
--- cfe-3.8.1.src/lib/Driver/Driver.cpp
+++ cfe-3.8.1.src/lib/Driver/Driver.cpp
@@ -64,7 +64,7 @@ Driver::Driver(StringRef ClangExecutable
// Compute the path to the resource directory.
StringRef ClangResourceDir(CLANG_RESOURCE_DIR);
- SmallString<128> P(Dir);
+ SmallString<128> P((Dir != "") ? Dir : "/usr/bin/");
if (ClangResourceDir != "") {
llvm::sys::path::append(P, ClangResourceDir);
} else {

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:664a5c60220de9c290bf2a5b03d902ab731a4f95fe73a00856175ead494ec396
size 334768

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0df011dae14d8700499dfc961602ee0a9572fef926202ade5dcdfe7858411e5c
size 1263312

View File

@ -1,15 +0,0 @@
Index: cfe-3.8.1.src/lib/Driver/Tools.cpp
===================================================================
--- cfe-3.8.1.src/lib/Driver/Tools.cpp.orig
+++ cfe-3.8.1.src/lib/Driver/Tools.cpp
@@ -1680,8 +1680,8 @@ static const char *getX86TargetCPU(const
case llvm::Triple::Bitrig:
return "i686";
default:
- // Fallback to p4.
- return "pentium4";
+ // Fallback to i586.
+ return "i586";
}
}

View File

@ -1,59 +0,0 @@
Index: libcxx-3.8.1.src/test/std/numerics/c.math/cmath_isinf.pass.cpp
===================================================================
--- libcxx-3.8.1.src.orig/test/std/numerics/c.math/cmath_isinf.pass.cpp
+++ libcxx-3.8.1.src/test/std/numerics/c.math/cmath_isinf.pass.cpp
@@ -11,8 +11,6 @@
// isinf
-// XFAIL: linux
-
#include <cmath>
#include <type_traits>
#include <cassert>
@@ -27,4 +25,4 @@ int main()
static_assert((std::is_same<decltype(std::isinf(0)), bool>::value), "");
static_assert((std::is_same<decltype(std::isinf((long double)0)), bool>::value), "");
assert(std::isinf(-1.0) == false);
-}
\ No newline at end of file
+}
Index: libcxx-3.8.1.src/test/std/numerics/c.math/cmath_isnan.pass.cpp
===================================================================
--- libcxx-3.8.1.src.orig/test/std/numerics/c.math/cmath_isnan.pass.cpp
+++ libcxx-3.8.1.src/test/std/numerics/c.math/cmath_isnan.pass.cpp
@@ -11,8 +11,6 @@
// isnan
-// XFAIL: linux
-
#include <cmath>
#include <type_traits>
#include <cassert>
Index: libcxx-3.8.1.src/test/std/depr/depr.c.headers/math_h_isinf.pass.cpp
===================================================================
--- libcxx-3.8.1.src.orig/test/std/depr/depr.c.headers/math_h_isinf.pass.cpp
+++ libcxx-3.8.1.src/test/std/depr/depr.c.headers/math_h_isinf.pass.cpp
@@ -11,8 +11,6 @@
// isinf
-// XFAIL: linux
-
#include <math.h>
#include <type_traits>
#include <cassert>
Index: libcxx-3.8.1.src/test/std/depr/depr.c.headers/math_h_isnan.pass.cpp
===================================================================
--- libcxx-3.8.1.src.orig/test/std/depr/depr.c.headers/math_h_isnan.pass.cpp
+++ libcxx-3.8.1.src/test/std/depr/depr.c.headers/math_h_isnan.pass.cpp
@@ -11,8 +11,6 @@
// isnan
-// XFAIL: linux
-
#include <math.h>
#include <type_traits>
#include <cassert>

View File

@ -1,22 +0,0 @@
Index: libcxx-3.8.1.src/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp
===================================================================
--- libcxx-3.8.1.src/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp.orig
+++ libcxx-3.8.1.src/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp
@@ -113,7 +113,7 @@ int main()
{
Fnf f(LOCALE_ru_RU_UTF_8, 1);
- assert(f.curr_symbol() == " \xD1\x80\xD1\x83\xD0\xB1");
+ assert(f.curr_symbol() == " \xD1\x80\xD1\x83\xD0\xB1" || f.curr_symbol() == " \u20bd");
}
{
Fnt f(LOCALE_ru_RU_UTF_8, 1);
@@ -121,7 +121,7 @@ int main()
}
{
Fwf f(LOCALE_ru_RU_UTF_8, 1);
- assert(f.curr_symbol() == L" \x440\x443\x431");
+ assert(f.curr_symbol() == L" \x440\x443\x431" || f.curr_symbol() == L" \u20bd");
}
{
Fwt f(LOCALE_ru_RU_UTF_8, 1);

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:77d7f3784c88096d785bd705fa1bab7031ce184cd91ba8a7008abf55264eeecc
size 1074164

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e1b55f7be3fad746bdd3025f43e42d429fb6194aac5919c2be17c4a06314dae1
size 508392

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:349148116a47e39dcb5d5042f10d8a6357d2c865034563283ca512f81cdce8a3
size 10928220

View File

@ -1,20 +0,0 @@
Index: lldb-3.8.1.src/cmake/modules/LLDBConfig.cmake
===================================================================
--- lldb-3.8.1.src.orig/cmake/modules/LLDBConfig.cmake
+++ lldb-3.8.1.src/cmake/modules/LLDBConfig.cmake
@@ -323,13 +323,9 @@ else()
endif()
-if (HAVE_LIBPTHREAD)
- list(APPEND system_libs pthread)
-endif(HAVE_LIBPTHREAD)
+list(APPEND system_libs pthread)
-if (HAVE_LIBDL)
- list(APPEND system_libs ${CMAKE_DL_LIBS})
-endif()
+list(APPEND system_libs ${CMAKE_DL_LIBS})
if(LLDB_REQUIRES_EH)
set(LLDB_REQUIRES_RTTI ON)

View File

@ -1,31 +0,0 @@
Index: lldb-3.8.1.src/source/lldb.cpp
===================================================================
--- lldb-3.8.1.src.orig/source/lldb.cpp
+++ lldb-3.8.1.src/source/lldb.cpp
@@ -21,11 +21,7 @@ extern "C" const unsigned char liblldb_c
static const char *
GetLLDBRevision()
{
-#ifdef LLDB_REVISION
return LLDB_REVISION;
-#else
- return NULL;
-#endif
}
static const char *
Index: lldb-3.8.1.src/source/Core/IOHandler.cpp
===================================================================
--- lldb-3.8.1.src.orig/source/Core/IOHandler.cpp
+++ lldb-3.8.1.src/source/Core/IOHandler.cpp
@@ -9,8 +9,8 @@
// C Includes
#ifndef LLDB_DISABLE_CURSES
-#include <curses.h>
-#include <panel.h>
+#include <ncurses/curses.h>
+#include <ncurses/panel.h>
#endif
// C++ Includes

View File

@ -1,129 +0,0 @@
-------------------------------------------------------------------
Wed Sep 7 10:01:47 UTC 2016 - tchvatal@suse.com
- Sort out with spec-cleaner
-------------------------------------------------------------------
Thu Aug 31 20:36:58 UTC 2016 - toddrme2178@gmail.com
- Update to llvm 3.8.1
* See http://llvm.org/releases/3.8.1/docs/ReleaseNotes.html and
http://llvm.org/releases/3.8.1/tools/docs/ReleaseNotes.html
- Use versioned libLLVM (to libLLVM3_8) and libclang (to libclang3_8)
- Change versioning of liblldb3_8 to liblldb-3_8 and use a variable
to control the name instead of hard-coding it.
- Use bcond_with and bcond_without to enable/disable build options
instead of hard-coding them.
- Put buildrequires as requires in -devel packages to avoid linker errors
when building packages against the -devel packages.
- Add ffi support (disabled by default).
- Add oprofile support (disabled by default).
- Add valgrind support (disabled by default).
- Link cmake files to the normal cmake file directory to allow autodetection
of cmake interfaces.
- Remove unused lldb components from main spec file.
- Split llvm python bindings into own subpackage.
- Split emacs plugin into own subpackage
- Move additional vim plugins into vim plugins package
- Split libc++, libLTO, LLVMgold, libomp, clang-chekers into own subpackages
- Make python-clang, llvm-vim-plugins, and llvm-emacs-plugins noarch since
they aren't architecture-specific.
- Make packages besides llvm, llvm-clang, and the shared libraries conflict
with other versions. This will be important when multiple LLVM versions
are supported.
- Various spec file cleanups
- Rebase patches:
* arm_suse_support.diff
* assume-opensuse.patch
* clang-resourcedirs.patch
* default-to-i586.patch
* glibc-2.23-libcxx.patch
* glibc-2.24-libcxx.patch
* lldb-add-pthread-dl-libs.patch
* lldb-cmake.patch
* llvm-fix-find-gcc5-install.patch
* llvm-nonvoid-return.patch
* llvm-remove-clang-only-flags.patch
* revert-cmake-soname.patch
* set-revision.patch
-------------------------------------------------------------------
Wed Aug 31 10:24:31 UTC 2016 - tchvatal@suse.com
- Convert to use %cmake macros
-------------------------------------------------------------------
Thu Aug 25 16:42:02 UTC 2016 - ronisbr@gmail.com
- Add a symlink of liblldb file to %{python_sitearch}/_lldb.so.
Otherwise, `import lldb` will fail with the message:
ImportError: No module named _lldb
-------------------------------------------------------------------
Fri May 20 07:44:49 UTC 2016 - jengelh@inai.de
- Set RPM group, drop marketing words from summary in lieu of
something useful. Implement shared library guideline.
-------------------------------------------------------------------
Sun May 15 17:13:24 UTC 2016 - ronisbr@gmail.com
- Update to version 3.8.0
* No upstream changelog.
- Refresh `lldb-cmake.patch`.
- Add patch `D15067.id41365.diff` from upstream review system to
fix out of tree build (http://reviews.llvm.org/D15067).
- Add patch `lldb-add-pthread-dl-libs.patch` to force CMake to add
the options `-lpthread` and `-ldl` to the end of linking command.
Otherwise, LLDB linking will fail with these errors:
undefined reference to symbol 'pthread_setname_np@@GLIBC_2.12'
undefined reference to symbol 'dladdr@@GLIBC_2.2.5'
- Run spec-cleaner.
- Add `fdupes` to remove duplicated files.
-------------------------------------------------------------------
Wed Sep 2 08:23:08 UTC 2015 - idonmez@suse.com
- Update to version 3.7.0
* No changelog upstream
- Refresh lldb-cmake.patch
-------------------------------------------------------------------
Mon Jun 22 09:45:33 UTC 2015 - idonmez@suse.com
- Update lldb-cmake.patch to fix compilation on Factory
-------------------------------------------------------------------
Mon May 25 13:59:56 UTC 2015 - idonmez@suse.com
- Update to version 3.6.1
* No changelog upstream
-------------------------------------------------------------------
Mon Mar 2 10:14:22 UTC 2015 - idonmez@suse.com
- Update to version 3.6.0
* No changelog upstream
- Merge lldb-underlink.patch into lldb-cmake.patch
- Swich to static library build, shared build is not supported
-------------------------------------------------------------------
Wed Sep 17 13:26:34 UTC 2014 - idonmez@suse.com
- Add BuildRequires on ncurses-devel
-------------------------------------------------------------------
Sat Sep 6 14:59:58 UTC 2014 - idonmez@suse.com
- Update to version 3.5.0
* No changelog upstream
- Add lldb-underlink.patch to link to LLVMSupport
-------------------------------------------------------------------
Mon Mar 17 09:02:51 UTC 2014 - idonmez@suse.com
- First release on build.opensuse.org

177
lldb.spec
View File

@ -1,177 +0,0 @@
#
# spec file for package lldb
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define _sonum 3_8
%define _revsn 273405
Name: lldb
Version: 3.8.1
Release: 0
Summary: Software debugger built using LLVM libraries
License: NCSA
Group: Development/Tools/Debuggers
Url: http://lldb.llvm.org
Source: http://llvm.org/releases/%{version}/lldb-%{version}.src.tar.xz
# PATCH-FIX-OPENSUSE lldb-cmake.patch -- Let us set LLDB_REVISION and fix ncurses include path.
Patch0: lldb-cmake.patch
# PATCH-FIX-UPSTREAM D15067.id41365.diff -- Patch from upstream review system to fix out of tree build (http://reviews.llvm.org/D15067)
Patch1: D15067.id41365.diff
# PATCH-FIX-OPENSUSE lldb-add-pthread-dl-libs.patch -- Add -lpthread and -ldl options to the end of LDFLAGS to fix linking problems.
Patch2: lldb-add-pthread-dl-libs.patch
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: llvm-gold
BuildRequires: ncurses-devel
BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: swig
BuildRequires: cmake(Clang) = %{version}
BuildRequires: cmake(LLVM) = %{version}
BuildRequires: pkgconfig(libedit)
BuildRequires: pkgconfig(libffi)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(python2)
BuildRequires: pkgconfig(zlib)
# Avoid multiple provider errors
Requires: liblldb%{_sonum} = %{version}
Requires: python
Requires: python-six
ExclusiveArch: arm x86_64
%description
LLDB is a next generation, high-performance debugger. It is built as a set
of reusable components which highly leverage existing libraries in the
larger LLVM Project, such as the Clang expression parser and LLVM
disassembler.
%package -n liblldb%{_sonum}
Summary: LLDB software debugger runtime library
Group: System/Libraries
# Avoid multiple provider errors
Requires: libLLVM%{_sonum} = %{version}
Requires: libclang%{_sonum} = %{version}
%description -n liblldb%{_sonum}
This subpackage contains the main LLDB component.
%package devel
Summary: Development files for LLDB
Group: Development/Languages/Other
Requires: cmake
Requires: liblldb%{_sonum} = %{version}
Requires: ncurses-devel
Requires: swig
Requires: cmake(Clang) = %{version}
Requires: cmake(LLVM) = %{version}
Requires: pkgconfig(libedit)
Requires: pkgconfig(libffi)
Requires: pkgconfig(libxml-2.0)
Requires: pkgconfig(zlib)
%description devel
This package contains the development files for LLDB.
%package -n python-lldb
Summary: Python bindings for liblldb
Group: Development/Languages/Python
Requires: liblldb%{_sonum} = %{version}
Requires: python
%description -n python-lldb
This package contains the Python bindings to clang (C language) frontend for LLVM.
%prep
%setup -q -n %{name}-%{version}.src
%patch0 -p1
%patch1
%patch2 -p1
# Set LLDB revision
sed -i s,LLDB_REVISION,\"%{_revsn}\",g source/lldb.cpp #"
%build
%define __builder ninja
%cmake \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
-DBUILD_SHARED_LIBS=OFF \
%if "%{_lib}" == "lib64"
-DLLVM_LIBDIR_SUFFIX=64 \
%endif
-DLLVM_RUNTIME_OUTPUT_INTDIR=$PWD/bin \
-DLLVM_LIBRARY_OUTPUT_INTDIR=$PWD/%{_lib} \
-DPYTHON_VERSION_MAJOR=%{py_major} \
-DPYTHON_VERSION_MINOR=%{py_minor}
%make_jobs
%install
%cmake_install
# Python: fix binary libraries location.
rm %{buildroot}%{python_sitearch}/lldb/_lldb.so
liblldb=$(basename $(readlink -e %{buildroot}%{_libdir}/liblldb.so))
ln -vsf "../../../${liblldb}" %{buildroot}%{python_sitearch}/lldb/_lldb.so
ln -vsf "../../${liblldb}" %{buildroot}%{python_sitearch}/_lldb.so
# Remove bundled six.py.
rm -f %{buildroot}%{python_sitearch}/six.*
# Remove static libraries.
rm %{buildroot}%{_libdir}/liblldb*.a
# Fix duplicated files.
%fdupes %{_includedir}/%{name}/Host/
mkdir -p %{buildroot}%{_libdir}/cmake/lldb/
cp cmake/modules/*.cmake %{buildroot}%{_libdir}/cmake/lldb/
# Make consistent with the rest of the executables
mv %{buildroot}%{_bindir}/lldb-argdumper %{buildroot}%{_bindir}/lldb-argdumper-%{version}
ln -s %{_bindir}/lldb-argdumper-%{version} %{buildroot}%{_bindir}/lldb-argdumper
%post -n liblldb%{_sonum} -p /sbin/ldconfig
%postun -n liblldb%{_sonum} -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%{_bindir}/lldb
%{_bindir}/lldb-argdumper
%{_bindir}/lldb-mi
%{_bindir}/lldb-server
%{_bindir}/lldb-%{version}
%{_bindir}/lldb-argdumper-%{version}
%{_bindir}/lldb-mi-%{version}
%{_bindir}/lldb-server-%{version}
%files -n python-lldb
%defattr(-,root,root)
%{python_sitearch}/_lldb.so
%{python_sitearch}/lldb/
%{python_sitearch}/readline.so
%files -n liblldb%{_sonum}
%defattr(-,root,root)
%{_libdir}/liblldb.so.*
%files devel
%defattr(-,root,root,-)
%{_libdir}/cmake/lldb/
%{_includedir}/lldb/
%{_libdir}/liblldb.so
%changelog

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6e82ce4adb54ff3afc18053d6981b6aed1406751b8742582ed50f04b5ab475f9
size 16551472

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1d7d51c4bc0946e3392fe1c71c0afe1be6b120f4423a1c10f3b1210f10853119
size 1664880

View File

@ -1,14 +0,0 @@
Index: cfe-3.8.1.src/lib/Driver/ToolChains.cpp
===================================================================
--- cfe-3.8.1.src/lib/Driver/ToolChains.cpp
+++ cfe-3.8.1.src/lib/Driver/ToolChains.cpp
@@ -1091,7 +1091,8 @@ Generic_GCC::GCCVersion Linux::GCCVersio
if (First.first.getAsInteger(10, GoodVersion.Major) || GoodVersion.Major < 0)
return BadVersion;
GoodVersion.MajorStr = First.first.str();
- if (Second.first.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0)
+ if (!Second.first.str().empty() &&
+ (Second.first.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0))
return BadVersion;
GoodVersion.MinorStr = Second.first.str();

View File

@ -1,13 +0,0 @@
Index: llvm-3.8.1.src/openmp-3.8.1.src/runtime/src/kmp_dispatch.cpp
===================================================================
--- llvm-3.8.1.src.orig/openmp-3.8.1.src/runtime/src/kmp_dispatch.cpp
+++ llvm-3.8.1.src/openmp-3.8.1.src/runtime/src/kmp_dispatch.cpp
@@ -254,7 +254,7 @@ test_then_inc< kmp_int64 >( volatile kmp
// compare_and_swap template (general template should NOT be used)
template< typename T >
static __forceinline kmp_int32
-compare_and_swap( volatile T *p, T c, T s ) { KMP_ASSERT(0); };
+compare_and_swap( volatile T *p, T c, T s );
template<>
__forceinline kmp_int32

View File

@ -1,36 +0,0 @@
Index: llvm-3.8.1.src/cmake/modules/HandleLLVMOptions.cmake
===================================================================
--- llvm-3.8.1.src.orig/cmake/modules/HandleLLVMOptions.cmake
+++ llvm-3.8.1.src/cmake/modules/HandleLLVMOptions.cmake
@@ -417,7 +417,6 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE
append_if(LLVM_ENABLE_PEDANTIC "-pedantic" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
append_if(LLVM_ENABLE_PEDANTIC "-Wno-long-long" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
- add_flag_if_supported("-Wcovered-switch-default" COVERED_SWITCH_DEFAULT_FLAG)
append_if(USE_NO_UNINITIALIZED "-Wno-uninitialized" CMAKE_CXX_FLAGS)
append_if(USE_NO_MAYBE_UNINITIALIZED "-Wno-maybe-uninitialized" CMAKE_CXX_FLAGS)
@@ -454,9 +453,6 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE
endif()
endif (LLVM_ENABLE_WARNINGS)
append_if(LLVM_ENABLE_WERROR "-Werror" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
- if (NOT LLVM_ENABLE_TIMESTAMPS)
- add_flag_if_supported("-Werror=date-time" WERROR_DATE_TIME)
- endif ()
if (LLVM_ENABLE_CXX1Y)
check_cxx_compiler_flag("-std=c++1y" CXX_SUPPORTS_CXX1Y)
append_if(CXX_SUPPORTS_CXX1Y "-std=c++1y" CMAKE_CXX_FLAGS)
@@ -578,13 +574,6 @@ add_llvm_definitions( -D__STDC_CONSTANT_
add_llvm_definitions( -D__STDC_FORMAT_MACROS )
add_llvm_definitions( -D__STDC_LIMIT_MACROS )
-# clang doesn't print colored diagnostics when invoked from Ninja
-if (UNIX AND
- CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
- CMAKE_GENERATOR STREQUAL "Ninja")
- append("-fcolor-diagnostics" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
-endif()
-
# Add flags for add_dead_strip().
# FIXME: With MSVS, consider compiling with /Gy and linking with /OPT:REF?
# But MinSizeRel seems to add that automatically, so maybe disable these

View File

@ -1,9 +0,0 @@
# This line is mandatory to access the configuration functions
from Config import *
addFilter("devel-file-in-non-devel-package .*/clang/.*/include/.*")
addFilter("devel-file-in-non-devel-package .*/clang/.*/lib/.*")
addFilter("devel-file-in-non-devel-package .*/usr/include/.*")
addFilter("devel-file-in-non-devel-package .*/lib.*/*.a")
addFilter("devel-file-in-non-devel-package .*/lib.*/*.so")

View File

@ -1,3 +1,35 @@
-------------------------------------------------------------------
Thu Oct 6 07:05:41 UTC 2016 - idonmez@suse.com
- Remove unneeded emacs-nox dependency.
-------------------------------------------------------------------
Wed Oct 5 08:14:31 UTC 2016 - idonmez@suse.com
- BuildIgnore emacs and vim to avoid cycles.
-------------------------------------------------------------------
Fri Sep 9 18:26:41 UTC 2016 - toddrme2178@gmail.com
- Split out llvm and lldb into a version-specific package.
- Turn this package into a wrapper around the version-specific
packages.
- Remove patches:
* default-to-i586.patch
* assume-opensuse.patch
* glibc-2.23-libcxx.patch
* arm_suse_support.diff
* llvm-remove-clang-only-flags.patch
* clang-resourcedirs.patch
* lldb-add-pthread-dl-libs.patch
* llvm-nonvoid-return.patch
* glibc-2.24-libcxx.patch
* revert-cmake-soname.patch
* set-revision.patch
* lldb-cmake.patch
* D15067.id41365.diff
* llvm-fix-find-gcc5-install.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Sep 7 10:05:32 UTC 2016 - tchvatal@suse.com Wed Sep 7 10:05:32 UTC 2016 - tchvatal@suse.com

703
llvm.spec
View File

@ -16,24 +16,7 @@
# #
%define _relver 3.8.1
%define _minor 3.8
%define _sonum 3_8 %define _sonum 3_8
%define _socxx 1
%define _revsn 273405
%ifarch x86_64
%bcond_without libcxx
%else
%bcond_with libcxx
%endif
%ifarch ppc64 ppc64le %{ix86} x86_64
%bcond_without openmp
%else
%bcond_with openmp
%endif
%bcond_with ffi
%bcond_with oprofile
%bcond_with valgrind
Name: llvm Name: llvm
Version: 3.8.1 Version: 3.8.1
Release: 0 Release: 0
@ -41,64 +24,28 @@ Summary: Low Level Virtual Machine
License: NCSA License: NCSA
Group: Development/Languages/Other Group: Development/Languages/Other
Url: http://www.llvm.org Url: http://www.llvm.org
Source0: http://llvm.org/releases/%{version}/llvm-%{version}.src.tar.xz # This file documents the process for updating llvm
Source1: http://llvm.org/releases/%{version}/cfe-%{version}.src.tar.xz Source0: README.packaging
Source2: http://llvm.org/releases/%{version}/clang-tools-extra-%{version}.src.tar.xz
Source3: http://llvm.org/releases/%{version}/compiler-rt-%{version}.src.tar.xz
Source4: http://llvm.org/releases/%{version}/libcxx-%{version}.src.tar.xz
Source5: http://llvm.org/releases/%{version}/libcxxabi-%{version}.src.tar.xz
Source6: http://llvm.org/releases/%{version}/openmp-%{version}.src.tar.xz
# Docs are created manually, see below
Source50: llvm-docs-%{version}.src.tar.xz
Source51: cfe-docs-%{version}.src.tar.xz
Source100: %{name}-rpmlintrc
Source101: baselibs.conf Source101: baselibs.conf
# PATCH-FIX-OPENSUSE set-revision.patch idoenmez@suse.de -- Allow us to set revision # Avoid multiple providers error
Patch1: set-revision.patch BuildRequires: clang%{_sonum} = %{version}
# PATCH-FIX-OPENSUSE assume-opensuse.patch idoenmez@suse.de -- Always enable openSUSE/SUSE features BuildRequires: clang%{_sonum}-checker = %{version}
Patch2: assume-opensuse.patch BuildRequires: clang%{_sonum}-devel = %{version}
# PATCH-FIX-OPENSUSE default-to-i586.patch -- Use i586 as default target for 32bit BuildRequires: llvm%{_sonum} = %{version}
Patch3: default-to-i586.patch BuildRequires: llvm%{_sonum}-LTO-devel = %{version}
# PATCH-FIX-OPENSUSE arm_suse_support.diff --Enable ARM suse toolchain support BuildRequires: llvm%{_sonum}-devel = %{version}
Patch4: arm_suse_support.diff BuildRequires: llvm%{_sonum}-emacs-plugins = %{version}
Patch5: clang-resourcedirs.patch BuildRequires: llvm%{_sonum}-gold = %{version}
Patch6: llvm-remove-clang-only-flags.patch BuildRequires: llvm%{_sonum}-vim-plugins = %{version}
Patch7: llvm-fix-find-gcc5-install.patch # Avoid cycles
Patch8: revert-cmake-soname.patch #!BuildIgnore: emacs
Patch9: llvm-nonvoid-return.patch #!BuildIgnore: vim
Patch20: glibc-2.23-libcxx.patch %ifarch arm x86_64
Patch21: glibc-2.24-libcxx.patch BuildRequires: lldb%{_sonum} = %{version}
BuildRequires: binutils-devel >= 2.21.90 BuildRequires: lldb%{_sonum}-devel = %{version}
BuildRequires: bison BuildRequires: python%{_sonum}-lldb = %{version}
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: groff
BuildRequires: libstdc++-devel
BuildRequires: libtool
BuildRequires: ncurses-devel
BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: procps
BuildRequires: python-base
BuildRequires: python-xml
BuildRequires: pkgconfig(libedit)
# Avoid multiple provider errors
Requires: libLLVM%{_sonum}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# llvm does not work on ppc or s390
ExcludeArch: ppc s390
%if %{with ffi}
BuildRequires: pkgconfig(libffi)
%endif
%if %{with valgrind}
BuildRequires: pkgconfig(valgrind)
%endif
%if %{with oprofile}
BuildRequires: oprofile-devel
%endif %endif
Requires: llvm%{_sonum} = %{version}
%description %description
LLVM is a compiler infrastructure designed for compile-time, LLVM is a compiler infrastructure designed for compile-time,
@ -108,93 +55,61 @@ arbitrary programming languages.
The compiler infrastructure includes mirror sets of programming The compiler infrastructure includes mirror sets of programming
tools as well as libraries with equivalent functionality. tools as well as libraries with equivalent functionality.
%package -n libLLVM%{_sonum} This package is a dummy package that depends on the version of
Summary: Libraries for LLVM llvm that openSUSE currently supports. Packages that
Group: Development/Libraries/C and C++ don't require a specific LLVM version should depend on this.
%description -n libLLVM%{_sonum}
This package contains the shared libraries needed for LLVM.
%package devel %package devel
Summary: Header Files for LLVM Summary: Header Files for LLVM
Group: Development/Languages/Other Group: Development/Languages/Other
Requires: %{name} = %{version} Requires: llvm%{_sonum}-devel = %{version}
Requires: binutils-devel >= 2.21.90 Requires: llvm-gold
Requires: bison
Requires: flex
Requires: groff
Requires: libstdc++-devel
Requires: libtool
Requires: ncurses-devel
Requires: pkgconfig
Requires: pkgconfig(libedit)
Conflicts: otherproviders(cmake(LLVM))
%if %{with ffi}
Requires: pkgconfig(libffi)
%endif
%if %{with valgrind}
Requires: pkgconfig(valgrind)
%endif
%if %{with oprofile}
Requires: oprofile-devel
%endif
%description devel %description devel
This package contains library and header files needed to develop This package contains library and header files needed to develop
new native programs that use the LLVM infrastructure. new native programs that use the LLVM infrastructure.
This package is a dummy package that depends on the version of
llvm-devel that openSUSE currently supports. Packages that
don't require a specific LLVM version should depend on this.
%package -n clang %package -n clang
Summary: CLANG frontend for LLVM Summary: CLANG frontend for LLVM
Group: Development/Languages/Other Group: Development/Languages/Other
# Avoid multiple provider errors Requires: clang%{_sonum} = %{version}
Requires: libLTO%{_sonum}
Requires: libclang%{_sonum}
Recommends: LLVMgold.so()(64bit)
Recommends: scan-build
Recommends: scan-view
%if %{with openmp}
Recommends: libomp
%endif
%if %{with libcxx}
Requires: libc++%{_socxx}
Recommends: libc++-devel
%endif
Provides: llvm-clang = %{version} Provides: llvm-clang = %{version}
Obsoletes: llvm-clang < %{version} Obsoletes: llvm-clang < %{version}
%description -n clang %description -n clang
This package contains the clang (C language) frontend for LLVM. This package contains the clang (C language) frontend for LLVM.
This package is a dummy package that depends on the version of
clang that openSUSE currently supports. Packages that
don't require a specific Clang version should depend on this.
%package -n clang-checker %package -n clang-checker
Summary: Static code analyzer for CLANG Summary: Static code analyzer for CLANG
Group: Development/Languages/Other Group: Development/Languages/Other
# Avoid multiple provider errors Requires: clang%{_sonum}-checker = %{version}
Requires: libclang%{_sonum} Provides: llvm-clang-checker = %{version}
Conflicts: otherproviders(scan-build) Obsoletes: llvm-clang-checker < %{version}
Conflicts: otherproviders(scan-view)
Provides: scan-build
Provides: scan-view
%description -n clang-checker %description -n clang-checker
This package contains scan-build and scan-view, command line This package contains scan-build and scan-view, command line
static code analyzers for CLANG. static code analyzers for CLANG.
%package -n libclang%{_sonum} This package is a dummy package that depends on the version of
Summary: Library files needed for clang clang-checker that openSUSE currently supports. Packages that
Group: Development/Libraries/C and C++ don't require a specific Clang version should depend on this.
# Avoid multiple provider errors
Requires: libLLVM%{_sonum}
Requires: libstdc++-devel
%description -n libclang%{_sonum}
This package contains the shared libraries needed for clang.
%package -n clang-devel %package -n clang-devel
Summary: CLANG frontend for LLVM (devel package) Summary: CLANG frontend for LLVM (devel package)
Group: Development/Languages/Other Group: Development/Languages/Other
Requires: llvm-clang = %{version} Requires: clang%{_sonum}-devel = %{version}
Requires: cmake(LLVM) = %{version}
Conflicts: otherproviders(cmake(Clang))
Provides: llvm-clang-devel = %{version} Provides: llvm-clang-devel = %{version}
Obsoletes: llvm-clang-devel < %{version} Obsoletes: llvm-clang-devel < %{version}
@ -202,517 +117,167 @@ Obsoletes: llvm-clang-devel < %{version}
This package contains the clang (C language) frontend for LLVM. This package contains the clang (C language) frontend for LLVM.
(development files) (development files)
%package -n libLTO%{_sonum} This package is a dummy package that depends on the version of
Summary: Link-time optimizer for LLVM clang-devel that openSUSE currently supports. Packages that
Group: Development/Languages/Other don't require a specific Clang version should depend on this.
# Avoid multiple provider errors
Requires: libLLVM%{_sonum}
%description -n libLTO%{_sonum}
This package contains the link-time optimizer for LLVM.
%package LTO-devel %package LTO-devel
Summary: Link-time optimizer for LLVM (devel package) Summary: Link-time optimizer for LLVM (devel package)
Group: Development/Languages/Other Group: Development/Languages/Other
# Avoid multiple provider errors Requires: llvm%{_sonum}-LTO-devel = %{version}
Requires: libLTO%{_sonum}
Requires: cmake(LLVM) = %{version}
Conflicts: otherproviders(libLTO.so)
Provides: libLTO.so
%description LTO-devel %description LTO-devel
This package contains the link-time optimizer for LLVM. This package contains the link-time optimizer for LLVM.
(development files) (development files)
This package is a dummy package that depends on the version of
llvm-LTO-devel that openSUSE currently supports. Packages that
don't require a specific LLVM version should depend on this.
%package gold %package gold
Summary: Gold linker plugin for LLVM Summary: Gold linker plugin for LLVM
Group: Development/Languages/Other Group: Development/Languages/Other
# Avoid multiple provider errors Requires: llvm%{_sonum}-gold = %{version}
Requires: libLLVM%{_sonum}
Requires: cmake(LLVM) = %{version}
Conflicts: otherproviders(LLVMgold.so()(64bit))
Provides: LLVMgold.so()(64bit)
%description gold %description gold
This package contains the Gold linker plugin for LLVM. This package contains the Gold linker plugin for LLVM.
%package -n libomp This package is a dummy package that depends on the version of
Summary: MPI plugin for LLVM llvm-gold that openSUSE currently supports. Packages that
Group: Development/Languages/Other don't require a specific LLVM version should depend on this.
# Avoid multiple provider errors
Requires: libLLVM%{_sonum}
Conflicts: otherproviders(libomp.so()(64bit))
Provides: libomp.so()(64bit)
%description -n libomp
This package contains the OpenMP MPI plugin for LLVM.
%package -n libc++%{_socxx}
Summary: C++ standard library implementation
Group: Development/Libraries/C and C++
%description -n libc++%{_socxx}
This package contains libc++, a new implementation of the C++
standard library, targeting C++11.
%package -n libc++-devel
Summary: C++ standard library implementation (devel package)
Group: Development/Languages/C and C++
Conflicts: otherproviders(libc++.so)
Provides: libc++.so
%description -n libc++-devel
This package contains libc++, a new implementation of the C++
standard library, targeting C++11. (development files)
%package -n libc++abi%{_socxx}
Summary: C++ standard library ABI
Group: Development/Libraries/C and C++
%description -n libc++abi%{_socxx}
This package contains the ABI for libc++, a new implementation
of the C++ standard library, targeting C++11.
%package -n libc++abi-devel
Summary: C++ standard library ABI (devel package)
Group: Development/Languages/C and C++
# Avoid multiple provider errors
Requires: libc++-devel
Conflicts: otherproviders(libc++abi.so)
Provides: libc++abi.so
%description -n libc++abi-devel
This package contains the ABI for libc++, a new implementation
of the C++ standard library, targeting C++11.
(development files)
%package vim-plugins %package vim-plugins
Summary: Vim plugins for LLVM Summary: Vim plugins for LLVM
Group: Productivity/Text/Editors Group: Productivity/Text/Editors
Requires: vim Requires: llvm%{_sonum}-vim-plugins = %{version}
Conflicts: otherproviders(vim-plugin-llvm)
Provides: vim-plugin-llvm
BuildArch: noarch BuildArch: noarch
%description vim-plugins %description vim-plugins
This package contains vim plugins for LLVM like syntax highlighting. This package contains vim plugins for LLVM like syntax highlighting.
This package is a dummy package that depends on the version of
llvm-vim-plugins that openSUSE currently supports. Packages that
don't require a specific LLVM version should depend on this.
%package emacs-plugins %package emacs-plugins
Summary: Emacs plugins for LLVM Summary: Emacs plugins for LLVM
Group: Productivity/Text/Editors Group: Productivity/Text/Editors
Requires: emacs Requires: llvm%{_sonum}-emacs-plugins = %{version}
Conflicts: otherproviders(emacs-llvm)
Provides: emacs-llvm
BuildArch: noarch BuildArch: noarch
%description emacs-plugins %description emacs-plugins
This package contains Emacs plugins for LLVM like syntax highlighting. This package contains Emacs plugins for LLVM like syntax highlighting.
%package -n python-clang This package is a dummy package that depends on the version of
Summary: Python 2 bindings for libclang llvm-emacs-plugins that openSUSE currently supports. Packages that
Group: Development/Languages/Python don't require a specific LLVM version should depend on this.
Requires: %{name}-clang-devel = %{version}
Requires: python
BuildArch: noarch %package -n lldb
Summary: Software debugger built using LLVM libraries
Group: Development/Tools/Debuggers
Requires: lldb%{_sonum} = %{version}
%description -n lldb
LLDB is a next generation, high-performance debugger. It is built as a set
of reusable components which highly leverage existing libraries in the
larger LLVM Project, such as the Clang expression parser and LLVM
disassembler.
This package is a dummy package that depends on the version of
lldb that openSUSE currently supports. Packages that
don't require a specific LLDB version should depend on this.
%package -n lldb-devel
Summary: Development files for LLDB
Group: Development/Languages/Other
Requires: lldb%{_sonum}-devel = %{version}
%description -n lldb-devel
This package contains the development files for LLDB.
This package is a dummy package that depends on the version of
lldb-devel that openSUSE currently supports. Packages that
don't require a specific LLDB version should depend on this.
%package -n python-lldb
Summary: Python bindings for liblldb
Group: Development/Languages/Python
Requires: python%{_sonum}-lldb = %{version}
%description -n python-lldb
This package contains the Python bindings to clang (C language) frontend for LLVM.
This package is a dummy package that depends on the version of
python-lldb that openSUSE currently supports. Packages that
don't require a specific LLDB version should depend on this.
%description -n python-clang
This package contains the Python 2.x bindings to clang (C language)
frontend for LLVM.
%prep %prep
%setup -q -a 1 -a 2 -a 3 -a 4 -a 5 -a 6 -b 50 -a 51 -n llvm-%{version}.src # Not needed
%patch1
%patch2
%patch3
%patch4
%patch5
%patch6 -p1
%patch7
%patch8 -p1
%patch9 -p1
%if 0%{?suse_version} > 1320
%patch20
%patch21
%endif
# Move into right place
mv cfe-%{version}.src tools/clang
mv compiler-rt-%{version}.src projects/compiler-rt
mv clang-tools-extra-%{version}.src tools/clang/tools/extra
%if %{with openmp}
mv openmp-%{version}.src projects/openmp
%endif
%if %{with libcxx}
mv libcxx-%{version}.src projects/libcxx
mv libcxxabi-%{version}.src projects/libcxxabi
rm projects/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp
rm projects/libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp
%endif
# We hardcode i586
rm tools/clang/test/Driver/x86_features.c
rm tools/clang/test/Driver/nacl-direct.c
sed -i s,SVN_REVISION,\"%{_revsn}\",g tools/clang/lib/Basic/Version.cpp
sed -i s,LLVM_REVISION,\"%{_revsn}\",g tools/clang/lib/Basic/Version.cpp
# ARMv6 needs this exact host triple
%ifarch armv6hl
cat > autoconf/config.guess << EOF
#!/bin/sh
echo armv6hl-suse-linux-gnueabi
EOF
%endif
%build %build
# Disable c/xx/flags as the clang fails to build with hardening right now echo "This is a dummy package to provide a dependency on the system compiler." > README
#flags="%%{optflags} -fno-strict-aliasing"
flags="-fno-strict-aliasing"
%ifarch armv6hl
flags+=" -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"
%endif
%ifarch armv7hl
flags+=" -mfloat-abi=hard -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16"
%endif
%ifarch %{ix86} x86_64
TARGETS_TO_BUILD="all"
%else
TARGETS_TO_BUILD=host
%endif
# do not eat all memory
ninjaproc="%{?jobs:%{jobs}}"
echo "Available memory:"
free
echo "System limits:"
ulimit -a
if test -n "$ninjaproc" -a "$ninjaproc" -gt 1 ; then
mem_per_process=1000
max_mem=`LANG=C free -t -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p"`
max_jobs="$(($max_mem / $mem_per_process))"
test "$ninjaproc" -gt "$max_jobs" && ninjaproc="$max_jobs" && echo "Warning: Reducing number of jobs to $max_jobs because of memory limits"
test "$ninjaproc" -le 0 && ninjaproc=1 && echo "Warning: Do not use the parallel build at all becuse of memory limits"
fi
%define __builder ninja
%define __builddir stage1
# -z,now is breaking now, it needs to be fixed
%cmake \
-DCMAKE_C_FLAGS="$flags" \
-DCMAKE_CXX_FLAGS="$flags" \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_TARGETS_TO_BUILD=host \
-DLLDB_DISABLE_PYTHON=ON \
-DCMAKE_SKIP_RPATH:BOOL=OFF \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed" \
-DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed" \
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed"
ninja -v -j $ninjaproc
cd ..
%define __builddir build
export CC=${PWD}/stage1/bin/clang
export CXX=${PWD}/stage1/bin/clang++
# -z,now is breaking now, it needs to be fixed
%cmake \
-DCMAKE_C_FLAGS="$flags" \
-DCMAKE_CXX_FLAGS="$flags" \
-DLLVM_REQUIRES_RTTI=ON \
-DLLVM_ENABLE_TIMESTAMPS=OFF \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_PIC=ON \
-DLLVM_BINUTILS_INCDIR=%{_includedir} \
-DLLVM_TARGETS_TO_BUILD=${TARGETS_TO_BUILD} \
%if "%{_lib}" == "lib64"
-DLLVM_LIBDIR_SUFFIX=64 \
%endif
%if %{with ffi}
-DLLVM_ENABLE_FFI=ON \
%endif
%if %{with oprofile}
-DLLVM_USE_OPROFILE=ON \
%endif
-DCMAKE_SKIP_RPATH:BOOL=OFF \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed" \
-DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed" \
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed"
ninja -v -j $ninjaproc
%install %install
%cmake_install # Not needed
# Docs are prebuilt due to sphinx dependency
#
# pushd llvm-3.8.1.src/docs
# make -f Makefile.sphinx man html
# popd
# pushd cfe-3.8.1.src/docs
# make -f Makefile.sphinx man html
# popd
# tar cvJf llvm-docs-3.8.1.src.tar.xz llvm-3.8.1.src/docs/_build/{man,html}
# tar cvJf cfe-docs-3.8.1.src.tar.xz cfe-3.8.1.src/docs/_build/{man,html}
# Build man/html pages
pushd docs
rm -rf %{buildroot}%{_prefix}/docs
mkdir -p %{buildroot}%{_docdir}/llvm/html
mkdir -p %{buildroot}%{_mandir}/man1
cp -r _build/man/* %{buildroot}%{_mandir}/man1
cp -r _build/html/* %{buildroot}%{_docdir}/llvm/html
popd
pushd tools/clang/docs
mkdir -p %{buildroot}%{_docdir}/llvm-clang/html
cp -r _build/man/* %{buildroot}%{_mandir}/man1
cp -r _build/html/* %{buildroot}%{_docdir}/llvm-clang/html
popd
# install python bindings
# The python bindings use the unversioned libclang.so,
# so it doesn't make sense to have multiple versions of it
install -d %{buildroot}%{python_sitelib}/clang
pushd tools/clang/bindings/python
cp clang/*.py %{buildroot}%{python_sitelib}/clang
install -d %{buildroot}%{_docdir}/python-clang/examples/cindex
cp -r examples %{buildroot}%{_docdir}/python-clang
install -d %{buildroot}%{_docdir}/python-clang/tests/cindex/INPUTS
cp -r tests %{buildroot}%{_docdir}/python-clang
popd
mkdir -p %{buildroot}%{_libdir}/bfd-plugins
ln -s %{_libdir}/LLVMgold.so %{buildroot}%{_libdir}/bfd-plugins/
install -m 755 -d %{buildroot}%{_datadir}/vim/site/
for i in ftdetect ftplugin indent syntax; do
cp -r utils/vim/$i %{buildroot}%{_datadir}/vim/site/
done
mv utils/vim/README utils/vim/README.vim
mv %{buildroot}%{_prefix}/libexec/{c++,ccc}-analyzer %{buildroot}%{_bindir}
mv %{buildroot}%{_datadir}/clang/clang-format-diff.py %{buildroot}%{_bindir}/clang-format-diff
mv %{buildroot}%{_datadir}/clang/clang-tidy-diff.py %{buildroot}%{_bindir}/clang-tidy-diff
mv %{buildroot}%{_datadir}/clang/run-clang-tidy.py %{buildroot}%{_bindir}/run-clang-tidy
chmod -x %{buildroot}%{_mandir}/man1/scan-build.1
# Stuff we don't want to include
rm %{buildroot}%{_mandir}/man1/lit.1
# Put cmake files where they can be detected
mkdir -p %{buildroot}%{_libdir}/cmake/llvm/
pushd %{buildroot}%{_datadir}/llvm/cmake/
for f in * ; do
ln -s %{_datadir}/llvm/cmake/$f %{buildroot}%{_libdir}/cmake/llvm/$f
done
# This confuses the rpm cmake provides detection
rm %{buildroot}%{_libdir}/cmake/llvm/LLVM-Config.cmake
mkdir -p %{buildroot}%{_libdir}/cmake/clang/
pushd %{buildroot}%{_datadir}/clang/cmake/
for f in * ; do
ln -s %{_datadir}/clang/cmake/$f %{buildroot}%{_libdir}/cmake/clang/$f
done
%if %{with libcxx}
rm %{buildroot}%{_libdir}/libc++abi.a
%endif
%if %{with openmp}
rm %{buildroot}%{_libdir}/libgomp.so
rm %{buildroot}%{_libdir}/libiomp*.so
%endif
# We don't care about applescript or sublime text
rm %{buildroot}%{_datadir}/clang/*.applescript
rm %{buildroot}%{_datadir}/clang/clang-format-sublime.py
%fdupes -s %{buildroot}%{_docdir}/%{name}
%fdupes -s %{buildroot}%{_docdir}/%{name}-doc
%check
cd build
%ifnarch armv7hl armv7l
%if !0%{?qemu_user_space_build:1}
# we just do not have enough memory with qemu emulation
ninja -v %{?_smp_mflags} check
ninja -v %{?_smp_mflags} clang-test
%if %{with libcxx}
ninja -v %{?_smp_mflags} check-libcxx
ninja -v %{?_smp_mflags} check-libcxxabi
%endif
%endif
%endif
%post -n libLLVM%{_sonum} -p /sbin/ldconfig
%postun -n libLLVM%{_sonum} -p /sbin/ldconfig
%post -n libclang%{_sonum} -p /sbin/ldconfig
%postun -n libclang%{_sonum} -p /sbin/ldconfig
%post -n libLTO%{_sonum} -p /sbin/ldconfig
%postun -n libLTO%{_sonum} -p /sbin/ldconfig
%post gold -p /sbin/ldconfig
%postun gold -p /sbin/ldconfig
%post devel -p /sbin/ldconfig
%postun devel -p /sbin/ldconfig
%post -n clang-devel -p /sbin/ldconfig
%postun -n clang-devel -p /sbin/ldconfig
%post LTO-devel -p /sbin/ldconfig
%postun LTO-devel -p /sbin/ldconfig
%if %{with openmp}
%post -n libomp -p /sbin/ldconfig
%postun -n libomp -p /sbin/ldconfig
%endif
%if %{with libcxx}
%post -n libc++%{_socxx} -p /sbin/ldconfig
%postun -n libc++%{_socxx} -p /sbin/ldconfig
%post -n libc++abi%{_socxx} -p /sbin/ldconfig
%postun -n libc++abi%{_socxx} -p /sbin/ldconfig
%post -n libc++-devel -p /sbin/ldconfig
%postun -n libc++-devel -p /sbin/ldconfig
%post -n libc++abi-devel -p /sbin/ldconfig
%postun -n libc++abi-devel -p /sbin/ldconfig
%endif
%files %files
%defattr(-,root,root) %defattr(-,root,root)
%{_bindir}/bugpoint %doc README
%{_bindir}/llc
%{_bindir}/lli
%{_bindir}/llvm-*
%{_bindir}/obj2yaml
%{_bindir}/opt
%{_bindir}/sancov
%{_bindir}/verify-uselistorder
%{_bindir}/yaml2obj
%{_mandir}/man1/FileCheck.1%{ext_man}
%{_mandir}/man1/bugpoint.1%{ext_man}
%{_mandir}/man1/llc.1%{ext_man}
%{_mandir}/man1/lli.1%{ext_man}
%{_mandir}/man1/llvm-*.1%{ext_man}
%{_mandir}/man1/opt.1%{ext_man}
%{_mandir}/man1/tblgen.1%{ext_man}
%exclude %{_bindir}/llvm-config
%exclude %{_mandir}/man1/llvm-config.1%{ext_man}
%files -n clang %files -n clang
%defattr(-,root,root) %defattr(-,root,root)
%{_bindir}/c-index-test %doc README
%{_bindir}/c++-analyzer
%{_bindir}/ccc-analyzer
%{_bindir}/clang
%{_bindir}/clang-*
%{_bindir}/clang++
%{_bindir}/git-clang-format
%{_bindir}/modularize
%{_bindir}/run-clang-tidy
%{_mandir}/man1/clang.1%{ext_man}
%dir %{_libdir}/clang/
%{_libdir}/clang/%{_relver}/
%files -n clang-checker %files -n clang-checker
%defattr(-,root,root) %defattr(-,root,root)
%{_bindir}/scan-build %doc README
%{_bindir}/scan-view
%{_datadir}/scan-build/
%{_datadir}/scan-view/
%{_mandir}/man1/scan-build.1%{ext_man}
%files -n libLLVM%{_sonum}
%defattr(-,root,root,-)
%{_libdir}/libLLVM*.so.*
%files -n libclang%{_sonum}
%defattr(-,root,root,-)
%{_libdir}/libclang*.so.*
%files -n libLTO%{_sonum}
%defattr(-,root,root)
%{_libdir}/libLTO.so.*
%files gold %files gold
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/LLVMgold.so %doc README
%dir %{_libdir}/bfd-plugins/
%{_libdir}/bfd-plugins/LLVMgold.so
%if %{with openmp}
%files -n libomp
%defattr(-,root,root)
%{_libdir}/libomp.so
%endif
%if %{with libcxx}
%files -n libc++%{_socxx}
%defattr(-,root,root)
%{_libdir}/libc++.so.*
%files -n libc++abi%{_socxx}
%defattr(-,root,root)
%{_libdir}/libc++abi.so.*
%files -n libc++-devel
%defattr(-,root,root)
%{_libdir}/libc++.so
%{_libdir}/libc++abi.so
%{_includedir}/c++/
%files -n libc++abi-devel
%defattr(-,root,root)
%{_libdir}/libc++abi.so
%endif
%files devel %files devel
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_bindir}/llvm-config %doc README
%{_libdir}/libLLVM*.so
%{_libdir}/BugpointPasses.*
%{_libdir}/LLVMHello.*
%{_includedir}/llvm/
%{_includedir}/llvm-c/
%dir %{_datadir}/llvm/
%{_datadir}/llvm/cmake
%{_libdir}/cmake/llvm
%{_docdir}/llvm/
%{_mandir}/man1/llvm-config.1%{ext_man}
%files -n clang-devel %files -n clang-devel
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libclang*.so %doc README
%{_includedir}/clang/
%{_includedir}/clang-c/
%dir %{_datadir}/clang/
%{_datadir}/clang/cmake
%{_libdir}/cmake/clang
%{_docdir}/llvm-clang/
%files LTO-devel %files LTO-devel
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libLTO.so %doc README
%files emacs-plugins %files emacs-plugins
%defattr(-,root,root,-) %defattr(-,root,root,-)
%dir %{_datadir}/clang/ %doc README
%{_datadir}/clang/clang-format.el
%files vim-plugins %files vim-plugins
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc utils/vim/README.vim %doc README
%{_datadir}/vim/
%dir %{_datadir}/clang/
%{_datadir}/clang/clang-format.py
%files -n python-clang %ifarch arm x86_64
%files -n lldb
%defattr(-,root,root) %defattr(-,root,root)
%{python_sitelib}/clang/ %doc README
%{python_sitelib}/clang/__init__.py
%{python_sitelib}/clang/cindex.py %files -n lldb-devel
%{python_sitelib}/clang/enumerations.py %defattr(-,root,root)
%{_docdir}/python-clang/ %doc README
%files -n python-lldb
%defattr(-,root,root)
%doc README
%endif
%changelog %changelog

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:68fcde6ef34e0275884a2de3450a31e931caf1d6fda8606ef14f89c4123617dc
size 2009572

View File

@ -1,110 +0,0 @@
Index: llvm-3.8.1.src/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm-3.8.1.src.orig/cmake/modules/AddLLVM.cmake
+++ llvm-3.8.1.src/cmake/modules/AddLLVM.cmake
@@ -326,12 +326,10 @@ endfunction(set_windows_version_resource
# Same semantics as target_link_libraries().
# ADDITIONAL_HEADERS
# May specify header files for IDE generators.
-# SONAME
-# Should set SONAME link flags and create symlinks
# )
function(llvm_add_library name)
cmake_parse_arguments(ARG
- "MODULE;SHARED;STATIC;OBJECT;DISABLE_LLVM_LINK_LLVM_DYLIB;SONAME"
+ "MODULE;SHARED;STATIC;OBJECT;DISABLE_LLVM_LINK_LLVM_DYLIB"
"OUTPUT_NAME"
"ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS;OBJLIBS"
${ARGN})
@@ -436,6 +434,11 @@ function(llvm_add_library name)
PREFIX ""
)
endif()
+
+ set_target_properties(${name}
+ PROPERTIES
+ SOVERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}
+ VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX})
endif()
if(ARG_MODULE OR ARG_SHARED)
@@ -450,24 +453,6 @@ function(llvm_add_library name)
endif()
endif()
- if(ARG_SHARED AND UNIX)
- if(NOT APPLE AND ARG_SONAME)
- get_target_property(output_name ${name} OUTPUT_NAME)
- if(${output_name} STREQUAL "output_name-NOTFOUND")
- set(output_name ${name})
- endif()
- set(library_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX})
- set(api_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX})
- set_target_properties(${name} PROPERTIES OUTPUT_NAME ${library_name})
- llvm_install_library_symlink(${api_name} ${library_name} SHARED
- COMPONENT ${name}
- ALWAYS_GENERATE)
- llvm_install_library_symlink(${output_name} ${library_name} SHARED
- COMPONENT ${name}
- ALWAYS_GENERATE)
- endif()
- endif()
-
if (DEFINED LLVM_LINK_COMPONENTS OR DEFINED ARG_LINK_COMPONENTS)
if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
set(llvm_libs LLVM)
@@ -1073,41 +1058,6 @@ function(add_lit_testsuites project dire
endif()
endfunction()
-function(llvm_install_library_symlink name dest type)
- cmake_parse_arguments(ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN})
- foreach(path ${CMAKE_MODULE_PATH})
- if(EXISTS ${path}/LLVMInstallSymlink.cmake)
- set(INSTALL_SYMLINK ${path}/LLVMInstallSymlink.cmake)
- break()
- endif()
- endforeach()
-
- set(component ${ARG_COMPONENT})
- if(NOT component)
- set(component ${name})
- endif()
-
- set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})
- set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
-
- set(output_dir lib${LLVM_LIBDIR_SUFFIX})
- if(WIN32 AND "${type}" STREQUAL "SHARED")
- set(output_dir bin)
- endif()
-
- install(SCRIPT ${INSTALL_SYMLINK}
- CODE "install_symlink(${full_name} ${full_dest} ${output_dir})"
- COMPONENT ${component})
-
- if (NOT CMAKE_CONFIGURATION_TYPES AND NOT ARG_ALWAYS_GENERATE)
- add_custom_target(install-${name}
- DEPENDS ${name} ${dest} install-${dest}
- COMMAND "${CMAKE_COMMAND}"
- -DCMAKE_INSTALL_COMPONENT=${name}
- -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
- endif()
-endfunction()
-
function(llvm_install_symlink name dest)
cmake_parse_arguments(ARG "ALWAYS_GENERATE" "" "" ${ARGN})
foreach(path ${CMAKE_MODULE_PATH})
Index: llvm-3.8.1.src/tools/llvm-shlib/CMakeLists.txt
===================================================================
--- llvm-3.8.1.src.orig/tools/llvm-shlib/CMakeLists.txt
+++ llvm-3.8.1.src/tools/llvm-shlib/CMakeLists.txt
@@ -38,7 +38,7 @@ if(LLVM_DYLIB_EXPORTED_SYMBOL_FILE)
add_custom_target(libLLVMExports DEPENDS ${LLVM_EXPORTED_SYMBOL_FILE})
endif()
-add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
+add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB ${SOURCES})
list(REMOVE_DUPLICATES LIB_NAMES)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # FIXME: It should be "GNU ld for elf"

View File

@ -1,24 +0,0 @@
Index: cfe-3.8.1.src/lib/Basic/Version.cpp
===================================================================
--- cfe-3.8.1.src/lib/Basic/Version.cpp.orig
+++ cfe-3.8.1.src/lib/Basic/Version.cpp
@@ -72,19 +72,11 @@ std::string getLLVMRepositoryPath() {
}
std::string getClangRevision() {
-#ifdef SVN_REVISION
return SVN_REVISION;
-#else
- return "";
-#endif
}
std::string getLLVMRevision() {
-#ifdef LLVM_REVISION
return LLVM_REVISION;
-#else
- return "";
-#endif
}
std::string getClangFullRepositoryVersion() {