summaryrefslogtreecommitdiff
path: root/recipes/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/llvm')
-rw-r--r--recipes/llvm/llvm-2.4/fix-build.patch79
-rw-r--r--recipes/llvm/llvm-2.4/fix-static-initialization.patch60
-rw-r--r--recipes/llvm/llvm-gcc4-cross_svn.bb32
-rw-r--r--recipes/llvm/llvm-gcc4_svn.bb19
-rw-r--r--recipes/llvm/llvm-native_1.9.bb9
-rw-r--r--recipes/llvm/llvm-native_2.1.bb16
-rw-r--r--recipes/llvm/llvm-native_2.4.bb15
-rw-r--r--recipes/llvm/llvm-native_2.5.bb15
-rw-r--r--recipes/llvm/llvm-native_cvs.bb13
-rw-r--r--recipes/llvm/llvm.inc16
-rw-r--r--recipes/llvm/llvm_2.0.bb6
-rw-r--r--recipes/llvm/llvm_2.4.bb46
12 files changed, 326 insertions, 0 deletions
diff --git a/recipes/llvm/llvm-2.4/fix-build.patch b/recipes/llvm/llvm-2.4/fix-build.patch
new file mode 100644
index 0000000000..ed077affcd
--- /dev/null
+++ b/recipes/llvm/llvm-2.4/fix-build.patch
@@ -0,0 +1,79 @@
+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-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)
+- ifeq ($(BUILD_COMPONENT),1)
+- TargetMode := Build
+- else
+- TargetMode := Host
+- endif
++ TargetMode := Host
+ BuildLLVMToolDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/Build/bin
+ endif
+
+@@ -436,7 +433,7 @@
+ ifdef EXAMPLE_TOOL
+ LD.Flags += -rpath $(ExmplDir) -export-dynamic
+ else
+- LD.Flags += -rpath $(ToolDir) -export-dynamic
++ LD.Flags += -export-dynamic
+ endif
+ endif
+
+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-23 15:10:03.000000000 +0100
+@@ -65,7 +65,7 @@
+ }
+
+
+-#if defined (__GNUC__)
++#if defined (__GNUC__) && ! defined (__ARM_EABI__)
+
+ // libgcc defines the __register_frame function to dynamically register new
+ // dwarf frames for exception handling. This functionality is not portable
+@@ -225,7 +225,7 @@
+ }
+
+ // Register routine for informing unwinding runtime about new EH frames
+-#if defined(__GNUC__)
++#if defined(__GNUC__) && ! defined(__ARM_EABI__)
+ #if defined(__APPLE__)
+ struct LibgccObjectInfo* LOI = (struct LibgccObjectInfo*)
+ _keymgr_get_and_lock_processwide_ptr(KEYMGR_GCC3_DW2_OBJ_LIST);
+Index: llvm-2.4/Makefile
+===================================================================
+--- 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
+ # be build for the build system.
+-ifeq ($(LLVM_CROSS_COMPILING),1)
+- BUILD_TARGET_DIRS := lib/System lib/Support utils
+-endif
++#ifeq ($(LLVM_CROSS_COMPILING),1)
++# BUILD_TARGET_DIRS := lib/System lib/Support utils
++#endif
+
+ # llvm-gcc4 doesn't need runtime libs. llvm-gcc4 is the only supported one.
+ # FIXME: Remove runtime entirely once we have an understanding of where
diff --git a/recipes/llvm/llvm-2.4/fix-static-initialization.patch b/recipes/llvm/llvm-2.4/fix-static-initialization.patch
new file mode 100644
index 0000000000..a3ec2d6374
--- /dev/null
+++ b/recipes/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/recipes/llvm/llvm-gcc4-cross_svn.bb b/recipes/llvm/llvm-gcc4-cross_svn.bb
new file mode 100644
index 0000000000..9b0e07ab94
--- /dev/null
+++ b/recipes/llvm/llvm-gcc4-cross_svn.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "The Low Level Virtual Machine - gcc4 frontend"
+HOMEPAGE = "http://llvm.org"
+LICENSE = "various"
+
+DEPENDS = "llvm-native"
+
+PV = "2.1+svnr${SRCREV}"
+
+inherit autotools cross
+
+SRC_URI = "svn://anonsvn.opensource.apple.com/svn/llvm/;module=trunk \
+ "
+
+S = "${WORKDIR}/trunk"
+
+EXTRA_OECONF = "--disable-shared \
+ --enable-llvm=/data/build/koen/OE/build/tmp/angstrom/work/i686-linux/llvm-native-2.0-r0/llvm-2.0 \
+ "
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+PARALLEL_MAKE = ""
+
+#oe_runmake gets distracted by GNUMakefiles...
+# we also need to get an install.sh and config-ml.in in gcc/ as well somehow
+do_compile_prepend() {
+ rm -f ${S}/GNUmakefile
+}
diff --git a/recipes/llvm/llvm-gcc4_svn.bb b/recipes/llvm/llvm-gcc4_svn.bb
new file mode 100644
index 0000000000..599e2ca183
--- /dev/null
+++ b/recipes/llvm/llvm-gcc4_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "The Low Level Virtual Machine - gcc4 frontend"
+HOMEPAGE = "http://llvm.org"
+LICENSE = "various"
+
+DEPENDS = "llvm-native"
+
+PV = "2.0+svnr${SRCREV}"
+
+inherit autotools cross
+
+SRC_URI = "svn://anonsvn.opensource.apple.com/svn/llvm/;module=trunk \
+ "
+
+S = "${WORKDIR}/trunk"
+
+EXTRA_OECONF = "--disable-shared \
+ --enable-llvm \
+ "
+
diff --git a/recipes/llvm/llvm-native_1.9.bb b/recipes/llvm/llvm-native_1.9.bb
new file mode 100644
index 0000000000..1493bab886
--- /dev/null
+++ b/recipes/llvm/llvm-native_1.9.bb
@@ -0,0 +1,9 @@
+require llvm.inc
+
+inherit native
+
+S = "${WORKDIR}/llvm-${PV}"
+
+do_stage() {
+ install -m 755 ${S}/Release/bin/* ${STAGING_BINDIR_NATIVE}/
+}
diff --git a/recipes/llvm/llvm-native_2.1.bb b/recipes/llvm/llvm-native_2.1.bb
new file mode 100644
index 0000000000..6366b9bbbe
--- /dev/null
+++ b/recipes/llvm/llvm-native_2.1.bb
@@ -0,0 +1,16 @@
+require llvm.inc
+
+SRC_URI = "http://llvm.org/releases/2.1/llvm-${PV}.tar.gz"
+
+
+inherit native
+
+S = "${WORKDIR}/llvm-${PV}"
+
+do_stage() {
+ install -m 755 ${S}/Release/bin/* ${STAGING_BINDIR_NATIVE}/
+}
+
+do_rm_work() {
+ :
+}
diff --git a/recipes/llvm/llvm-native_2.4.bb b/recipes/llvm/llvm-native_2.4.bb
new file mode 100644
index 0000000000..2e0a73fe86
--- /dev/null
+++ b/recipes/llvm/llvm-native_2.4.bb
@@ -0,0 +1,15 @@
+require llvm.inc
+
+SRC_URI = "http://llvm.org/releases/2.4/llvm-${PV}.tar.gz"
+
+inherit native
+
+S = "${WORKDIR}/llvm-${PV}"
+
+do_stage() {
+ install -m 755 ${S}/Release/bin/* ${STAGING_BINDIR_NATIVE}/
+}
+
+do_rm_work() {
+ :
+}
diff --git a/recipes/llvm/llvm-native_2.5.bb b/recipes/llvm/llvm-native_2.5.bb
new file mode 100644
index 0000000000..010f49ab32
--- /dev/null
+++ b/recipes/llvm/llvm-native_2.5.bb
@@ -0,0 +1,15 @@
+require llvm.inc
+
+SRC_URI = "http://llvm.org/releases/2.5/llvm-${PV}.tar.gz"
+
+inherit native
+
+S = "${WORKDIR}/llvm-${PV}"
+
+do_stage() {
+ install -m 755 ${S}/Release/bin/* ${STAGING_BINDIR_NATIVE}/
+}
+
+do_rm_work() {
+ :
+}
diff --git a/recipes/llvm/llvm-native_cvs.bb b/recipes/llvm/llvm-native_cvs.bb
new file mode 100644
index 0000000000..b3dfdebb2c
--- /dev/null
+++ b/recipes/llvm/llvm-native_cvs.bb
@@ -0,0 +1,13 @@
+require llvm.inc
+
+inherit native
+
+PV = "1.9+cvs${SRCDATE}"
+
+SRC_URI = "cvs://anon@llvm.org/var/cvs/llvm;module=llvm"
+
+S = "${WORKDIR}/llvm"
+
+do_stage() {
+ install -m 755 ${S}/Debug/bin/* ${STAGING_BINDIR_NATIVE}/
+}
diff --git a/recipes/llvm/llvm.inc b/recipes/llvm/llvm.inc
new file mode 100644
index 0000000000..d9664aeebd
--- /dev/null
+++ b/recipes/llvm/llvm.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "The Low Level Virtual Machine"
+HOMEPAGE = "http://llvm.org"
+LICENSE = "various"
+
+SRC_URI = "http://llvm.org/releases/1.9/llvm-${PV}.tar.gz"
+
+inherit autotools
+
+do_configure() {
+ oe_runconf
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/recipes/llvm/llvm_2.0.bb b/recipes/llvm/llvm_2.0.bb
new file mode 100644
index 0000000000..7e80f245cc
--- /dev/null
+++ b/recipes/llvm/llvm_2.0.bb
@@ -0,0 +1,6 @@
+require llvm.inc
+
+SRC_URI = "http://llvm.org/releases/2.0/llvm-${PV}.tar.gz"
+
+S = "${WORKDIR}/llvm-${PV}"
+
diff --git a/recipes/llvm/llvm_2.4.bb b/recipes/llvm/llvm_2.4.bb
new file mode 100644
index 0000000000..a66d1b376b
--- /dev/null
+++ b/recipes/llvm/llvm_2.4.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "The Low Level Virtual Machine"
+HOMEPAGE = "http://llvm.org"
+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).
+ # Most important aspect is removing BUILD_TARGET_DIRS variable.
+ install -d Release/Build/bin
+ cp ${STAGING_BINDIR_NATIVE}/tblgen Release/Build/bin
+ cp ${STAGING_BINDIR_NATIVE}/fpcmp Release/Build/bin
+ cp ${STAGING_BINDIR_NATIVE}/llvm-PerfectShuffle Release/Build/bin
+
+ oe_runmake
+}
+
+do_stage() {
+ autotools_stage_all
+
+ rm ${STAGING_LIBDIR}/LLVMHello.*
+
+ install -d ${STAGING_BINDIR_CROSS}
+
+ sed -e's^my.*ABS_RUN_DIR =.*^my $ABS_RUN_DIR = "${STAGING_DIR_TARGET}";^' \
+ -e's^my.*INCLUDEDIR =.*^my $INCLUDEDIR = "${STAGING_INCDIR}";^' \
+ -e's^my.*LIBDIR.*^my $LIBDIR = "${STAGING_LIBDIR}";^' \
+ -e's^my.*BINDIR.*^my $BINDIR = "${STAGING_BINDIR}";^' \
+ Release/Host/bin/llvm-config > ${STAGING_BINDIR_CROSS}/llvm-config
+
+ chmod +x ${STAGING_BINDIR_CROSS}/llvm-config
+}
+