From a0ac8cfacc3ae40983d47f8878d1697389f35de8 Mon Sep 17 00:00:00 2001
From: Robert Schuster <thebohemian@gmx.net>
Date: Mon, 30 Mar 2009 18:46:10 +0200
Subject: llvm-native 1.9: Removed. llvm-native 2.1: Removed. llvm-native 2.4:
 Removed. llvm-native cvs: Removed (llvm is not in a CVS repo anymore). llvm
 2.0: Removed. llvm 2.4: Removed.

---
 recipes/llvm/llvm-native_1.9.bb |  9 --------
 recipes/llvm/llvm-native_2.1.bb | 16 --------------
 recipes/llvm/llvm-native_2.4.bb | 15 -------------
 recipes/llvm/llvm-native_cvs.bb | 13 ------------
 recipes/llvm/llvm_2.0.bb        |  6 ------
 recipes/llvm/llvm_2.4.bb        | 47 -----------------------------------------
 6 files changed, 106 deletions(-)
 delete mode 100644 recipes/llvm/llvm-native_1.9.bb
 delete mode 100644 recipes/llvm/llvm-native_2.1.bb
 delete mode 100644 recipes/llvm/llvm-native_2.4.bb
 delete mode 100644 recipes/llvm/llvm-native_cvs.bb
 delete mode 100644 recipes/llvm/llvm_2.0.bb
 delete mode 100644 recipes/llvm/llvm_2.4.bb

(limited to 'recipes/llvm')

diff --git a/recipes/llvm/llvm-native_1.9.bb b/recipes/llvm/llvm-native_1.9.bb
deleted file mode 100644
index 1493bab886..0000000000
--- a/recipes/llvm/llvm-native_1.9.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-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
deleted file mode 100644
index 6366b9bbbe..0000000000
--- a/recipes/llvm/llvm-native_2.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-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
deleted file mode 100644
index 2e0a73fe86..0000000000
--- a/recipes/llvm/llvm-native_2.4.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-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_cvs.bb b/recipes/llvm/llvm-native_cvs.bb
deleted file mode 100644
index b3dfdebb2c..0000000000
--- a/recipes/llvm/llvm-native_cvs.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-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_2.0.bb b/recipes/llvm/llvm_2.0.bb
deleted file mode 100644
index 7e80f245cc..0000000000
--- a/recipes/llvm/llvm_2.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-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
deleted file mode 100644
index fef48f5343..0000000000
--- a/recipes/llvm/llvm_2.4.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-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 \
-	file://fix-ldr_pre.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
-}	
-
-- 
cgit v1.2.3


From 8db75a24a2f7d0af4bac46e69535733a203226c2 Mon Sep 17 00:00:00 2001
From: Robert Schuster <thebohemian@gmx.net>
Date: Tue, 31 Mar 2009 11:51:10 +0200
Subject: llvm: Reworked to allow multiple installation of same version.   -
 introduced common include file   - provided implementation for llvm 2.5   -
 added wrapper script and its build recipe   - the same for native side
 llvm2.5 2.5: New recipe llvm2.5-native 2.5: New recipe. llvm-common: New
 recipe. llvm-common-native: New recipe.

---
 recipes/llvm/llvm-2.5/fix-build.patch | 24 -------------
 recipes/llvm/llvm-common-native.bb    | 12 +++++++
 recipes/llvm/llvm-common.bb           | 14 ++++++++
 recipes/llvm/llvm-common/llvm-config  | 10 ++++++
 recipes/llvm/llvm-native.inc          | 26 ++++++++++++++
 recipes/llvm/llvm2.5-native_2.5.bb    |  4 +++
 recipes/llvm/llvm2.5/fix-build.patch  | 24 +++++++++++++
 recipes/llvm/llvm2.5_2.5.bb           |  4 +++
 recipes/llvm/llvm_2.5.bb              | 67 -----------------------------------
 9 files changed, 94 insertions(+), 91 deletions(-)
 delete mode 100644 recipes/llvm/llvm-2.5/fix-build.patch
 create mode 100644 recipes/llvm/llvm-common-native.bb
 create mode 100644 recipes/llvm/llvm-common.bb
 create mode 100644 recipes/llvm/llvm-common/llvm-config
 create mode 100644 recipes/llvm/llvm-native.inc
 create mode 100644 recipes/llvm/llvm2.5-native_2.5.bb
 create mode 100644 recipes/llvm/llvm2.5/fix-build.patch
 create mode 100644 recipes/llvm/llvm2.5_2.5.bb
 delete mode 100644 recipes/llvm/llvm_2.5.bb

(limited to 'recipes/llvm')

diff --git a/recipes/llvm/llvm-2.5/fix-build.patch b/recipes/llvm/llvm-2.5/fix-build.patch
deleted file mode 100644
index 527823c18c..0000000000
--- a/recipes/llvm/llvm-2.5/fix-build.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Index: llvm-2.5/tools/llvm-config/CMakeLists.txt
-===================================================================
---- llvm-2.5.orig/tools/llvm-config/CMakeLists.txt	2009-01-07 20:24:44.000000000 +0100
-+++ llvm-2.5/tools/llvm-config/CMakeLists.txt	2009-03-23 13:45:24.000000000 +0100
-@@ -83,13 +83,13 @@
-   COMMENT "Checking for cyclic dependencies between LLVM libraries.")
- 
- add_custom_command(OUTPUT ${LLVM_CONFIG}
--  COMMAND echo 's,@LLVM_CPPFLAGS@,${CMAKE_CPP_FLAGS},' > temp.sed
--  COMMAND echo 's,@LLVM_CFLAGS@,${CMAKE_C_FLAGS},' >> temp.sed
--  COMMAND echo 's,@LLVM_CXXFLAGS@,${CMAKE_CXX_FLAGS},' >> temp.sed
-+  COMMAND echo 's!@LLVM_CPPFLAGS@!${CMAKE_CPP_FLAGS}!' > temp.sed
-+  COMMAND echo 's!@LLVM_CFLAGS@!${CMAKE_C_FLAGS} -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS!' >> temp.sed
-+  COMMAND echo 's!@LLVM_CXXFLAGS@!${CMAKE_CXX_FLAGS} -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -fpermissive -fvisibility-inlines-hidden -Woverloaded-virtual!' >> temp.sed
-   # TODO: Use general flags for linking, not just for shared libs:
--  COMMAND echo 's,@LLVM_LDFLAGS@,${CMAKE_SHARED_LINKER_FLAGS},' >> temp.sed
--  COMMAND echo 's,@LIBS@,,' >> temp.sed                    # TODO: System libs
--  COMMAND echo 's,@LLVM_BUILDMODE@,${CMAKE_BUILD_TYPE},' >> temp.sed
-+  COMMAND echo 's!@LLVM_LDFLAGS@!${CMAKE_SHARED_LINKER_FLAGS}!' >> temp.sed
-+  COMMAND echo 's!@LIBS@!!' >> temp.sed                    # TODO: System libs
-+  COMMAND echo 's!@LLVM_BUILDMODE@!${CMAKE_BUILD_TYPE}!' >> temp.sed
-   COMMAND sed -f temp.sed < ${LLVM_CONFIG_IN} > ${LLVM_CONFIG}
-   COMMAND ${CMAKE_COMMAND} -E remove -f temp.sed
-   COMMAND cat ${FINAL_LIBDEPS} >> ${LLVM_CONFIG}
diff --git a/recipes/llvm/llvm-common-native.bb b/recipes/llvm/llvm-common-native.bb
new file mode 100644
index 0000000000..c2b79bd6a5
--- /dev/null
+++ b/recipes/llvm/llvm-common-native.bb
@@ -0,0 +1,12 @@
+require llvm-common.bb
+
+inherit native
+
+do_install() {
+	:
+}
+
+do_stage() {
+	install -d ${STAGING_BINDIR}
+  install -m 0755 ${WORKDIR}/llvm-config ${STAGING_BINDIR}
+}
diff --git a/recipes/llvm/llvm-common.bb b/recipes/llvm/llvm-common.bb
new file mode 100644
index 0000000000..b7f2bfc011
--- /dev/null
+++ b/recipes/llvm/llvm-common.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Helper script for OE's llvm support"
+
+SRC_URI = "file://llvm-config"
+
+PACKAGES = ""
+
+do_install() {
+	:
+}
+
+do_stage() {
+	install -d ${STAGING_BINDIR_CROSS}
+  install -m 0755 ${WORKDIR}/llvm-config ${STAGING_BINDIR_CROSS}
+}
diff --git a/recipes/llvm/llvm-common/llvm-config b/recipes/llvm/llvm-common/llvm-config
new file mode 100644
index 0000000000..5256b8cd06
--- /dev/null
+++ b/recipes/llvm/llvm-common/llvm-config
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Wrapper script for real llvm-config. Simply calls
+
+if [ $WANT_LLVM_RELEASE ]; then
+	exec `dirname $0`/llvm-config$WANT_LLVM_RELEASE ${@}
+else
+  echo "The variable WANT_LLVM_RELEASE is not defined and exported"
+	echo "by your build recipe. Go figure."
+  exit 1
+fi
diff --git a/recipes/llvm/llvm-native.inc b/recipes/llvm/llvm-native.inc
new file mode 100644
index 0000000000..a7d7fa3830
--- /dev/null
+++ b/recipes/llvm/llvm-native.inc
@@ -0,0 +1,26 @@
+require llvm.inc
+
+DEPENDS = "llvm-common-native"
+
+inherit native
+
+# the difference to the non-native build is that we do not need
+# to declare the location of the tblgen executable.
+EXTRA_OECMAKE = "\
+  -DLLVM_TARGETS_TO_BUILD=${LLVM_ARCH} \
+  -DCMAKE_LINKER:FILEPATH=${LD} \
+  -DCMAKE_AR:FILEPATH=${AR} \
+  -DCMAKE_OBJCOPY:FILEPATH=${OBJCOPY} \
+  -DCMAKE_OBJDUMP:FILEPATH=${OBJDUMP} \
+  -DCMAKE_RANLIB:FILEPATH=${RANLIB} \
+  -DCMAKE_STRIP:FILEPATH=${STRIP} \
+"
+
+do_stage() {
+  llvm_stage
+
+  install -d ${STAGING_BINDIR}
+	install -m 0755 build/bin/llvm-config${LLVM_RELEASE} ${STAGING_BINDIR}
+}
+
+
diff --git a/recipes/llvm/llvm2.5-native_2.5.bb b/recipes/llvm/llvm2.5-native_2.5.bb
new file mode 100644
index 0000000000..13b5a446b7
--- /dev/null
+++ b/recipes/llvm/llvm2.5-native_2.5.bb
@@ -0,0 +1,4 @@
+require llvm-native.inc
+
+SRC_URI += "file://fix-build.patch;patch=1"
+
diff --git a/recipes/llvm/llvm2.5/fix-build.patch b/recipes/llvm/llvm2.5/fix-build.patch
new file mode 100644
index 0000000000..527823c18c
--- /dev/null
+++ b/recipes/llvm/llvm2.5/fix-build.patch
@@ -0,0 +1,24 @@
+Index: llvm-2.5/tools/llvm-config/CMakeLists.txt
+===================================================================
+--- llvm-2.5.orig/tools/llvm-config/CMakeLists.txt	2009-01-07 20:24:44.000000000 +0100
++++ llvm-2.5/tools/llvm-config/CMakeLists.txt	2009-03-23 13:45:24.000000000 +0100
+@@ -83,13 +83,13 @@
+   COMMENT "Checking for cyclic dependencies between LLVM libraries.")
+ 
+ add_custom_command(OUTPUT ${LLVM_CONFIG}
+-  COMMAND echo 's,@LLVM_CPPFLAGS@,${CMAKE_CPP_FLAGS},' > temp.sed
+-  COMMAND echo 's,@LLVM_CFLAGS@,${CMAKE_C_FLAGS},' >> temp.sed
+-  COMMAND echo 's,@LLVM_CXXFLAGS@,${CMAKE_CXX_FLAGS},' >> temp.sed
++  COMMAND echo 's!@LLVM_CPPFLAGS@!${CMAKE_CPP_FLAGS}!' > temp.sed
++  COMMAND echo 's!@LLVM_CFLAGS@!${CMAKE_C_FLAGS} -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS!' >> temp.sed
++  COMMAND echo 's!@LLVM_CXXFLAGS@!${CMAKE_CXX_FLAGS} -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -fpermissive -fvisibility-inlines-hidden -Woverloaded-virtual!' >> temp.sed
+   # TODO: Use general flags for linking, not just for shared libs:
+-  COMMAND echo 's,@LLVM_LDFLAGS@,${CMAKE_SHARED_LINKER_FLAGS},' >> temp.sed
+-  COMMAND echo 's,@LIBS@,,' >> temp.sed                    # TODO: System libs
+-  COMMAND echo 's,@LLVM_BUILDMODE@,${CMAKE_BUILD_TYPE},' >> temp.sed
++  COMMAND echo 's!@LLVM_LDFLAGS@!${CMAKE_SHARED_LINKER_FLAGS}!' >> temp.sed
++  COMMAND echo 's!@LIBS@!!' >> temp.sed                    # TODO: System libs
++  COMMAND echo 's!@LLVM_BUILDMODE@!${CMAKE_BUILD_TYPE}!' >> temp.sed
+   COMMAND sed -f temp.sed < ${LLVM_CONFIG_IN} > ${LLVM_CONFIG}
+   COMMAND ${CMAKE_COMMAND} -E remove -f temp.sed
+   COMMAND cat ${FINAL_LIBDEPS} >> ${LLVM_CONFIG}
diff --git a/recipes/llvm/llvm2.5_2.5.bb b/recipes/llvm/llvm2.5_2.5.bb
new file mode 100644
index 0000000000..355634e0fa
--- /dev/null
+++ b/recipes/llvm/llvm2.5_2.5.bb
@@ -0,0 +1,4 @@
+require llvm.inc
+
+SRC_URI += "file://fix-build.patch;patch=1"
+
diff --git a/recipes/llvm/llvm_2.5.bb b/recipes/llvm/llvm_2.5.bb
deleted file mode 100644
index ece64422b5..0000000000
--- a/recipes/llvm/llvm_2.5.bb
+++ /dev/null
@@ -1,67 +0,0 @@
-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 \
-"
-
-PR = "r2"
-
-DEPENDS = "llvm-native"
-
-inherit cmake
-
-OECMAKE_SOURCEPATH = ".."
-OECMAKE_BUILDPATH = "build"
-EXTRA_OEMAKE = "-C build"
-EXTRA_OECMAKE = "\
-  -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/tblgen \
-  -DLLVM_TARGETS_TO_BUILD=${@get_llvm_arch(d)} \
-  -DCMAKE_LINKER:FILEPATH=${LD} \
-  -DCMAKE_AR:FILEPATH=${AR} \
-  -DCMAKE_OBJCOPY:FILEPATH=${OBJCOPY} \
-  -DCMAKE_OBJDUMP:FILEPATH=${OBJDUMP} \
-  -DCMAKE_RANLIB:FILEPATH=${RANLIB} \
-  -DCMAKE_STRIP:FILEPATH=${STRIP} \
-"
-
-do_stage() {
-  oe_runmake DESTDIR="${STAGING_DIR_HOST}" install
-
-  install -d ${STAGING_INCDIR}/llvm
-	find include/llvm -name "*.h" -maxdepth 1 -exec \
-    install {} ${STAGING_INCDIR}/llvm \;
-
-  install -d ${STAGING_BINDIR_CROSS}
-
-  # Fix some paths in the script to make it work correctly
-  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}";^' \
-      build/bin/llvm-config > ${STAGING_BINDIR_CROSS}/llvm-config
-
-  chmod +x ${STAGING_BINDIR_CROSS}/llvm-config
-}
-
-# Retrieve the target in a way that is compatible to the arch
-# value in llvm (>= 2.5)
-def get_llvm_arch(d):
-  import bb;
-
-  arch = bb.data.getVar('TARGET_ARCH', d, 1)
-  if arch == "x86_64" or arch == "i486" or arch == "i586" or arch == "i686":
-    arch = "X86"
-  elif arch == "arm":
-    arch = "ARM"
-  elif arch == "mipsel":
-    arch = "Mips"
-  elif arch == "powerpc":
-    arch = "PowerPC"
-  else:
-    oefatal("Your target architecture is not supported by this recipe");
-
-  return arch
-
-- 
cgit v1.2.3


From eb8a23f558e529fd30b840934717174375aa455f Mon Sep 17 00:00:00 2001
From: Robert Schuster <thebohemian@gmx.net>
Date: Tue, 31 Mar 2009 11:54:02 +0200
Subject: llvm-gcc4-cross: Change dependency to llvm2.5-native. llvm-gcc: Dito.

---
 recipes/llvm/llvm-2.4/fix-build.patch              |  79 -------------
 .../llvm/llvm-2.4/fix-static-initialization.patch  |  60 ----------
 recipes/llvm/llvm-gcc4-cross_svn.bb                |   4 +-
 recipes/llvm/llvm-gcc4_svn.bb                      |   4 +-
 recipes/llvm/llvm.inc                              | 122 +++++++++++++++++++--
 5 files changed, 121 insertions(+), 148 deletions(-)
 delete mode 100644 recipes/llvm/llvm-2.4/fix-build.patch
 delete mode 100644 recipes/llvm/llvm-2.4/fix-static-initialization.patch

(limited to 'recipes/llvm')

diff --git a/recipes/llvm/llvm-2.4/fix-build.patch b/recipes/llvm/llvm-2.4/fix-build.patch
deleted file mode 100644
index ed077affcd..0000000000
--- a/recipes/llvm/llvm-2.4/fix-build.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-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
deleted file mode 100644
index a3ec2d6374..0000000000
--- a/recipes/llvm/llvm-2.4/fix-static-initialization.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-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
index 9b0e07ab94..4cd5ae1db6 100644
--- a/recipes/llvm/llvm-gcc4-cross_svn.bb
+++ b/recipes/llvm/llvm-gcc4-cross_svn.bb
@@ -2,10 +2,12 @@ DESCRIPTION = "The Low Level Virtual Machine - gcc4 frontend"
 HOMEPAGE = "http://llvm.org"
 LICENSE = "various"
 
-DEPENDS = "llvm-native"
+DEPENDS = "llvm2.5-native"
 
 PV = "2.1+svnr${SRCREV}"
 
+PR = "r1"
+
 inherit autotools cross
 
 SRC_URI = "svn://anonsvn.opensource.apple.com/svn/llvm/;module=trunk \
diff --git a/recipes/llvm/llvm-gcc4_svn.bb b/recipes/llvm/llvm-gcc4_svn.bb
index 599e2ca183..6a39362080 100644
--- a/recipes/llvm/llvm-gcc4_svn.bb
+++ b/recipes/llvm/llvm-gcc4_svn.bb
@@ -2,10 +2,12 @@ DESCRIPTION = "The Low Level Virtual Machine - gcc4 frontend"
 HOMEPAGE = "http://llvm.org"
 LICENSE = "various"
 
-DEPENDS = "llvm-native"
+DEPENDS = "llvm2.5-native"
 
 PV = "2.0+svnr${SRCREV}"
 
+PR = "r1"
+
 inherit autotools cross
 
 SRC_URI = "svn://anonsvn.opensource.apple.com/svn/llvm/;module=trunk \
diff --git a/recipes/llvm/llvm.inc b/recipes/llvm/llvm.inc
index d9664aeebd..a61a99a723 100644
--- a/recipes/llvm/llvm.inc
+++ b/recipes/llvm/llvm.inc
@@ -1,16 +1,124 @@
+# LLVM does not provide ABI stability between different versions. For this
+# reason OE makes it possible to build and install different llvm versions
+# at the same time.
+#
+# This is true for the normal recipes as well as the native ones.
+#
+# All regular installation directories are prefixed with 'llvm${LLVM_RELEASE}'
+# e.g. "${STAGING_BINDIR}/llvm2.5" or "${STAGING_INCDIR}/llvm2.5"
+#
+# For your program or library that makes use of llvm you do should not need to
+# modify anything as long as it uses the results of various llvm-config
+# invocations. If you need customizations something is wrong and it needs to be
+# fixed (report bug).
+#
+# However the *recipe* for your program/library *must* declare
+# export WANT_LLVM_RELEASE = "<valid version number>
+# The version number is picked up by a generic wrapper script which just calls
+# the variant of the specified version.
+
 DESCRIPTION = "The Low Level Virtual Machine"
 HOMEPAGE = "http://llvm.org"
-LICENSE = "various"
 
-SRC_URI = "http://llvm.org/releases/1.9/llvm-${PV}.tar.gz"
+DEPENDS = "llvm-common"
+
+# 3-clause BSD-like
+LICENSE = "University of Illinois/NCSA Open Source License"
+
+SRC_URI = "http://llvm.org/releases/${PV}/llvm-${PV}.tar.gz"
+
+S = "${WORKDIR}/llvm-${PV}"
+
+inherit cmake
+
+# Defines the LLVM supported arches. By now we always build either for ${BUILD}
+# (native) or ${TARGET}. In the future it may make sense to enable all backends
+# for the non-native build. The decision which backends are used is made by
+# the 3rd party program or library that uses llvm anyway.
+LLVM_ARCH = "${@get_llvm_arch(d)}"
+
+# This is used for generating the install directory for the llvm libraries,
+# binaries and headers. It makes side by side installation of those possible.
+LLVM_RELEASE = "${PV}"
+
+# llvm *must* be built out of tree
+OECMAKE_SOURCEPATH = ".."
+OECMAKE_BUILDPATH = "build"
+EXTRA_OEMAKE = "-C build"
+EXTRA_OECMAKE = "\
+  -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm${LLVM_RELEASE}/tblgen \
+  -DLLVM_TARGETS_TO_BUILD=${LLVM_ARCH} \
+  -DCMAKE_LINKER:FILEPATH=${LD} \
+  -DCMAKE_AR:FILEPATH=${AR} \
+  -DCMAKE_OBJCOPY:FILEPATH=${OBJCOPY} \
+  -DCMAKE_OBJDUMP:FILEPATH=${OBJDUMP} \
+  -DCMAKE_RANLIB:FILEPATH=${RANLIB} \
+  -DCMAKE_STRIP:FILEPATH=${STRIP} \
+  -DLLVM_ENABLE_PIC:BOOL=ON \
+"
+
+llvm_stage() {
+	# Install into a private directory to be able to reorganize the files.
+  oe_runmake DESTDIR=${WORKDIR}/llvm-install install
+
+	# Create our custom target directories
+	install -d ${STAGING_BINDIR}/llvm${LLVM_RELEASE}
+  install -d ${STAGING_INCDIR}/llvm${LLVM_RELEASE}
+	install -d ${STAGING_LIBDIR}/llvm${LLVM_RELEASE}
 
-inherit autotools
+	#	Move headers into their own directory
+	cp -r ${WORKDIR}/llvm-install/${prefix}/include/llvm \
+    ${STAGING_INCDIR}/llvm${LLVM_RELEASE}/
+	cp -r ${WORKDIR}/llvm-install/${prefix}/include/llvm-c \
+    ${STAGING_INCDIR}/llvm${LLVM_RELEASE}/
 
-do_configure() {
-	oe_runconf
+	# llvm somehow forgets these
+#	find include/llvm -name "*.h" -maxdepth 1 -exec \
+#    install {} ${STAGING_INCDIR}/llvm${LLVM_RELEASE}/llvm \;
+
+	find ${WORKDIR}/llvm-install/${prefix}/lib -name "*" -maxdepth 1 -exec \
+    install {} ${STAGING_LIBDIR}/llvm${LLVM_RELEASE} \;
+
+	#	I dont know another way out. Binaries are installed into a special subdir
+	find ${WORKDIR}/llvm-install/${prefix}/bin -name "*" -maxdepth 1 -exec \
+    install {} ${STAGING_BINDIR}/llvm${LLVM_RELEASE} \;
+
+	# LLVM does not install this by default.
+  install build/bin/tblgen ${STAGING_BINDIR}/llvm${LLVM_RELEASE}
+
+  # Fix the paths in the config script to make it find the binaries and
+  # library files. Doing so allows 3rd party configure scripts working
+  # unmodified.
+  sed -e's!my.*ABS_RUN_DIR =.*!my $ABS_RUN_DIR = "${STAGING_DIR_TARGET}";!' \
+      -e's!my.*INCLUDEDIR =.*!my $INCLUDEDIR = "${STAGING_INCDIR}/llvm${LLVM_RELEASE}";!' \
+      -e's!my.*LIBDIR.*!my $LIBDIR = "${STAGING_LIBDIR}/llvm${LLVM_RELEASE}";!' \
+      -e's!my.*BINDIR.*!my $BINDIR = "${STAGING_BINDIR}/llvm${LLVM_RELEASE}";!' \
+      build/bin/llvm-config > build/bin/llvm-config${LLVM_RELEASE}
 }
 
 do_stage() {
-	autotools_stage_all
-}	
+  llvm_stage
+
+  install -d ${STAGING_BINDIR_CROSS}
+	install -m 0755 build/bin/llvm-config${LLVM_RELEASE} ${STAGING_BINDIR_CROSS}
+}
+
+# Retrieve the target in a way that is compatible to the arch
+# value in llvm (>= 2.5)
+def get_llvm_arch(d):
+  import bb;
+
+  arch = bb.data.getVar('TARGET_ARCH', d, 1)
+  if arch == "x86_64" or arch == "i486" or arch == "i586" or arch == "i686":
+    arch = "X86"
+  elif arch == "arm":
+    arch = "ARM"
+  elif arch == "mipsel":
+    arch = "Mips"
+  elif arch == "powerpc":
+    arch = "PowerPC"
+  else:
+    oefatal("Your target architecture is not supported by this recipe");
+
+  return arch
 
-- 
cgit v1.2.3


From 2d05226a33f1d0e43bdbb06e57997b363572c330 Mon Sep 17 00:00:00 2001
From: Robert Schuster <thebohemian@gmx.net>
Date: Wed, 1 Apr 2009 16:28:10 +0200
Subject: llvm.inc: Declare dependency of llvm<ver> on llvm<ver>-native

---
 recipes/llvm/llvm.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'recipes/llvm')

diff --git a/recipes/llvm/llvm.inc b/recipes/llvm/llvm.inc
index a61a99a723..7e6bacb3e7 100644
--- a/recipes/llvm/llvm.inc
+++ b/recipes/llvm/llvm.inc
@@ -20,7 +20,7 @@
 DESCRIPTION = "The Low Level Virtual Machine"
 HOMEPAGE = "http://llvm.org"
 
-DEPENDS = "llvm-common"
+DEPENDS = "llvm-common llvm${LLVM_RELEASE}-native"
 
 # 3-clause BSD-like
 LICENSE = "University of Illinois/NCSA Open Source License"
-- 
cgit v1.2.3