--- misc/STLport-4.5/src/common_macros_os2.mak	2008-07-18 14:14:27.000000000 +0200
+++ misc/build/STLport-4.5/src/common_macros_os2.mak	2008-07-18 14:14:05.000000000 +0200
@@ -1 +1,37 @@
-dummy
+SHELL=/bin/sh
+
+# INSTALLDIR=/usr/local
+# INSTALLDIR_INC=$(INSTALLDIR)/include/stlport
+# INSTALLDIR_LIB=$(INSTALLDIR)/lib
+
+# RM = rm -fr
+
+# INSTALL = ./install.sh -c
+# INSTALL_LIB = $(INSTALL)
+# INSTALL_H = $(INSTALL) -m 444
+
+#
+#
+# Targets
+#
+
+VERSION_SUFFIX= $(VERSION_MAJOR)$(VERSION_MINOR)$(BETA_SUFFIX)
+DYNAMIC_SUFFIX= $(VERSION_SUFFIX)$(PATCH_SUFFIX)
+DYNAMIC_SUFFIX= $(VERSION_SUFFIX)$(PATCH_SUFFIX)
+
+# those are defined "Unix way" in common_macros.mak; redefine them here
+RELEASE_DYNLIB=$(RELEASE_NAME)$(DYNAMIC_SUFFIX).$(DYNEXT)
+DEBUG_DYNLIB=$(DEBUG_NAME)$(DYNAMIC_SUFFIX).$(DYNEXT)
+STLDEBUG_DYNLIB=$(STLDEBUG_NAME)$(DYNAMIC_SUFFIX).$(DYNEXT)
+
+RELEASE_DYNLIB_SONAME=$(RELEASE_NAME)$(VERSION_SUFFIX).$(DYNEXT)
+DEBUG_DYNLIB_SONAME=$(DEBUG_NAME)$(VERSION_SUFFIX).$(DYNEXT)
+STLDEBUG_DYNLIB_SONAME=$(STLDEBUG_NAME)$(VERSION_SUFFIX).$(DYNEXT)
+
+ALL_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)
+ALL_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB)
+DEBUG_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)
+
+RELEASE_LIB=$(RELEASE_NAME)$(STATIC_SUFFIX).$(STEXT)
+DEBUG_LIB=$(DEBUG_NAME)$(STATIC_SUFFIX).$(STEXT)
+STLDEBUG_LIB=$(STLDEBUG_NAME)$(STATIC_SUFFIX).$(STEXT)
--- misc/STLport-4.5/src/common_percent_rules.mak	2001-05-19 05:04:20.000000000 +0200
+++ misc/build/STLport-4.5/src/common_percent_rules.mak	2008-07-18 14:13:49.000000000 +0200
@@ -1,45 +1,52 @@
 
 .SUFFIXES: .cpp .c .o .so .a
 
+CFLAGS_RELEASE_static*= $(CXXFLAGS_RELEASE_static)
+CFLAGS_RELEASE_dynamic*= $(CXXFLAGS_RELEASE_dynamic)
+CFLAGS_DEBUG_static*= $(CXXFLAGS_DEBUG_static)
+CFLAGS_DEBUG_dynamic*= $(CXXFLAGS_DEBUG_dynamic)
+CFLAGS_STLDEBUG_static*= $(CXXFLAGS_STLDEBUG_static)
+CFLAGS_STLDEBUG_dynamic*= $(CXXFLAGS_STLDEBUG_dynamic)
+
 $(RELEASE_OBJDIR_static)/%.o: %.cpp
 	$(CXX) $(CXXFLAGS_RELEASE_static) $< -c -o $@
 $(RELEASE_OBJDIR_static)/%.o: %.c
-	$(CC) $(CXXFLAGS_RELEASE_static) $< -c -o $@
+	$(CC) $(CFLAGS_RELEASE_static) $< -c -o $@
 $(RELEASE_OBJDIR_static)/%.i : %.cpp
 	$(CXX) $(CXXFLAGS_RELEASE_static) $< -E  $@
 
 $(RELEASE_OBJDIR_dynamic)/%.o : %.cpp
 	$(CXX) $(CXXFLAGS_RELEASE_dynamic) $< -c -o $@
 $(RELEASE_OBJDIR_dynamic)/%.o : %.c
-	$(CC) $(CXXFLAGS_RELEASE_dynamic) $< -c -o $@
+	$(CC) $(CFLAGS_RELEASE_dynamic) $< -c -o $@
 $(RELEASE_OBJDIR_dynamic)/%.i : %.cpp
 	$(CXX) $(CXXFLAGS_RELEASE_dynamic) $< -E  $@
 
 $(DEBUG_OBJDIR_static)/%.o : %.cpp
 	$(CXX) $(CXXFLAGS_DEBUG_static) $< -c -o $@
 $(DEBUG_OBJDIR_static)/%.o : %.c
-	$(CC) $(CXXFLAGS_DEBUG_static) $< -c -o $@
+	$(CC) $(CFLAGS_DEBUG_static) $< -c -o $@
 $(DEBUG_OBJDIR_static)/%.i : %.cpp
 	$(CXX) $(CXXFLAGS_DEBUG_static) $< -E  $@
 
 $(DEBUG_OBJDIR_dynamic)/%.o : %.cpp
 	$(CXX) $(CXXFLAGS_DEBUG_dynamic) $< -c -o $@
 $(DEBUG_OBJDIR_dynamic)/%.o : %.c
-	$(CC) $(CXXFLAGS_DEBUG_dynamic) $< -c -o $@
+	$(CC) $(CFLAGS_DEBUG_dynamic) $< -c -o $@
 $(DEBUG_OBJDIR_dynamic)/%.i : %.cpp
 	$(CXX) $(CXXFLAGS_DEBUG_dynamic) $< -E  $@
 
 $(STLDEBUG_OBJDIR_static)/%.o : %.cpp
 	$(CXX) $(CXXFLAGS_STLDEBUG_static) $< -c -o $@
 $(STLDEBUG_OBJDIR_static)/%.o : %.c
-	$(CC) $(CXXFLAGS_STLDEBUG_static) $< -c -o $@
+	$(CC) $(CFLAGS_STLDEBUG_static) $< -c -o $@
 $(STLDEBUG_OBJDIR_static)/%.i : %.cpp
 	$(CXX) $(CXXFLAGS_STLDEBUG_static) $< -E  $@
 
 $(STLDEBUG_OBJDIR_dynamic)/%.o : %.cpp
 	$(CXX) $(CXXFLAGS_STLDEBUG_dynamic) $< -c -o $@
 $(STLDEBUG_OBJDIR_dynamic)/%.o : %.c
-	$(CC) $(CXXFLAGS_STLDEBUG_dynamic) $< -c -o $@
+	$(CC) $(CFLAGS_STLDEBUG_dynamic) $< -c -o $@
 $(STLDEBUG_OBJDIR_dynamic)/%.i : %.cpp
 	$(CXX) $(CXXFLAGS_STLDEBUG_dynamic) $< -E  $@
 
--- misc/STLport-4.5/src/dll_main.cpp	2001-08-25 03:14:19.000000000 +0200
+++ misc/build/STLport-4.5/src/dll_main.cpp	2008-07-18 14:13:49.000000000 +0200
@@ -147,6 +147,10 @@
 template struct _STLP_CLASS_DECLSPEC __stl_debug_engine<bool>;
 # endif
 
+#ifdef __APPLE__
+template class _STLP_CLASS_DECLSPEC _Node_Alloc_Lock<false,0>;
+template class _STLP_CLASS_DECLSPEC _Node_Alloc_Lock<true,0>;
+#endif
 template class _STLP_CLASS_DECLSPEC __node_alloc<false,0>;
 template class _STLP_CLASS_DECLSPEC __node_alloc<true,0>;
 template class _STLP_CLASS_DECLSPEC __debug_alloc< __node_alloc<true,0> >;
--- misc/STLport-4.5/src/gcc-3.0-freebsd.mak	2008-07-18 14:14:26.000000000 +0200
+++ misc/build/STLport-4.5/src/gcc-3.0-freebsd.mak	2008-07-18 14:13:49.000000000 +0200
@@ -1 +1,69 @@
-dummy
+#
+# Note : this makefile is for gcc-3 !
+#
+
+#
+# compiler
+# take these from the OOo build environment
+CC*= gcc 
+CXX*= g++
+
+#
+# Basename for libraries
+#
+LIB_BASENAME = libstlport_gcc
+
+#
+# guts for common stuff
+#
+#
+LINK=ar cr
+DYN_LINK=${CXX} -Wl,-z,origin -Wl,-rpath,'$$ORIGIN' ${PTHREAD_LIBS} -fexceptions -shared -o
+
+OBJEXT=o
+DYNEXT=so
+STEXT=a
+RM=rm -rf
+PATH_SEP=/
+MKDIR=mkdir -p
+COMP=GCC$(ARCH)
+INSTALL_STEP = install_unix 
+
+all:  all_dynamic all_static symbolic_links 
+
+include common_macros.mak
+
+WARNING_FLAGS= -Wall -W -Wno-sign-compare -Wno-unused -Wno-uninitialized
+
+CXXFLAGS_COMMON = ${PTHREAD_CFLAGS} -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} -fexceptions -ftemplate-depth-32 -I${STLPORT_DIR} ${WARNING_FLAGS} ${ARCH_FLAGS}
+CFLAGS_COMMON = ${PTHREAD_CFLAGS} -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} -fexceptions -I${STLPORT_DIR} ${WARNING_FLAGS} ${ARCH_FLAGS}
+
+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -O2 -fPIC
+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -O2 -fPIC
+
+CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -g -fPIC
+CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -g -fPIC
+
+CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
+CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
+
+CFLAGS_RELEASE_static = $(CFLAGS_COMMON) -O2 -fPIC
+CFLAGS_RELEASE_dynamic = $(CFLAGS_COMMON) -O2 -fPIC
+
+CFLAGS_DEBUG_static = $(CFLAGS_COMMON) -g -fPIC
+CFLAGS_DEBUG_dynamic = $(CFLAGS_COMMON) -g -fPIC
+
+CFLAGS_STLDEBUG_static = $(CFLAGS_DEBUG_static) -D_STLP_DEBUG
+CFLAGS_STLDEBUG_dynamic = $(CFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
+
+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 $@
+
+
--- misc/STLport-4.5/src/gcc-3.0-mingw.mak	2008-07-18 14:14:26.000000000 +0200
+++ misc/build/STLport-4.5/src/gcc-3.0-mingw.mak	2008-07-18 14:13:49.000000000 +0200
@@ -1 +1,108 @@
-dummy
+#
+# Note : this makefile is for gcc-3 !
+#
+
+#
+# compiler
+# take these from the OOo build environment
+CC*= gcc 
+CXX*= g++
+
+#
+# Basename for libraries
+#
+LIB_BASENAME = libstlport_gcc
+
+#
+# guts for common stuff
+#
+#
+LINK=ar crv
+DYN_LINK=$(CXX) -fexceptions -shared -o
+
+OBJEXT=o
+DYNEXT=dll
+STEXT=a
+RM=rm -rf
+PATH_SEP=/
+MKDIR=mkdir -p
+COMP=MINGW32
+STATIC_SUFFIX=_static
+
+
+all:  all_dynamic debug_dynamic all_static debug_static
+
+include common_macros.mak
+
+# those are defined "Unix way" in common_macros.mak; redefine them here
+RELEASE_DYNLIB=$(RELEASE_NAME).$(DYNEXT)
+DEBUG_DYNLIB=$(DEBUG_NAME).$(DYNEXT)
+STLDEBUG_DYNLIB=$(STLDEBUG_NAME).$(DYNEXT)
+
+RELEASE_DYNLIB_SONAME=$(RELEASE_DYNLIB)
+DEBUG_DYNLIB_SONAME=$(DEBUG_DYNLIB)
+STLDEBUG_DYNLIB_SONAME=$(STLDEBUG_DYNLIB)
+
+ALL_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)
+DEBUG_DYNAMIC_LIBS=$(OUTDIR)$(PATH_SEP)$(RELEASE_DYNLIB) $(OUTDIR)$(PATH_SEP)$(STLDEBUG_DYNLIB)
+
+RESFILE=$(RELEASE_OBJDIR_dynamic)$(PATH_SEP)stlport.o
+RESFILE_debug=$(DEBUG_OBJDIR_dynamic)$(PATH_SEP)stlport.o
+RESFILE_stldebug=$(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)stlport.o
+
+WARNING_FLAGS= -Wall -W -Wno-sign-compare -Wno-unused -Wno-uninitialized
+
+CXXFLAGS_COMMON =  -mthreads -fexceptions -ftemplate-depth-32 -I${STLPORT_DIR} -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} ${WARNING_FLAGS}
+CFLAGS_COMMON =  -mthreads -fexceptions -I${STLPORT_DIR} -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} ${WARNING_FLAGS}
+
+LDFLAGS_COMMON_dynamic+= -enable-runtime-pseudo-reloc -Wl,--export-all-symbols -Wl,-d -mthreads
+
+CXXFLAGS_RELEASE_static =  $(CXXFLAGS_COMMON) -O2
+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -shared -O2 -D_DLL -D_STLP_USE_DYNAMIC_LIB -D_STLP_DLLEXPORT_NEEDS_PREDECLARATION
+
+CXXFLAGS_DEBUG_static =  $(CXXFLAGS_COMMON) -g
+CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -shared -g -D_DLL -D_STLP_USE_DYNAMIC_LIB -D_STLP_DLLEXPORT_NEEDS_PREDECLARATION
+
+CXXFLAGS_STLDEBUG_static =  $(CXXFLAGS_DEBUG_static)  -D_STLP_DEBUG
+CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
+
+CFLAGS_RELEASE_static =  $(CFLAGS_COMMON) -O2
+CFLAGS_RELEASE_dynamic = $(CFLAGS_COMMON) -shared -O2 -D_DLL -D_STLP_USE_DYNAMIC_LIB -D_STLP_DLLEXPORT_NEEDS_PREDECLARATION
+
+CFLAGS_DEBUG_static =  $(CFLAGS_COMMON) -g
+CFLAGS_DEBUG_dynamic = $(CFLAGS_COMMON) -shared -g -D_DLL -D_STLP_USE_DYNAMIC_LIB -D_STLP_DLLEXPORT_NEEDS_PREDECLARATION
+
+CFLAGS_STLDEBUG_static =  $(CFLAGS_DEBUG_static)  -D_STLP_DEBUG
+CFLAGS_STLDEBUG_dynamic = $(CFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
+
+LDLIBS_RELEASE_dynamic = ${LDLIBS_COMMON_dynamic}
+LDFLAGS_RELEASE_dynamic = ${CXXFLAGS_RELEASE_dynamic} ${LDFLAGS_COMMON_dynamic} -Wl,-Map,${OUTDIR}/${RELEASE_NAME}.map -Wl,--out-implib,${OUTDIR}/${RELEASE_NAME}.a
+
+LDLIBS_DEBUG_dynamic = ${LDLIBS_COMMON_dynamic}
+LDFLAGS_DEBUG_dynamic = ${CXXFLAGS_DEBUG_dynamic} ${LDFLAGS_COMMON_dynamic} -Wl,-Map,${OUTDIR}/${DEBUG_NAME}.map -Wl,--out-implib,${OUTDIR}/${DEBUG_NAME}.a
+
+LDLIBS_STLDEBUG_dynamic = ${LDLIBS_COMMON_dynamic}
+LDFLAGS_STLDEBUG_dynamic = ${CXXFLAGS_STLDEBUG_dynamic} ${LDFLAGS_COMMON_dynamic} -Wl,-Map,${OUTDIR}/${STLDEBUG_NAME}.map -Wl,--out-implib,${OUTDIR}/${STLDEBUG_NAME}.a
+
+
+include common_percent_rules.mak
+include common_rules.mak
+
+
+
+${RESFILE}: stlport.rc
+	windres -O coff --define COMP=${COMP} --define BUILD= -o $(RELEASE_OBJDIR_dynamic)$(PATH_SEP)stlport.o stlport.rc
+
+${RESFILE_debug}: stlport.rc
+	windres -O coff --define COMP=${COMP} --define BUILD=_DEBUG -o $(DEBUG_OBJDIR_dynamic)$(PATH_SEP)stlport.o stlport.rc
+
+${RESFILE_stldebug}: stlport.rc
+	windres -O coff --define COMP=${COMP} --define BUILD=_STLDEBUG -o $(STLDEBUG_OBJDIR_dynamic)$(PATH_SEP)stlport.o stlport.rc
+
+#install: all
+#	cp -p $(LIB_TARGET) ${D_LIB_TARGET} ../lib
+
+#%.s: %.cpp
+#	$(CXX) $(CXXFLAGS) -O4 -S -pto $<  -o $@
+
+ 
--- misc/STLport-4.5/src/gcc-3.0-os2.def	2008-11-26 12:40:40.000000000 +0100
+++ misc/build/STLport-4.5/src/gcc-3.0-os2.def	2008-10-10 15:05:36.000000000 +0200
@@ -1 +1,42 @@
-dummy
+LIBRARY stlp45 INITINSTANCE TERMINSTANCE
+DATA MULTIPLE
+EXPORTS
+;exports manually added for transex3 project
+__ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE10_M_xsputncEci
+__ZN4_STL8numpunctIcE2idE
+__ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE6xsgetnEPci
+__ZN4_STL15basic_streambufIcNS_11char_traitsIcEEEC2Ev
+__ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE8pubimbueERKNS_6localeE
+__ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKci
+__ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE5uflowEv
+__ZN4_STL15basic_streambufIcNS_11char_traitsIcEEED2Ev
+__ZN4_STL7codecvtIcc15__stl_mbstate_tE2idE
+__ZN4_STL5ctypeIcE2idE
+__ZN4_STL5_LimGIbE6_D_infE
+;hwpfilter
+ __ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE4syncEv
+ __ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE9showmanycEv
+ __ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE5imbueERKNS_6localeE
+;testshl2
+__ZNK4_STL5ctypeIcE8scan_notENS_10ctype_base4maskEPKcS5_
+;xml2cmp
+__ZN4_STL15basic_streambufIcNS_11char_traitsIcEEE13_M_snextc_auxEv
+__ZNK4_STL5ctypeIcE7scan_isENS_10ctype_base4maskEPKcS5_
+__ZN4_STL10_UnderflowIcNS_11char_traitsIcEEE7_M_doitEPNS_13basic_filebufIcS2_EE
+__ZN4_STL13_Filebuf_base12_M_page_sizeE
+
+;cppu
+__ZN4_STL12__node_allocILb1ELi0EE11_M_allocateEj
+__ZN4_STL12__node_allocILb1ELi0EE13_M_deallocateEPvj
+__ZN4_STL10_Rb_globalIbE12_M_decrementEPNS_18_Rb_tree_node_baseE
+__ZN4_STL10_Rb_globalIbE10_RebalanceEPNS_18_Rb_tree_node_baseERS3_
+__ZN4_STL10_Rb_globalIbE12_M_incrementEPNS_18_Rb_tree_node_baseE
+__ZN4_STL10_Rb_globalIbE20_Rebalance_for_eraseEPNS_18_Rb_tree_node_baseERS3_S4_S4_
+
+;vcl
+__ZN4_STL12_List_globalIbE9_TransferEPNS_15_List_node_baseES3_S3_
+
+;comphelper
+__ZTVN4_STL13runtime_errorE
+;sw
+__ZN4_STL10_Sl_globalIbE10__previousEPNS_16_Slist_node_baseEPKS2_
--- misc/STLport-4.5/src/gcc-3.0-os2.mak	2008-11-26 12:40:40.000000000 +0100
+++ misc/build/STLport-4.5/src/gcc-3.0-os2.mak	2008-11-03 15:56:24.000000000 +0100
@@ -1 +1,79 @@
-dummy
+#
+# Note : this makefile is for gcc-3 !
+#
+
+#
+# compiler
+# take these from the OOo build environment
+CC*= gcc 
+CXX*= g++
+
+#
+# Basename for libraries
+#
+LIB_BASENAME = stlp
+STATIC_SUFFIX=_s
+
+#
+# guts for common stuff
+#
+#
+LINK=emxomfar cr
+DYN_LINK=$(CXX) -g -Zlinker "DISABLE 1121" -Zomf -Zmap -Zhigh-mem -Zdll gcc-3.0-os2.def -o
+
+OBJEXT=o
+DYNEXT=so
+DYNEXT=dll
+STEXT=a
+RM=rm -rf
+PATH_SEP=/
+MKDIR=mkdir -p
+COMP=GCC$(ARCH)
+INSTALL_STEP = install_unix 
+LN_S = cp
+LDLIBS_RELEASE_dynamic = -lstdc444 -lgcc_eh
+LDLIBS_RELEASE_static = -lstdc444 -lgcc_eh
+
+#all_static symbolic_links 
+all: all_dynamic all_import
+
+include common_macros.mak
+include common_macros_os2.mak
+
+WARNING_FLAGS= -Wall -W -Wno-sign-compare -Wno-unused -Wno-uninitialized -ftemplate-depth-32
+
+CXXFLAGS_COMMON = -Zomf -D_REENTRANT -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} -fexceptions -I${STLPORT_DIR} ${WARNING_FLAGS} ${ARCH_FLAGS}
+CFLAGS_COMMON = -Zomf -D_REENTRANT -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} -fexceptions -I${STLPORT_DIR} ${WARNING_FLAGS} ${ARCH_FLAGS}
+
+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -g -DOS2 -DSTL_OS2_BUILDING -O3 -march=pentium -mtune=pentium4
+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -g -DOS2 -DSTL_OS2_BUILDING -O3 -march=pentium -mtune=pentium4
+
+CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -g
+CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -g
+
+CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
+CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
+
+CFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -DSTL_OS2_BUILDING -O3 -march=pentium -mtune=pentium4
+CFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -DSTL_OS2_BUILDING -O3 -march=pentium -mtune=pentium4
+
+CFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -g
+CFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -g
+
+CFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
+CFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
+
+include common_percent_rules.mak
+include common_rules.mak
+
+all_import:
+	emximp -o ..\lib\$(RELEASE_NAME)$(DYNAMIC_SUFFIX).a   ..\lib\$(RELEASE_NAME)$(DYNAMIC_SUFFIX).$(DYNEXT)
+	emximp -o ..\lib\$(RELEASE_NAME)$(DYNAMIC_SUFFIX).lib ..\lib\$(RELEASE_NAME)$(DYNAMIC_SUFFIX).$(DYNEXT)
+
+#install: all
+#	cp -p $(LIB_TARGET) ${D_LIB_TARGET} ../lib
+
+#%.s: %.cpp
+#	$(CXX) $(CXXFLAGS) -O4 -S -pto $<  -o $@
+
+
--- misc/STLport-4.5/src/gcc-3.0.mak	2008-07-18 14:14:26.000000000 +0200
+++ misc/build/STLport-4.5/src/gcc-3.0.mak	2008-07-18 14:13:49.000000000 +0200
@@ -1 +1,69 @@
-dummy
+#
+# Note : this makefile is for gcc-3 !
+#
+
+#
+# compiler
+# take these from the OOo build environment
+CC*= gcc 
+CXX*= g++
+
+#
+# Basename for libraries
+#
+LIB_BASENAME = libstlport_gcc
+
+#
+# guts for common stuff
+#
+#
+LINK=ar cr
+DYN_LINK=$(CXX) -Wl,-rpath,'$$ORIGIN' -fexceptions -shared -o
+
+OBJEXT=o
+DYNEXT=so
+STEXT=a
+RM=rm -rf
+PATH_SEP=/
+MKDIR=mkdir -p
+COMP=GCC$(ARCH)
+INSTALL_STEP = install_unix 
+
+all:  all_dynamic all_static symbolic_links 
+
+include common_macros.mak
+
+WARNING_FLAGS= -Wall -W -Wno-sign-compare -Wno-unused -Wno-uninitialized
+
+CXXFLAGS_COMMON =  -D_REENTRANT -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} -fexceptions -ftemplate-depth-32 -I${STLPORT_DIR} ${WARNING_FLAGS} ${ARCH_FLAGS}
+CFLAGS_COMMON =  -D_REENTRANT -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} -fexceptions -I${STLPORT_DIR} ${WARNING_FLAGS} ${ARCH_FLAGS}
+
+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -O2 -fPIC
+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -O2 -fPIC
+
+CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -g -fPIC
+CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -g -fPIC
+
+CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
+CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
+
+CFLAGS_RELEASE_static = $(CFLAGS_COMMON) -O2 -fPIC
+CFLAGS_RELEASE_dynamic = $(CFLAGS_COMMON) -O2 -fPIC
+
+CFLAGS_DEBUG_static = $(CFLAGS_COMMON) -g -fPIC
+CFLAGS_DEBUG_dynamic = $(CFLAGS_COMMON) -g -fPIC
+
+CFLAGS_STLDEBUG_static = $(CFLAGS_DEBUG_static) -D_STLP_DEBUG
+CFLAGS_STLDEBUG_dynamic = $(CFLAGS_DEBUG_dynamic) -D_STLP_DEBUG
+
+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 $@
+
+
--- misc/STLport-4.5/src/gcc-freebsd.mak	2001-07-29 05:36:25.000000000 +0200
+++ misc/build/STLport-4.5/src/gcc-freebsd.mak	2008-07-18 14:13:49.000000000 +0200
@@ -5,8 +5,8 @@
 #
 # compiler
 #
-CC = gcc -pthread
-CXX = c++ -pthread -fexceptions
+CC+= ${PTHREAD_CFLAGS} -D_REENTRANT
+CXX+= ${PTHREAD_CFLAGS} -D_REENTRANT -fexceptions
 
 #
 # Basename for libraries
@@ -19,7 +19,7 @@
 #
 LINK=ar cr
 # 2.95 flag
-DYN_LINK=c++ -pthread -fexceptions -shared -o
+DYN_LINK=${CXX} ${PTHREAD_LIBS} -fexceptions -shared -o
 
 OBJEXT=o
 DYNEXT=so
@@ -39,10 +39,10 @@
 
 WARNING_FLAGS= -Wall -W -Wno-sign-compare -Wno-unused -Wno-uninitialized -ftemplate-depth-32
 
-CXXFLAGS_COMMON = -I${STLPORT_DIR} ${WARNING_FLAGS}
+CXXFLAGS_COMMON = -I${STLPORT_DIR} -DGXX_INCLUDE_PATH=${GXX_INCLUDE_PATH} ${WARNING_FLAGS} ${ARCH_FLAGS}
 
-CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -O2
-CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -O2 -fPIC
+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) ${CXXFLAGS}
+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) ${CXXFLAGS} -fPIC
 
 CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -g
 CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -g -fPIC
--- misc/STLport-4.5/stlport/config/stl_gcc.h	2001-09-04 19:10:16.000000000 +0200
+++ misc/build/STLport-4.5/stlport/config/stl_gcc.h	2008-11-14 17:23:02.000000000 +0100
@@ -7,7 +7,9 @@
 # define _STLP_USE_GLIBC
 #endif
 
+# if (__GNUC_MINOR__ < 4)  && (__GNUC__ == 3)
 #   define _STLP_NO_MEMBER_TEMPLATE_KEYWORD
+# endif
 
 # if defined(__FreeBSD__) || defined (__hpux)
 #  define _STLP_NO_WCHAR_T
@@ -51,13 +53,42 @@
 #  define _STLP_CLASS_EXPORT_DECLSPEC __attribute__((dllexport))
 #  define _STLP_CALL
 
-#  if defined (_STLP_USE_DYNAMIC_LIB)
-#   define _STLP_USE_DECLSPEC 1
-#   define _STLP_USE_TEMPLATE_EXPORT 1
-#  endif
+#  if !defined (_STLP_NO_OWN_IOSTREAMS)
+
+#    if ( defined (__DLL) || defined (_DLL) || defined (_WINDLL) || defined (_RTLDLL) \
+     || defined(_AFXDLL) || defined (_STLP_USE_DYNAMIC_LIB) ) \
+       && ! defined (_STLP_USE_STATIC_LIB)
+#      undef  _STLP_USE_DECLSPEC
+#      define _STLP_USE_DECLSPEC 1
+/*     Using dynamic library in MinGW requires _STLP_NO_CUSTOM_IO */
+#      define _STLP_NO_CUSTOM_IO
+#    endif
+
+#    ifndef _STLP_IMPORT_TEMPLATE_KEYWORD
+#     define _STLP_IMPORT_TEMPLATE_KEYWORD  extern
+#    endif
+#    define _STLP_EXPORT_TEMPLATE_KEYWORD
+
+#  endif /* _STLP_OWN_IOSTREAMS */
 
 # endif
 
+# if defined(__EMX__)
+#  define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
+#  define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
+#  define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
+#  define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
+#  define _STLP_CALL
+//YD 29/03/2006 disable automatic export (generate too many exports/imports)
+//YD 13/04/2006 back again
+//#  define _STLP_EXPORT_DECLSPEC
+//#  define _STLP_IMPORT_DECLSPEC
+//#  define _STLP_CLASS_IMPORT_DECLSPEC
+//#  define _STLP_CLASS_EXPORT_DECLSPEC
+//#  define _STLP_CALL
+#  define _STLP_USE_DECLSPEC 1
+# endif
+
 #if (defined(__linux__) /* && ! defined (_GNU_SOURCE) */ ) || \
     defined (__CYGWIN__) || defined (__MINGW32__) || !(defined (_STLP_USE_GLIBC) || defined (__sun)) 
 #   define _STLP_NO_NATIVE_MBSTATE_T      1
@@ -226,8 +257,45 @@
 
 # if (__GNUC__ >= 3)
 
-#  define _STLP_NATIVE_INCLUDE_PATH ../g++-v3
-#  define _STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH ../g++-v3/backward
+/* properly determine the STLP_NATIVE_INCLUDE_PATH */
+#ifdef i386
+#undef i386
+#define i386 i386
+#endif
+
+#ifdef linux
+#undef linux
+#define linux linux
+#endif
+
+#ifdef mips
+#undef mips
+#define mips mips
+#endif
+
+#ifdef sgi
+#undef sgi
+#define sgi sgi
+#endif
+
+#ifdef sun
+#undef sun
+#define sun sun
+#endif
+
+#ifdef sparc
+#undef sparc
+#define sparc sparc
+#endif
+
+#ifdef powerpc
+#undef powerpc
+#define powerpc powerpc
+#endif
+
+#  define _STLP_NATIVE_INCLUDE_PATH GXX_INCLUDE_PATH
+#  define _STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH \
+          GXX_INCLUDE_PATH/backward
 
 # elif (__GNUC_MINOR__ < 8)
 
@@ -312,6 +380,7 @@
 #   define _STLP_STATIC_TEMPLATE_DATA 1
 # endif
 
-
-
-
+#if defined(__sun__) && defined(__GNUC__)
+#    undef _STLP_HAS_NATIVE_FLOAT_ABS
+#    define _STLP_VENDOR_GLOBAL_CSTD       1
+#endif
--- misc/STLport-4.5/stlport/cwchar	2001-01-27 02:39:42.000000000 +0100
+++ misc/build/STLport-4.5/stlport/cwchar	2008-07-18 14:13:49.000000000 +0200
@@ -21,6 +21,9 @@
 #  include <stl/_prolog.h>
 # endif
 
+#ifdef __FreeBSD__
+#include _STLP_NATIVE_C_HEADER(wchar.h)
+#endif
 # include <stl/_cwchar.h>
 
 # if (_STLP_OUTERMOST_HEADER_ID == 0x120)
--- misc/STLport-4.5/stlport/stdexcept	2001-05-22 02:50:21.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stdexcept	2008-07-18 14:13:49.000000000 +0200
@@ -49,6 +49,13 @@
 
 _STLP_BEGIN_NAMESPACE
 
+
+#if defined( __GNUC__)
+#undef _STLP_NOTHROW_INHERENTLY
+#define _STLP_NOTHROW_INHERENTLY throw()
+#endif
+ 
+
 class _STLP_CLASS_DECLSPEC __Named_exception : public _STLP_EXCEPTION_BASE {
 public:
   __Named_exception(const string& __str) 
--- misc/STLport-4.5/stlport/stl/_bvector.h	2001-05-30 05:45:41.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_bvector.h	2008-07-18 14:13:49.000000000 +0200
@@ -34,7 +34,9 @@
 # include <stl/_vector.h>
 # endif
 
+#ifndef __WORD_BIT
 #define __WORD_BIT (int(CHAR_BIT*sizeof(unsigned int)))
+#endif
 
 _STLP_BEGIN_NAMESPACE 
 
--- misc/STLport-4.5/stlport/stl/_complex.h	2001-07-06 06:16:17.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_complex.h	2008-07-18 14:13:49.000000000 +0200
@@ -18,6 +18,10 @@
 #ifndef _STLP_internal_complex_h
 #define _STLP_internal_complex_h
 
+#if defined __GNUC__
+#pragma GCC system_header
+#endif
+
 // This header declares the template class complex, as described in 
 // in the draft C++ standard.  Single-precision complex numbers
 // are complex<float>, double-precision are complex<double>, and
--- misc/STLport-4.5/stlport/stl/_config.h	2001-09-04 19:10:18.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_config.h	2008-07-18 14:14:05.000000000 +0200
@@ -938,7 +938,7 @@
 
 #  define _STLP_EXPORT_TEMPLATE_CLASS _STLP_EXPORT template class _STLP_CLASS_DECLSPEC
 
-#  if defined (_STLP_MSVC) || defined (__ICL) 
+#  if defined (_STLP_MSVC) || defined (__ICL)  || defined (__EMX__) 
 #   define _STLP_STATIC_MEMBER_DECLSPEC
 #  else
 #   define _STLP_STATIC_MEMBER_DECLSPEC _STLP_DECLSPEC
--- misc/STLport-4.5/stlport/stl/_fstream.h	2001-05-29 01:29:41.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_fstream.h	2008-07-18 14:14:05.000000000 +0200
@@ -45,7 +45,7 @@
 #if !defined (_STLP_USE_UNIX_IO) && !defined(_STLP_USE_WIN32_IO) \
     && ! defined (_STLP_USE_UNIX_EMULATION_IO) && !defined (_STLP_USE_STDIO_IO)
 
-# if defined (_STLP_UNIX)  || defined (__CYGWIN__) 
+# if defined (_STLP_UNIX)  || defined (__CYGWIN__)  || defined (__EMX__)
 // open/close/read/write
 #  define _STLP_USE_UNIX_IO
 # elif defined (_STLP_WIN32)  && ! defined (__CYGWIN__)
@@ -107,7 +107,7 @@
   streamoff _M_get_offset(char* __first, char* __last) {
 #if defined (_STLP_UNIX) || defined (_STLP_MAC)
     return __last - __first;
-#else // defined (_STLP_WIN32) || defined (_STLP_WIN16) || defined (_STLP_DOS)
+#else // defined (_STLP_WIN32) || defined (_STLP_WIN16) || defined (_STLP_DOS) || defined (__EMX__)
     return ( (_M_openmode & ios_base::binary) != 0 )
       ? (__last - __first)
       : count(__first, __last, '\n') + (__last - __first);
@@ -119,7 +119,7 @@
   bool _M_in_binary_mode() const {
 # if defined (_STLP_UNIX) || defined (_STLP_MAC)  || defined(__BEOS__)
     return true;
-# elif defined (_STLP_WIN32) || defined (_STLP_WIN16) || defined (_STLP_DOS) || defined (_STLP_VM)
+# elif defined (_STLP_WIN32) || defined (_STLP_WIN16) || defined (_STLP_DOS) || defined (_STLP_VM) || defined (__EMX__)
     return (_M_openmode & ios_base::binary) != 0;
 # else 
 #   error "Port!"
--- misc/STLport-4.5/stlport/stl/_ios_base.h	2001-09-04 19:10:18.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_ios_base.h	2008-07-18 14:13:49.000000000 +0200
@@ -291,7 +291,7 @@
 template <class Facet>
 locale::facet* _M_get_facet(ios_base& __i, Facet*)
 {
-
+    return NULL;
 }
 
 // ----------------------------------------------------------------------
--- misc/STLport-4.5/stlport/stl/_rope.h	2001-08-06 04:21:25.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_rope.h	2008-07-18 14:13:49.000000000 +0200
@@ -1470,7 +1470,7 @@
     rope<_CharT,_Alloc> __remainder_rope;
 	    
     // gcc-2.7.2 bugs
-    typedef _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn;
+    typedef _Rope_Concat_fn<_CharT,_Alloc> __Concat_fn;
 	    
     if (0 == __n)
       return;
@@ -1510,7 +1510,7 @@
 		// One each for base_rope and __result
 #         endif
       } else {
-		__result = power(__base_rope, __exponent, _Concat_fn());
+		__result = power(__base_rope, __exponent, __Concat_fn());
       }
       if (0 != __remainder) {
 		__result += __remainder_rope;
--- misc/STLport-4.5/stlport/stl/_stdio_file.h	2001-03-19 08:01:09.000000000 +0100
+++ misc/build/STLport-4.5/stlport/stl/_stdio_file.h	2008-07-18 14:14:05.000000000 +0200
@@ -154,8 +154,45 @@
 
 # define _STLP_FILE_I_O_IDENTICAL
 
+#elif defined(__EMX__)
+
+inline int   _FILE_fd(const FILE& __f) { return __f._handle; }
+inline char* _FILE_I_begin(const FILE& __f) { return (char*) __f._buffer; }
+inline char* _FILE_I_next(const FILE& __f) { return (char*) __f._ptr; }
+inline char* _FILE_I_end(const FILE& __f) { return (char *) __f._ptr + __f._rcount; }
+inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f._rcount; }
+inline char& _FILE_I_preincr(FILE& __f) { --__f._rcount; return *(char*) (++__f._ptr); }
+inline char& _FILE_I_postincr(FILE& __f) { --__f._rcount; return *(char*) (__f._ptr++); }
+inline char& _FILE_I_predecr(FILE& __f) { ++__f._rcount; return *(char*) (--__f._ptr); }
+inline char& _FILE_I_postdecr(FILE& __f) { ++__f._rcount; return *(char*) (__f._ptr--); }
+inline void  _FILE_I_bump(FILE& __f, int __n) { __f._ptr += __n; __f._rcount -= __n; }
+inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end) {
+  __f._buffer = __begin;
+  __f._ptr  = __next;
+  __f._rcount  = __end - __next;
+}
+
+inline char* _FILE_O_begin(const FILE& __f) { return (char*) __f._buffer; }
+inline char* _FILE_O_next(const FILE& __f) { return (char*) __f._ptr; }
+inline char* _FILE_O_end(const FILE& __f) { return (char*) __f._ptr + __f._wcount; }
+inline ptrdiff_t _FILE_O_avail(const FILE& __f) { return __f._wcount; }
+inline char& _FILE_O_preincr(FILE& __f) { --__f._wcount; return *(char*) (++__f._ptr); }
+inline char& _FILE_O_postincr(FILE& __f) { --__f._wcount; return *(char*) (__f._ptr++); }
+inline char& _FILE_O_predecr(FILE& __f) { ++__f._wcount; return *(char*) (--__f._ptr); }
+inline char& _FILE_O_postdecr(FILE& __f) { ++__f._wcount; return *(char*) (__f._ptr--); }
+inline void _FILE_O_bump(FILE& __f, int __n) { __f._ptr += __n; __f._wcount -= __n; }
+inline void _FILE_O_set(FILE& __f, char* __begin, char* __next, char* __end) {
+  __f._buffer = __begin;
+  __f._ptr  = __next;
+  __f._wcount  = __end - __next;
+}
+
+
+# undef _STLP_FILE_I_O_IDENTICAL
+
 #elif defined (__CYGWIN__) || defined(__FreeBSD__)  || defined(__NetBSD__) || ( defined(__GNUC__) && defined(__APPLE__) )
 
+#include <stdio.h>
 # if 0
 inline int   _FILE_fd(const FILE& __f) { return __f._file; }
 inline char* _FILE_I_begin(const FILE& __f) { return (char*) __f._bf._base; }
--- misc/STLport-4.5/stlport/stl/_threads.h	2001-09-04 19:10:20.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_threads.h	2008-07-18 14:14:05.000000000 +0200
@@ -164,6 +164,15 @@
 #include <stdio.h>
 #  define _STLP_MUTEX_INITIALIZER = { 0 }
 #elif defined(_STLP_OS2THREADS)
+
+#define INCL_DOSSEMAPHORES
+#ifndef STL_OS2_BUILDING
+#include <svpm.h>
+#else
+#include <os2.h>
+#endif
+
+#if 0 // YD
   // This section serves to replace os2.h for VisualAge C++
   typedef unsigned long ULONG;
   #ifndef __HEV__  /* INCL_SEMAPHORE may also define HEV */
@@ -181,6 +190,8 @@
   APIRET _System DosRequestMutexSem(HMTX hmtx, ULONG ulTimeout);
   APIRET _System DosReleaseMutexSem(HMTX hmtx);
   APIRET _System DosCloseMutexSem(HMTX hmtx);
+#endif
+
 # define _STLP_MUTEX_INITIALIZER = { 0 };
 
 # endif
@@ -296,7 +307,7 @@
   inline void _M_destroy() { DosCloseMutexSem(_M_lock); }
   inline void _M_acquire_lock() {
     if(!_M_lock) _M_initialize();
-    DosRequestMutexSem(_M_lock, -1);
+    DosRequestMutexSem(_M_lock, ((ULONG)-1));
   }
   inline void _M_release_lock() { DosReleaseMutexSem(_M_lock); }
 #elif defined(_STLP_BETHREADS)
@@ -372,7 +383,7 @@
   }
   inline void _M_acquire_lock() {
     if(!_M_lock) _M_initialize();
-    DosRequestMutexSem(*(HMTX*)_M_lock, -1);
+    DosRequestMutexSem(*(HMTX*)_M_lock, ((ULONG)-1));
   }
   inline void _M_release_lock() { DosReleaseMutexSem(*(HMTX*)_M_lock); }
 # else /* No threads */
--- misc/STLport-4.5/stlport/stl/_tree.c	2001-08-25 03:14:30.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_tree.c	2008-12-02 17:14:29.035425872 +0100
@@ -404,10 +404,12 @@
   }
   iterator __j = iterator(__y);   
   if (__comp)
+  {
     if (__j == begin())     
       return pair<iterator,bool>(_M_insert(__x, __y, __v), true);
     else
       --__j;
+  }
   if (_M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
     return pair<iterator,bool>(_M_insert(__x, __y, __v), true);
   return pair<iterator,bool>(__j, false);
--- misc/STLport-4.5/stlport/stl/_valarray.h	2001-05-30 05:45:42.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_valarray.h	2008-07-18 14:13:49.000000000 +0200
@@ -19,6 +19,10 @@
 #ifndef _STLP_VALARRAY_H
 #define _STLP_VALARRAY_H
 
+#if defined __GNUC__
+#pragma GCC system_header
+#endif
+
 #ifndef _STLP_CMATH
 #include <cmath>
 #endif
--- misc/STLport-4.5/stlport/stl/c_locale.h	2001-05-31 05:24:41.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/c_locale.h	2008-07-18 14:14:05.000000000 +0200
@@ -167,6 +167,18 @@
 #  define _Locale_ALPHA  (_Locale_UPPER | _Locale_LOWER)
 #  define _Locale_PRINT  (_Locale_ALPHA | _Locale_DIGIT | _Locale_PUNCT | 0200 )
 
+# elif defined (__EMX__) // YD
+
+# define _Locale_CNTRL __CT_CNTRL
+# define _Locale_UPPER __CT_UPPER
+# define _Locale_LOWER __CT_LOWER
+# define _Locale_DIGIT __CT_DIGIT
+# define _Locale_XDIGIT __CT_XDIGIT
+# define _Locale_PUNCT __CT_PUNCT
+# define _Locale_SPACE __CT_SPACE
+# define _Locale_PRINT __CT_PRINT
+# define _Locale_ALPHA __CT_ALPHA
+
 # elif defined (__FreeBSD__)
 
 # define _Locale_CNTRL _CTYPE_C
--- misc/STLport-4.5/stlport/stl/_iosfwd.h	2001-03-28 03:19:00.000000000 +0200
+++ misc/build/STLport-4.5/stlport/stl/_iosfwd.h	2011-11-15 18:03:16.000000000 +0100
@@ -100,21 +100,39 @@
 template <class _CharT> class collate;
 template <class _CharT> class collate_byname;
 
+#ifdef OS2
+_STLP_TEMPLATE_NULL class ctype<char>;
+_STLP_TEMPLATE_NULL class ctype_byname<char>;
+_STLP_TEMPLATE_NULL class collate<char>;
+_STLP_TEMPLATE_NULL class collate_byname<char>;
+#else
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype<char>;
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype_byname<char>;
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate<char>;
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate_byname<char>;
+#endif
 
 #  ifndef _STLP_NO_WCHAR_T
+#ifdef OS2
+_STLP_TEMPLATE_NULL class ctype<wchar_t>;
+_STLP_TEMPLATE_NULL class ctype_byname<wchar_t>;
+_STLP_TEMPLATE_NULL class collate<wchar_t>;
+_STLP_TEMPLATE_NULL class collate_byname<wchar_t>;
+#else
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype<wchar_t>;
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype_byname<wchar_t>;
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate<wchar_t>;
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate_byname<wchar_t>;
+#endif
 #  endif
 
 # if !(defined (__SUNPRO_CC) && __SUNPRO_CC < 0x500 )
 // Typedefs for ordinary (narrow-character) streams.
+#ifdef OS2
+_STLP_TEMPLATE_NULL class basic_streambuf<char, char_traits<char> >;
+#else
 _STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC basic_streambuf<char, char_traits<char> >;
+#endif
 # endif
 
 typedef basic_istream<char, char_traits<char> >   istream;
