[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