From f7c36dcc592d0ddb9d38cc9ee411c1a2ff46b025 Mon Sep 17 00:00:00 2001 From: Nicolas Thill Date: Sun, 23 Jul 2006 15:16:44 +0000 Subject: [PATCH] port ustl to buildroot-ng SVN-Revision: 4237 --- libs/ustl/Makefile | 70 +++++ libs/ustl/files/Common.mk | 74 ++++++ libs/ustl/files/config.h | 286 +++++++++++++++++++++ libs/ustl/patches/01-install-DESTDIR.patch | 56 ++++ libs/ustl/patches/02-install_path.patch | 12 + 5 files changed, 498 insertions(+) create mode 100644 libs/ustl/Makefile create mode 100644 libs/ustl/files/Common.mk create mode 100644 libs/ustl/files/config.h create mode 100644 libs/ustl/patches/01-install-DESTDIR.patch create mode 100644 libs/ustl/patches/02-install_path.patch diff --git a/libs/ustl/Makefile b/libs/ustl/Makefile new file mode 100644 index 0000000000..8b1fc5d390 --- /dev/null +++ b/libs/ustl/Makefile @@ -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 index 0000000000..88e62329d9 --- /dev/null +++ b/libs/ustl/files/Common.mk @@ -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 index 0000000000..348649678a --- /dev/null +++ b/libs/ustl/files/config.h @@ -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 " + +/// 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 header file. +#define HAVE_ASSERT_H 1 + +/// Define to 1 if you have the header file. +#define HAVE_CTYPE_H 1 + +/// Define to 1 if you have the header file. +#define HAVE_ERRNO_H 1 + +/// Define to 1 if you have the header file. +#define HAVE_FCNTL_H 1 + +/// Define to 1 if you have the header file. +#define HAVE_FLOAT_H 1 + +/// Define to 1 if you have the header file. +#define HAVE_INTTYPES_H 1 + +/// Define to 1 if you have the header file. +#define HAVE_LIMITS_H 1 + +/// Define to 1 if you have the 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 header file. +#define HAVE_MALLOC_H 1 + +// Define to 1 if you have the 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 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 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 header file. +#define HAVE_STDARG_H 1 + +// Define to 1 if you have the header file. +#define HAVE_STDDEF_H 1 + +// Define to 1 if you have the header file. +#define HAVE_STDINT_H 1 + +// Define to 1 if you have the header file. +#define HAVE_STDIO_H 1 + +// Define to 1 if you have the 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 header file. +#define HAVE_STRINGS_H 1 + +// Define to 1 if you have the 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 header file. +#define HAVE_SYS_STAT_H 1 + +// Define to 1 if you have the header file. +#define HAVE_SYS_TYPES_H 1 + +// Define to 1 if you have that is POSIX.1 compatible. +#define HAVE_SYS_WAIT_H 1 + +// Define to 1 if you have the header file. +#define HAVE_TIME_H 1 + +// Define to 1 if you have the header file. +#define HAVE_UNISTD_H 1 + +// Define to 1 if you have the 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 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 does not define. +/* typedef long off_t; */ + +// Define to `unsigned' if 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 index 0000000000..ec3a959d3f --- /dev/null +++ b/libs/ustl/patches/01-install-DESTDIR.patch @@ -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 index 0000000000..3a7cf8a05d --- /dev/null +++ b/libs/ustl/patches/02-install_path.patch @@ -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@ + -- 2.30.2