diff options
author | Robert Schuster <thebohemian@gmx.net> | 2009-01-24 11:35:43 +0100 |
---|---|---|
committer | Robert Schuster <thebohemian@gmx.net> | 2009-01-24 11:35:43 +0100 |
commit | 53dcbe3b9b6059ef3c8432007ab2bc1e718cb9a6 (patch) | |
tree | 7fd785ed9406667e2a294c8178fbb3283aad74d0 | |
parent | fb189177751dcbfef4ad7cecfe5f62a54a414010 (diff) |
llvm: Various fixes.
* only build backend for the target machine
* suppress automatic stripping
* added patch to fix C++ "static initialization order fiasco"
-rw-r--r-- | packages/llvm/llvm-2.4/fix-build.patch | 26 | ||||
-rw-r--r-- | packages/llvm/llvm-2.4/fix-static-initialization.patch | 60 | ||||
-rw-r--r-- | packages/llvm/llvm_2.4.bb | 5 |
3 files changed, 85 insertions, 6 deletions
diff --git a/packages/llvm/llvm-2.4/fix-build.patch b/packages/llvm/llvm-2.4/fix-build.patch index 30560b2e44..ed077affcd 100644 --- a/packages/llvm/llvm-2.4/fix-build.patch +++ b/packages/llvm/llvm-2.4/fix-build.patch @@ -1,8 +1,22 @@ Index: llvm-2.4/Makefile.rules =================================================================== --- llvm-2.4.orig/Makefile.rules 2008-10-03 23:24:52.000000000 +0200 -+++ llvm-2.4/Makefile.rules 2009-01-16 03:19:06.000000000 +0100 -@@ -309,11 +309,7 @@ ++++ llvm-2.4/Makefile.rules 2009-01-24 09:59:20.000000000 +0100 +@@ -234,9 +234,10 @@ + EXTRA_OPTIONS += -fstrict-aliasing -Wstrict-aliasing + endif + +- CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) +- C.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) +- LD.Flags += $(OPTIMIZE_OPTION) ++# OE: Do not interfere with flags given by OE ++# CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) ++# C.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) ++# LD.Flags += $(OPTIMIZE_OPTION) + else + BuildMode := Debug + CXX.Flags += -g +@@ -309,11 +310,7 @@ #-------------------------------------------------------------------- TargetMode := ifeq ($(LLVM_CROSS_COMPILING),1) @@ -15,7 +29,7 @@ Index: llvm-2.4/Makefile.rules BuildLLVMToolDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/Build/bin endif -@@ -436,7 +432,7 @@ +@@ -436,7 +433,7 @@ ifdef EXAMPLE_TOOL LD.Flags += -rpath $(ExmplDir) -export-dynamic else @@ -27,7 +41,7 @@ Index: llvm-2.4/Makefile.rules Index: llvm-2.4/lib/ExecutionEngine/JIT/JIT.cpp =================================================================== --- llvm-2.4.orig/lib/ExecutionEngine/JIT/JIT.cpp 2008-09-24 18:25:55.000000000 +0200 -+++ llvm-2.4/lib/ExecutionEngine/JIT/JIT.cpp 2009-01-16 03:16:27.000000000 +0100 ++++ llvm-2.4/lib/ExecutionEngine/JIT/JIT.cpp 2009-01-23 15:10:03.000000000 +0100 @@ -65,7 +65,7 @@ } @@ -48,8 +62,8 @@ Index: llvm-2.4/lib/ExecutionEngine/JIT/JIT.cpp _keymgr_get_and_lock_processwide_ptr(KEYMGR_GCC3_DW2_OBJ_LIST); Index: llvm-2.4/Makefile =================================================================== ---- llvm-2.4.orig/Makefile 2009-01-16 03:16:48.000000000 +0100 -+++ llvm-2.4/Makefile 2009-01-16 03:17:15.000000000 +0100 +--- llvm-2.4.orig/Makefile 2008-10-03 00:56:44.000000000 +0200 ++++ llvm-2.4/Makefile 2009-01-23 15:10:33.000000000 +0100 @@ -27,9 +27,9 @@ # When cross-compiling, there are some things (tablegen) that need to diff --git a/packages/llvm/llvm-2.4/fix-static-initialization.patch b/packages/llvm/llvm-2.4/fix-static-initialization.patch new file mode 100644 index 0000000000..a3ec2d6374 --- /dev/null +++ b/packages/llvm/llvm-2.4/fix-static-initialization.patch @@ -0,0 +1,60 @@ +Index: llvm-2.4/include/llvm/System/DynamicLibrary.h +=================================================================== +--- llvm-2.4.orig/include/llvm/System/DynamicLibrary.h 2008-05-06 03:32:53.000000000 +0200 ++++ llvm-2.4/include/llvm/System/DynamicLibrary.h 2009-01-24 11:24:12.000000000 +0100 +@@ -16,6 +16,7 @@ + + #include "llvm/System/Path.h" + #include <string> ++#include <map> + + namespace llvm { + namespace sys { +@@ -90,6 +91,10 @@ + DynamicLibrary(const DynamicLibrary&); ///< Do not implement + DynamicLibrary& operator=(const DynamicLibrary&); ///< Do not implement + /// @} ++ ++ private: ++ static std::map<std::string, void *> &g_symbols(); ++ + }; + + } // End sys namespace +Index: llvm-2.4/lib/System/DynamicLibrary.cpp +=================================================================== +--- llvm-2.4.orig/lib/System/DynamicLibrary.cpp 2008-07-10 02:52:20.000000000 +0200 ++++ llvm-2.4/lib/System/DynamicLibrary.cpp 2009-01-24 11:27:42.000000000 +0100 +@@ -14,14 +14,18 @@ + #include "llvm/System/DynamicLibrary.h" + #include "llvm/Config/config.h" + #include <cstring> +-#include <map> + + // Collection of symbol name/value pairs to be searched prior to any libraries. +-static std::map<std::string, void *> g_symbols; ++std::map<std::string, void *> &llvm::sys::DynamicLibrary::g_symbols() { ++ static std::map<std::string, void *> *symbols ++ = new std::map<std::string, void *>(); ++ ++ return *symbols; ++} + + void llvm::sys::DynamicLibrary::AddSymbol(const char* symbolName, + void *symbolValue) { +- g_symbols[symbolName] = symbolValue; ++ g_symbols()[symbolName] = symbolValue; + } + + // It is not possible to use ltdl.c on VC++ builds as the terms of its LGPL +@@ -75,8 +79,8 @@ + // check_ltdl_initialization(); + + // First check symbols added via AddSymbol(). +- std::map<std::string, void *>::iterator I = g_symbols.find(symbolName); +- if (I != g_symbols.end()) ++ std::map<std::string, void *>::iterator I = g_symbols().find(symbolName); ++ if (I != g_symbols().end()) + return I->second; + + // Now search the libraries. diff --git a/packages/llvm/llvm_2.4.bb b/packages/llvm/llvm_2.4.bb index c1ad694ae6..a66d1b376b 100644 --- a/packages/llvm/llvm_2.4.bb +++ b/packages/llvm/llvm_2.4.bb @@ -5,12 +5,17 @@ LICENSE = "various" SRC_URI = "\ http://llvm.org/releases/${PV}/llvm-${PV}.tar.gz \ file://fix-build.patch;patch=1 \ + file://fix-static-initialization.patch;patch=1 \ " DEPENDS = "llvm-native" inherit autotools +# --enable-debug-runtime disables automatic stripping and lets +# OE control that +EXTRA_OECONF += "--enable-debug-runtime --enable-targets=host-only" + do_compile() { # The build wants these binaries, together with the build-fix patch # they are not compiled again (which would not work). |