Commit 36ece22c78c0117c6da605cedb6bd1805179939c

Build for Android

This is cross-comilation for Android
(NDK 1.5 r1) platform. Incomplete and possible not work:
Android miss exceptions, RTTI, __at_exit (?), i.e.
in any case Android has poor C++ support.

Android NDK 1.6 r1, NDK 1.5 r1

NDK 1.6 r1: android-3 and android-4

NDK 1.5 r1: android-1.5

Android NDK (as 1.6 r1 as 1.5 r1) has problem
in libthread_db (both static and dynamic):
undefined symbol.

libthread_db.so: undefined reference to `ps_pglobal_lookup'

nm -D -C ./build/platforms/android-1.5/arch-arm/usr/lib/libthread_db.so | \
  grep ps_pglobal_lookup
     U ps_pglobal_lookup

Symbol absent in any *.o, *.a, *.so shipout
in NDK, so this block link with dynamic library and
may lead to other problems.
  
1# Time-stamp: <10/02/16 10:44:52 ptr>
2#
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2010
4# Petr Ovtchenkov
5#
6# Portion Copyright (c) 1999-2001
7# Parallel Graphics Ltd.
8#
9# Licensed under the Academic Free License version 3.0
10#
11
12INSTALL := /usr/bin/install
13
14STRIP := /usr/bin/strip
15
16INSTALL_SO := ${INSTALL} -c -m 0755 ${_INSTALL_STRIP_OPTION}
17INSTALL_A := ${INSTALL} -c -m 0644
18INSTALL_EXE := ${INSTALL} -c -m 0755
19INSTALL_D := ${INSTALL} -d -m 0755
20INSTALL_F := ${INSTALL} -c -p -m 0644
21
22# bash's built-in test is like extern
23# EXT_TEST := /usr/bin/test
24EXT_TEST := test
  
1# Time-stamp: <10/02/16 10:45:45 ptr>
2#
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2010
4# Petr Ovtchenkov
5#
6# Portion Copyright (c) 1999-2001
7# Parallel Graphics Ltd.
8#
9# Licensed under the Academic Free License version 3.0
10#
11
12SO := so
13
14ARCH := a
15ifdef TARGET_OS
16AR := ${TARGET_OS}-ar
17STRIP := $(TARGET_OS)-strip
18else
19AR := ar
20STRIP := strip
21endif
22AR_INS_R := -rs
23AR_EXTR := -x
24AR_OUT = $@
25
26install-strip: _INSTALL_STRIP_OPTION = -s
27
28install-strip: _SO_STRIP_OPTION = -S
29
30install-strip-shared: _INSTALL_STRIP_OPTION = -s
31
32install-strip-shared: _SO_STRIP_OPTION = -S
  
1# -*- Makefile -*- Time-stamp: <08/10/22 15:48:09 ptr>
1# -*- Makefile -*- Time-stamp: <10/02/16 10:10:05 ptr>
22#
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2008
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2010
44# Petr Ovtchenkov
55#
66# Portion Copyright (c) 1999-2001
3333endif
3434endif
3535
36# Android NDK 1.5 r1, in pre-build gcc 4.2.1 no libsupc++, is we should link with libstdc++?
37#ifeq ($(OSNAME),android)
38#NOT_USE_NOSTDLIB := 1
39#endif
40
3641endif
3742
3843ifndef NOT_USE_NOSTDLIB
4545_USE_NOSTDLIB := 1
4646endif
4747
48ifeq ($(OSNAME),android)
49_USE_NOSTDLIB := 1
50endif
51
4852ifeq ($(OSNAME),openbsd)
4953_USE_NOSTDLIB := 1
5054endif
149149START_OBJ := $(shell for o in crt1.o crti.o crtbegin.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
150150END_OBJ := $(shell for o in crtend.o crtn.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
151151STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lpthread -lc -lm
152endif
153
154ifeq ($(OSNAME),android)
155START_OBJ := $(shell for o in crti.o crtbegin.o crtbegin_dynamic.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
156END_OBJ := $(shell for o in crtend.o crtn.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
157STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lc -lm
152158endif
153159
154160ifeq ($(OSNAME),openbsd)
  
1# Time-stamp: <08/10/22 14:57:26 ptr>
1# Time-stamp: <10/02/18 10:06:21 ptr>
22#
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2008
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2010
44# Petr Ovtchenkov
55#
66# Portion Copyright (c) 1999-2001
105105CFLAGS = -pthread $(OPT)
106106# CXXFLAGS = -pthread -nostdinc++ -fexceptions $(OPT)
107107CXXFLAGS = -pthread -fexceptions $(OPT)
108endif
109
110ifeq ($(OSNAME),android)
111CCFLAGS = -mandroid --sysroot=$(SYSROOT) $(OPT)
112CFLAGS = -mandroid --sysroot=$(SYSROOT) $(OPT)
113CXXFLAGS = -mandroid --sysroot=$(SYSROOT) -fno-exceptions -fno-rtti $(OPT)
108114endif
109115
110116ifeq ($(OSNAME),openbsd)
  
1# -*- makefile -*- Time-stamp: <08/10/22 15:51:41 ptr>
1# -*- makefile -*- Time-stamp: <10/03/05 23:16:47 ptr>
22#
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2008
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2010
44# Petr Ovtchenkov
55#
66# Portion Copyright (c) 1999-2001
4242endif
4343endif
4444
45# Android NDK 1.5 r1, in pre-build gcc 4.2.1 no libsupc++, is we should link with libstdc++?
46#ifeq ($(OSNAME),android)
47#NOT_USE_NOSTDLIB := 1
48#endif
49
4550endif
4651
4752ifndef NOT_USE_NOSTDLIB
5454_USE_NOSTDLIB := 1
5555endif
5656
57ifeq ($(OSNAME),android)
58_USE_NOSTDLIB := 1
59endif
60
5761ifeq ($(OSNAME),openbsd)
5862_USE_NOSTDLIB := 1
5963endif
168168STDLIBS = ${STLPORT_LIB} ${_LGCC_S} -lpthread -lc -lm
169169endif
170170
171ifeq ($(OSNAME),android)
172START_OBJ := $(shell for o in crti.o crtbegin.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
173#START_A_OBJ := $(shell for o in crti.o crtbeginT.o; do ${CXX} -print-file-name=$$o; done)
174END_OBJ := $(shell for o in crtend.o crtn.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
175# Android's libthread_db has undefined symbol:
176# libthread_db.so: undefined reference to `ps_pglobal_lookup'
177# U ps_pglobal_lookup
178# that never defined in shipout runtime (*.o, *.a, *.so).
179# Checked for Android NDK 1.5 r1 and 1.6 r1.
180STDLIBS = ${_LGCC_S} -Wl,-Bstatic -lthread_db -Wl,-Bdynamic -lc -lm
181# STDLIBS = ${_LGCC_S} -Wl,--whole-archive -lthread_db -Wl,--no-whole-archive -lc -lm
182endif
183
171184ifeq ($(OSNAME),openbsd)
172185START_OBJ := $(shell for o in crtbeginS.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
173186END_OBJ := $(shell for o in crtendS.o; do ${CXX} ${CXXFLAGS} -print-file-name=$$o; done)
268268endif
269269
270270ifeq ($(OSNAME),linux)
271dbg-shared: LDFLAGS += -shared -Wl,-h$(SO_NAME_DBGxx) ${NOSTDLIB}
272stldbg-shared: LDFLAGS += -shared -Wl,-h$(SO_NAME_STLDBGxx) ${NOSTDLIB}
273release-shared: LDFLAGS += -shared -Wl,-h$(SO_NAMExx) ${NOSTDLIB}
274endif
275
276ifeq ($(OSNAME),android)
271277dbg-shared: LDFLAGS += -shared -Wl,-h$(SO_NAME_DBGxx) ${NOSTDLIB}
272278stldbg-shared: LDFLAGS += -shared -Wl,-h$(SO_NAME_STLDBGxx) ${NOSTDLIB}
273279release-shared: LDFLAGS += -shared -Wl,-h$(SO_NAMExx) ${NOSTDLIB}
  
1# Time-stamp: <08/10/22 18:37:19 ptr>
1# Time-stamp: <10/02/18 10:07:18 ptr>
22#
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2008
3# Copyright (c) 1997-1999, 2002, 2003, 2005-2010
44# Petr Ovtchenkov
55#
66# Portion Copyright (c) 1999-2001
4545endif
4646
4747else
48OSNAME := $(shell echo ${TARGET_OS} | sed 's/^[a-z0-9_]\+-[a-z0-9]\+-\([a-z]\+\).*/\1/' | sed 's/^[a-z0-9_]\+-\([a-z]\+\).*/\1/' )
49OSREL := $(shell echo ${TARGET_OS} | sed 's/^[[:alnum:]_]\+-[a-z0-9]\+-[a-z]\+\([a-zA-Z.0-9]*\).*//' | sed 's/^[a-z0-9_]\+-[a-z]\+\([a-zA-Z.0-9]*\).*/
48ifneq ($(TARGET_OS),arm-eabi)
49OSNAME := $(shell echo ${TARGET_OS} | sed -e 's/^[a-z0-9_]\+-[a-z0-9]\+-\([a-z]\+\).*/\1/' -e 's/^[a-z0-9_]\+-\([a-z]\+\).*/\1/' )
50OSREL := $(shell echo ${TARGET_OS} | sed -e 's/^[[:alnum:]_]\+-[a-z0-9]\+-[a-z]\+\([a-zA-Z.0-9]*\).*/\1/' -e 's/^[a-z0-9_]\+-[a-z]\+\([a-zA-Z.0-9]*\).*/\1/' )
5051M_ARCH := $(shell echo ${TARGET_OS} | sed 's/^\([a-z0-9_]\+\)-.*/\1/' )
5152P_ARCH := unknown
53else
54# Assume android NDK 1.5 r1
55OSNAME := android
56# don't know, what OS release
57# Known at this time:
58# Android 2.1 Release 1
59# Android 1.6 Release 2
60# Android 1.5 Release 3
61# Older:
62# Android 2.0.1 Release 1
63# Android 2.0 Release 1
64# Android 1.1
65OSREL :=
66M_ARCH := arm
67# ARM v5TE
68P_ARCH := ARM_5TE
69
70_TMP := $(shell ${TARGET_OS}-c++ -mandroid -print-file-name=libgcc.a | xargs dirname | xargs dirname | xargs dirname | xargs dirname | xargs dirname | xargs dirname | xargs dirname | xargs dirname | xargs dirname | xargs dirname | xargs dirname)
71# NDK 1.5 r1: android-1.5
72# NDK 1.6 r1: android-3 or android-4
73ANDROID_REV := 4
74_TMP2 := $(shell echo $(_TMP) | grep -o -- '-.\..' | sed -e s/1\.6/$(ANDROID_REV)/)
75SYSROOT ?= $(_TMP)/platforms/android$(_TMP2)/arch-arm
76endif
5277# TARGET_OS
5378endif
5479
5580NODENAME := $(shell uname -n | tr '[A-Z]' '[a-z]' )
5681SYSVER := $(shell uname -v )
57USER := $(shell echo $$USER )
82USER := $(shell id -un )
5883
5984ifeq ($(OSNAME),freebsd)
6085OSREL_MAJOR := $(shell echo ${OSREL} | tr '.-' ' ' | awk '{print $$1;}')
9494
9595# OS_VER := $(shell uname -s | tr '[A-Z]' '[a-z]' | tr ', /\\()"' ',//////' | tr ',/' ',_')
9696
97BUILD_SYSTEM := $(shell echo `uname -n` `uname -s` `uname -r` `uname -v` `uname -m` $$USER)
97BUILD_SYSTEM := $(shell { uname -n; uname -s; uname -r; uname -v; uname -m; id -un; } | tr '\n' ' ' )
9898BUILD_DATE := $(shell date +'%Y/%m/%d %T %Z')
9999
100100BUILD_OSNAME := $(shell uname -s | tr '[A-Z]' '[a-z]' | tr ', /\\()"' ',//////' | tr ',/' ',-')
  
1# -*- Makefile -*- Time-stamp: <08/10/22 15:04:42 ptr>
1# -*- Makefile -*- Time-stamp: <10/03/05 23:06:25 ptr>
22
33SRCROOT := ..
44COMPILER_NAME := gcc
1616ifeq ($(OSNAME),linux)
1717DEFS += -D_GNU_SOURCE
1818STDLIBS = -Wl,--whole-archive -lsupc++ ${_LGCC_EH} -Wl,--no-whole-archive ${_LGCC_S} -lpthread -lc -lm
19endif
20
21ifeq ($(OSNAME),android)
22DEFS += -D_GNU_SOURCE
23STDLIBS = -Wl,--whole-archive ${_LGCC_EH} -Wl,--no-whole-archive ${_LGCC_S} -Wl,-Bstatic -lthread_db -Wl,-Bdynamic -lc -lm
1924endif
2025
2126ifeq ($(OSNAME),openbsd)
  
6767
6868#elif defined (__hpux) /* && defined(__hppa) && defined(__HP_aCC)) */ || \
6969 defined (__MVS__) || \
70 defined (_STLP_USE_UCLIBC) /* should be before _STLP_USE_GLIBC */
70 defined (_STLP_USE_UCLIBC) || /* should be before _STLP_USE_GLIBC */ \
71 defined (__ANDROID__) /* should be before _STLP_USE_GLIBC */
7172
7273inline int _FILE_fd(const FILE *__f) { return fileno(__CONST_CAST(FILE*, __f)); }
7374
114114#endif /* _STLP_STDIO_FILE_H */
115115
116116/* Local Variables:
117 * mode:C++
118 * End: */
117 * mode: C++
118 * End:
119 */
  
3434#include "stlport_prefix.h"
3535
3636#include <wchar.h> /* for mbstate_t */
37#include <stddef.h>
3738#include <stl/c_locale.h>
3839
3940struct _Locale_name_hint;
  
104104typedef unsigned __int64 uint64;
105105# define ULL(x) x##Ui64
106106#elif defined (__unix) || defined (__MINGW32__) || \
107 (defined (__DMC__) && (__LONGLONG)) || defined (__WATCOMC__)
107 (defined (__DMC__) && (__LONGLONG)) || defined (__WATCOMC__) || \
108 defined(__ANDROID__)
108109typedef uint32_t uint32;
109110typedef uint64_t uint64;
110111# define ULL(x) x##ULL
  
4343# endif
4444
4545# if defined (__QNXNTO__) || ( defined(__GNUC__) && defined(__APPLE__) ) || defined(_STLP_USE_UCLIBC) /* 0.9.26 */ || \
46 defined(__FreeBSD__)
46 defined(__FreeBSD__) || defined(__ANDROID__)
4747# define USE_SPRINTF_INSTEAD
4848# endif
4949
  
165165static void __append(__iostring &buf, const string& name)
166166{ buf.append(name.data(), name.data() + name.size()); }
167167
168#ifndef _STLP_NO_WCHAR_T
168169static void __append(__iowstring &buf, const wstring& name)
169170{ buf.append(name.data(), name.data() + name.size()); }
171#endif
170172
171173static void __append(__iostring &buf, char *first, char *last, const ctype<char>& /* ct */)
172174{ buf.append(first, last); }
173175
176#ifndef _STLP_NO_WCHAR_T
174177static void __append(__iowstring &buf, char *first, char *last, const ctype<wchar_t>& ct) {
175178 wchar_t _wbuf[64];
176179 ct.widen(first, last, _wbuf);
177180 buf.append(_wbuf, _wbuf + (last - first));
178181}
182#endif
179183
180184#if defined (__GNUC__)
181185/* The number of days from the first day of the first ISO week of this
463463 const _Time_Info& table, const tm* t)
464464{ __write_formatted_timeT(buf, ct, format, modifier, table, t); }
465465
466#ifndef _STLP_NO_WCHAR_T
466467void _STLP_CALL __write_formatted_time(__iowstring &buf, const ctype<wchar_t>& ct,
467468 char format, char modifier,
468469 const _WTime_Info& table, const tm* t)
469470{ __write_formatted_timeT(buf, ct, format, modifier, table, t); }
471#endif
470472
471473static time_base::dateorder __get_date_order(_Locale_time* time) {
472474 const char * fmt = _Locale_d_fmt(time);
  
4343
4444# if defined (_STLP_HAS_INCLUDE_NEXT)
4545# include_next <new>
46# ifdef __ANDROID__
47inline void* operator new(size_t, void* p) { return p; }
48inline void* operator new[](size_t, void *p) { return p; }
49# endif
4650# else
4751# include _STLP_NATIVE_CPP_RUNTIME_HEADER(new)
4852# endif
116116# if !defined (_STLP_USE_EXCEPTIONS)
117117# ifndef _STLP_INTERNAL_CSTDIO
118118# include <stl/_cstdio.h>
119# endif
120# ifdef __ANDROID__
121# include <stdlib.h> /* for exit() in _STLP_THROW_BAD_ALLOC */
119122# endif
120123# define _STLP_THROW_BAD_ALLOC puts("out of memory\n"); exit(1)
121124# else
  
101101 * For narrow characters, we expose the lookup table interface.
102102 */
103103
104#if defined (_STLP_USE_GLIBC)
104#ifdef _STLP_USE_GLIBC
105# ifdef __ANDROID__
106# define _Locale_CNTRL _C
107# define _Locale_UPPER _U
108# define _Locale_LOWER _L
109# define _Locale_DIGIT _N
110# define _Locale_XDIGIT (_N|_X)
111# define _Locale_PUNCT _P
112# define _Locale_SPACE _S
113# define _Locale_PRINT (_P|_U|_L|_N|_B)
114# define _Locale_ALPHA (_U|_L)
115# else
105116/* This section uses macros defined in the gnu libc ctype.h header */
106# define _Locale_CNTRL _IScntrl
107# define _Locale_UPPER _ISupper
108# define _Locale_LOWER _ISlower
109# define _Locale_DIGIT _ISdigit
110# define _Locale_XDIGIT _ISxdigit
111# define _Locale_PUNCT _ISpunct
112# define _Locale_SPACE _ISspace
113# define _Locale_PRINT _ISprint
114# define _Locale_ALPHA _ISalpha
117# define _Locale_CNTRL _IScntrl
118# define _Locale_UPPER _ISupper
119# define _Locale_LOWER _ISlower
120# define _Locale_DIGIT _ISdigit
121# define _Locale_XDIGIT _ISxdigit
122# define _Locale_PUNCT _ISpunct
123# define _Locale_SPACE _ISspace
124# define _Locale_PRINT _ISprint
125# define _Locale_ALPHA _ISalpha
126# endif
115127#else
116128/* Default values based on C++ Standard 22.2.1.
117129 * Under Windows the localisation implementation take care of mapping its
  
7070# elif defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE) /* || defined(__USE_FILE_OFFSET64) */ \
7171 /* || (defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)) */ /* || defined (__sgi) && defined (_STLP_HAS_NO_NEW_C_HEADERS) */
7272typedef off64_t streamoff;
73# elif defined(__ANDROID__)
74typedef long streamoff;
7375# else
7476typedef off_t streamoff;
7577# endif
  
1#ifndef __stl_config__android_h
2#define __stl_config__android_h
3
4#define _STLP_PLATFORM "Android"
5
6#include <features.h>
7
8/* The Android C library is mostly glibc-like */
9#ifndef _STLP_USE_GLIBC
10# define _STLP_USE_GLIBC 1
11#endif
12
13/* ... and Unix-like */
14#ifndef _STLP_UNIX
15# define _STLP_UNIX 1
16#endif
17
18/* No RTTI support in runtime */
19#define _STLP_NO_TYPEINFO 1
20/* No exceptions in runtime */
21#define _STLP_NO_RTTI 1
22
23/* Have pthreads support */
24#define _PTHREADS
25
26/* Don't have native <cplusplus> headers */
27/* #define _STLP_HAS_NO_NEW_C_HEADERS 1 */
28
29/* Android has defined wchar, but this functionality
30 not really implemented. We think that it present,
31 but see comments in Android NDK before real use
32 wchars.
33 */
34/* Don't use wchar.h etc. */
35/* #define _STLP_NO_WCHAR_T 1 */
36
37/* Don't have (working) native wide character support */
38#define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
39
40/* Words about wchar (above) is applicable for mbstate too */
41/* Don't use mbstate_t, define our own */
42/* #define _STLP_NO_NATIVE_MBSTATE_T 1 */
43
44/* No (proper) wide stream support in Android */
45#define _STLP_NO_NATIVE_WIDE_STREAMS 1
46
47/* C library is in the global namespace */
48#define _STLP_VENDOR_GLOBAL_CSTD 1
49
50/* Don't have underlying locale support. */
51#undef _STLP_REAL_LOCALE_IMPLEMENTED
52
53/* No pthread_spinlock_t in Android */
54#define _STLP_DONT_USE_PTHREAD_SPINLOCK 1
55
56/* Little endian platform. */
57#define _STLP_LITTLE_ENDIAN 1
58
59/* No <exception> headers */
60#define _STLP_NO_EXCEPTION_HEADER 1
61
62/* No need to define our own namespace */
63#define _STLP_NO_OWN_NAMESPACE 1
64
65/* Need this to define STLport's own bad_alloc class (which won't be
66 * thrown in any case)
67 */
68#define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
69
70/* Use __new_alloc instead of __node_alloc, so we don't need static functions.
71#define _STLP_USE_SIMPLE_NODE_ALLOC 1
72*/
73
74/* Don't use extern versions of range errors, so we don't need to
75 * compile as a library.
76#define _STLP_USE_NO_EXTERN_RANGE_ERRORS 1
77*/
78
79/* The system math library doesn't have long double variants, e.g
80 * sinl, cosl, etc
81 */
82#define _STLP_NO_VENDOR_MATH_L 1
83
84#define _STLP_USE_UNIX_IO 1
85
86/* bypass arch-arm/usr/include/new */
87#ifndef __NEW__
88# define __NEW__
89#endif
90
91#endif /* __stl_config__android_h */
  
148148# define _STLP_NO_VENDOR_MATH_F
149149#endif
150150
151#ifdef __ANDROID__
152# define _STLP_HAS_NO_NEW_C_HEADERS 1
153#endif
154
151155#if (__GNUC__ >= 3)
152# define _STLP_HAS_NO_NEW_C_HEADERS // experiment
153156# ifndef _STLP_HAS_NO_NEW_C_HEADERS
157# define _STLP_HAS_NO_NEW_C_HEADERS // experiment
158# endif
159# ifndef _STLP_HAS_NO_NEW_C_HEADERS
154160/*
155161# ifndef _STLP_USE_UCLIBC
156162*/
182182# define _STLP_DEF_CONST_PLCT_NEW_BUG 1
183183#endif
184184
185#undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
186#undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
185#ifndef __ANDROID__
186# undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
187# undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
188#endif
187189
188190/* strict ANSI prohibits "long long" ( gcc) */
189191#if defined ( __STRICT_ANSI__ )
  
7474# include <stl/config/_kai.h>
7575# endif
7676*/
77#elif defined (__ANDROID__)
78# include <stl/config/_android.h>
79# if defined (__GNUC__)
80# include <stl/config/_gcc.h>
81# endif
7782#elif defined (__FreeBSD__)
7883# include <stl/config/_freebsd.h>
7984# if defined (__GNUC__)