[oe] [PATCH] uclibc++: moved to git head

Frans Meulenbroeks fransmeulenbroeks at gmail.com
Fri Nov 19 15:10:02 UTC 2010


Removed the 0.1.9 version as it is quite old and does not compile
renamed files dir to uclibc++
added patches to get things compiling.
Patches are gracefully picked from openwrt
(https://dev.openwrt.org/browser/packages/libs/uclibc%2B%2B/patches?rev=24017)

note that it was decided to move to git head instead of the latest release (0.2.2)
because there were quite some patches after 0.2.2 was made and it does not look like there will
be a new release soon (there is hardly any activity last 2 years or so).

Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks at gmail.com>

---

For the review:
note that I also added a patch for include/cstring (cstring.patch).

With that patch the stuff compiles, without it I get these errors
(distro minimal, target calamari, eglibc)
If there is a better solution, please advise.

| WRAPPER_INCLUDEDIR=-I../include ../bin/g++-uc    -ansi  -fPIC -o eh_alloc.o -c eh_alloc.cpp
| In file included from eh_alloc.cpp:21:0:
| ../include/cstring: In function 'void* std::memchr(void*, int, size_t)':
| ../include/cstring:55:46: error: 'void* std::memchr(void*, int, size_t)' conflicts with previous using declaration 'void* memchr(void*, int, size_t)'
| ../include/cstring:56:50: error: invalid conversion from 'const void*' to 'void*'
| ../include/cstring: In function 'char* std::strchr(char*, int)':
| ../include/cstring:59:36: error: 'char* std::strchr(char*, int)' conflicts with previous using declaration 'char* strchr(char*, int)'
| ../include/cstring:60:47: error: invalid conversion from 'const char*' to 'char*'
| ../include/cstring: In function 'char* std::strpbrk(char*, const char*)':
| ../include/cstring:63:47: error: 'char* std::strpbrk(char*, const char*)' conflicts with previous using declaration 'char* strpbrk(char*, const char*)'
| ../include/cstring:64:50: error: invalid conversion from 'const char*' to 'char*'
| ../include/cstring: In function 'char* std::strrchr(char*, int)':
| ../include/cstring:67:37: error: 'char* std::strrchr(char*, int)' conflicts with previous using declaration 'char* strrchr(char*, int)'
| ../include/cstring:68:48: error: invalid conversion from 'const char*' to 'char*'
| ../include/cstring: In function 'char* std::strstr(char*, const char*)':
| ../include/cstring:71:46: error: 'char* std::strstr(char*, const char*)' conflicts with previous using declaration 'char* strstr(char*, const char*)'
| ../include/cstring:72:49: error: invalid conversion from 'const char*' to 'char*'
| make[1]: *** [eh_alloc.o] Error 1
| make[1]: Leaving directory `/home/frans/workspace/tmp/work/ppce500v2-oe-linux-gnuspe/uclibc++-0.2.2-r1/uClibc++-0.2.2/src'
| make: *** [all] Error 2
| FATAL: oe_runmake failed
| ERROR: Function do_compile failed

Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks at gmail.com>
---
 recipes/uclibc++/files/defconfig                   |   64 ------------------
 recipes/uclibc++/files/nobash.patch                |   13 ----
 recipes/uclibc++/uclibc++/006-eabi_fix.patch       |   42 ++++++++++++
 recipes/uclibc++/uclibc++/009-compile_fixes.patch  |   70 ++++++++++++++++++++
 .../uclibc++/900-dependent_exception.patch         |   68 +++++++++++++++++++
 recipes/uclibc++/uclibc++/cstring.patch            |   21 ++++++
 recipes/uclibc++/uclibc++/defconfig                |   53 +++++++++++++++
 recipes/uclibc++/uclibc++/nobash.patch             |   13 ++++
 recipes/uclibc++/uclibc++_0.1.9.bb                 |   54 ---------------
 recipes/uclibc++/uclibc++_git.bb                   |   51 ++++++++++++++
 10 files changed, 318 insertions(+), 131 deletions(-)
 delete mode 100644 recipes/uclibc++/files/defconfig
 delete mode 100644 recipes/uclibc++/files/nobash.patch
 create mode 100644 recipes/uclibc++/uclibc++/006-eabi_fix.patch
 create mode 100644 recipes/uclibc++/uclibc++/009-compile_fixes.patch
 create mode 100644 recipes/uclibc++/uclibc++/900-dependent_exception.patch
 create mode 100644 recipes/uclibc++/uclibc++/cstring.patch
 create mode 100644 recipes/uclibc++/uclibc++/defconfig
 create mode 100644 recipes/uclibc++/uclibc++/nobash.patch
 delete mode 100644 recipes/uclibc++/uclibc++_0.1.9.bb
 create mode 100644 recipes/uclibc++/uclibc++_git.bb

diff --git a/recipes/uclibc++/files/defconfig b/recipes/uclibc++/files/defconfig
deleted file mode 100644
index 19b4aa5..0000000
--- a/recipes/uclibc++/files/defconfig
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-# TARGET_arm is not set
-TARGET_i386=y
-# TARGET_powerpc is not set
-
-#
-# Target Architecture Features and Options
-#
-HAVE_ELF=y
-TARGET_ARCH="i386"
-# CONFIG_GENERIC_386 is not set
-# CONFIG_386 is not set
-# CONFIG_486 is not set
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-# CONFIG_686 is not set
-# CONFIG_PENTIUMIII is not set
-CONFIG_PENTIUM4=y
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_CRUSOE is not set
-# CONFIG_WINCHIPC6 is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_CYRIXIII is not set
-ARCH_LITTLE_ENDIAN=y
-# ARCH_BIG_ENDIAN is not set
-UCLIBCXX_HAS_FLOATS=y
-WARNINGS="-Wall"
-HAVE_DOT_CONFIG=y
-
-#
-# String and I/O Stream Support
-#
-# UCLIBCXX_HAS_WCHAR is not set
-UCLIBCXX_IOSTREAM_BUFSIZE=32
-UCLIBCXX_HAS_LFS=y
-UCLIBCXX_SUPPORT_CDIR=y
-UCLIBCXX_SUPPORT_CIN=y
-UCLIBCXX_SUPPORT_COUT=y
-UCLIBCXX_SUPPORT_CERR=y
-
-#
-# STL and Code Expansion
-#
-UCLIBCXX_STL_BUFFER_SIZE=32
-UCLIBCXX_CODE_EXPANSION=y
-UCLIBCXX_EXPAND_STRING_CHAR=y
-UCLIBCXX_EXPAND_VECTOR_BASIC=y
-UCLIBCXX_EXPAND_ISTREAM_CHAR=y
-UCLIBCXX_EXPAND_OSTREAM_CHAR=y
-UCLIBCXX_EXPAND_FSTREAM_CHAR=y
-
-#
-# Library Installation Options
-#
-UCLIBCXX_RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc"
-UCLIBCXX_RUNTIME_INCLUDE_SUBDIR="/include"
-UCLIBCXX_RUNTIME_LIB_SUBDIR="/lib"
-UCLIBCXX_RUNTIME_BIN_SUBDIR="/bin"
-UCLIBCXX_EXCEPTION_SUPPORT=y
-IMPORT_LIBSUP=y
-# DODEBUG is not set
diff --git a/recipes/uclibc++/files/nobash.patch b/recipes/uclibc++/files/nobash.patch
deleted file mode 100644
index 657c47b..0000000
--- a/recipes/uclibc++/files/nobash.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: uClibc++/bin/Makefile
-===================================================================
---- uClibc++.orig/bin/Makefile	2005-01-18 12:22:26.000000000 -0500
-+++ uClibc++/bin/Makefile	2005-03-10 18:19:30.799531304 -0500
-@@ -26,7 +26,7 @@
- 	$(INSTALL) -m 755 $(WRAPPER) $(PREFIX)$(UCLIBCXX_RUNTIME_PREFIX)$(UCLIBCXX_RUNTIME_BIN_SUBDIR)
- 
- $(WRAPPER):
--	echo "#!/bin/bash" > $(WRAPPER)
-+	echo "#!/bin/sh" > $(WRAPPER)
- 	echo "" >> $(WRAPPER)
- 	echo "OPTIONS=\"$(INITIALOPTIONS)\"" >> $(WRAPPER)
- 	echo 'INCLIB="Y"' >> $(WRAPPER)
diff --git a/recipes/uclibc++/uclibc++/006-eabi_fix.patch b/recipes/uclibc++/uclibc++/006-eabi_fix.patch
new file mode 100644
index 0000000..bc970a7
--- /dev/null
+++ b/recipes/uclibc++/uclibc++/006-eabi_fix.patch
@@ -0,0 +1,42 @@
+Index: uClibc++-0.2.2/include/typeinfo
+===================================================================
+--- uClibc++-0.2.2.orig/include/typeinfo	2008-02-13 00:37:04.000000000 +0100
++++ uClibc++-0.2.2/include/typeinfo	2008-02-13 00:37:34.000000000 +0100
+@@ -44,6 +44,7 @@
+   class __class_type_info;
+ } // namespace __cxxabiv1
+ 
++#ifndef __GXX_MERGED_TYPEINFO_NAMES
+ #if !__GXX_WEAK__
+   // If weak symbols are not supported, typeinfo names are not merged.
+   #define __GXX_MERGED_TYPEINFO_NAMES 0
+@@ -51,6 +52,7 @@
+   // On platforms that support weak symbols, typeinfo names are merged.
+   #define __GXX_MERGED_TYPEINFO_NAMES 1
+ #endif
++#endif
+ 
+ namespace std 
+ {
+Index: uClibc++-0.2.2/include/unwind-cxx.h
+===================================================================
+--- uClibc++-0.2.2.orig/include/unwind-cxx.h	2008-02-13 00:38:04.000000000 +0100
++++ uClibc++-0.2.2/include/unwind-cxx.h	2008-02-13 00:40:32.000000000 +0100
+@@ -135,6 +135,7 @@
+ 
+ // This is the exception class we report -- "GNUCC++\0".
+ const _Unwind_Exception_Class __gxx_exception_class
++#ifndef __ARM_EABI_UNWINDER__
+ = ((((((((_Unwind_Exception_Class) 'G' 
+ 	 << 8 | (_Unwind_Exception_Class) 'N')
+ 	<< 8 | (_Unwind_Exception_Class) 'U')
+@@ -143,6 +144,9 @@
+      << 8 | (_Unwind_Exception_Class) '+')
+     << 8 | (_Unwind_Exception_Class) '+')
+    << 8 | (_Unwind_Exception_Class) '\0');
++#else
++= "GNUC++";
++#endif
+ 
+ // GNU C++ personality routine, Version 0.
+ extern "C" _Unwind_Reason_Code __gxx_personality_v0
diff --git a/recipes/uclibc++/uclibc++/009-compile_fixes.patch b/recipes/uclibc++/uclibc++/009-compile_fixes.patch
new file mode 100644
index 0000000..efcb9e6
--- /dev/null
+++ b/recipes/uclibc++/uclibc++/009-compile_fixes.patch
@@ -0,0 +1,70 @@
+--- a/include/associative_base
++++ b/include/associative_base
+@@ -318,7 +318,7 @@ protected:
+ 	typedef std::list<ValueType> listtype;
+ 
+ 	typename listtype::iterator base_iter;
+-	typedef _associative_citer<ValueType, Compare, Allocator> _associative_citer;
++	typedef _associative_citer<ValueType, Compare, Allocator> __associative_citer;
+ 
+ 	
+ public:
+@@ -347,13 +347,13 @@ public:
+ 	bool operator==(const _associative_iter & m) const{
+ 		return m.base_iter == base_iter;
+ 	}
+-	bool operator==(const _associative_citer & m) const{
++	bool operator==(const __associative_citer & m) const{
+ 		return m.base_iter == base_iter;
+ 	}
+ 	bool operator!=(const _associative_iter & m) const{
+ 		return m.base_iter != base_iter;
+ 	}
+-	bool operator!=(const _associative_citer & m) const{
++	bool operator!=(const __associative_citer & m) const{
+ 		return m.base_iter != base_iter;
+ 	}
+ 	_associative_iter & operator++(){
+@@ -378,8 +378,8 @@ public:
+ 		--base_iter;
+ 		return temp;
+ 	}
+-	operator _associative_citer() const{
+-		return _associative_citer(base_iter);
++	operator __associative_citer() const{
++		return __associative_citer(base_iter);
+ 	}
+ 	typename listtype::iterator base_iterator(){
+ 		return base_iter;
+--- a/include/string
++++ b/include/string
+@@ -1017,11 +1017,11 @@ template<class charT, class traits, clas
+ 
+ template <> _UCXXEXPORT bool operator==(const string & lhs, const string & rhs);
+ template <> _UCXXEXPORT bool operator==(const char * lhs, const string & rhs);
+-template <> _UCXXEXPORT bool operator==(const string & rhs, const char * rhs);
++template <> _UCXXEXPORT bool operator==(const string & lhs, const char * rhs);
+ 
+ template <> _UCXXEXPORT bool operator!=(const string & lhs, const string & rhs);
+ template <> _UCXXEXPORT bool operator!=(const char * lhs, const string & rhs);
+-template <> _UCXXEXPORT bool operator!=(const string & rhs, const char * rhs);
++template <> _UCXXEXPORT bool operator!=(const string & lhs, const char * rhs);
+ 
+ template <> _UCXXEXPORT string operator+(const string & lhs, const char* rhs);
+ template <> _UCXXEXPORT string operator+(const char* lhs, const string & rhs);
+--- a/src/string.cpp
++++ b/src/string.cpp
+@@ -76,11 +76,11 @@ namespace std{
+ 
+ 	template _UCXXEXPORT bool operator==(const string & lhs, const string & rhs);
+ 	template _UCXXEXPORT bool operator==(const char * lhs, const string & rhs);
+-	template _UCXXEXPORT bool operator==(const string & rhs, const char * rhs);
++	template _UCXXEXPORT bool operator==(const string & lhs, const char * rhs);
+ 
+ 	template _UCXXEXPORT bool operator!=(const string & lhs, const string & rhs);
+ 	template _UCXXEXPORT bool operator!=(const char * lhs, const string & rhs);
+-	template _UCXXEXPORT bool operator!=(const string & rhs, const char * rhs);
++	template _UCXXEXPORT bool operator!=(const string & lhs, const char * rhs);
+ 
+ 	template _UCXXEXPORT string operator+(const string & lhs, const char* rhs);
+ 	template _UCXXEXPORT string operator+(const char* lhs, const string & rhs);
diff --git a/recipes/uclibc++/uclibc++/900-dependent_exception.patch b/recipes/uclibc++/uclibc++/900-dependent_exception.patch
new file mode 100644
index 0000000..3a5cb7d
--- /dev/null
+++ b/recipes/uclibc++/uclibc++/900-dependent_exception.patch
@@ -0,0 +1,68 @@
+--- a/src/eh_alloc.cpp	2007-06-03 23:51:13.000000000 +0100
++++ b/src/eh_alloc.cpp	2009-07-13 09:42:39.000000000 +0100
+@@ -42,4 +42,21 @@
+ 	free( (char *)(vptr) - sizeof(__cxa_exception) );
+ }
+ 
++#if __GNUC__ * 100 + __GNUC_MINOR__ >= 404
++extern "C" __cxa_dependent_exception* __cxa_allocate_dependent_exception() throw(){
++	__cxa_dependent_exception *retval;
++
++	retval = static_cast<__cxa_dependent_exception*>(malloc(sizeof(__cxa_dependent_exception)));
++	if(0 == retval){
++		std::terminate();
++	}
++	memset (retval, 0, sizeof(__cxa_dependent_exception));
++	return retval ;
++}
++
++extern "C" void __cxa_free_dependent_exception(__cxa_dependent_exception *vptr) throw(){
++	free( vptr );
++}
++#endif
++
+ }
+--- a/include/unwind-cxx.h	2009-07-13 10:01:11.000000000 +0100
++++ b/include/unwind-cxx.h	2009-07-13 10:14:08.000000000 +0100
+@@ -79,6 +79,41 @@
+   _Unwind_Exception unwindHeader;
+ };
+ 
++#if __GNUC__ * 100 + __GNUC_MINOR__ >= 404
++// A dependent C++ exception object consists of a wrapper around an unwind
++// object header with additional C++ specific information, containing a pointer
++// to a primary exception object.
++
++struct __cxa_dependent_exception
++{
++  // The primary exception this thing depends on.
++  void *primaryException;
++
++  // The C++ standard has entertaining rules wrt calling set_terminate
++  // and set_unexpected in the middle of the exception cleanup process.
++  std::unexpected_handler unexpectedHandler;
++  std::terminate_handler terminateHandler;
++
++  // The caught exception stack threads through here.
++  __cxa_exception *nextException;
++
++  // How many nested handlers have caught this exception.  A negated
++  // value is a signal that this object has been rethrown.
++  int handlerCount;
++
++  // Cache parsed handler data from the personality routine Phase 1
++  // for Phase 2 and __cxa_call_unexpected.
++  int handlerSwitchValue;
++  const unsigned char *actionRecord;
++  const unsigned char *languageSpecificData;
++  _Unwind_Ptr catchTemp;
++  void *adjustedPtr;
++
++  // The generic exception header.  Must be last.
++  _Unwind_Exception unwindHeader;
++};
++
++#endif
+ // Each thread in a C++ program has access to a __cxa_eh_globals object.
+ struct __cxa_eh_globals
+ {
diff --git a/recipes/uclibc++/uclibc++/cstring.patch b/recipes/uclibc++/uclibc++/cstring.patch
new file mode 100644
index 0000000..57c2317
--- /dev/null
+++ b/recipes/uclibc++/uclibc++/cstring.patch
@@ -0,0 +1,21 @@
+Index: uClibc++-0.2.2/include/cstring
+===================================================================
+--- uClibc++-0.2.2.orig/include/cstring	2010-11-17 10:35:02.525119882 +0100
++++ uClibc++-0.2.2/include/cstring	2010-11-17 10:35:19.274494437 +0100
+@@ -49,6 +49,7 @@
+ 	using ::strxfrm;
+ 
+ 
++#if 0
+ 	//Extra definitions required in c++ spec
+ 
+ 
+@@ -71,7 +72,7 @@
+ 	inline char* strstr(char* s1, const char* s2){
+ 		return strstr(const_cast<const char *>(s1), s2);
+ 	}
+-
++#endif
+ }
+ 
+ #endif
diff --git a/recipes/uclibc++/uclibc++/defconfig b/recipes/uclibc++/uclibc++/defconfig
new file mode 100644
index 0000000..168e9a4
--- /dev/null
+++ b/recipes/uclibc++/uclibc++/defconfig
@@ -0,0 +1,53 @@
+#
+# Automatically generated make config: don't edit
+#
+
+#
+# Target Features and Options
+#
+# UCLIBCXX_HAS_FLOATS is not set
+UCLIBCXX_HAS_TLS=y
+WARNINGS="-Wall"
+BUILD_EXTRA_LIBRARIES=""
+HAVE_DOT_CONFIG=y
+
+#
+# String and I/O Stream Support
+#
+# UCLIBCXX_HAS_WCHAR is not set
+UCLIBCXX_IOSTREAM_BUFSIZE=32
+UCLIBCXX_HAS_LFS=y
+UCLIBCXX_SUPPORT_CDIR=y
+UCLIBCXX_SUPPORT_CIN=y
+UCLIBCXX_SUPPORT_COUT=y
+UCLIBCXX_SUPPORT_CERR=y
+# UCLIBCXX_SUPPORT_CLOG is not set
+
+#
+# STL and Code Expansion
+#
+UCLIBCXX_STL_BUFFER_SIZE=32
+UCLIBCXX_CODE_EXPANSION=y
+UCLIBCXX_EXPAND_CONSTRUCTORS_DESTRUCTORS=y
+UCLIBCXX_EXPAND_STRING_CHAR=y
+UCLIBCXX_EXPAND_VECTOR_BASIC=y
+UCLIBCXX_EXPAND_IOS_CHAR=y
+UCLIBCXX_EXPAND_STREAMBUF_CHAR=y
+UCLIBCXX_EXPAND_ISTREAM_CHAR=y
+UCLIBCXX_EXPAND_OSTREAM_CHAR=y
+UCLIBCXX_EXPAND_FSTREAM_CHAR=y
+UCLIBCXX_EXPAND_SSTREAM_CHAR=y
+
+#
+# Library Installation Options
+#
+UCLIBCXX_RUNTIME_PREFIX="/usr/uClibc++"
+UCLIBCXX_RUNTIME_INCLUDE_SUBDIR="/include"
+UCLIBCXX_RUNTIME_LIB_SUBDIR="/lib"
+UCLIBCXX_RUNTIME_BIN_SUBDIR="/bin"
+UCLIBCXX_EXCEPTION_SUPPORT=y
+IMPORT_LIBSUP=y
+IMPORT_LIBGCC_EH=y
+BUILD_STATIC_LIB=y
+# BUILD_ONLY_STATIC_LIB is not set
+# DODEBUG is not set
diff --git a/recipes/uclibc++/uclibc++/nobash.patch b/recipes/uclibc++/uclibc++/nobash.patch
new file mode 100644
index 0000000..0b1501b
--- /dev/null
+++ b/recipes/uclibc++/uclibc++/nobash.patch
@@ -0,0 +1,13 @@
+Index: uClibc++-0.2.2/bin/Makefile
+===========================================================================
+--- uClibc++-0.2.2.orig/bin/Makefile	2007-06-03 23:51:12.000000000 +0100
++++ uClibc++-0.2.2/bin/Makefile	        2010-11-11 10:09:48.000000000 +0000
+@@ -13,7 +13,7 @@
+ 	$(INSTALL) -m 755 $(WRAPPER) $(PREFIX)$(UCLIBCXX_RUNTIME_BINDIR)
+ 
+ $(WRAPPER):
+-	echo "#!/bin/bash" > $(WRAPPER)
++	echo "#!/bin/sh" > $(WRAPPER)
+ 	echo "" >> $(WRAPPER)
+ 	echo 'WRAPPER_INCLUDEDIR="$${WRAPPER_INCLUDEDIR:=-I$(UCLIBCXX_RUNTIME_INCLUDEDIR)}"' >> $(WRAPPER)
+ 	echo 'WRAPPER_LIBDIR="$${WRAPPER_LIBDIR:=-L$(UCLIBCXX_RUNTIME_LIBDIR)}"' >> $(WRAPPER)
diff --git a/recipes/uclibc++/uclibc++_0.1.9.bb b/recipes/uclibc++/uclibc++_0.1.9.bb
deleted file mode 100644
index be1ac14..0000000
--- a/recipes/uclibc++/uclibc++_0.1.9.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-DESCRIPTION = "A C++ standard library targeted towards the embedded \
-systems/software market."
-HOMEPAGE = "http://cxx.uclibc.org/"
-LICENSE = "LGPL"
-PRIORITY = "optional"
-SECTION = "libs"
-
-PR = "r2"
-
-SRC_URI = "http://cxx.uclibc.org/src/uClibc++-${PV}.tbz2 \
-	   file://nobash.patch \
-	   file://defconfig"
-S = "${WORKDIR}/uClibc++"
-
-# uClibc++ runtime prefix directory (UCLIBCXX_RUNTIME_PREFIX) [/usr/$(TARGET_ARCH)-linux-uclibc] (NEW)
-# uClibc++ header file subdirectory (UCLIBCXX_RUNTIME_INCLUDE_SUBDIR) [/include] (NEW)
-# uClibc++ library subdirectory (UCLIBCXX_RUNTIME_LIB_SUBDIR) [/lib] (NEW)
-# uClibc++ application file subdirectory (UCLIBCXX_RUNTIME_BIN_SUBDIR) [/bin] (NEW)
-
-do_unpack_real () {
-	bzcat uClibc++-${PV}.tbz2 | tar -xvf -
-}
-do_unpack_real[dirs] = "${WORKDIR}"
-addtask unpack_real before do_patch after do_unpack
-
-EXTRA_OEMAKE = "'OPTIMIZATION=' 'XWARNINGS=' 'XARCH_CFLAGS=${CFLAGS}' \
-		'CPU_FLAGS=' 'STRIPTOOL=true' 'LD=${LD}'"
-configmangle = 's,^UCLIBCXX_RUNTIME_PREFIX=.*,UCLIBCXX_RUNTIME_PREFIX="${exec_prefix}",; \
-		s,^UCLIBCXX_RUNTIME_INCLUDE_SUBDIR=.*,UCLIBCXX_RUNTIME_INCLUDE_SUBDIR="/include/c++-uc",; \
-		s,^UCLIBCXX_RUNTIME_LIB_SUBDIR=.*,UCLIBCXX_RUNTIME_LIB_SUBDIR="/lib",; \
-		s,^UCLIBCXX_RUNTIME_BIN_SUBDIR=.*,UCLIBCXX_RUNTIME_BIN_SUBDIR="/bin",;'
-PARALLEL_MAKE = ""
-
-do_configure () {
-	cp ${WORKDIR}/defconfig ${S}/.config
-
-	perl -i -p -e 's,^CROSS=.*,TARGET_ARCH=${TARGET_ARCH}\nCROSS=${TARGET_PREFIX},g' ${S}/Rules.mak
-	perl -i -p -e '${configmangle}' ${S}/.config
-
-	oe_runmake oldconfig
-}
-
-do_install () {
-	oe_runmake 'DESTDIR=${D}' install
-	chmod +x ${D}${libdir}/libuClibc++.so.*
-}
-
-PACKAGES = "g++-uc libuclibc++ libuclibc++-dev"
-FILES_g++-uc = "${bindir}/g++-uc"
-FILES_libuclibc++ = "${libdir}/*.so.*"
-FILES_libuclibc++-dev = "${FILES_uclibc++-dev}"
-
-SRC_URI[md5sum] = "ebf58e04d72eab5c131c2c9118737024"
-SRC_URI[sha256sum] = "82342a5d6088421e79699dd7af614ebecf6dd335eabce07690902a379f5ea8de"
diff --git a/recipes/uclibc++/uclibc++_git.bb b/recipes/uclibc++/uclibc++_git.bb
new file mode 100644
index 0000000..58e62d6
--- /dev/null
+++ b/recipes/uclibc++/uclibc++_git.bb
@@ -0,0 +1,51 @@
+DESCRIPTION = "A C++ standard library targeted towards the embedded \
+systems/software market."
+HOMEPAGE = "http://cxx.uclibc.org/"
+LICENSE = "LGPL"
+PRIORITY = "optional"
+SECTION = "libs"
+
+PR = "r0"
+
+SRCREV = "5976d7536d8c7a8d5a7f60fd2a3c34876a224f30"
+
+SRC_URI = "git://git.busybox.net/uClibc++;protocol=git \
+	   file://nobash.patch \
+	   file://006-eabi_fix.patch \
+	   file://009-compile_fixes.patch \
+	   file://900-dependent_exception.patch \
+	   file://cstring.patch \
+	   file://defconfig"
+S = "${WORKDIR}/git"
+
+# uClibc++ runtime prefix directory (UCLIBCXX_RUNTIME_PREFIX) [/usr/$(TARGET_ARCH)-linux-uclibc] (NEW)
+# uClibc++ header file subdirectory (UCLIBCXX_RUNTIME_INCLUDE_SUBDIR) [/include] (NEW)
+# uClibc++ library subdirectory (UCLIBCXX_RUNTIME_LIB_SUBDIR) [/lib] (NEW)
+# uClibc++ application file subdirectory (UCLIBCXX_RUNTIME_BIN_SUBDIR) [/bin] (NEW)
+
+EXTRA_OEMAKE = "'OPTIMIZATION=' 'XWARNINGS=' 'XARCH_CFLAGS=${CFLAGS}' \
+		'CPU_FLAGS=' 'STRIPTOOL=true' 'LD=${LD}'"
+configmangle = 's,^UCLIBCXX_RUNTIME_PREFIX=.*,UCLIBCXX_RUNTIME_PREFIX="${exec_prefix}",; \
+		s,^UCLIBCXX_RUNTIME_INCLUDE_SUBDIR=.*,UCLIBCXX_RUNTIME_INCLUDE_SUBDIR="/include/c++-uc",; \
+		s,^UCLIBCXX_RUNTIME_LIB_SUBDIR=.*,UCLIBCXX_RUNTIME_LIB_SUBDIR="/lib",; \
+		s,^UCLIBCXX_RUNTIME_BIN_SUBDIR=.*,UCLIBCXX_RUNTIME_BIN_SUBDIR="/bin",;'
+PARALLEL_MAKE = ""
+
+do_configure () {
+	cp ${WORKDIR}/defconfig ${S}/.config
+
+	perl -i -p -e 's,^CROSS=.*,TARGET_ARCH=${TARGET_ARCH}\nCROSS=${TARGET_PREFIX},g' ${S}/Rules.mak
+	perl -i -p -e '${configmangle}' ${S}/.config
+
+	oe_runmake oldconfig
+}
+
+do_install () {
+	oe_runmake 'DESTDIR=${D}' install
+	chmod +x ${D}${libdir}/libuClibc++.so.*
+}
+
+PACKAGES = "g++-uc libuclibc++ libuclibc++-dev"
+FILES_g++-uc = "${bindir}/g++-uc"
+FILES_libuclibc++ = "${libdir}/*.so.*"
+FILES_libuclibc++-dev = "${FILES_uclibc++-dev}"
-- 
1.7.0.4





More information about the Openembedded-devel mailing list