port ustl to buildroot-ng
authorNicolas Thill <nico@openwrt.org>
Sun, 23 Jul 2006 15:16:44 +0000 (15:16 +0000)
committerNicolas Thill <nico@openwrt.org>
Sun, 23 Jul 2006 15:16:44 +0000 (15:16 +0000)
SVN-Revision: 4237

libs/ustl/Makefile [new file with mode: 0644]
libs/ustl/files/Common.mk [new file with mode: 0644]
libs/ustl/files/config.h [new file with mode: 0644]
libs/ustl/patches/01-install-DESTDIR.patch [new file with mode: 0644]
libs/ustl/patches/02-install_path.patch [new file with mode: 0644]

diff --git a/libs/ustl/Makefile b/libs/ustl/Makefile
new file mode 100644 (file)
index 0000000..8b1fc5d
--- /dev/null
@@ -0,0 +1,70 @@
+# 
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# $Id$
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ustl
+PKG_VERSION:=0.8
+PKG_RELEASE:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_NAME)-0.8-0.tar.bz2
+PKG_SOURCE_URL:=@SF/ustl
+PKG_MD5SUM:=dd59483c327f1bd1356273bc5ae4dde0
+PKG_CAT:=bzcat
+
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/ustl
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=C++ STL for embedded systems
+  DESCRIPTION:=C++ Standard Template Library (STL) for embedded systems.\\\
+    uSTL is a partial implementation of the STL (Standard Template \\\
+    Library) that reduces code size by factoring memory management \\\
+    code into a non-template base class and deriving containers \\\
+    from it.
+  URL:=http://ustl.sourceforge.net/
+endef
+
+define Build/Configure
+       $(CP) ./files/config.h $(PKG_BUILD_DIR)/
+       $(CP) ./files/Common.mk $(PKG_BUILD_DIR)/
+endef
+
+define Build/Compile
+       rm -rf $(PKG_INSTALL_DIR)
+       mkdir -p $(PKG_INSTALL_DIR)
+       $(MAKE) -C $(PKG_BUILD_DIR) \
+               CROSS="$(TARGET_CROSS)" \
+               OPTFLAGS="$(TARGET_CFLAGS)" \
+               DESTDIR="$(PKG_INSTALL_DIR)" \
+               all install
+endef
+
+define Package/ustl/install
+       install -d -m0755 $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libustl.so.* $(1)/usr/lib/
+endef
+
+define Build/InstallDev
+       mkdir -p $(STAGING_DIR)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/ustl* $(STAGING_DIR)/usr/include/
+       mkdir -p $(STAGING_DIR)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libustl.{a,so*} $(STAGING_DIR)/usr/lib/
+endef
+
+define Build/UninstallDev
+       rm -rf \
+               $(STAGING_DIR)/usr/include/ustl* \
+               $(STAGING_DIR)/usr/lib/libustl.{a,so*}
+endef
+
+$(eval $(call BuildPackage,ustl))
diff --git a/libs/ustl/files/Common.mk b/libs/ustl/files/Common.mk
new file mode 100644 (file)
index 0000000..88e6232
--- /dev/null
@@ -0,0 +1,74 @@
+LIBNAME                = ustl
+MAJOR          = 0
+MINOR          = 8
+BUILD          = 0
+
+CC             = $(CROSS)gcc 
+CXX            = $(CROSS)g++ 
+LD             = $(CROSS)gcc 
+AR             = $(CROSS)ar
+RANLIB         = $(CROSS)ranlib
+DOXYGEN                = echo
+INSTALL                = install
+RM             = rm -f
+LN             = ln -sf
+
+prefix         = /usr
+exec_prefix    = /usr
+BINDIR         = /usr/bin
+INCDIR         = /usr/include
+LIBDIR         = /usr/lib
+
+DESTDIR                =
+
+INSTALLDIR     = ${INSTALL} -d
+INSTALLLIB     = ${INSTALL} -p -m 644
+INSTALLEXE     = ${INSTALL} -p -m 755
+INSTALLDATA    = ${INSTALL} -p -m 644
+
+CWARNOPTS      = -Wall -W -Wpointer-arith -Wno-cast-align \
+               -Wcast-qual -Wwrite-strings -Wredundant-decls 
+CXXWARNOPTS    = ${CWARNOPTS} -Wconversion -Wsign-promo -Wsynth -Woverloaded-virtual
+PROCESSOR_OPTS =
+INLINE_OPTS    = -finline-limit=65535
+CUSTOMINCDIR   =
+CUSTOMLIBDIR   =
+
+BUILD_SHARED   = 1
+BUILD_STATIC   = 1 
+#DEBUG         = 1
+#PROFILE       = 1
+STANDALONE     = -nodefaultlibs 
+
+CFLAGS         =  \
+               ${CUSTOMINCDIR} ${OPTFLAGS} ${CWARNOPTS} ${STANDALONE}
+CXXFLAGS       =  \
+               ${CUSTOMINCDIR} ${OPTFLAGS} ${INLINE_OPTS} \
+               ${CXXWARNOPTS} ${STANDALONE} -fno-builtin
+LDFLAGS                = ${CUSTOMLIBDIR} ${STANDALONE}
+OPTFLAGS       = ${PROCESSOR_OPTS}
+ifdef DEBUG
+    OPTFLAGS   += -O0 -g
+else
+    OPTFLAGS   += -O3 -DNDEBUG=1
+endif
+ifdef PROFILE
+    OPTFLAGS   += -pg
+endif
+ifdef STANDALONE
+    LIBS       += -lsupc++ -lgcc_eh -lgcc -lc
+endif
+ifdef BUILD_SHARED
+    CFLAGS     += -fPIC
+    CXXFLAGS   += -fPIC
+endif
+SHBLDFL                = -shared
+
+LIBA           = lib${LIBNAME}.a
+LIBSO          = lib${LIBNAME}.so
+ifdef MAJOR
+LIBSOLNK       = ${LIBSO}.${MAJOR}.${MINOR}
+LIBSOBLD       = ${LIBSO}.${MAJOR}.${MINOR}.${BUILD}
+endif
+TOCLEAN                += ${LIBSO} ${LIBA} ${LIBSOBLD}
+
diff --git a/libs/ustl/files/config.h b/libs/ustl/files/config.h
new file mode 100644 (file)
index 0000000..3486496
--- /dev/null
@@ -0,0 +1,286 @@
+// config.h
+//
+// Autogenerated from config.h.in by bsconf.
+//
+
+#ifndef CONFIG_H_01E33670634DAAC779EE5FF41CCBB36F
+#define CONFIG_H_01E33670634DAAC779EE5FF41CCBB36F
+
+// Define to the one symbol short name of this package.
+#define USTL_NAME      "ustl"
+// Define to the full name and version of this package.
+#define USTL_STRING    "ustl 0.8"
+// Define to the version of this package.
+#define USTL_VERSION   0x080
+// Define to the address where bug reports for this package should be sent.
+#define USTL_BUGREPORT "Mike Sharov <msharov@users.sourceforge.net>"
+
+/// Define to 1 if you want stream operations to throw exceptions on
+/// insufficient data or insufficient space. All these errors should
+/// be preventable in output code; the input code should verify the
+/// data in a separate step. It slows down stream operations a lot,
+/// but it's your call. By default only debug builds throw.
+///
+#undef WANT_STREAM_BOUNDS_CHECKING
+
+#if !defined(WANT_STREAM_BOUNDS_CHECKING) && !defined(NDEBUG)
+    #define WANT_STREAM_BOUNDS_CHECKING 1
+#endif
+
+/// Define to 1 if you want to build without libstdc++
+#define WITHOUT_LIBSTDCPP 1
+
+/// Define to 1 if you don't want the standard streams.
+/// You will not be able to run bvt tests if you do this.
+///
+#undef WITHOUT_CIN_COUT_CERR
+
+/// Define GNU extensions if unavailable.
+#ifndef __GNUC__
+    /// GCC (and some other compilers) define '__attribute__'; ustl is using this
+    /// macro to alert the compiler to flag inconsistencies in printf/scanf-like
+    /// function calls.  Just in case '__attribute__' isn't defined, make a dummy.
+    /// 
+    #ifndef __attribute__
+       #define __attribute__(p)
+    #endif
+#endif
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+    #define DLL_EXPORT         __attribute__((visibility("default")))
+    #define DLL_LOCAL          __attribute__((visibility("hidden")))
+#else
+    #define DLL_EXPORT
+    #define DLL_LOCAL
+#endif
+#if defined(__GNUC__) && (__GNUC__ >= 3) && defined(__i386__)
+    /// GCC 3+ supports the prefetch directive, which some CPUs use to improve caching
+    #define prefetch(p,rw,loc) __builtin_prefetch(p,rw,loc)
+#else
+    #define prefetch(p,rw,loc)
+#endif
+#if !defined(__GNUC__) || (__GNUC__ < 3)
+    /// __alignof__ returns the recommended alignment for the type
+    #define __alignof__(v)     min(sizeof(v), sizeof(void*))
+#endif
+
+/// Define to 1 if you have the `atexit' function.
+#define HAVE_ATEXIT 1
+
+/// Define to 1 if you have the <assert.h> header file.
+#define HAVE_ASSERT_H 1
+
+/// Define to 1 if you have the <ctype.h> header file.
+#define HAVE_CTYPE_H 1
+
+/// Define to 1 if you have the <errno.h> header file.
+#define HAVE_ERRNO_H 1
+
+/// Define to 1 if you have the <fcntl.h> header file.
+#define HAVE_FCNTL_H 1
+
+/// Define to 1 if you have the <float.h> header file.
+#define HAVE_FLOAT_H 1
+
+/// Define to 1 if you have the <inttypes.h> header file.
+#define HAVE_INTTYPES_H 1
+
+/// Define to 1 if you have the <limits.h> header file.
+#define HAVE_LIMITS_H 1
+
+/// Define to 1 if you have the <locale.h> header file.
+#define HAVE_LOCALE_H 1
+
+/// Define to 1 if your system has a working `malloc' function.
+#define HAVE_MALLOC 1
+
+// Define to 1 if you have the <malloc.h> header file.
+#define HAVE_MALLOC_H 1
+
+// Define to 1 if you have the <alloca.h> header file.
+#define HAVE_ALLOCA_H 1
+
+// Define to 1 if you have the `memchr' function.
+#define HAVE_MEMCHR 1
+
+// Define to 1 if you have the `memmove' function.
+#define HAVE_MEMMOVE 1
+
+// Define to 1 if you have the <memory.h> header file.
+#define HAVE_MEMORY_H 1
+
+// Define to 1 if you have the `memset' function.
+#define HAVE_MEMSET 1
+
+// Define to 1 if the system has the type `ptrdiff_t'.
+#define HAVE_PTRDIFF_T 1
+
+// Define to 1 if you have the <signal.h> header file.
+#define HAVE_SIGNAL_H 1
+
+// Define to 1 if you have the __va_copy function
+#define HAVE_VA_COPY 1
+
+// Define to 1 if `stat' has the bug that it succeeds when given the
+// zero-length file name argument.
+/* #undef HAVE_STAT_EMPTY_STRING_BUG */
+
+// Define to 1 if you have the <stdarg.h> header file.
+#define HAVE_STDARG_H 1
+
+// Define to 1 if you have the <stddef.h> header file.
+#define HAVE_STDDEF_H 1
+
+// Define to 1 if you have the <stdint.h> header file.
+#define HAVE_STDINT_H 1
+
+// Define to 1 if you have the <stdio.h> header file.
+#define HAVE_STDIO_H 1
+
+// Define to 1 if you have the <stdlib.h> header file.
+#define HAVE_STDLIB_H 1
+
+// Define to 1 if you have the `strerror' function.
+#define HAVE_STRERROR 1
+
+// Define to 1 if you have the <strings.h> header file.
+#define HAVE_STRINGS_H 1
+
+// Define to 1 if you have the <string.h> header file.
+#define HAVE_STRING_H 1
+
+// Define to 1 if you have the `strrchr' function.
+#define HAVE_STRRCHR 1
+
+// Define to 1 if you have the `strsignal' function.
+#define HAVE_STRSIGNAL 1
+
+// Define to 1 if you have the `strtol' function.
+#define HAVE_STRTOL 1
+
+// Define to 1 if you have the <sys/stat.h> header file.
+#define HAVE_SYS_STAT_H 1
+
+// Define to 1 if you have the <sys/types.h> header file.
+#define HAVE_SYS_TYPES_H 1
+
+// Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible.
+#define HAVE_SYS_WAIT_H 1
+
+// Define to 1 if you have the <time.h> header file.
+#define HAVE_TIME_H 1
+
+// Define to 1 if you have the <unistd.h> header file.
+#define HAVE_UNISTD_H 1
+
+// Define to 1 if you have the <math.h> header file.
+#define HAVE_MATH_H 1
+
+// Define to 1 if you have the rintf function. Will use rint otherwise.
+#undef HAVE_RINTF
+
+// STDC_HEADERS is defined to 1 on sane systems.
+#if defined(HAVE_ASSERT_H) && defined(HAVE_CTYPE_H) &&\
+    defined(HAVE_ERRNO_H) && defined(HAVE_FLOAT_H) &&\
+    defined(HAVE_LIMITS_H) && defined(HAVE_LOCALE_H) &&\
+    defined(HAVE_MATH_H) && defined(HAVE_SIGNAL_H) &&\
+    defined(HAVE_STDARG_H) && defined(HAVE_STDDEF_H) &&\
+    defined(HAVE_STDIO_H) && defined(HAVE_STDLIB_H) &&\
+    defined(HAVE_STRING_H) && defined(HAVE_TIME_H)
+#define STDC_HEADERS 1
+#endif
+
+// STDC_HEADERS is defined to 1 on unix systems.
+#if defined(HAVE_FCNTL_H) && defined(HAVE_SYS_STAT_H) && defined(HAVE_UNISTD_H)
+#define STDUNIX_HEADERS 1
+#endif
+
+// Define to 1 if you have the <byteswap.h> header file.
+#if (__GNUC__ >= 3) // gcc 2.95 somehow doesn't recognize 'asm volatile' in libc byteswap.h
+#define HAVE_BYTESWAP_H 1
+#endif
+
+// Define to 1 if `lstat' dereferences a symlink specified with a trailing slash.
+#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+
+// Define to 1 if your compiler treats char as a separate type along with
+// signed char and unsigned char. This will create overloads for char.
+#define HAVE_THREE_CHAR_TYPES 1
+
+// Define as the return type of signal handlers (`int' or `void').
+#define RETSIGTYPE void
+
+// Define to 1 if you have 64 bit types available
+#define HAVE_INT64_T 1
+
+// Define to 1 if you have the long long type
+#define HAVE_LONG_LONG 1
+
+// Define to 1 if you want unrolled specializations for fill and copy
+#undef WANT_UNROLLED_COPY
+
+// Define to 1 if you want to use MMX/SSE/3dNow! processor instructions
+#undef WANT_MMX
+
+// Define to byte sizes of types
+#define SIZE_OF_CHAR 1
+#define SIZE_OF_SHORT 2
+#define SIZE_OF_INT 4
+#define SIZE_OF_LONG 4
+#define SIZE_OF_LONG_LONG 8
+#define SIZE_OF_POINTER 4
+#define SIZE_OF_SIZE_T 4
+#define SIZE_OF_BOOL SIZE_OF_CHAR
+#undef SIZE_T_IS_LONG
+
+// Byte order macros, converted in utypes.h
+#define USTL_LITTLE_ENDIAN     4321
+#define USTL_BIG_ENDIAN                1234
+#define USTL_BYTE_ORDER                USTL_LITTLE_ENDIAN
+
+// Extended CPU capabilities
+#define CPU_HAS_FPU 1
+#define CPU_HAS_EXT_DEBUG 1
+#define CPU_HAS_TIMESTAMPC 1
+#define CPU_HAS_MSR 1
+#define CPU_HAS_CMPXCHG8 1
+#define CPU_HAS_APIC 1
+#define CPU_HAS_SYSCALL 1
+#define CPU_HAS_MTRR 1
+#define CPU_HAS_CMOV 1
+#define CPU_HAS_FCMOV 1
+#if WANT_MMX
+#undef CPU_HAS_MMX 1
+#undef CPU_HAS_FXSAVE
+#undef CPU_HAS_SSE 1
+#undef CPU_HAS_SSE2 1
+#undef CPU_HAS_SSE3
+#undef CPU_HAS_EXT_3DNOW
+#undef CPU_HAS_3DNOW
+#endif
+
+// GCC vector extensions
+#if defined(CPU_HAS_MMX) || defined(CPU_HAS_SSE)
+    #undef HAVE_VECTOR_EXTENSIONS
+#endif
+
+#if CPU_HAS_SSE && defined(__GNUC__)
+    #define __sse_align        __attribute__((aligned(16)))
+#else
+    #define __sse_align        
+#endif
+
+// Define to empty if `const' does not conform to ANSI C.
+/* #define const */
+
+// Define as `__inline' if that's what the C compiler calls it, or to nothing
+// if it is not supported.
+/* #define inline __inline */
+
+// Define to `long' if <sys/types.h> does not define.
+/* typedef long off_t; */
+
+// Define to `unsigned' if <sys/types.h> does not define.
+/* typedef long size_t; */
+
+#endif // CONFIG_H_01E33670634DAAC779EE5FF41CCBB36F
+
diff --git a/libs/ustl/patches/01-install-DESTDIR.patch b/libs/ustl/patches/01-install-DESTDIR.patch
new file mode 100644 (file)
index 0000000..ec3a959
--- /dev/null
@@ -0,0 +1,56 @@
+diff -ruN ustl-0.8-old/Makefile ustl-0.8-new/Makefile
+--- ustl-0.8-old/Makefile      2005-11-10 21:06:53.000000000 +0100
++++ ustl-0.8-new/Makefile      2005-12-08 13:57:07.000000000 +0100
+@@ -39,35 +39,35 @@
+ .PHONY: install-static install-shared uninstall-static uninstall-shared
+ install-shared: ${LIBSOBLD} install-incs
+-      @echo "Installing ${LIBSOBLD} to ${LIBDIR} ..."
+-      @${INSTALLDIR} ${LIBDIR}
+-      @${INSTALLLIB} ${LIBSOBLD} ${LIBDIR}
+-      @(cd ${LIBDIR}; ${RM} ${LIBSO} ${LIBSOLNK}; ${LN} -sf ${LIBSOBLD} ${LIBSO}; ${LN} -sf ${LIBSOBLD} ${LIBSOLNK})
++      @echo "Installing ${LIBSOBLD} to ${DESTDIR}${LIBDIR} ..."
++      @${INSTALLDIR} ${DESTDIR}${LIBDIR}
++      @${INSTALLLIB} ${LIBSOBLD} ${DESTDIR}${LIBDIR}
++      @(cd ${DESTDIR}${LIBDIR}; ${RM} ${LIBSO} ${LIBSOLNK}; ${LN} -sf ${LIBSOBLD} ${LIBSO}; ${LN} -sf ${LIBSOBLD} ${LIBSOLNK})
+ uninstall-shared: uninstall-incs
+-      @echo "Removing ${LIBSOBLD} from ${LIBDIR} ..."
+-      @${RM} -f ${LIBDIR}/${LIBSO} ${LIBDIR}/${LIBSOLNK} ${LIBDIR}/${LIBSOBLD}
++      @echo "Removing ${LIBSOBLD} from ${DESTDIR}${LIBDIR} ..."
++      @${RM} -f ${DESTDIR}${LIBDIR}/${LIBSO} ${DESTDIR}${LIBDIR}/${LIBSOLNK} ${DESTDIR}${LIBDIR}/${LIBSOBLD}
+ install-static: ${LIBA} install-incs
+-      @echo "Installing ${LIBA} to ${LIBDIR} ..."
+-      @${INSTALLDIR} ${LIBDIR}
+-      @${INSTALLLIB} ${LIBA} ${LIBDIR}
++      @echo "Installing ${LIBA} to ${DESTDIR}${LIBDIR} ..."
++      @${INSTALLDIR} ${DESTDIR}${LIBDIR}
++      @${INSTALLLIB} ${LIBA} ${DESTDIR}${LIBDIR}
+ uninstall-static: uninstall-incs
+-      @echo "Removing ${LIBA} from ${LIBDIR} ..."
+-      @${RM} -f ${LIBDIR}/${LIBA}
++      @echo "Removing ${LIBA} from ${DESTDIR}${LIBDIR} ..."
++      @${RM} -f ${DESTDIR}${LIBDIR}/${LIBA}
+ install-incs: ${INCS}
+-      @echo "Installing headers to ${INCDIR} ..."
+-      @${INSTALLDIR} ${INCDIR}/${LIBNAME}
++      @echo "Installing headers to ${DESTDIR}${INCDIR} ..."
++      @${INSTALLDIR} ${DESTDIR}${INCDIR}/${LIBNAME}
+       @for i in $(filter-out ${LIBNAME}.h,${INCS}); do        \
+-          ${INSTALLDATA} $$i ${INCDIR}/${LIBNAME}/$$i;        \
++          ${INSTALLDATA} $$i ${DESTDIR}${INCDIR}/${LIBNAME}/$$i;      \
+       done;
+-      @${INSTALLDATA} ${LIBNAME}.h ${INCDIR}
++      @${INSTALLDATA} ${LIBNAME}.h ${DESTDIR}${INCDIR}
+ uninstall-incs:
+-      @echo "Removing headers from ${INCDIR} ..."
+-      @${RM} -rf ${INCDIR}/${LIBNAME} ${INCDIR}/${LIBNAME}.h
++      @echo "Removing headers from ${DESTDIR}${INCDIR} ..."
++      @${RM} -rf ${DESTDIR}${INCDIR}/${LIBNAME} ${DESTDIR}${INCDIR}/${LIBNAME}.h
+ %.o:  %.cc
diff --git a/libs/ustl/patches/02-install_path.patch b/libs/ustl/patches/02-install_path.patch
new file mode 100644 (file)
index 0000000..3a7cf8a
--- /dev/null
@@ -0,0 +1,12 @@
+diff -urN ustl.old/Common.mk.in ustl.dev/Common.mk.in
+--- ustl.old/Common.mk.in      2005-11-10 21:06:53.000000000 +0100
++++ ustl.dev/Common.mk.in      2006-03-23 16:12:05.000000000 +0100
+@@ -9,7 +9,7 @@
+ AR            = @AR@
+ RANLIB                = @RANLIB@
+ DOXYGEN               = @DOXYGEN@
+-INSTALL               = @INSTALL@
++INSTALL               = install
+ RM            = @RM@
+ LN            = @LN@