[arch-commits] Commit in llvm/trunk (5 files)
Evangelos Foutras
foutrelis at archlinux.org
Thu Sep 4 11:56:08 UTC 2014
Date: Thursday, September 4, 2014 @ 13:56:08
Author: foutrelis
Revision: 220938
Prepare llvm 3.5.0; can't push yet due to boost rebuild
Added:
llvm/trunk/llvm-3.5.0-force-link-pass.o.patch
Modified:
llvm/trunk/PKGBUILD
Deleted:
llvm/trunk/clang-3.3-use-gold-linker.patch
llvm/trunk/clang-3.4-fstack-protector-strong.patch
llvm/trunk/llvm-3.4-provide-cmake-modules.patch
-----------------------------------------+
PKGBUILD | 89 +++-----
clang-3.3-use-gold-linker.patch | 12 -
clang-3.4-fstack-protector-strong.patch | 165 ---------------
llvm-3.4-provide-cmake-modules.patch | 319 ------------------------------
llvm-3.5.0-force-link-pass.o.patch | 28 ++
5 files changed, 66 insertions(+), 547 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2014-09-04 11:18:07 UTC (rev 220937)
+++ PKGBUILD 2014-09-04 11:56:08 UTC (rev 220938)
@@ -11,73 +11,57 @@
pkgname=('llvm' 'llvm-libs' 'llvm-ocaml' 'clang' 'clang-analyzer'
'clang-tools-extra')
-pkgver=3.4.2
-_base_ver=3.4
+pkgver=3.5.0
pkgrel=1
arch=('i686' 'x86_64')
url="http://llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
-makedepends=('libffi' 'python2' 'ocaml' 'python-sphinx')
+makedepends=('libffi' 'python2' 'ocaml' 'python-sphinx' 'chrpath')
options=('staticlibs')
-source=(http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.gz{,.sig}
- http://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.gz{,.sig}
- http://llvm.org/releases/$_base_ver/clang-tools-extra-$_base_ver.src.tar.gz{,.sig}
- http://llvm.org/releases/$_base_ver/compiler-rt-$_base_ver.src.tar.gz{,.sig}
- clang-3.3-use-gold-linker.patch
- clang-3.4-fstack-protector-strong.patch
- llvm-3.4-provide-cmake-modules.patch
+source=(http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz{,.sig}
+ http://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.xz{,.sig}
+ http://llvm.org/releases/$pkgver/clang-tools-extra-$pkgver.src.tar.xz{,.sig}
+ http://llvm.org/releases/$pkgver/compiler-rt-$pkgver.src.tar.xz{,.sig}
+ llvm-3.5.0-force-link-pass.o.patch
llvm-Config-config.h
llvm-Config-llvm-config.h)
-sha256sums=('17038d47069ad0700c063caed76f0c7259628b0e79651ce2b540d506f2f1efd7'
+sha256sums=('28e199f368ef0a4666708f31c7991ad3bcc3a578342b0306526dd35f07595c03'
'SKIP'
- '5ba6f5772f8d00f445209356a7daf83c5bca2da5acd10de517ad2359ae95bc10'
+ 'fc80992e004b06f6c7afb612de1cdaa9ac9d25811c55f94fcf7331d9b81cdb8b'
'SKIP'
- 'ba85187551ae97fe1c8ab569903beae5ff0900e21233e5eb5389f6ceab1028b4'
+ '2981beb378afb5aa5c50ed017720a42a33e77e902c7086ad2d412ef4fa931f69'
'SKIP'
- 'f37c89b1383ce462d47537a0245ac798600887a9be9f63073e16b79ed536ab5c'
+ 'a4b3e655832bf8d9a357ea2c771db347237460e131988cbb96cda40ff39a8136'
'SKIP'
- '8240adda155d7961eeb5d07ed50ead10cb7125f70283dff7f1c9fee9df3cea09'
- '7a2a1ddc94f67e643c1ab74601ec07deb6d5d344d4b19ed17c900afb2f6f2863'
- 'b6bb154d5ec998328e818bb09acfc6229e41367ba45cea7cc5b2dd2a7c835cf5'
+ '5702053503d49448598eda1b8dc8c263f0df9ad7486833273e3987b5dec25a19'
'312574e655f9a87784ca416949c505c452b819fad3061f2cde8aced6540a19a3'
'597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48')
prepare() {
- # Change directory names to release names so we don't need to change the
- # whole PKGBUILD
- mv llvm-$pkgver{.src,}
- mv cfe-$pkgver.src clang-$pkgver
+ cd "$srcdir/llvm-$pkgver.src"
- cd "$srcdir/llvm-$pkgver"
-
# At the present, clang must reside inside the LLVM source code tree to build
# See http://llvm.org/bugs/show_bug.cgi?id=4840
- mv "$srcdir/clang-$pkgver" tools/clang
+ mv "$srcdir/cfe-$pkgver.src" tools/clang
- mv "$srcdir/clang-tools-extra-$_base_ver" tools/clang/tools/extra
+ mv "$srcdir/clang-tools-extra-$pkgver.src" tools/clang/tools/extra
- mv "$srcdir/compiler-rt-$_base_ver" projects/compiler-rt
+ mv "$srcdir/compiler-rt-$pkgver.src" projects/compiler-rt
# Fix docs installation directory
sed -i 's:\$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \
Makefile.config.in
- # Make -flto work; use ld.gold instead of the default linker
- patch -d tools/clang -Np1 -i "$srcdir/clang-3.3-use-gold-linker.patch"
+ # Fix definition of LLVM_CMAKE_DIR in LLVMConfig.cmake
+ sed -i 's/$(DESTDIR)$(PROJ_prefix)/$(PROJ_prefix)/' cmake/modules/Makefile
- # Add command line option -fstack-protector-strong
- # http://reviews.llvm.org/rL201120
- patch -d tools/clang -Np0 -i "$srcdir/clang-3.4-fstack-protector-strong.patch"
-
- # Provide CMake modules (FS#38705)
- # http://reviews.llvm.org/rL201047
- # http://reviews.llvm.org/rL201048
- # http://reviews.llvm.org/rL201053
- patch -Np0 -i "$srcdir/llvm-3.4-provide-cmake-modules.patch"
+ # Fix build with GCC 4.9 (patch from Debian)
+ # http://llvm.org/bugs/show_bug.cgi?id=20067
+ patch -Np1 -i "$srcdir/llvm-3.5.0-force-link-pass.o.patch"
}
build() {
- cd "$srcdir/llvm-$pkgver"
+ cd "$srcdir/llvm-$pkgver.src"
# Apply strip option to configure
_optimized_switch="enable"
@@ -111,7 +95,7 @@
pkgdesc="Low Level Virtual Machine"
depends=("llvm-libs=$pkgver-$pkgrel" 'perl')
- cd "$srcdir/llvm-$pkgver"
+ cd "$srcdir/llvm-$pkgver.src"
# We move the clang directory out of the tree so it won't get installed and
# then we bring it back in for the clang package
@@ -122,8 +106,8 @@
mv "$srcdir/clang" tools
# The runtime library goes into llvm-libs
- mv "$pkgdir/usr/lib/libLLVM-$pkgver.so" "$srcdir/"
- mv "$pkgdir/usr/lib/libLLVM-$_base_ver.so" "$srcdir/"
+ mv -f "$pkgdir/usr/lib/libLLVM-$pkgver.so" "$srcdir/"
+ mv -f "$pkgdir/usr/lib/libLLVM-${pkgver%.*}.so" "$srcdir/"
# OCaml bindings go to a separate package
rm -rf "$srcdir"/{ocaml,ocamldoc}
@@ -138,8 +122,8 @@
# Get rid of example Hello transformation
rm "$pkgdir"/usr/lib/*LLVMHello.*
- # Symlink LLVMgold.so into /usr/lib/bfd-plugins
- # (https://bugs.archlinux.org/task/28479)
+ # Symlink LLVMgold.so from /usr/lib/bfd-plugins
+ # https://bugs.archlinux.org/task/28479
install -d "$pkgdir/usr/lib/bfd-plugins"
ln -s ../LLVMgold.so "$pkgdir/usr/lib/bfd-plugins/LLVMgold.so"
@@ -171,10 +155,10 @@
install -d "$pkgdir/usr/lib"
cp -P \
"$srcdir/libLLVM-$pkgver.so" \
- "$srcdir/libLLVM-$_base_ver.so" \
+ "$srcdir/libLLVM-${pkgver%.*}.so" \
"$pkgdir/usr/lib/"
- install -Dm644 "$srcdir/llvm-$pkgver/LICENSE.TXT" \
+ install -Dm644 "$srcdir/llvm-$pkgver.src/LICENSE.TXT" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
@@ -182,7 +166,7 @@
pkgdesc="OCaml bindings for LLVM"
depends=("llvm=$pkgver-$pkgrel" 'ocaml')
- cd "$srcdir/llvm-$pkgver"
+ cd "$srcdir/llvm-$pkgver.src"
install -d "$pkgdir"/{usr/lib,usr/share/doc/llvm}
cp -r "$srcdir/ocaml" "$pkgdir/usr/lib"
@@ -191,6 +175,9 @@
# Remove execute bit from static libraries
chmod -x "$pkgdir"/usr/lib/ocaml/libllvm*.a
+ # Remove insecure rpath
+ chrpath -d "$pkgdir"/usr/lib/ocaml/*.so
+
install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
@@ -201,9 +188,9 @@
# Fix installation path for clang docs
sed -i 's:$(PROJ_prefix)/share/doc/llvm:$(PROJ_prefix)/share/doc/clang:' \
- "$srcdir/llvm-$pkgver/Makefile.config"
+ "$srcdir/llvm-$pkgver.src/Makefile.config"
- cd "$srcdir/llvm-$pkgver/tools/clang"
+ cd "$srcdir/llvm-$pkgver.src/tools/clang"
# We move the extra tools directory out of the tree so it won't get
# installed and then we bring it back in for the clang-tools-extra package
@@ -217,7 +204,7 @@
# Revert the path change in case we want to do a repackage later
sed -i 's:$(PROJ_prefix)/share/doc/clang:$(PROJ_prefix)/share/doc/llvm:' \
- "$srcdir/llvm-$pkgver/Makefile.config"
+ "$srcdir/llvm-$pkgver.src/Makefile.config"
# Install html docs
cp -r docs/_build/html/* "$pkgdir/usr/share/doc/$pkgname/html/"
@@ -252,7 +239,7 @@
url="http://clang-analyzer.llvm.org/"
depends=("clang=$pkgver-$pkgrel" 'python2')
- cd "$srcdir/llvm-$pkgver/tools/clang"
+ cd "$srcdir/llvm-$pkgver.src/tools/clang"
install -d "$pkgdir"/usr/{bin,lib/clang-analyzer}
for _tool in scan-{build,view}; do
@@ -287,7 +274,7 @@
url="http://clang.llvm.org/"
depends=("clang=$pkgver-$pkgrel")
- cd "$srcdir/llvm-$pkgver/tools/clang/tools/extra"
+ cd "$srcdir/llvm-$pkgver.src/tools/clang/tools/extra"
make DESTDIR="$pkgdir" install
Deleted: clang-3.3-use-gold-linker.patch
===================================================================
--- clang-3.3-use-gold-linker.patch 2014-09-04 11:18:07 UTC (rev 220937)
+++ clang-3.3-use-gold-linker.patch 2014-09-04 11:56:08 UTC (rev 220938)
@@ -1,12 +0,0 @@
-diff -upr cfe.src.orig/lib/Driver/ToolChains.cpp cfe.src/lib/Driver/ToolChains.cpp
---- cfe.src.orig/lib/Driver/ToolChains.cpp 2013-06-08 16:17:19.000000000 +0300
-+++ cfe.src/lib/Driver/ToolChains.cpp 2013-06-08 16:17:33.000000000 +0300
-@@ -2220,7 +2220,7 @@ Linux::Linux(const Driver &D, const llvm
- PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
- GCCInstallation.getTriple().str() + "/bin").str());
-
-- Linker = GetProgramPath("ld");
-+ Linker = GetProgramPath("ld.gold");
-
- Distro Distro = DetectDistro(Arch);
-
Deleted: clang-3.4-fstack-protector-strong.patch
===================================================================
--- clang-3.4-fstack-protector-strong.patch 2014-09-04 11:18:07 UTC (rev 220937)
+++ clang-3.4-fstack-protector-strong.patch 2014-09-04 11:56:08 UTC (rev 220938)
@@ -1,165 +0,0 @@
-Index: test/Driver/stack-protector.c
-===================================================================
---- test/Driver/stack-protector.c (revision 201119)
-+++ test/Driver/stack-protector.c (revision 201120)
-@@ -15,3 +15,11 @@
-
- // RUN: %clang -target i386-pc-openbsd -fno-stack-protector -### %s 2>&1 | FileCheck %s -check-prefix=OPENBSD_OFF
- // OPENBSD_OFF-NOT: "-stack-protector"
-+
-+// RUN: %clang -fstack-protector-strong -### %s 2>&1 | FileCheck %s -check-prefix=SSP-STRONG
-+// SSP-STRONG: "-stack-protector" "2"
-+// SSP-STRONG-NOT: "-stack-protector-buffer-size"
-+
-+// RUN: %clang -fstack-protector-all -### %s 2>&1 | FileCheck %s -check-prefix=SSP-ALL
-+// SSP-ALL: "-stack-protector" "3"
-+// SSP-ALL-NOT: "-stack-protector-buffer-size"
-Index: test/CodeGen/stack-protector.c
-===================================================================
---- test/CodeGen/stack-protector.c (revision 201119)
-+++ test/CodeGen/stack-protector.c (revision 201120)
-@@ -2,7 +2,9 @@
- // NOSSP: define void @test1(i8* %msg) #0 {
- // RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 1 | FileCheck -check-prefix=WITHSSP %s
- // WITHSSP: define void @test1(i8* %msg) #0 {
--// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 2 | FileCheck -check-prefix=SSPREQ %s
-+// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 2 | FileCheck -check-prefix=SSPSTRONG %s
-+// SSPSTRONG: define void @test1(i8* %msg) #0 {
-+// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 3 | FileCheck -check-prefix=SSPREQ %s
- // SSPREQ: define void @test1(i8* %msg) #0 {
-
- typedef __SIZE_TYPE__ size_t;
-@@ -21,4 +23,6 @@
-
- // WITHSSP: attributes #{{.*}} = { nounwind ssp{{.*}} }
-
-+// SSPSTRONG: attributes #{{.*}} = { nounwind sspstrong{{.*}} }
-+
- // SSPREQ: attributes #{{.*}} = { nounwind sspreq{{.*}} }
-Index: include/clang/Basic/LangOptions.h
-===================================================================
---- include/clang/Basic/LangOptions.h (revision 201119)
-+++ include/clang/Basic/LangOptions.h (revision 201120)
-@@ -58,7 +58,7 @@
- typedef clang::Visibility Visibility;
-
- enum GCMode { NonGC, GCOnly, HybridGC };
-- enum StackProtectorMode { SSPOff, SSPOn, SSPReq };
-+ enum StackProtectorMode { SSPOff, SSPOn, SSPStrong, SSPReq };
-
- enum SignedOverflowBehaviorTy {
- SOB_Undefined, // Default C standard behavior.
-Index: include/clang/Driver/ToolChain.h
-===================================================================
---- include/clang/Driver/ToolChain.h (revision 201119)
-+++ include/clang/Driver/ToolChain.h (revision 201120)
-@@ -196,7 +196,7 @@
- virtual bool UseObjCMixedDispatch() const { return false; }
-
- /// GetDefaultStackProtectorLevel - Get the default stack protector level for
-- /// this tool chain (0=off, 1=on, 2=all).
-+ /// this tool chain (0=off, 1=on, 2=strong, 3=all).
- virtual unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const {
- return 0;
- }
-Index: include/clang/Driver/Options.td
-===================================================================
---- include/clang/Driver/Options.td (revision 201119)
-+++ include/clang/Driver/Options.td (revision 201120)
-@@ -675,7 +675,8 @@
- Flags<[CC1Option]>, HelpText<"Do not include source location information with diagnostics">;
- def fno_spell_checking : Flag<["-"], "fno-spell-checking">, Group<f_Group>,
- Flags<[CC1Option]>, HelpText<"Disable spell-checking">;
--def fno_stack_protector : Flag<["-"], "fno-stack-protector">, Group<f_Group>;
-+def fno_stack_protector : Flag<["-"], "fno-stack-protector">, Group<f_Group>,
-+ HelpText<"Disable the use of stack protectors">;
- def fno_strict_aliasing : Flag<["-"], "fno-strict-aliasing">, Group<f_Group>;
- def fstruct_path_tbaa : Flag<["-"], "fstruct-path-tbaa">, Group<f_Group>;
- def fno_struct_path_tbaa : Flag<["-"], "fno-struct-path-tbaa">, Group<f_Group>;
-@@ -773,8 +774,12 @@
- def fno_signed_char : Flag<["-"], "fno-signed-char">, Flags<[CC1Option]>,
- Group<clang_ignored_f_Group>, HelpText<"Char is unsigned">;
- def fsplit_stack : Flag<["-"], "fsplit-stack">, Group<f_Group>;
--def fstack_protector_all : Flag<["-"], "fstack-protector-all">, Group<f_Group>;
--def fstack_protector : Flag<["-"], "fstack-protector">, Group<f_Group>;
-+def fstack_protector_all : Flag<["-"], "fstack-protector-all">, Group<f_Group>,
-+ HelpText<"Force the usage of stack protectors for all functions">;
-+def fstack_protector_strong : Flag<["-"], "fstack-protector-strong">, Group<f_Group>,
-+ HelpText<"Use a strong heuristic to apply stack protectors to functions">;
-+def fstack_protector : Flag<["-"], "fstack-protector">, Group<f_Group>,
-+ HelpText<"Enable stack protectors for functions potentially vulnerable to stack smashing">;
- def fstrict_aliasing : Flag<["-"], "fstrict-aliasing">, Group<f_Group>;
- def fstrict_enums : Flag<["-"], "fstrict-enums">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Enable optimizations based on the strict definition of an enum's "
-Index: lib/Frontend/CompilerInvocation.cpp
-===================================================================
---- lib/Frontend/CompilerInvocation.cpp (revision 201119)
-+++ lib/Frontend/CompilerInvocation.cpp (revision 201120)
-@@ -1435,7 +1435,8 @@
- break;
- case 0: Opts.setStackProtector(LangOptions::SSPOff); break;
- case 1: Opts.setStackProtector(LangOptions::SSPOn); break;
-- case 2: Opts.setStackProtector(LangOptions::SSPReq); break;
-+ case 2: Opts.setStackProtector(LangOptions::SSPStrong); break;
-+ case 3: Opts.setStackProtector(LangOptions::SSPReq); break;
- }
-
- // Parse -fsanitize= arguments.
-Index: lib/Frontend/InitPreprocessor.cpp
-===================================================================
---- lib/Frontend/InitPreprocessor.cpp (revision 201119)
-+++ lib/Frontend/InitPreprocessor.cpp (revision 201120)
-@@ -695,8 +695,10 @@
-
- if (LangOpts.getStackProtector() == LangOptions::SSPOn)
- Builder.defineMacro("__SSP__");
-+ else if (LangOpts.getStackProtector() == LangOptions::SSPStrong)
-+ Builder.defineMacro("__SSP_STRONG__", "2");
- else if (LangOpts.getStackProtector() == LangOptions::SSPReq)
-- Builder.defineMacro("__SSP_ALL__", "2");
-+ Builder.defineMacro("__SSP_ALL__", "3");
-
- if (FEOpts.ProgramAction == frontend::RewriteObjC)
- Builder.defineMacro("__weak", "__attribute__((objc_gc(weak)))");
-Index: lib/Driver/Tools.cpp
-===================================================================
---- lib/Driver/Tools.cpp (revision 201119)
-+++ lib/Driver/Tools.cpp (revision 201120)
-@@ -10,6 +10,7 @@
- #include "Tools.h"
- #include "InputInfo.h"
- #include "ToolChains.h"
-+#include "clang/Basic/LangOptions.h"
- #include "clang/Basic/ObjCRuntime.h"
- #include "clang/Basic/Version.h"
- #include "clang/Driver/Action.h"
-@@ -3114,11 +3115,14 @@
- unsigned StackProtectorLevel = 0;
- if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector,
- options::OPT_fstack_protector_all,
-+ options::OPT_fstack_protector_strong,
- options::OPT_fstack_protector)) {
- if (A->getOption().matches(options::OPT_fstack_protector))
-- StackProtectorLevel = 1;
-+ StackProtectorLevel = LangOptions::SSPOn;
-+ else if (A->getOption().matches(options::OPT_fstack_protector_strong))
-+ StackProtectorLevel = LangOptions::SSPStrong;
- else if (A->getOption().matches(options::OPT_fstack_protector_all))
-- StackProtectorLevel = 2;
-+ StackProtectorLevel = LangOptions::SSPReq;
- } else {
- StackProtectorLevel =
- getToolChain().GetDefaultStackProtectorLevel(KernelOrKext);
-Index: lib/CodeGen/CodeGenModule.cpp
-===================================================================
---- lib/CodeGen/CodeGenModule.cpp (revision 201119)
-+++ lib/CodeGen/CodeGenModule.cpp (revision 201120)
-@@ -651,6 +651,8 @@
-
- if (LangOpts.getStackProtector() == LangOptions::SSPOn)
- B.addAttribute(llvm::Attribute::StackProtect);
-+ else if (LangOpts.getStackProtector() == LangOptions::SSPStrong)
-+ B.addAttribute(llvm::Attribute::StackProtectStrong);
- else if (LangOpts.getStackProtector() == LangOptions::SSPReq)
- B.addAttribute(llvm::Attribute::StackProtectReq);
-
Deleted: llvm-3.4-provide-cmake-modules.patch
===================================================================
--- llvm-3.4-provide-cmake-modules.patch 2014-09-04 11:18:07 UTC (rev 220937)
+++ llvm-3.4-provide-cmake-modules.patch 2014-09-04 11:56:08 UTC (rev 220938)
@@ -1,319 +0,0 @@
-Index: cmake/modules/LLVMConfig.cmake.in
-===================================================================
---- cmake/modules/LLVMConfig.cmake.in (revision 201046)
-+++ cmake/modules/LLVMConfig.cmake.in (revision 201047)
-@@ -41,16 +41,6 @@
- set(LLVM_LIBRARY_DIRS ${LLVM_INSTALL_PREFIX}/lib)
- set(LLVM_DEFINITIONS "-D__STDC_LIMIT_MACROS" "-D__STDC_CONSTANT_MACROS")
-
--# We try to include using the current setting of CMAKE_MODULE_PATH,
--# which suppossedly was filled by the user with the directory where
--# this file was installed:
--include( LLVM-Config OPTIONAL RESULT_VARIABLE LLVMCONFIG_INCLUDED )
--
--# If failed, we assume that this is an un-installed build:
--if( NOT LLVMCONFIG_INCLUDED )
-- set(CMAKE_MODULE_PATH
-- ${CMAKE_MODULE_PATH}
-- "@LLVM_SOURCE_DIR@/cmake/modules")
-- include( LLVM-Config )
--endif()
--
-+get_filename_component(_SELF_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
-+include(${_SELF_DIR}/LLVM-Config.cmake)
-+unset(_SELF_DIR)
-Index: cmake/modules/LLVMConfig.cmake.in
-===================================================================
---- cmake/modules/LLVMConfig.cmake.in (revision 201047)
-+++ cmake/modules/LLVMConfig.cmake.in (revision 201048)
-@@ -1,5 +1,7 @@
- # This file provides information and services to the final user.
-
-+ at LLVM_CONFIG_CODE@
-+
- set(LLVM_VERSION_MAJOR @LLVM_VERSION_MAJOR@)
- set(LLVM_VERSION_MINOR @LLVM_VERSION_MINOR@)
- set(LLVM_PACKAGE_VERSION @PACKAGE_VERSION@)
-@@ -36,11 +38,9 @@
- set(LLVM_ON_UNIX @LLVM_ON_UNIX@)
- set(LLVM_ON_WIN32 @LLVM_ON_WIN32@)
-
--set(LLVM_INSTALL_PREFIX "@LLVM_INSTALL_PREFIX@")
--set(LLVM_INCLUDE_DIRS ${LLVM_INSTALL_PREFIX}/include)
--set(LLVM_LIBRARY_DIRS ${LLVM_INSTALL_PREFIX}/lib)
-+set(LLVM_INCLUDE_DIRS "@LLVM_CONFIG_INCLUDE_DIRS@")
-+set(LLVM_LIBRARY_DIRS "@LLVM_CONFIG_LIBRARY_DIRS@")
- set(LLVM_DEFINITIONS "-D__STDC_LIMIT_MACROS" "-D__STDC_CONSTANT_MACROS")
-+set(LLVM_CMAKE_DIR "@LLVM_CONFIG_CMAKE_DIR@")
-
--get_filename_component(_SELF_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
--include(${_SELF_DIR}/LLVM-Config.cmake)
--unset(_SELF_DIR)
-+include(${LLVM_CMAKE_DIR}/LLVM-Config.cmake)
-Index: utils/llvm-build/llvmbuild/main.py
-===================================================================
---- utils/llvm-build/llvmbuild/main.py (revision 201052)
-+++ utils/llvm-build/llvmbuild/main.py (revision 201053)
-@@ -573,6 +573,40 @@
-
- f.close()
-
-+ def write_cmake_exports_fragment(self, output_path):
-+ """
-+ write_cmake_exports_fragment(output_path) -> None
-+
-+ Generate a CMake fragment which includes LLVMBuild library
-+ dependencies expressed similarly to how CMake would write
-+ them via install(EXPORT).
-+ """
-+
-+ dependencies = list(self.get_fragment_dependencies())
-+
-+ # Write out the CMake exports fragment.
-+ make_install_dir(os.path.dirname(output_path))
-+ f = open(output_path, 'w')
-+
-+ f.write("""\
-+# Explicit library dependency information.
-+#
-+# The following property assignments tell CMake about link
-+# dependencies of libraries imported from LLVM.
-+""")
-+ for ci in self.ordered_component_infos:
-+ # We only write the information for libraries currently.
-+ if ci.type_name != 'Library':
-+ continue
-+
-+ f.write("""\
-+set_property(TARGET %s PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES %s)\n""" % (
-+ ci.get_prefixed_library_name(), " ".join(sorted(
-+ dep.get_prefixed_library_name()
-+ for dep in self.get_required_libraries_for_component(ci)))))
-+
-+ f.close()
-+
- def write_make_fragment(self, output_path):
- """
- write_make_fragment(output_path) -> None
-@@ -780,6 +814,10 @@
- dest="write_cmake_fragment", metavar="PATH",
- help="Write the CMake project information to PATH",
- action="store", default=None)
-+ group.add_option("", "--write-cmake-exports-fragment",
-+ dest="write_cmake_exports_fragment", metavar="PATH",
-+ help="Write the CMake exports information to PATH",
-+ action="store", default=None)
- group.add_option("", "--write-make-fragment",
- dest="write_make_fragment", metavar="PATH",
- help="Write the Makefile project information to PATH",
-@@ -861,6 +899,8 @@
- # Write out the cmake fragment, if requested.
- if opts.write_cmake_fragment:
- project_info.write_cmake_fragment(opts.write_cmake_fragment)
-+ if opts.write_cmake_exports_fragment:
-+ project_info.write_cmake_exports_fragment(opts.write_cmake_exports_fragment)
-
- # Configure target definition files, if requested.
- if opts.configure_target_def_files:
-Index: Makefile.rules
-===================================================================
---- Makefile.rules (revision 201052)
-+++ Makefile.rules (revision 201053)
-@@ -78,6 +78,12 @@
-
- # The files we are going to generate using llvm-build.
- LLVMBuildMakeFrag := $(PROJ_OBJ_ROOT)/Makefile.llvmbuild
-+LLVMBuildCMakeFrag := $(PROJ_OBJ_ROOT)/LLVMBuild.cmake
-+LLVMBuildCMakeExportsFrag := $(PROJ_OBJ_ROOT)/cmake/modules/LLVMBuildExports.cmake
-+LLVMBuildMakeFrags := \
-+ $(LLVMBuildMakeFrag) \
-+ $(LLVMBuildCMakeFrag) \
-+ $(LLVMBuildCMakeExportsFrag)
- LLVMConfigLibraryDependenciesInc := \
- $(PROJ_OBJ_ROOT)/tools/llvm-config/LibraryDependencies.inc
-
-@@ -94,8 +100,8 @@
- #
- # We include a dependency on this Makefile to ensure that changes to the
- # generation command get picked up.
--$(LLVMBuildMakeFrag): $(PROJ_SRC_ROOT)/Makefile.rules \
-- $(PROJ_OBJ_ROOT)/Makefile.config
-+$(LLVMBuildMakeFrags): $(PROJ_SRC_ROOT)/Makefile.rules \
-+ $(PROJ_OBJ_ROOT)/Makefile.config
- $(Echo) Constructing LLVMBuild project information.
- $(Verb)$(PYTHON) $(LLVMBuildTool) \
- --native-target "$(TARGET_NATIVE_ARCH)" \
-@@ -102,10 +108,12 @@
- --enable-targets "$(TARGETS_TO_BUILD)" \
- --enable-optional-components "$(OPTIONAL_COMPONENTS)" \
- --write-library-table $(LLVMConfigLibraryDependenciesInc) \
-- --write-make-fragment $(LLVMBuildMakeFrag)
-+ --write-make-fragment $(LLVMBuildMakeFrag) \
-+ --write-cmake-fragment $(LLVMBuildCMakeFrag) \
-+ --write-cmake-exports-fragment $(LLVMBuildCMakeExportsFrag)
-
- # For completeness, let Make know how the extra files are generated.
--$(LLVMConfigLibraryDependenciesInc): $(LLVMBuildMakeFrag)
-+$(LLVMConfigLibraryDependenciesInc): $(LLVMBuildMakeFrags)
-
- # Include the generated Makefile fragment.
- #
-@@ -120,7 +128,7 @@
-
- # Clean the generated makefile fragment at the top-level.
- clean-local::
-- -$(Verb) $(RM) -f $(LLVMBuildMakeFrag)
-+ -$(Verb) $(RM) -f $(LLVMBuildMakeFrags)
- endif
- -include $(LLVMBuildMakeFrag)
-
-Index: Makefile
-===================================================================
---- Makefile (revision 201052)
-+++ Makefile (revision 201053)
-@@ -15,7 +15,7 @@
- # 3. Build IR, which builds the Intrinsics.inc file used by libs.
- # 4. Build libs, which are needed by llvm-config.
- # 5. Build llvm-config, which determines inter-lib dependencies for tools.
--# 6. Build tools and docs.
-+# 6. Build tools, docs, and cmake modules.
- #
- # When cross-compiling, there are some things (tablegen) that need to
- # be build for the build system first.
-@@ -31,7 +31,7 @@
- OPTIONAL_DIRS := tools/clang/utils/TableGen
- else
- DIRS := lib/Support lib/TableGen utils lib/IR lib tools/llvm-shlib \
-- tools/llvm-config tools docs unittests
-+ tools/llvm-config tools docs cmake unittests
- OPTIONAL_DIRS := projects bindings
- endif
-
-Index: cmake/modules/Makefile
-===================================================================
---- cmake/modules/Makefile (revision 0)
-+++ cmake/modules/Makefile (revision 201053)
-@@ -0,0 +1,106 @@
-+##===- cmake/modules/Makefile ------------------------------*- Makefile -*-===##
-+#
-+# The LLVM Compiler Infrastructure
-+#
-+# This file is distributed under the University of Illinois Open Source
-+# License. See LICENSE.TXT for details.
-+#
-+##===----------------------------------------------------------------------===##
-+
-+LEVEL = ../..
-+
-+LINK_COMPONENTS := all
-+
-+include $(LEVEL)/Makefile.common
-+
-+PROJ_cmake := $(DESTDIR)$(PROJ_prefix)/share/llvm/cmake
-+
-+OBJMODS := LLVMConfig.cmake LLVMConfigVersion.cmake LLVMExports.cmake
-+
-+# TODO: Teach LLVM-Config.cmake to work without explicit terminfo libs.
-+TERMINFO_LIBS := tinfo terminfo curses ncurses ncursesw
-+TERMINFO_LIBS := $(filter $(TERMINFO_LIBS),$(subst -l,,$(LIBS)))
-+
-+$(PROJ_OBJ_DIR)/LLVMConfig.cmake: LLVMConfig.cmake.in $(LLVMBuildCMakeFrag)
-+ $(Echo) 'Generating LLVM CMake package config file'
-+ $(Verb) ( \
-+ cat $< | sed \
-+ -e 's/@LLVM_CONFIG_CODE@/set(LLVM_INSTALL_PREFIX "'"$(subst /,\/,$(PROJ_prefix))"'")/' \
-+ -e 's/@LLVM_VERSION_MAJOR@/'"$(LLVM_VERSION_MAJOR)"'/' \
-+ -e 's/@LLVM_VERSION_MINOR@/'"$(LLVM_VERSION_MINOR)"'/' \
-+ -e 's/@PACKAGE_VERSION@/'"$(LLVMVersion)"'/' \
-+ -e 's/@LLVM_COMMON_DEPENDS@//' \
-+ -e 's/"@llvm_libs@"/'"$(subst -l,,$(LLVMConfigLibs))"'/' \
-+ -e 's/@LLVM_ALL_TARGETS@/'"$(ALL_TARGETS)"'/' \
-+ -e 's/@LLVM_TARGETS_TO_BUILD@/'"$(TARGETS_TO_BUILD)"'/' \
-+ -e 's/@LLVM_TARGETS_WITH_JIT@/'"$(TARGETS_WITH_JIT)"'/' \
-+ -e 's/@TARGET_TRIPLE@/'"$(TARGET_TRIPLE)"'/' \
-+ -e 's/@LLVM_ENABLE_TERMINFO@/'"$(ENABLE_TERMINFO)"'/' \
-+ -e 's/@LLVM_ENABLE_THREADS@/'"$(ENABLE_THREADS)"'/' \
-+ -e 's/@LLVM_ENABLE_ZLIB@/'"$(ENABLE_ZLIB)"'/' \
-+ -e 's/@LLVM_NATIVE_ARCH@/'"$(LLVM_NATIVE_ARCH)"'/' \
-+ -e 's/@LLVM_ENABLE_PIC@/'"$(ENABLE_PIC)"'/' \
-+ -e 's/@HAVE_TERMINFO@/'"$(HAVE_TERMINFO)"'/' \
-+ -e 's/@TERMINFO_LIBS@/'"$(TERMINFO_LIBS)"'/' \
-+ -e 's/@HAVE_LIBDL@/'"$(HAVE_DLOPEN)"'/' \
-+ -e 's/@HAVE_LIBPTHREAD@/'"$(HAVE_PTHREAD)"'/' \
-+ -e 's/@HAVE_LIBZ@/'"$(HAVE_LIBZ)"'/' \
-+ -e 's/@LLVM_ON_UNIX@/'"$(LLVM_ON_UNIX)"'/' \
-+ -e 's/@LLVM_ON_WIN32@/'"$(LLVM_ON_WIN32)"'/' \
-+ -e 's/@LLVM_CONFIG_INCLUDE_DIRS@/'"$(subst /,\/,$(PROJ_includedir))"'/' \
-+ -e 's/@LLVM_CONFIG_LIBRARY_DIRS@/'"$(subst /,\/,$(PROJ_libdir))"'/' \
-+ -e 's/@LLVM_CONFIG_CMAKE_DIR@/'"$(subst /,\/,$(PROJ_cmake))"'/' \
-+ -e 's/@LLVM_CONFIG_EXPORTS_FILE@/$${LLVM_CMAKE_DIR}\/LLVMExports.cmake/' \
-+ -e 's/@all_llvm_lib_deps@//' \
-+ && \
-+ # TODO: Teach LLVM-Config.cmake to use builtin CMake features \
-+ # for library dependencies. For now add the generated fragments. \
-+ grep '^set_property.*LLVMBUILD_LIB_DEPS_' "$(LLVMBuildCMakeFrag)" \
-+ ) > $@
-+
-+$(PROJ_OBJ_DIR)/LLVMConfigVersion.cmake: LLVMConfigVersion.cmake.in
-+ $(Echo) 'Generating LLVM CMake package version file'
-+ $(Verb) cat $< | sed \
-+ -e 's/@PACKAGE_VERSION@/'"$(LLVMVersion)"'/' \
-+ > $@
-+
-+$(PROJ_OBJ_DIR)/LLVMExports.cmake: $(LLVMBuildCMakeExportsFrag)
-+ $(Echo) 'Generating LLVM CMake target exports file'
-+ $(Verb) ( \
-+ echo '# LLVM CMake target exports. Do not include directly.' && \
-+ for lib in $(subst -l,,$(LLVMConfigLibs)); do \
-+ echo 'add_library('"$$lib"' STATIC IMPORTED)' && \
-+ echo 'set_property(TARGET '"$$lib"' PROPERTY IMPORTED_LOCATION "'"$(PROJ_libdir)/lib$$lib.a"'")' ; \
-+ done && \
-+ cat "$(LLVMBuildCMakeExportsFrag)" \
-+ ) > $@
-+
-+all-local:: $(addprefix $(PROJ_OBJ_DIR)/, $(OBJMODS))
-+
-+SKIPSRCMODS := \
-+ CheckAtomic.cmake \
-+ GetHostTriple.cmake \
-+ LLVMBuildExports.cmake \
-+ LLVMConfig.cmake \
-+ LLVMConfigVersion.cmake \
-+ LLVMExports.cmake \
-+ VersionFromVCS.cmake
-+
-+SRCMODS := $(notdir $(wildcard $(PROJ_SRC_DIR)/*.cmake))
-+SRCMODS := $(filter-out $(SKIPSRCMODS),$(SRCMODS))
-+INSTSRCMODS := $(addprefix $(PROJ_cmake)/, $(SRCMODS))
-+INSTOBJMODS := $(addprefix $(PROJ_cmake)/, $(OBJMODS))
-+
-+$(PROJ_cmake):
-+ $(Echo) Making install directory: $@
-+ $(Verb) $(MKDIR) $@
-+
-+$(INSTSRCMODS): $(PROJ_cmake)/%.cmake: $(PROJ_SRC_DIR)/%.cmake | $(PROJ_cmake)
-+ $(Echo) Installing cmake modules: $(notdir $<)
-+ $(Verb) $(DataInstall) $< $(PROJ_cmake)
-+
-+$(INSTOBJMODS): $(PROJ_cmake)/%.cmake: $(PROJ_OBJ_DIR)/%.cmake | $(PROJ_cmake)
-+ $(Echo) Installing cmake modules: $(notdir $<)
-+ $(Verb) $(DataInstall) $< $(PROJ_cmake)
-+
-+install-local:: $(INSTSRCMODS) $(INSTOBJMODS)
-Index: cmake/Makefile
-===================================================================
---- cmake/Makefile (revision 0)
-+++ cmake/Makefile (revision 201053)
-@@ -0,0 +1,12 @@
-+##===- cmake/Makefile --------------------------------------*- Makefile -*-===##
-+#
-+# The LLVM Compiler Infrastructure
-+#
-+# This file is distributed under the University of Illinois Open Source
-+# License. See LICENSE.TXT for details.
-+#
-+##===----------------------------------------------------------------------===##
-+LEVEL = ..
-+DIRS := modules
-+
-+include $(LEVEL)/Makefile.common
Added: llvm-3.5.0-force-link-pass.o.patch
===================================================================
--- llvm-3.5.0-force-link-pass.o.patch (rev 0)
+++ llvm-3.5.0-force-link-pass.o.patch 2014-09-04 11:56:08 UTC (rev 220938)
@@ -0,0 +1,28 @@
+Index: llvm-toolchain-snapshot-3.5~svn211313/tools/bugpoint/Makefile
+===================================================================
+--- llvm-toolchain-snapshot-3.5~svn211313.orig/tools/bugpoint/Makefile
++++ llvm-toolchain-snapshot-3.5~svn211313/tools/bugpoint/Makefile
+@@ -12,6 +12,9 @@ TOOLNAME := bugpoint
+ LINK_COMPONENTS := asmparser instrumentation scalaropts ipo linker bitreader \
+ bitwriter irreader vectorize objcarcopts codegen
+
++# Crappy workaround to make sure it links correctly.
++LLVMLibsOptions := ../../lib/IR/Release*/Pass.o
++
+ # Support plugins.
+ NO_DEAD_STRIP := 1
+
+Index: llvm-toolchain-snapshot-3.5~svn211313/tools/opt/Makefile
+===================================================================
+--- llvm-toolchain-snapshot-3.5~svn211313.orig/tools/opt/Makefile
++++ llvm-toolchain-snapshot-3.5~svn211313/tools/opt/Makefile
+@@ -10,7 +10,9 @@
+ LEVEL := ../..
+ TOOLNAME := opt
+ LINK_COMPONENTS := bitreader bitwriter asmparser irreader instrumentation scalaropts objcarcopts ipo vectorize all-targets codegen
++# Crappy workaround to make sure it links correctly.
+
++LLVMLibsOptions := ../../lib/IR/Release*/Pass.o
+ # Support plugins.
+ NO_DEAD_STRIP := 1
+
More information about the arch-commits
mailing list