[oe] [PATCH] uclibc++: moved to 0.2.2
Frans Meulenbroeks
fransmeulenbroeks at gmail.com
Wed Nov 17 10:08:23 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 0.2.2 compiling.
Patches are gracefully picked from openwrt
(https://dev.openwrt.org/browser/packages/libs/uclibc%2B%2B/patches?rev=24017)
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
---
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++_0.2.2.bb | 57 ++++++++++++++++
10 files changed, 324 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++_0.2.2.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++_0.2.2.bb b/recipes/uclibc++/uclibc++_0.2.2.bb
new file mode 100644
index 0000000..c42772b
--- /dev/null
+++ b/recipes/uclibc++/uclibc++_0.2.2.bb
@@ -0,0 +1,57 @@
+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"
+
+SRC_URI = "http://cxx.uclibc.org/src/uClibc++-${PV}.tar.bz2 \
+ file://nobash.patch \
+ file://006-eabi_fix.patch \
+ file://009-compile_fixes.patch \
+ file://900-dependent_exception.patch \
+ file://cstring.patch \
+ file://defconfig"
+SRC_URI[md5sum] = "1ceef3209cca88be8f1bd9de99735954"
+SRC_URI[sha256sum] = "f140596469e0ab0523c0774d14fe82ba2831d48ad130415748250dbab149318e"
+S = "${WORKDIR}/uClibc++-${PV}"
+
+# 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_stage () {
+ oe_runmake 'UCLIBCXX_RUNTIME_PREFIX=${STAGING_LIBDIR}/../' \
+ install
+ chmod +x ${STAGING_LIBDIR}/libuClibc++.so.*
+}
+
+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