360 lines
13 KiB
Diff
360 lines
13 KiB
Diff
diff -urN STLport-4.5.3.orig/Makefile STLport-4.5.3/Makefile
|
|
--- STLport-4.5.3.orig/Makefile Wed Dec 31 17:00:00 1969
|
|
+++ STLport-4.5.3/Makefile Mon Sep 9 04:01:16 2002
|
|
@@ -0,0 +1,44 @@
|
|
+# Makefile to compile stlport with uClibc
|
|
+#
|
|
+# Copyright (C) 2002 Erik Andersen <andersen@codepoet.org>
|
|
+#
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2 of the License, or
|
|
+# (at your option) any later version.
|
|
+#
|
|
+# This program is distributed in the hope that it will be useful,
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
+# General Public License for more details.
|
|
+#
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with this program; if not, write to the Free Software
|
|
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
+
|
|
+ARCH:=i386
|
|
+PREFIX:=/usr/$(ARCH)-linux-uclibc
|
|
+CROSS:= $(PREFIX)/bin/$(ARCH)-uclibc-
|
|
+CC=$(CROSS)gcc
|
|
+CXX=$(CROSS)g++
|
|
+AR = $(CROSS)ar
|
|
+STRIP = $(CROSS)strip --remove-section=.comment --remove-section=.note --strip-unneeded
|
|
+.EXPORT_ALL_VARIABLES:
|
|
+
|
|
+all:
|
|
+ rm -f lib/lib*
|
|
+ make -C src -f gcc-uClibc.mak all
|
|
+ (cd lib; rm -f libstdc++_debug.so; \
|
|
+ ln -fs libstdc++.so.4.5 libstdc++.so; \
|
|
+ ln -fs libstdc++.so.4.5 libstdc++.so.0;)
|
|
+ $(STRIP) lib/libstdc++.so.4.5;
|
|
+
|
|
+clean:
|
|
+ make -C src -f gcc-uClibc.mak clean
|
|
+ rm -rf lib/*
|
|
+
|
|
+install:
|
|
+ (cd lib; \
|
|
+ cp -a libstdc++.a $(PREFIX)/lib; \
|
|
+ cp -a libstdc++.so libstdc++.so.0 libstdc++.so.4.5 $(PREFIX)/lib;)
|
|
+ cp -a stlport $(PREFIX)/include/g++-v3
|
|
diff -urN STLport-4.5.3.orig/src/dll_main.cpp STLport-4.5.3/src/dll_main.cpp
|
|
--- STLport-4.5.3.orig/src/dll_main.cpp Sat Feb 2 16:11:56 2002
|
|
+++ STLport-4.5.3/src/dll_main.cpp Mon Sep 9 03:55:09 2002
|
|
@@ -52,7 +52,7 @@
|
|
# include <locale>
|
|
# endif
|
|
|
|
-# if defined (_STLP_UNIX)
|
|
+# if defined (_STLP_UNIX) && defined (_STLP_PTHREADS) && ! defined (_STLP_USE_UCLIBC)
|
|
# define _STLP_HAS_PERTHREAD_ALLOCATOR
|
|
# include <stl/_pthread_alloc.h>
|
|
# endif
|
|
diff -urN STLport-4.5.3.orig/src/gcc-uClibc.mak STLport-4.5.3/src/gcc-uClibc.mak
|
|
--- STLport-4.5.3.orig/src/gcc-uClibc.mak Wed Dec 31 17:00:00 1969
|
|
+++ STLport-4.5.3/src/gcc-uClibc.mak Mon Sep 9 04:04:29 2002
|
|
@@ -0,0 +1,61 @@
|
|
+#
|
|
+# Basename for libraries
|
|
+#
|
|
+LIB_BASENAME:=libstdc++
|
|
+LIB_SHAREDNAME:=$(LIB_BASENAME).so
|
|
+LIB_SHAREDNAME_FULL:=$(LIB_SHAREDNAME).0
|
|
+
|
|
+#
|
|
+# guts for common stuff
|
|
+#
|
|
+#
|
|
+LINK:=$(AR) -cr
|
|
+#DYN_LINK:=$(CC) -fno-exceptions -lpthread -lm -shared -Wl,-soname=$(LIB_SHAREDNAME_FULL) -o
|
|
+DYN_LINK:=$(CC) -fno-exceptions -shared -Wl,-soname=$(LIB_SHAREDNAME_FULL) -o
|
|
+
|
|
+OBJEXT=o
|
|
+DYNEXT=so
|
|
+STEXT=a
|
|
+RM=rm -rf
|
|
+PATH_SEP=/
|
|
+MKDIR=mkdir -p
|
|
+COMP=GCC$(ARCH)
|
|
+INSTALL_STEP = install_unix
|
|
+
|
|
+all: release_dynamic release_static
|
|
+#all: all_dynamic all_static symbolic_links
|
|
+
|
|
+include common_macros.mak
|
|
+STLDEBUG_NAME:=$(LIB_BASENAME).debug
|
|
+
|
|
+# Lets disable exception support, since this saves over 200k...
|
|
+DEFINE_FLAGS:= -fno-exceptions
|
|
+#DEFINE_FLAGS:= -D_STLP_NO_EXCEPTIONS -fno-exceptions -DSTL_NO_EXCEPTIONS
|
|
+
|
|
+#DEFINE_FLAGS+= -D_STLP_USE_UCLIBC -D_STLP_NO_WCHAR_T \
|
|
+# -DUSE_SPRINTF_INSTEAD -D_ISOC99_SOURCE
|
|
+
|
|
+WARNING_FLAGS:= -W -Wno-sign-compare -Wno-unused -Wno-uninitialized
|
|
+INCLUDE_FLAGS = -I${STLPORT_DIR}
|
|
+CXXFLAGS_COMMON = $(WARNING_FLAGS) $(DEFINE_FLAGS) $(INCLUDE_FLAGS)
|
|
+
|
|
+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -Os
|
|
+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -Os -fPIC
|
|
+
|
|
+CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -O -g
|
|
+CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -O -g -fPIC
|
|
+
|
|
+CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
|
|
+CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG -fPIC
|
|
+
|
|
+include common_percent_rules.mak
|
|
+include common_rules.mak
|
|
+
|
|
+
|
|
+#install: all
|
|
+# cp -p $(LIB_TARGET) ${D_LIB_TARGET} ../lib
|
|
+
|
|
+#%.s: %.cpp
|
|
+# $(CXX) $(CXXFLAGS) -O4 -S -pto $< -o $@
|
|
+
|
|
+
|
|
diff -urN STLport-4.5.3.orig/src/num_put_float.cpp STLport-4.5.3/src/num_put_float.cpp
|
|
--- STLport-4.5.3.orig/src/num_put_float.cpp Fri Jan 18 15:06:52 2002
|
|
+++ STLport-4.5.3/src/num_put_float.cpp Mon Sep 9 03:23:53 2002
|
|
@@ -65,6 +65,12 @@
|
|
|
|
# endif
|
|
|
|
+# if defined(_STLP_USE_UCLIBC)
|
|
+# define __USE_ISOC99 1
|
|
+# include <math.h>
|
|
+# include <float.h>
|
|
+# endif
|
|
+
|
|
# include <cstdlib>
|
|
|
|
#if defined (_MSC_VER) || defined (__MINGW32__) || defined (__BORLANDC__) || defined (__DJGPP) || defined (_STLP_SCO_OPENSERVER) || defined (__NCR_SVR)
|
|
@@ -209,7 +215,7 @@
|
|
|
|
#ifdef USE_SPRINTF_INSTEAD
|
|
|
|
-#elif defined (__hpux) || defined (__DJGPP) || ( defined(_STLP_USE_GLIBC) && ! defined (__MSL__) )
|
|
+#elif defined (__hpux) || defined (__DJGPP) || ( defined(_STLP_USE_GLIBC) && ! defined (__MSL__) ) || defined (_STLP_USE_UCLIBC)
|
|
# if defined (isfinite)
|
|
inline bool _Stl_is_nan_or_inf(double x) { return !isfinite(x); }
|
|
# else
|
|
@@ -238,7 +244,7 @@
|
|
}
|
|
inline bool _Stl_is_neg_inf(double x) { return _fpclass(x) == _FPCLASS_NINF; }
|
|
inline bool _Stl_is_neg_nan(double x) { return _isnan(x) && _copysign(1., x) < 0 ; }
|
|
-#elif defined(__MRC__) || defined(__SC__) //*TY 02/24/2000 - added support for MPW
|
|
+#elif defined(__MRC__) || defined(__SC__)
|
|
bool _Stl_is_nan_or_inf(double x) { return isnan(x) || !isfinite(x); }
|
|
bool _Stl_is_inf(double x) { return !isfinite(x); }
|
|
bool _Stl_is_neg_inf(double x) { return !isfinite(x) && signbit(x); }
|
|
@@ -280,7 +286,7 @@
|
|
inline char* _Stl_qfcvtR(long double x, int n, int* pt, int* sign, char* buf)
|
|
{ return fcvtbuf(x, n, pt, sign, buf); }
|
|
# endif
|
|
-#elif defined (_STLP_USE_GLIBC)
|
|
+#elif defined (_STLP_USE_GLIBC) || defined(_STLP_USE_UCLIBC)
|
|
inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf)
|
|
{ return buf + ecvt_r(x, n, pt, sign, buf, NDIG+2); }
|
|
inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf)
|
|
diff -urN STLport-4.5.3.orig/src/stdio_streambuf.cpp STLport-4.5.3/src/stdio_streambuf.cpp
|
|
--- STLport-4.5.3.orig/src/stdio_streambuf.cpp Thu Jan 10 11:41:52 2002
|
|
+++ STLport-4.5.3/src/stdio_streambuf.cpp Mon Sep 9 02:11:00 2002
|
|
@@ -82,7 +82,7 @@
|
|
_STLP_VENDOR_CSTD::fgetpos(_M_file, &pos);
|
|
// added 21 june 00 mdb,rjf,wjs: glibc 2.2 changed fpos_t to be a struct instead
|
|
// of a primitive type
|
|
-#if (defined(__GLIBC__) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) )
|
|
+#if defined(_STLP_USE_UCLIBC) || (defined(__GLIBC__) && defined(_STLP_USE_GLIBC) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) )
|
|
return pos_type((streamoff)pos.__pos);
|
|
#elif defined(__ISCPP__) || defined(__MVS__) || (__OS400__)
|
|
return pos_type(pos.__fpos_elem[ 0 ]);
|
|
@@ -101,13 +101,16 @@
|
|
|
|
// added 21 june 00 mdb,rjf,wjs: glibc 2.2 changed fpos_t to be a struct instead
|
|
// of a primitive type
|
|
-#if (defined(__GLIBC__) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) )
|
|
+#if (defined(__GLIBC__) && defined(_STLP_USE_GLIBC) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) )
|
|
fpos_t p;
|
|
p.__pos = pos;
|
|
memset( &(p.__state), 0, sizeof(p.__state) );
|
|
#elif defined(__MVS__) || (__OS400__)
|
|
fpos_t p;
|
|
p.__fpos_elem[0] = pos;
|
|
+#elif defined(_STLP_USE_UCLIBC)
|
|
+ fpos_t p;
|
|
+ p.__pos = pos;
|
|
#else
|
|
fpos_t p(pos);
|
|
#endif
|
|
diff -urN STLport-4.5.3.orig/stlport/config/_prolog.h STLport-4.5.3/stlport/config/_prolog.h
|
|
--- STLport-4.5.3.orig/stlport/config/_prolog.h Sun Oct 28 13:26:44 2001
|
|
+++ STLport-4.5.3/stlport/config/_prolog.h Mon Sep 9 02:43:42 2002
|
|
@@ -1,3 +1,8 @@
|
|
+/* Evil hack to make sure everything behaves itself */
|
|
+#define _STLP_USE_UCLIBC
|
|
+#define _STLP_NO_WCHAR_T
|
|
+//#define _ISOC99_SOURCE
|
|
+//#define USE_SPRINTF_INSTEAD
|
|
|
|
#if defined (_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__)
|
|
|
|
diff -urN STLport-4.5.3.orig/stlport/config/stl_gcc.h STLport-4.5.3/stlport/config/stl_gcc.h
|
|
--- STLport-4.5.3.orig/stlport/config/stl_gcc.h Thu Jan 10 11:41:58 2002
|
|
+++ STLport-4.5.3/stlport/config/stl_gcc.h Mon Sep 9 02:11:00 2002
|
|
@@ -3,7 +3,7 @@
|
|
*/
|
|
|
|
/* Systems having GLIBC installed have different traits */
|
|
-#if ! defined (_STLP_USE_GLIBC) && ( defined (__linux__) || defined (__CYGWIN__) )
|
|
+#if ! defined (_STLP_USE_GLIBC) && ! defined (_STLP_USE_UCLIBC) && ( defined (__linux__) || defined (__CYGWIN__) )
|
|
# define _STLP_USE_GLIBC
|
|
#endif
|
|
|
|
diff -urN STLport-4.5.3.orig/stlport/cstdlib STLport-4.5.3/stlport/cstdlib
|
|
--- STLport-4.5.3.orig/stlport/cstdlib Thu Aug 23 15:51:54 2001
|
|
+++ STLport-4.5.3/stlport/cstdlib Mon Sep 9 02:11:00 2002
|
|
@@ -55,9 +55,11 @@
|
|
using _STLP_VENDOR_CSTD::atof;
|
|
using _STLP_VENDOR_CSTD::atoi;
|
|
using _STLP_VENDOR_CSTD::atol;
|
|
+# ifndef _STLP_USE_UCLIBC
|
|
using _STLP_VENDOR_CSTD::mblen;
|
|
using _STLP_VENDOR_CSTD::mbstowcs;
|
|
using _STLP_VENDOR_CSTD::mbtowc;
|
|
+# endif
|
|
using _STLP_VENDOR_CSTD::strtod;
|
|
using _STLP_VENDOR_CSTD::strtol;
|
|
using _STLP_VENDOR_CSTD::strtoul;
|
|
diff -urN STLport-4.5.3.orig/stlport/stl/_config.h STLport-4.5.3/stlport/stl/_config.h
|
|
--- STLport-4.5.3.orig/stlport/stl/_config.h Fri Jan 18 15:08:36 2002
|
|
+++ STLport-4.5.3/stlport/stl/_config.h Mon Sep 9 04:14:36 2002
|
|
@@ -26,6 +26,16 @@
|
|
#ifndef _STLP_CONFIG_H
|
|
# define _STLP_CONFIG_H
|
|
|
|
+/* Make the STLport headers provide uClibc support by default */
|
|
+#define _STLP_NO_EXCEPTIONS 1
|
|
+#define STL_NO_EXCEPTIONS 1
|
|
+#define _STLP_USE_UCLIBC 1
|
|
+#define _STLP_NO_WCHAR_T 1
|
|
+#define _STLP_NO_LONG_DOUBLE 1
|
|
+#define USE_SPRINTF_INSTEAD 1
|
|
+#define _ISOC99_SOURCE 1
|
|
+#define _STLP_NO_ANACHRONISMS 1
|
|
+
|
|
/*
|
|
* Purpose of this file :
|
|
*
|
|
@@ -164,7 +174,7 @@
|
|
/* Operating system recognition (basic) */
|
|
# if defined (__unix) || defined (__linux__) || defined (__QNX__) || defined (_AIX) || defined (__NetBSD__) || defined (__Lynx__)
|
|
# define _STLP_UNIX 1
|
|
-# if defined (__linux__) && ! defined (_STLP_USE_GLIBC)
|
|
+# if defined (__linux__) && ! defined (_STLP_USE_GLIBC) && ! defined (_STLP_USE_UCLIBC)
|
|
# define _STLP_USE_GLIBC 1
|
|
# endif
|
|
# elif defined(macintosh) || defined (_MAC)
|
|
diff -urN STLport-4.5.3.orig/stlport/stl/_stdio_file.h STLport-4.5.3/stlport/stl/_stdio_file.h
|
|
--- STLport-4.5.3.orig/stlport/stl/_stdio_file.h Fri Jan 18 15:07:00 2002
|
|
+++ STLport-4.5.3/stlport/stl/_stdio_file.h Mon Sep 9 02:35:46 2002
|
|
@@ -634,6 +634,57 @@
|
|
}
|
|
# define _STLP_FILE_I_O_IDENTICAL
|
|
|
|
+#elif defined(_STLP_USE_UCLIBC)
|
|
+
|
|
+inline int _FILE_fd(const FILE *__f) { return __f->filedes; }
|
|
+
|
|
+// Returns a pointer to the beginning of the buffer.
|
|
+inline char* _FILE_I_begin(const FILE *__f) { return (char*) __f->bufstart; }
|
|
+
|
|
+// Returns the current read/write position within the buffer.
|
|
+inline char* _FILE_I_next(const FILE *__f) { return (char*) __f->bufpos; }
|
|
+
|
|
+// Returns a pointer immediately past the end of the buffer.
|
|
+inline char* _FILE_I_end(const FILE *__f) { return (char*)__f->bufend; }
|
|
+
|
|
+// Returns the number of characters remaining in the buffer, i.e.
|
|
+// _FILE_[IO]_end(__f) - _FILE_[IO]_next(__f).
|
|
+inline ptrdiff_t _FILE_I_avail(const FILE *__f)
|
|
+ { return __f->bufgetc - __f->bufpos; }
|
|
+
|
|
+// Increments the current read/write position by 1, returning the
|
|
+// character at the old position.
|
|
+inline char& _FILE_I_preincr(FILE *__f) { return *(char*)(++__f->bufpos); }
|
|
+
|
|
+// Increments the current read/write position by 1, returning the
|
|
+// character at the old position.
|
|
+inline char& _FILE_I_postincr(FILE *__f) { return *(char*)(__f->bufpos++); }
|
|
+
|
|
+// Decrements the current read/write position by 1, returning the
|
|
+// character at the old position.
|
|
+inline char& _FILE_I_predecr(FILE *__f) { return *(char*)(--__f->bufpos); }
|
|
+
|
|
+// Decrements the current read/write position by 1, returning the
|
|
+// character at the old position.
|
|
+inline char& _FILE_I_postdecr(FILE *__f) { return *(char*)(__f->bufpos--); }
|
|
+
|
|
+// Increments the current read/write position by __n.
|
|
+inline void _FILE_I_bump(FILE *__f, int __n) { __f->bufpos += __n; }
|
|
+
|
|
+// Sets the beginning of the bufer to __begin, the current read/write
|
|
+// position to __next, and the buffer's past-the-end pointer to __end.
|
|
+// If any of those pointers is null, then all of them must be null.
|
|
+inline void _FILE_I_set(FILE *__f, char* __begin, char* __next, char* __end)
|
|
+{
|
|
+ __f->bufstart = (unsigned char*)__begin;
|
|
+ __f->bufpos = (unsigned char*)__next;
|
|
+ __f->bufend = (unsigned char*)__end;
|
|
+ __f->bufgetc = (unsigned char*)__begin;
|
|
+ __f->bufputc = (unsigned char*)__end;
|
|
+}
|
|
+
|
|
+# define _STLP_FILE_I_O_IDENTICAL
|
|
+
|
|
#else /* A C library that we don't have an implementation for. */
|
|
|
|
# error The C++ I/O library is not configured for this compiler
|
|
diff -urN STLport-4.5.3.orig/stlport/stl/c_locale.h STLport-4.5.3/stlport/stl/c_locale.h
|
|
--- STLport-4.5.3.orig/stlport/stl/c_locale.h Fri Jan 18 15:07:00 2002
|
|
+++ STLport-4.5.3/stlport/stl/c_locale.h Mon Sep 9 02:11:00 2002
|
|
@@ -326,6 +326,19 @@
|
|
# define _Locale_PRINT _R
|
|
# define _Locale_ALPHA _A
|
|
|
|
+# elif defined (_STLP_USE_UCLIBC)
|
|
+
|
|
+# include <linux/ctype.h>
|
|
+# define _Locale_CNTRL _C
|
|
+# define _Locale_UPPER _U
|
|
+# define _Locale_LOWER _L
|
|
+# define _Locale_DIGIT _D
|
|
+# define _Locale_XDIGIT _X
|
|
+# define _Locale_PUNCT _P
|
|
+# define _Locale_SPACE _S
|
|
+# define _Locale_PRINT (_P|_U|_L|_D|_SP)
|
|
+# define _Locale_ALPHA (_U|_L)
|
|
+
|
|
# elif defined (__hpux) || defined (__osf__)
|
|
|
|
# if defined(__HP_aCC) && !defined(_INCLUDE_HPUX_SOURCE)
|
|
@@ -401,6 +414,8 @@
|
|
# define _Locale_SPACE _S
|
|
# define _Locale_PRINT (_P | _U | _L | _N | _B)
|
|
# define _Locale_ALPHA (_U | _L)
|
|
+#else
|
|
+# error Unknown Locale
|
|
#endif
|
|
|
|
# endif /* _STLP_C_LOCALE_H */
|