Add .gitattributes and .gitignore files and normalize line endings in the repository (#10)

This commit is contained in:
Colin Finck 2017-10-04 20:37:32 +02:00 committed by GitHub
parent c609406c2f
commit 9ebf43567d
309 changed files with 66975 additions and 66873 deletions

View file

@ -1,166 +1,166 @@
**********************************************************************
* INSTALL file for STLport *
* *
**********************************************************************
STLport is a full ANSI C++ Standard library.
This distribution contains STLport sources only, no binaries.
To use STLport iostreams, locale and complex numbers, you have to build STLport
library from sources in "build/lib" directory and link your programs with it.
Starting with 5.0 the 'wrapper' mode is not supported anymore. You cannot use native
compiler iostreams implementation with STLport STL (see doc/FAQ for explanations).
Now you have to choose between STLport iostreams or no iostreams.
==== Unpacking and installing STLport ==========
1) Unpack STLport archive to a directory accessible during compilation.
NOTE: DO NOT overwrite header files coming with the compiler, even if you made
a backup - this won't work! Most probably, you've already unpacked the archive before
reading this file though ;)
2) Make sure "stlport" directory of this distribution comes before compiler's one
in your include paths when you compile the project.
Note: for SunPro CC 5.0 and higher, there used to be special directory "stlport/SC5"
this is now obsolete, please make sure you do not use it anymore.
3) Make sure you do not rename this "stlport" subdirectory -
that may result in compilation errors.
NOTE: Your compiler should be recognized by STLport source code with no configuring.
Please edit appropriate configuration header for your compiler
directly if you have to make compiler-specific configuration changes
(see stlport/stl/config).
4) Run:
configure --help
Depending on your environment, Windows command shell or Unix like shell,
configure.bat or configure script will be run respectively. For Windows users
running configure script is mandatory in order to declare the compiler you are
going to use.
5) Go to "build/lib" subdirectory. It contains various makefiles for different
compilers and 'make' utilities (GNU Make and Microsoft's nmake supported).
Verify you can do command line compiles. IDE users may have to do something
special, like add environment variables (for Microsoft) or install
additional compiler components (for Metrowerks), before they can use their
command line compilers (see doc/README.xxxx for additionnal information).
configure script should have already created a Makefile file so that you only
have to call 'make' or 'nmake' (for some platforms GNU make might be hidden
behind 'gmake').
IMPORTANT:
If you DO NOT plan to use STLport iostreams and/or locale implementation but just
the STL, you do not have to build the library.
If you have decided to disable STLport iostreams and locale using _STLP_NO_IOSTREAMS
configuration macro in stlport/stl/config/user_config.h, you may stop reading here.
==== Building STLport iostreams library ==========
Below are step-by-step instructions to build STLport streams library. This is a general
build process description, for a more detailed one check README files in the doc folder:
5) Using appropriate make command (make or nmake), do
make clean install
to build the STLport libraries. Make files are set up to build several different
flavors - debug/nondebug, static/dynamic versions. But not all flavors will be build
by default. See build/lib/README for other make targets.
Note: 'install' target work slightly different than usual - it installs libraries into
<STLport root dir>/lib and bin catalogs, NOT IN SYSTEM CATALOG. You can do the system
install by just copying stlport and lib folder to the destination of your choise. For
example on UNIX-like platforms this can be done with the following commands:
su
tar cf - stlport | (cd /usr/local/include; tar xf -)
chmod -R a+r /usr/local/include/stlport
chown -R root:root /usr/local/include/stlport
(cd lib; tar cf - --exclude=CVS --exclude=.cvsignore .) | (cd /usr/local/lib; tar xf -)
chown -R root:root /usr/local/lib/libstlport*
exit
Note: System install is optional, most of compilers/linkers support searching for includes
and libs throught out the whole filesystem, just check your documentation on how to achieve
this.
If you use cross-compiler, you can find libraries in the <STLport root dir>/lib/<target platform>
catalog.
6) If build fails, you may choose to :
- try fixing the build ;)
- wait until somebody else will submit corresponding changes to be incorporated in next STLport
release/snapshot.
In case you do patch STLport, please submit your patches to
https://sourceforge.net/tracker/?atid=766246&group_id=146814&func=browse
==== Linking your application with STLport library ==========
7) Check the build:
Example:
- under Linux and other Unixes:
cd build/test/unit
make install
../../../bin/stl_unit_test
../../../bin-g/stl_unit_test
- under Windows:
cd build\test\unit
nmake install
cd ..\..\..\bin
stl_unit_test
stl_unit_testd
stl_unit_teststld
8) Supply the "lib" subdirectory to the library search path and add desired
library to the list of libraries to link with.
Examples (imagine you have mytest.cpp in the same directory as this file is):
With GCC : g++ -pthread -I./stlport mytest.cpp -L./lib/ -lstlport
With DEC CC : cxx -I./stlport mytest.cpp -L./lib/ -lstlport
With SUN CC : CC -mt -I./stlport mytest.cpp -L./lib/ -lstlport
.....
For several compilers supporting auto linking feature (VC++, Borland, DMC),
you do not have to specify "stlport.M.m.lib" explicitly, as it is being choosen
and forced to link automatically by "#pragma"'s in compiler config files
Appropriate version is being selected based on compiler options and _STLP_DEBUG
setting. All you have to do is to set library search path for the linker.
Example :
cl.exe /I.\stlport mytest.cpp /link /libpath:.\lib /MD
9) If you linked your application with shared STLport library (.so or .dll), please
make suze that your .so or .dll can be found by the dynamic linker.
Under Windows, the paths searched depend on the particular flavor, see the MSDN
documentation for LoadLibrary at http://msdn.microsoft.com. The easiest ways are to
either modify the PATH environment variable or copy all .dll's next to the
executable like it is done per default when unit tests executable are put next
to dlls.
Under Linux, the environment variable LD_LIBRARY_PATH can be adjusted to point
to the dir containing .so. See the manpage for ld.so for more info.
10) STLport builds only multithreaded libraries, so your application should be compiled
as multithreaded, too. Use -pthread (or -pthreads on Solaris) option for GCC, -mt for SunPro,
/MT for VC, and so on. Sometimes you should define _REENTRANT or something else, depends
upon platform/compiler. See compiler's and linker's options on command line when you build
unit tests (build/test/unit) for reference. The last is useful for ANY platform.
11) Don't hesitate to read READMEs (doc/README*, build/lib/README*, build/test/unit/README*)
and doc/FAQ.
12) Have fun!
**********************************************************************
* INSTALL file for STLport *
* *
**********************************************************************
STLport is a full ANSI C++ Standard library.
This distribution contains STLport sources only, no binaries.
To use STLport iostreams, locale and complex numbers, you have to build STLport
library from sources in "build/lib" directory and link your programs with it.
Starting with 5.0 the 'wrapper' mode is not supported anymore. You cannot use native
compiler iostreams implementation with STLport STL (see doc/FAQ for explanations).
Now you have to choose between STLport iostreams or no iostreams.
==== Unpacking and installing STLport ==========
1) Unpack STLport archive to a directory accessible during compilation.
NOTE: DO NOT overwrite header files coming with the compiler, even if you made
a backup - this won't work! Most probably, you've already unpacked the archive before
reading this file though ;)
2) Make sure "stlport" directory of this distribution comes before compiler's one
in your include paths when you compile the project.
Note: for SunPro CC 5.0 and higher, there used to be special directory "stlport/SC5"
this is now obsolete, please make sure you do not use it anymore.
3) Make sure you do not rename this "stlport" subdirectory -
that may result in compilation errors.
NOTE: Your compiler should be recognized by STLport source code with no configuring.
Please edit appropriate configuration header for your compiler
directly if you have to make compiler-specific configuration changes
(see stlport/stl/config).
4) Run:
configure --help
Depending on your environment, Windows command shell or Unix like shell,
configure.bat or configure script will be run respectively. For Windows users
running configure script is mandatory in order to declare the compiler you are
going to use.
5) Go to "build/lib" subdirectory. It contains various makefiles for different
compilers and 'make' utilities (GNU Make and Microsoft's nmake supported).
Verify you can do command line compiles. IDE users may have to do something
special, like add environment variables (for Microsoft) or install
additional compiler components (for Metrowerks), before they can use their
command line compilers (see doc/README.xxxx for additionnal information).
configure script should have already created a Makefile file so that you only
have to call 'make' or 'nmake' (for some platforms GNU make might be hidden
behind 'gmake').
IMPORTANT:
If you DO NOT plan to use STLport iostreams and/or locale implementation but just
the STL, you do not have to build the library.
If you have decided to disable STLport iostreams and locale using _STLP_NO_IOSTREAMS
configuration macro in stlport/stl/config/user_config.h, you may stop reading here.
==== Building STLport iostreams library ==========
Below are step-by-step instructions to build STLport streams library. This is a general
build process description, for a more detailed one check README files in the doc folder:
5) Using appropriate make command (make or nmake), do
make clean install
to build the STLport libraries. Make files are set up to build several different
flavors - debug/nondebug, static/dynamic versions. But not all flavors will be build
by default. See build/lib/README for other make targets.
Note: 'install' target work slightly different than usual - it installs libraries into
<STLport root dir>/lib and bin catalogs, NOT IN SYSTEM CATALOG. You can do the system
install by just copying stlport and lib folder to the destination of your choise. For
example on UNIX-like platforms this can be done with the following commands:
su
tar cf - stlport | (cd /usr/local/include; tar xf -)
chmod -R a+r /usr/local/include/stlport
chown -R root:root /usr/local/include/stlport
(cd lib; tar cf - --exclude=CVS --exclude=.cvsignore .) | (cd /usr/local/lib; tar xf -)
chown -R root:root /usr/local/lib/libstlport*
exit
Note: System install is optional, most of compilers/linkers support searching for includes
and libs throught out the whole filesystem, just check your documentation on how to achieve
this.
If you use cross-compiler, you can find libraries in the <STLport root dir>/lib/<target platform>
catalog.
6) If build fails, you may choose to :
- try fixing the build ;)
- wait until somebody else will submit corresponding changes to be incorporated in next STLport
release/snapshot.
In case you do patch STLport, please submit your patches to
https://sourceforge.net/tracker/?atid=766246&group_id=146814&func=browse
==== Linking your application with STLport library ==========
7) Check the build:
Example:
- under Linux and other Unixes:
cd build/test/unit
make install
../../../bin/stl_unit_test
../../../bin-g/stl_unit_test
- under Windows:
cd build\test\unit
nmake install
cd ..\..\..\bin
stl_unit_test
stl_unit_testd
stl_unit_teststld
8) Supply the "lib" subdirectory to the library search path and add desired
library to the list of libraries to link with.
Examples (imagine you have mytest.cpp in the same directory as this file is):
With GCC : g++ -pthread -I./stlport mytest.cpp -L./lib/ -lstlport
With DEC CC : cxx -I./stlport mytest.cpp -L./lib/ -lstlport
With SUN CC : CC -mt -I./stlport mytest.cpp -L./lib/ -lstlport
.....
For several compilers supporting auto linking feature (VC++, Borland, DMC),
you do not have to specify "stlport.M.m.lib" explicitly, as it is being choosen
and forced to link automatically by "#pragma"'s in compiler config files
Appropriate version is being selected based on compiler options and _STLP_DEBUG
setting. All you have to do is to set library search path for the linker.
Example :
cl.exe /I.\stlport mytest.cpp /link /libpath:.\lib /MD
9) If you linked your application with shared STLport library (.so or .dll), please
make suze that your .so or .dll can be found by the dynamic linker.
Under Windows, the paths searched depend on the particular flavor, see the MSDN
documentation for LoadLibrary at http://msdn.microsoft.com. The easiest ways are to
either modify the PATH environment variable or copy all .dll's next to the
executable like it is done per default when unit tests executable are put next
to dlls.
Under Linux, the environment variable LD_LIBRARY_PATH can be adjusted to point
to the dir containing .so. See the manpage for ld.so for more info.
10) STLport builds only multithreaded libraries, so your application should be compiled
as multithreaded, too. Use -pthread (or -pthreads on Solaris) option for GCC, -mt for SunPro,
/MT for VC, and so on. Sometimes you should define _REENTRANT or something else, depends
upon platform/compiler. See compiler's and linker's options on command line when you build
unit tests (build/test/unit) for reference. The last is useful for ANY platform.
11) Don't hesitate to read READMEs (doc/README*, build/lib/README*, build/test/unit/README*)
and doc/FAQ.
12) Have fun!

View file

@ -1,120 +1,120 @@
**********************************************************************
* INSTALL file for STLport 5.2 *
* *
**********************************************************************
STLport is a full ANSI C++ Standard library.
This distribution contains STLport sources only, no binaries.
To use STLport iostreams, locale and complex numbers, you have
to build STLport library from sources and link your programs with it.
Starting with 5.0 the 'wrapper' mode is not supported anymore.
You cannot use native compiler iostreams implementation with STLport STL
(see doc/FAQ for explanations).
==== Installing STLport ==========
0) DO NOT overwrite/move/rename header files coming with the compiler,
even if you made a backup---STLport need this headers and don't
override ones.
1) Run
./configure --help
read options description; if you use compiler
different from gcc, pay attention to --use-compiler-family= option.
2) Run
./configure <option>
Options here more-or-less traditional.
Note: ./configure give hints only for library build, it dosen't
create/edit any headers, check you system etc. This is simple way
to store custom options, not more. If you want to change default
behaviour of STLport, see stlport/stl/config/user_config.h and
stlport/stl/config/host.h; read the comments in this files!
Not all combinations of options healthy, you should understand
what you do. If not, keep all unchanged.
Note: you can find all recognised 'settings' in the file
build/Makefiles/gmake/config.mak
This is generated file, but only ./configure will rewrite one.
3) Run
make && make check
Only GNU Make supported! Preferred verion of GNU Make >= 3.81;
never use GNU Make before 3.79 --- build not work properly;
GNU makes >= 3.79 and < 3.81 may fail to build library/tests
properly, due to bugs; but the real results depends upon
platform.
4) If build fine, become superuser and run
make install
Note: you can use --prefix= to change installation path
(or macro DESTDIR, as usual), or even skip installation and use
STLport in-place.
==== Usage STLport ==========
1) The best way to understand how to use it, is to see on compilation,
linking, running unit tests, i.e. see on options when you do
(cd build/test/unit; make check)
2) Make sure "stlport" directory of this distribution comes before
compiler's one in your include paths (something like
-I<base install path>/stlport); never rename 'stlport' part of path!
Compilation:
c++ -pthread -fexceptions -O2 -I/usr/local/include/stlport -c -o test.o test.cc
In case of gcc, libstlport replace libstdc++ (not in all cases!)
Link, variant 1:
c++ -pthread -fexceptions -O2 -I/usr/local/include/stlport -nostdlib -o mytest \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crt1.o \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crti.o \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/crtbegin.o \
test.o \
-lstlport \
-lgcc_s -lpthread -lc -lm \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/crtend.o \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crtn.o
Of cause, names of start/stop files not hardcoded, you can locate it with
c++ -print-file-name=crt1.o
Link, variant 2:
gcc -pthread -fexceptions -O2 -I/usr/local/include/stlport -o mytest \
test.o -lstlport
If you use gcc before 3.3, you must link with libstdc++, because
language-support library (libsupc++.a) don't contain necessary
functions.
3) STLport builds only multithreaded libraries (by default), so your
application should be compiled as multithreaded, too. Use -pthread
(or -pthreads on Solaris) option for GCC, -mt for SunPro and so on.
Sometimes you should define _REENTRANT or something else, depends
upon platform/compiler. See compiler's and linker's options
on command line when you build unit tests (build/test/unit)
for reference. The last is useful for ANY platform (special
attention for Windows users).
4) Don't hesitate to read READMEs (doc/README*, build/lib/README*,
build/test/unit/README*) and doc/FAQ.
5) Have fun!
**********************************************************************
* INSTALL file for STLport 5.2 *
* *
**********************************************************************
STLport is a full ANSI C++ Standard library.
This distribution contains STLport sources only, no binaries.
To use STLport iostreams, locale and complex numbers, you have
to build STLport library from sources and link your programs with it.
Starting with 5.0 the 'wrapper' mode is not supported anymore.
You cannot use native compiler iostreams implementation with STLport STL
(see doc/FAQ for explanations).
==== Installing STLport ==========
0) DO NOT overwrite/move/rename header files coming with the compiler,
even if you made a backup---STLport need this headers and don't
override ones.
1) Run
./configure --help
read options description; if you use compiler
different from gcc, pay attention to --use-compiler-family= option.
2) Run
./configure <option>
Options here more-or-less traditional.
Note: ./configure give hints only for library build, it dosen't
create/edit any headers, check you system etc. This is simple way
to store custom options, not more. If you want to change default
behaviour of STLport, see stlport/stl/config/user_config.h and
stlport/stl/config/host.h; read the comments in this files!
Not all combinations of options healthy, you should understand
what you do. If not, keep all unchanged.
Note: you can find all recognised 'settings' in the file
build/Makefiles/gmake/config.mak
This is generated file, but only ./configure will rewrite one.
3) Run
make && make check
Only GNU Make supported! Preferred verion of GNU Make >= 3.81;
never use GNU Make before 3.79 --- build not work properly;
GNU makes >= 3.79 and < 3.81 may fail to build library/tests
properly, due to bugs; but the real results depends upon
platform.
4) If build fine, become superuser and run
make install
Note: you can use --prefix= to change installation path
(or macro DESTDIR, as usual), or even skip installation and use
STLport in-place.
==== Usage STLport ==========
1) The best way to understand how to use it, is to see on compilation,
linking, running unit tests, i.e. see on options when you do
(cd build/test/unit; make check)
2) Make sure "stlport" directory of this distribution comes before
compiler's one in your include paths (something like
-I<base install path>/stlport); never rename 'stlport' part of path!
Compilation:
c++ -pthread -fexceptions -O2 -I/usr/local/include/stlport -c -o test.o test.cc
In case of gcc, libstlport replace libstdc++ (not in all cases!)
Link, variant 1:
c++ -pthread -fexceptions -O2 -I/usr/local/include/stlport -nostdlib -o mytest \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crt1.o \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crti.o \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/crtbegin.o \
test.o \
-lstlport \
-lgcc_s -lpthread -lc -lm \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/crtend.o \
/usr/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../crtn.o
Of cause, names of start/stop files not hardcoded, you can locate it with
c++ -print-file-name=crt1.o
Link, variant 2:
gcc -pthread -fexceptions -O2 -I/usr/local/include/stlport -o mytest \
test.o -lstlport
If you use gcc before 3.3, you must link with libstdc++, because
language-support library (libsupc++.a) don't contain necessary
functions.
3) STLport builds only multithreaded libraries (by default), so your
application should be compiled as multithreaded, too. Use -pthread
(or -pthreads on Solaris) option for GCC, -mt for SunPro and so on.
Sometimes you should define _REENTRANT or something else, depends
upon platform/compiler. See compiler's and linker's options
on command line when you build unit tests (build/test/unit)
for reference. The last is useful for ANY platform (special
attention for Windows users).
4) Don't hesitate to read READMEs (doc/README*, build/lib/README*,
build/test/unit/README*) and doc/FAQ.
5) Have fun!

View file

@ -1,26 +1,26 @@
# Time-stamp: <08/06/12 14:28:42 ptr>
#
# Copyright (c) 2004-2008
# Petr Ovtchenkov
#
# Licensed under the Academic Free License version 3.0
#
SRCROOT := build
SUBDIRS := build/lib
include ${SRCROOT}/Makefiles/gmake/subdirs.mak
all install depend clean clobber distclean check::
+$(call doinsubdirs,${SUBDIRS})
distclean clean depend clobber::
+$(call doinsubdirs,build/test/unit)
release-shared install-release-shared:
+$(call doinsubdirs,${SUBDIRS})
install::
${MAKE} -C build/lib install-headers
.PHONY: all install depend clean clobber distclean check release-shared install-release-shared
# Time-stamp: <08/06/12 14:28:42 ptr>
#
# Copyright (c) 2004-2008
# Petr Ovtchenkov
#
# Licensed under the Academic Free License version 3.0
#
SRCROOT := build
SUBDIRS := build/lib
include ${SRCROOT}/Makefiles/gmake/subdirs.mak
all install depend clean clobber distclean check::
+$(call doinsubdirs,${SUBDIRS})
distclean clean depend clobber::
+$(call doinsubdirs,build/test/unit)
release-shared install-release-shared:
+$(call doinsubdirs,${SUBDIRS})
install::
${MAKE} -C build/lib install-headers
.PHONY: all install depend clean clobber distclean check release-shared install-release-shared

View file

@ -1,64 +1,64 @@
**********************************************************************
* README file for STLport 5.0 *
* *
**********************************************************************
This directory contains the STLport-5.0 release.
What's inside :
README - this file
INSTALL - installation instructions
bin - installation directory for STLport unit tests;
it may contain more subdirs, if you use
crosscompilation
build/lib - build directory for STLport library (if you use
STLport iostreams and/or locale only)
build/test/unit - build directory for regression (unit) tests
build/test/eh - build directory for exception handling tests
stlport - main STLport include directory
src - source for iostreams implementation and other parts
that aren't pure template code
lib - installation directory for STLport library (if you
use STLport iostreams and/or locale only);
it may contain more subdirs, if you use
crosscompilation
test/unit - unit (regression) tests
test/eh - exception handling test using STLport iostreams
etc - miscellanous files (ChangeLog, TODO, scripts, etc.)
GETTING STLPORT
To download the latest version of STLport, please be sure to visit
https://sourceforge.net/project/showfiles.php?group_id=146814
LEGALESE
This software is being distributed under the following terms:
*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Copyright (c) 1996-1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1997
* Moscow Center for SPARC Technology
*
* Copyright (c) 1999-2003
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* Permission to use or copy this software for any purpose is hereby granted
* without fee, provided the above notices are retained on all copies.
* Permission to modify the code and to distribute modified code is granted,
* provided the above notices are retained, and a notice that the code was
* modified is included with the above copyright notice.
*
**********************************************************************
**********************************************************************
* README file for STLport 5.0 *
* *
**********************************************************************
This directory contains the STLport-5.0 release.
What's inside :
README - this file
INSTALL - installation instructions
bin - installation directory for STLport unit tests;
it may contain more subdirs, if you use
crosscompilation
build/lib - build directory for STLport library (if you use
STLport iostreams and/or locale only)
build/test/unit - build directory for regression (unit) tests
build/test/eh - build directory for exception handling tests
stlport - main STLport include directory
src - source for iostreams implementation and other parts
that aren't pure template code
lib - installation directory for STLport library (if you
use STLport iostreams and/or locale only);
it may contain more subdirs, if you use
crosscompilation
test/unit - unit (regression) tests
test/eh - exception handling test using STLport iostreams
etc - miscellanous files (ChangeLog, TODO, scripts, etc.)
GETTING STLPORT
To download the latest version of STLport, please be sure to visit
https://sourceforge.net/project/showfiles.php?group_id=146814
LEGALESE
This software is being distributed under the following terms:
*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Copyright (c) 1996-1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1997
* Moscow Center for SPARC Technology
*
* Copyright (c) 1999-2003
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* Permission to use or copy this software for any purpose is hereby granted
* without fee, provided the above notices are retained on all copies.
* Permission to modify the code and to distribute modified code is granted,
* provided the above notices are retained, and a notice that the code was
* modified is included with the above copyright notice.
*
**********************************************************************

View file

@ -1,5 +1,5 @@
# -*- makefile -*- Time-stamp: <02/04/17 11:04:32 ptr>
# $Id$
PRGNAME = prog
SRC_CC = prog.cc
# -*- makefile -*- Time-stamp: <02/04/17 11:04:32 ptr>
# $Id$
PRGNAME = prog
SRC_CC = prog.cc

View file

@ -1,26 +1,26 @@
# -*- Makefile -*- Time-stamp: <03/07/09 18:08:47 ptr>
# $Id$
SRCROOT := ../../..
COMPILER_NAME := gcc
include Makefile.inc
include ${SRCROOT}/Makefiles/top.mak
INCLUDES += -I$(SRCROOT)/include -I$(STLPORT_INCLUDE_DIR)
release-shared: LDSEARCH = -L${STLPORT_LIB_DIR} -L${CoMT_LIB_DIR}
stldbg-shared: LDSEARCH = -L${STLPORT_LIB_DIR} -L${CoMT_LIB_DIR_STLDBG}
dbg-shared: LDSEARCH = -L${STLPORT_LIB_DIR} -L${CoMT_LIB_DIR_DBG}
ifeq ($(OSNAME),sunos)
release-shared : LDLIBS = -lstlport_gcc -lrt
stldbg-shared : LDLIBS = -lstlport_gcc_stldebug -lrt
dbg-shared : LDLIBS = -lstlport_gcc -lrt
else
release-shared : LDLIBS = -lstlport_gcc -lxmt_gcc
stldbg-shared : LDLIBS = -lstlport_gcc_stldebug -lxmt_gcc_stl-g
dbg-shared : LDLIBS = -lstlport_gcc -lxmt_gcc-g
endif
# -*- Makefile -*- Time-stamp: <03/07/09 18:08:47 ptr>
# $Id$
SRCROOT := ../../..
COMPILER_NAME := gcc
include Makefile.inc
include ${SRCROOT}/Makefiles/top.mak
INCLUDES += -I$(SRCROOT)/include -I$(STLPORT_INCLUDE_DIR)
release-shared: LDSEARCH = -L${STLPORT_LIB_DIR} -L${CoMT_LIB_DIR}
stldbg-shared: LDSEARCH = -L${STLPORT_LIB_DIR} -L${CoMT_LIB_DIR_STLDBG}
dbg-shared: LDSEARCH = -L${STLPORT_LIB_DIR} -L${CoMT_LIB_DIR_DBG}
ifeq ($(OSNAME),sunos)
release-shared : LDLIBS = -lstlport_gcc -lrt
stldbg-shared : LDLIBS = -lstlport_gcc_stldebug -lrt
dbg-shared : LDLIBS = -lstlport_gcc -lrt
else
release-shared : LDLIBS = -lstlport_gcc -lxmt_gcc
stldbg-shared : LDLIBS = -lstlport_gcc_stldebug -lxmt_gcc_stl-g
dbg-shared : LDLIBS = -lstlport_gcc -lxmt_gcc-g
endif

View file

@ -1,30 +1,30 @@
# -*- Makefile -*- Time-stamp: <03/07/09 18:08:47 ptr>
# $Id$
SRCROOT := ../..
COMPILER_NAME := gcc
STLPORT_LIB_DIR = /export/home/ptr/STLport.lab/STLport/lib
STLPORT_INCLUDE_DIR = /export/home/ptr/STLport.lab/STLport/stlport
include Makefile.inc
include ${SRCROOT}/Makefiles/top.mak
INCLUDES += -I$(SRCROOT)/include -I$(STLPORT_INCLUDE_DIR)
ifeq ($(OSNAME),linux)
release-shared: LDSEARCH = -L${STLPORT_LIB_DIR}
stldbg-shared: LDSEARCH = -L${STLPORT_LIB_DIR}
dbg-shared: LDSEARCH = -L${STLPORT_LIB_DIR}
endif
ifeq ($(OSNAME),sunos)
release-shared : LDLIBS = -lstlport_gcc -lrt
stldbg-shared : LDLIBS = -lstlport_gcc_stldebug -lrt
dbg-shared : LDLIBS = -lstlport_gcc -lrt
else
release-shared : LDLIBS = -lstlport_gcc
stldbg-shared : LDLIBS = -lstlport_gcc_stldebug
dbg-shared : LDLIBS = -lstlport_gcc
endif
# -*- Makefile -*- Time-stamp: <03/07/09 18:08:47 ptr>
# $Id$
SRCROOT := ../..
COMPILER_NAME := gcc
STLPORT_LIB_DIR = /export/home/ptr/STLport.lab/STLport/lib
STLPORT_INCLUDE_DIR = /export/home/ptr/STLport.lab/STLport/stlport
include Makefile.inc
include ${SRCROOT}/Makefiles/top.mak
INCLUDES += -I$(SRCROOT)/include -I$(STLPORT_INCLUDE_DIR)
ifeq ($(OSNAME),linux)
release-shared: LDSEARCH = -L${STLPORT_LIB_DIR}
stldbg-shared: LDSEARCH = -L${STLPORT_LIB_DIR}
dbg-shared: LDSEARCH = -L${STLPORT_LIB_DIR}
endif
ifeq ($(OSNAME),sunos)
release-shared : LDLIBS = -lstlport_gcc -lrt
stldbg-shared : LDLIBS = -lstlport_gcc_stldebug -lrt
dbg-shared : LDLIBS = -lstlport_gcc -lrt
else
release-shared : LDLIBS = -lstlport_gcc
stldbg-shared : LDLIBS = -lstlport_gcc_stldebug
dbg-shared : LDLIBS = -lstlport_gcc
endif

View file

@ -1,8 +1,8 @@
# -*- Makefile -*- Time-stamp: <03/07/05 21:43:31 ptr>
# $Id$
LIBNAME = mylib
MAJOR = 1
MINOR = 0
PATCH = 0
SRC_CC = file1.cc file2.cc
# -*- Makefile -*- Time-stamp: <03/07/05 21:43:31 ptr>
# $Id$
LIBNAME = mylib
MAJOR = 1
MINOR = 0
PATCH = 0
SRC_CC = file1.cc file2.cc

View file

@ -1,52 +1,52 @@
# -*- Makefile -*- Time-stamp: <06/11/13 23:03:45 ptr>
SRCROOT := ../../..
EXTRA_POST := checks
EXTRA_POST_DBG := checks-dbg
EXTRA_POST_STLDBG := checks-stldbg
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
ifndef WITHOUT_STLPORT
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
endif
# Check that we really use C compiler here
define ldd_check
r=`ldd $(1) | grep $(2)`; if [ "$$r" != "" ]; then exit 1; fi
endef
checks:
file ${PRG} | grep ELF >/dev/null || exit 1
${call ldd_check,${PRG},stlport}
${call ldd_check,${PRG},stdc++}
${call ldd_check,${PRG},gcc_s}
@echo
@echo release ok
@echo
checks-dbg:
file ${PRG_DBG} | grep ELF >/dev/null || exit 1
${call ldd_check,${PRG_DBG},stlport}
${call ldd_check,${PRG_DBG},stdc++}
${call ldd_check,${PRG_DBG},gcc_s}
@echo
@echo dbg ok
@echo
ifndef WITHOUT_STLPORT
checks-stldbg:
file ${PRG_STLDBG} | grep ELF >/dev/null || exit 1
${call ldd_check,${PRG_STLDBG},stlport}
${call ldd_check,${PRG_STLDBG},stdc++}
${call ldd_check,${PRG_STLDBG},gcc_s}
@echo
@echo stldbg ok
@echo
endif
PHONY += checks checks-dbg checks-stldbg
# -*- Makefile -*- Time-stamp: <06/11/13 23:03:45 ptr>
SRCROOT := ../../..
EXTRA_POST := checks
EXTRA_POST_DBG := checks-dbg
EXTRA_POST_STLDBG := checks-stldbg
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
ifndef WITHOUT_STLPORT
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
endif
# Check that we really use C compiler here
define ldd_check
r=`ldd $(1) | grep $(2)`; if [ "$$r" != "" ]; then exit 1; fi
endef
checks:
file ${PRG} | grep ELF >/dev/null || exit 1
${call ldd_check,${PRG},stlport}
${call ldd_check,${PRG},stdc++}
${call ldd_check,${PRG},gcc_s}
@echo
@echo release ok
@echo
checks-dbg:
file ${PRG_DBG} | grep ELF >/dev/null || exit 1
${call ldd_check,${PRG_DBG},stlport}
${call ldd_check,${PRG_DBG},stdc++}
${call ldd_check,${PRG_DBG},gcc_s}
@echo
@echo dbg ok
@echo
ifndef WITHOUT_STLPORT
checks-stldbg:
file ${PRG_STLDBG} | grep ELF >/dev/null || exit 1
${call ldd_check,${PRG_STLDBG},stlport}
${call ldd_check,${PRG_STLDBG},stdc++}
${call ldd_check,${PRG_STLDBG},gcc_s}
@echo
@echo stldbg ok
@echo
endif
PHONY += checks checks-dbg checks-stldbg

View file

@ -1,4 +1,4 @@
# -*- makefile -*- Time-stamp: <04/01/12 15:37:40 ptr>
PRGNAME = test
SRC_C = test.c
# -*- makefile -*- Time-stamp: <04/01/12 15:37:40 ptr>
PRGNAME = test
SRC_C = test.c

View file

@ -1,36 +1,36 @@
# -*- Makefile -*- Time-stamp: <06/11/13 23:03:45 ptr>
SRCROOT := ../../..
EXTRA_POST := checks
EXTRA_POST_DBG := checks-dbg
EXTRA_POST_STLDBG := checks-stldbg
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
ifndef WITHOUT_STLPORT
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
endif
checks:
file ${PRG} | grep ELF >/dev/null || exit 1
@echo
@echo release ok
@echo
checks-dbg:
file ${PRG_DBG} | grep ELF >/dev/null || exit 1
@echo
@echo dbg ok
@echo
ifndef WITHOUT_STLPORT
checks-stldbg:
file ${PRG_STLDBG} | grep ELF >/dev/null || exit 1
@echo
@echo stldbg ok
@echo
endif
PHONY += checks checks-dbg checks-stldbg
# -*- Makefile -*- Time-stamp: <06/11/13 23:03:45 ptr>
SRCROOT := ../../..
EXTRA_POST := checks
EXTRA_POST_DBG := checks-dbg
EXTRA_POST_STLDBG := checks-stldbg
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
ifndef WITHOUT_STLPORT
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
endif
checks:
file ${PRG} | grep ELF >/dev/null || exit 1
@echo
@echo release ok
@echo
checks-dbg:
file ${PRG_DBG} | grep ELF >/dev/null || exit 1
@echo
@echo dbg ok
@echo
ifndef WITHOUT_STLPORT
checks-stldbg:
file ${PRG_STLDBG} | grep ELF >/dev/null || exit 1
@echo
@echo stldbg ok
@echo
endif
PHONY += checks checks-dbg checks-stldbg

View file

@ -1,5 +1,5 @@
# -*- makefile -*- Time-stamp: <04/01/12 15:37:40 ptr>
PRGNAME = test
#SRC_C = test.c
SRC_CC = test.cc
# -*- makefile -*- Time-stamp: <04/01/12 15:37:40 ptr>
PRGNAME = test
#SRC_C = test.c
SRC_CC = test.cc

View file

@ -1,4 +1,4 @@
int main()
{
return 0;
}
int main()
{
return 0;
}

View file

@ -1,38 +1,38 @@
# -*- Makefile -*- Time-stamp: <06/11/13 23:03:45 ptr>
SRCROOT := ../../..
# EXTRA_POST := check-release-shared
# EXTRA_POST_DBG := check-dbg-shared
# EXTRA_POST_STLDBG := check-stldbg-shared
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
ifndef WITHOUT_STLPORT
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
endif
check: check-release-shared check-dbg-shared check-stldbg-shared
check-release-shared: release-shared
@echo Running 2 test cases...
@file ${test2_PRG} | grep ELF >/dev/null || exit 1
@file ${test3_PRG} | grep ELF >/dev/null || exit 1
@echo "*** No errors detected"
check-dbg-shared: dbg-shared
@echo Running 2 test cases...
@file ${test2_PRG_DBG} | grep ELF >/dev/null || exit 1
@file ${test3_PRG_DBG} | grep ELF >/dev/null || exit 1
@echo "*** No errors detected"
ifndef WITHOUT_STLPORT
check-stldbg-shared: stldbg-shared
@echo Running 2 test cases...
@file ${test2_PRG_STLDBG} | grep ELF >/dev/null || exit 1
@file ${test3_PRG_STLDBG} | grep ELF >/dev/null || exit 1
@echo "*** No errors detected"
endif
PHONY += check check-release-shared check-dbg-shared check-stldbg-shared
# -*- Makefile -*- Time-stamp: <06/11/13 23:03:45 ptr>
SRCROOT := ../../..
# EXTRA_POST := check-release-shared
# EXTRA_POST_DBG := check-dbg-shared
# EXTRA_POST_STLDBG := check-stldbg-shared
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
ifndef WITHOUT_STLPORT
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
endif
check: check-release-shared check-dbg-shared check-stldbg-shared
check-release-shared: release-shared
@echo Running 2 test cases...
@file ${test2_PRG} | grep ELF >/dev/null || exit 1
@file ${test3_PRG} | grep ELF >/dev/null || exit 1
@echo "*** No errors detected"
check-dbg-shared: dbg-shared
@echo Running 2 test cases...
@file ${test2_PRG_DBG} | grep ELF >/dev/null || exit 1
@file ${test3_PRG_DBG} | grep ELF >/dev/null || exit 1
@echo "*** No errors detected"
ifndef WITHOUT_STLPORT
check-stldbg-shared: stldbg-shared
@echo Running 2 test cases...
@file ${test2_PRG_STLDBG} | grep ELF >/dev/null || exit 1
@file ${test3_PRG_STLDBG} | grep ELF >/dev/null || exit 1
@echo "*** No errors detected"
endif
PHONY += check check-release-shared check-dbg-shared check-stldbg-shared

View file

@ -1,7 +1,7 @@
# -*- makefile -*- Time-stamp: <04/01/12 15:37:40 ptr>
PRGNAMES = test2 test3
#SRC_C = test.c
SRC_CC = test.cc
test2_SRC_CC = test2.cc
test3_SRC_CC = test3.cc test31.cc
# -*- makefile -*- Time-stamp: <04/01/12 15:37:40 ptr>
PRGNAMES = test2 test3
#SRC_C = test.c
SRC_CC = test.cc
test2_SRC_CC = test2.cc
test3_SRC_CC = test3.cc test31.cc

View file

@ -1,4 +1,4 @@
int main()
{
return 2;
}
int main()
{
return 2;
}

View file

@ -1,4 +1,4 @@
int main()
{
return 3;
}
int main()
{
return 3;
}

View file

@ -1,4 +1,4 @@
int f()
{
return 3;
}
int f()
{
return 3;
}

View file

@ -1,42 +1,42 @@
# -*- Makefile -*- Time-stamp: <06/11/13 23:03:45 ptr>
SRCROOT := ../../..
EXTRA_POST := checks
EXTRA_POST_DBG := checks-dbg
EXTRA_POST_STLDBG := checks-stldbg
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
ifndef WITHOUT_STLPORT
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
endif
checks:
file ${PRG} | grep ELF >/dev/null || exit 1
file ${test2_PRG} | grep ELF >/dev/null || exit 1
file ${test3_PRG} | grep ELF >/dev/null || exit 1
@echo
@echo release ok
@echo
checks-dbg:
file ${PRG_DBG} | grep ELF >/dev/null || exit 1
file ${test2_PRG_DBG} | grep ELF >/dev/null || exit 1
file ${test3_PRG_DBG} | grep ELF >/dev/null || exit 1
@echo
@echo dbg ok
@echo
ifndef WITHOUT_STLPORT
checks-stldbg:
file ${PRG_STLDBG} | grep ELF >/dev/null || exit 1
file ${test2_PRG_STLDBG} | grep ELF >/dev/null || exit 1
file ${test3_PRG_STLDBG} | grep ELF >/dev/null || exit 1
@echo
@echo stldbg ok
@echo
endif
PHONY += checks checks-dbg checks-stldbg
# -*- Makefile -*- Time-stamp: <06/11/13 23:03:45 ptr>
SRCROOT := ../../..
EXTRA_POST := checks
EXTRA_POST_DBG := checks-dbg
EXTRA_POST_STLDBG := checks-stldbg
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
ifndef WITHOUT_STLPORT
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
endif
checks:
file ${PRG} | grep ELF >/dev/null || exit 1
file ${test2_PRG} | grep ELF >/dev/null || exit 1
file ${test3_PRG} | grep ELF >/dev/null || exit 1
@echo
@echo release ok
@echo
checks-dbg:
file ${PRG_DBG} | grep ELF >/dev/null || exit 1
file ${test2_PRG_DBG} | grep ELF >/dev/null || exit 1
file ${test3_PRG_DBG} | grep ELF >/dev/null || exit 1
@echo
@echo dbg ok
@echo
ifndef WITHOUT_STLPORT
checks-stldbg:
file ${PRG_STLDBG} | grep ELF >/dev/null || exit 1
file ${test2_PRG_STLDBG} | grep ELF >/dev/null || exit 1
file ${test3_PRG_STLDBG} | grep ELF >/dev/null || exit 1
@echo
@echo stldbg ok
@echo
endif
PHONY += checks checks-dbg checks-stldbg

View file

@ -1,8 +1,8 @@
# -*- makefile -*- Time-stamp: <04/01/12 15:37:40 ptr>
PRGNAME = test
PRGNAMES = test2 test3
#SRC_C = test.c
SRC_CC = test.cc
test2_SRC_CC = test2.cc
test3_SRC_CC = test3.cc test31.cc
# -*- makefile -*- Time-stamp: <04/01/12 15:37:40 ptr>
PRGNAME = test
PRGNAMES = test2 test3
#SRC_C = test.c
SRC_CC = test.cc
test2_SRC_CC = test2.cc
test3_SRC_CC = test3.cc test31.cc

View file

@ -1,4 +1,4 @@
int main()
{
return 0;
}
int main()
{
return 0;
}

View file

@ -1,4 +1,4 @@
int main()
{
return 2;
}
int main()
{
return 2;
}

View file

@ -1,4 +1,4 @@
int main()
{
return 3;
}
int main()
{
return 3;
}

View file

@ -1,4 +1,4 @@
int f()
{
return 3;
}
int f()
{
return 3;
}

View file

@ -1,18 +1,18 @@
# -*- Makefile -*- Time-stamp: <06/11/10 16:23:01 ptr>
SRCROOT := ../../..
EXTRA_POST := checks
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
INCLUDES += -I./include
checks:
file ${SO_NAME_OUTxxx} | grep ELF >/dev/null || exit 1
file ${SO_NAME_OUTxx} | grep link >/dev/null || exit 1
file ${SO_NAME_OUTx} | grep link >/dev/null || exit 1
file ${SO_NAME_OUT} | grep link >/dev/null || exit 1
PHONY += checks
# -*- Makefile -*- Time-stamp: <06/11/10 16:23:01 ptr>
SRCROOT := ../../..
EXTRA_POST := checks
include Makefile.inc
include ${SRCROOT}/Makefiles/gmake/top.mak
INCLUDES += -I./include
checks:
file ${SO_NAME_OUTxxx} | grep ELF >/dev/null || exit 1
file ${SO_NAME_OUTxx} | grep link >/dev/null || exit 1
file ${SO_NAME_OUTx} | grep link >/dev/null || exit 1
file ${SO_NAME_OUT} | grep link >/dev/null || exit 1
PHONY += checks

View file

@ -1,8 +1,8 @@
# -*- Makefile -*- Time-stamp: <06/11/29 01:59:50 ptr>
LIBNAME = test
MAJOR = 0
MINOR = 1
PATCH = 2
SRC_CC = test_cc.cc
SRC_C = test_c.c
# -*- Makefile -*- Time-stamp: <06/11/29 01:59:50 ptr>
LIBNAME = test
MAJOR = 0
MINOR = 1
PATCH = 2
SRC_CC = test_cc.cc
SRC_C = test_c.c

View file

@ -1,4 +1,4 @@
int g()
{
return 0;
}
int g()
{
return 0;
}

View file

@ -1,4 +1,4 @@
int f()
{
return 0;
}
int f()
{
return 0;
}

View file

@ -1,41 +1,41 @@
# -*- Makefile -*- Time-stamp: <06/09/08 11:50:49 ptr>
LIBNAME = stlport
MAJOR = 5
MINOR = 2
PATCH = 1
SRC_CPP = ../../src/dll_main.cpp \
../../src/fstream.cpp \
../../src/strstream.cpp \
../../src/sstream.cpp \
../../src/ios.cpp \
../../src/stdio_streambuf.cpp \
../../src/istream.cpp \
../../src/ostream.cpp \
../../src/iostream.cpp \
../../src/codecvt.cpp \
../../src/collate.cpp \
../../src/ctype.cpp \
../../src/monetary.cpp \
../../src/num_get.cpp \
../../src/num_put.cpp \
../../src/num_get_float.cpp \
../../src/num_put_float.cpp \
../../src/numpunct.cpp \
../../src/time_facets.cpp \
../../src/messages.cpp \
../../src/locale.cpp \
../../src/locale_impl.cpp \
../../src/locale_catalog.cpp \
../../src/facets_byname.cpp \
../../src/complex.cpp \
../../src/complex_io.cpp \
../../src/complex_trig.cpp \
../../src/string.cpp \
../../src/bitset.cpp \
../../src/allocators.cpp
SRC_C = ../../src/c_locale.c \
../../src/cxa.c
SRC_RC = ../../src/stlport.rc
# -*- Makefile -*- Time-stamp: <06/09/08 11:50:49 ptr>
LIBNAME = stlport
MAJOR = 5
MINOR = 2
PATCH = 1
SRC_CPP = ../../src/dll_main.cpp \
../../src/fstream.cpp \
../../src/strstream.cpp \
../../src/sstream.cpp \
../../src/ios.cpp \
../../src/stdio_streambuf.cpp \
../../src/istream.cpp \
../../src/ostream.cpp \
../../src/iostream.cpp \
../../src/codecvt.cpp \
../../src/collate.cpp \
../../src/ctype.cpp \
../../src/monetary.cpp \
../../src/num_get.cpp \
../../src/num_put.cpp \
../../src/num_get_float.cpp \
../../src/num_put_float.cpp \
../../src/numpunct.cpp \
../../src/time_facets.cpp \
../../src/messages.cpp \
../../src/locale.cpp \
../../src/locale_impl.cpp \
../../src/locale_catalog.cpp \
../../src/facets_byname.cpp \
../../src/complex.cpp \
../../src/complex_io.cpp \
../../src/complex_trig.cpp \
../../src/string.cpp \
../../src/bitset.cpp \
../../src/allocators.cpp
SRC_C = ../../src/c_locale.c \
../../src/cxa.c
SRC_RC = ../../src/stlport.rc

View file

@ -1,85 +1,85 @@
Quick start.
GNU Make (Linux, OpenBSD, FreeBSD, CygWin, etc.), with gcc:
make -f gcc.mak depend
make -f gcc.mak install
GNU Make (SunOS), with SunPro CC:
make -f CC.mak depend
make -f CC.mak install
Microsoft NMAKE (MS Windows), with VC6:
nmake /fmsvc.mak install
Make system goals.
- all source files declared in one place (for all platforms and
compilers); the same is for base library (application) name and
version.
- derive object filenames from source filenames in make system
- source files may be situated in few catalogs
- avoid information duplication, if possible
- support cross-compilation
Make targets.
release-static
build STLport as static library
dbg-static
build STLport as static library (with debug information)
stldbg-static
build STLport as static library (STLP_DEBUG mode, with debug information)
release-shared
build STLport as dynamic (shared) library
dbg-shared
STLport as dynamic (shared) library (with debug information)
stldbg-shared
build STLport as dynamic (shared) library (STLP_DEBUG mode, with
debug information)
all (default)
cumulative target for release,dbg,stldbg -shared on Unix-lile platforms
and plus release,dbg,stldbg -static on Windows.
depend
create dependency files (for performance reasons dependency not created
during compilation process); this target absent for MS NMAKE (due to pure
scripting opportunities)
install-release-shared
install-dbg-shared
install-stldbg-shared
install-release-static
install-dbg-static
install-stldbg-static
build and install appropriate libraries and related files, into
'STLport/lib' and 'STLport/bin' (../../lib, relative position of this file)
install
cumulative target for install-*-shared on Unix-like platforms and
install-*-* on Windows.
clean
remove all intermediate files
Quick start.
GNU Make (Linux, OpenBSD, FreeBSD, CygWin, etc.), with gcc:
make -f gcc.mak depend
make -f gcc.mak install
GNU Make (SunOS), with SunPro CC:
make -f CC.mak depend
make -f CC.mak install
Microsoft NMAKE (MS Windows), with VC6:
nmake /fmsvc.mak install
Make system goals.
- all source files declared in one place (for all platforms and
compilers); the same is for base library (application) name and
version.
- derive object filenames from source filenames in make system
- source files may be situated in few catalogs
- avoid information duplication, if possible
- support cross-compilation
Make targets.
release-static
build STLport as static library
dbg-static
build STLport as static library (with debug information)
stldbg-static
build STLport as static library (STLP_DEBUG mode, with debug information)
release-shared
build STLport as dynamic (shared) library
dbg-shared
STLport as dynamic (shared) library (with debug information)
stldbg-shared
build STLport as dynamic (shared) library (STLP_DEBUG mode, with
debug information)
all (default)
cumulative target for release,dbg,stldbg -shared on Unix-lile platforms
and plus release,dbg,stldbg -static on Windows.
depend
create dependency files (for performance reasons dependency not created
during compilation process); this target absent for MS NMAKE (due to pure
scripting opportunities)
install-release-shared
install-dbg-shared
install-stldbg-shared
install-release-static
install-dbg-static
install-stldbg-static
build and install appropriate libraries and related files, into
'STLport/lib' and 'STLport/bin' (../../lib, relative position of this file)
install
cumulative target for install-*-shared on Unix-like platforms and
install-*-* on Windows.
clean
remove all intermediate files

View file

@ -1,7 +1,7 @@
# -*- Makefile -*- Time-stamp: <05/05/16 22:07:32 ptr>
LIBNAME = cxa
MAJOR = 0
MINOR = 0
PATCH = 1
SRC_C = ../../../src/cxa.c
# -*- Makefile -*- Time-stamp: <05/05/16 22:07:32 ptr>
LIBNAME = cxa
MAJOR = 0
MINOR = 0
PATCH = 1
SRC_C = ../../../src/cxa.c

View file

@ -1,28 +1,28 @@
# -*- makefile -*- Time-stamp: <05/03/29 23:39:01 ptr>
# $Id$
# this is the version number of needed STLport library for linking
LIBMAJOR = 5
LIBMINOR = 2
PRGNAME = eh_test
SRC_CPP = ../../../test/eh/TestClass.cpp \
../../../test/eh/main.cpp \
../../../test/eh/nc_alloc.cpp \
../../../test/eh/random_number.cpp \
../../../test/eh/test_algo.cpp \
../../../test/eh/test_algobase.cpp \
../../../test/eh/test_list.cpp \
../../../test/eh/test_slist.cpp \
../../../test/eh/test_bit_vector.cpp \
../../../test/eh/test_vector.cpp \
../../../test/eh/test_deque.cpp \
../../../test/eh/test_set.cpp \
../../../test/eh/test_map.cpp \
../../../test/eh/test_hash_map.cpp \
../../../test/eh/test_hash_set.cpp \
../../../test/eh/test_rope.cpp \
../../../test/eh/test_string.cpp \
../../../test/eh/test_bitset.cpp \
../../../test/eh/test_valarray.cpp
# -*- makefile -*- Time-stamp: <05/03/29 23:39:01 ptr>
# $Id$
# this is the version number of needed STLport library for linking
LIBMAJOR = 5
LIBMINOR = 2
PRGNAME = eh_test
SRC_CPP = ../../../test/eh/TestClass.cpp \
../../../test/eh/main.cpp \
../../../test/eh/nc_alloc.cpp \
../../../test/eh/random_number.cpp \
../../../test/eh/test_algo.cpp \
../../../test/eh/test_algobase.cpp \
../../../test/eh/test_list.cpp \
../../../test/eh/test_slist.cpp \
../../../test/eh/test_bit_vector.cpp \
../../../test/eh/test_vector.cpp \
../../../test/eh/test_deque.cpp \
../../../test/eh/test_set.cpp \
../../../test/eh/test_map.cpp \
../../../test/eh/test_hash_map.cpp \
../../../test/eh/test_hash_set.cpp \
../../../test/eh/test_rope.cpp \
../../../test/eh/test_string.cpp \
../../../test/eh/test_bitset.cpp \
../../../test/eh/test_valarray.cpp

View file

@ -1,190 +1,190 @@
# -*- makefile -*- Time-stamp: <07/06/27 20:39:05 ptr>
# this is the version number of needed STLport library for linking
LIBMAJOR = 5
LIBMINOR = 2
PRGNAME = stl_unit_test
SRC_CPP = ../../../test/unit/cppunit/test_main.cpp \
../../../test/unit/accum_test.cpp \
../../../test/unit/adj_test.cpp \
../../../test/unit/advance_test.cpp \
../../../test/unit/alg_test.cpp \
../../../test/unit/algorithm_header_test.cpp \
../../../test/unit/allocator_test.cpp \
../../../test/unit/bcompos_test.cpp \
../../../test/unit/bind_test.cpp \
../../../test/unit/binsert_test.cpp \
../../../test/unit/bitset_test.cpp \
../../../test/unit/bitset_header_test.cpp \
../../../test/unit/bnegate_test.cpp \
../../../test/unit/boost_check.cpp \
../../../test/unit/bound_test.cpp \
../../../test/unit/bsearch_test.cpp \
../../../test/unit/bvector_test.cpp \
../../../test/unit/cassert_header_test.cpp \
../../../test/unit/cctype_header_test.cpp \
../../../test/unit/cerrno_header_test.cpp \
../../../test/unit/cfloat_header_test.cpp \
../../../test/unit/ciso646_header_test.cpp \
../../../test/unit/climits_header_test.cpp \
../../../test/unit/clocale_header_test.cpp \
../../../test/unit/cmath_test.cpp \
../../../test/unit/cmath_header_test.cpp \
../../../test/unit/codecvt_test.cpp \
../../../test/unit/collate_facets_test.cpp \
../../../test/unit/complex_header_test.cpp \
../../../test/unit/config_test.cpp \
../../../test/unit/copy_test.cpp \
../../../test/unit/count_test.cpp \
../../../test/unit/csetjmp_header_test.cpp \
../../../test/unit/setjmp_header_test2.cpp \
../../../test/unit/csignal_header_test.cpp \
../../../test/unit/cstdarg_header_test.cpp \
../../../test/unit/cstddef_header_test.cpp \
../../../test/unit/cstdio_header_test.cpp \
../../../test/unit/cstdlib_header_test.cpp \
../../../test/unit/cstring_test.cpp \
../../../test/unit/cstring_header_test.cpp \
../../../test/unit/ctime_header_test.cpp \
../../../test/unit/ctype_facets_test.cpp \
../../../test/unit/cwchar_header_test.cpp \
../../../test/unit/cwctype_header_test.cpp \
../../../test/unit/deque_test.cpp \
../../../test/unit/deque_header_test.cpp \
../../../test/unit/divides_test.cpp \
../../../test/unit/equal_test.cpp \
../../../test/unit/exception_test.cpp \
../../../test/unit/exception_header_test.cpp \
../../../test/unit/epilog_test.cpp \
../../../test/unit/fill_test.cpp \
../../../test/unit/find_test.cpp \
../../../test/unit/finsert_test.cpp \
../../../test/unit/foreach_test.cpp \
../../../test/unit/fstream_test.cpp \
../../../test/unit/fstream_header_test.cpp \
../../../test/unit/func_test.cpp \
../../../test/unit/functional_header_test.cpp \
../../../test/unit/generator_test.cpp \
../../../test/unit/greater_test.cpp \
../../../test/unit/hash_test.cpp \
../../../test/unit/heap_test.cpp \
../../../test/unit/includes_test.cpp \
../../../test/unit/innerprod_test.cpp \
../../../test/unit/inplace_test.cpp \
../../../test/unit/insert_test.cpp \
../../../test/unit/ioiter_test.cpp \
../../../test/unit/iomanip_header_test.cpp \
../../../test/unit/ios_header_test.cpp \
../../../test/unit/iosfwd_header_test.cpp \
../../../test/unit/iostream_header_test.cpp \
../../../test/unit/iostream_test.cpp \
../../../test/unit/iota_test.cpp \
../../../test/unit/istmit_test.cpp \
../../../test/unit/istream_header_test.cpp \
../../../test/unit/iter_test.cpp \
../../../test/unit/iterator_header_test.cpp \
../../../test/unit/less_test.cpp \
../../../test/unit/lexcmp_test.cpp \
../../../test/unit/limits_test.cpp \
../../../test/unit/limits_header_test.cpp \
../../../test/unit/list_test.cpp \
../../../test/unit/list_header_test.cpp \
../../../test/unit/locale_test.cpp \
../../../test/unit/locale_header_test.cpp \
../../../test/unit/logic_test.cpp \
../../../test/unit/macro_checks.cpp \
../../../test/unit/map_test.cpp \
../../../test/unit/map_header_test.cpp \
../../../test/unit/max_test.cpp \
../../../test/unit/memory_header_test.cpp \
../../../test/unit/memory_test.cpp \
../../../test/unit/merge_test.cpp \
../../../test/unit/messages_facets_test.cpp \
../../../test/unit/mfunptr_test.cpp \
../../../test/unit/min_test.cpp \
../../../test/unit/mismatch_test.cpp \
../../../test/unit/modulus_test.cpp \
../../../test/unit/money_facets_test.cpp \
../../../test/unit/multiset_test.cpp \
../../../test/unit/mvctor_test.cpp \
../../../test/unit/mvctor_declaration_test.cpp \
../../../test/unit/mvctor_traits_test.cpp \
../../../test/unit/neq_test.cpp \
../../../test/unit/new_header_test.cpp \
../../../test/unit/nthelm_test.cpp \
../../../test/unit/num_facets_test.cpp \
../../../test/unit/num_put_get_test.cpp \
../../../test/unit/numeric_header_test.cpp \
../../../test/unit/ostmit_test.cpp \
../../../test/unit/ostream_header_test.cpp \
../../../test/unit/pair_test.cpp \
../../../test/unit/partial_test.cpp \
../../../test/unit/partition_test.cpp \
../../../test/unit/perm_test.cpp \
../../../test/unit/plusminus_test.cpp \
../../../test/unit/ptr2_test.cpp \
../../../test/unit/ptrspec_test.cpp \
../../../test/unit/queue_test.cpp \
../../../test/unit/queue_header_test.cpp \
../../../test/unit/rawriter_test.cpp \
../../../test/unit/reference_wrapper_test.cpp \
../../../test/unit/resolve_name.cpp \
../../../test/unit/reviter_test.cpp \
../../../test/unit/rm_cp_test.cpp \
../../../test/unit/rndshf_test.cpp \
../../../test/unit/rope_test.cpp \
../../../test/unit/rotate_test.cpp \
../../../test/unit/search_test.cpp \
../../../test/unit/set_test.cpp \
../../../test/unit/set_header_test.cpp \
../../../test/unit/setdiff_test.cpp \
../../../test/unit/setinter_test.cpp \
../../../test/unit/setunion_test.cpp \
../../../test/unit/shared_ptr_test.cpp \
../../../test/unit/slist_test.cpp \
../../../test/unit/sort_test.cpp \
../../../test/unit/sstream_test.cpp \
../../../test/unit/sstream_header_test.cpp \
../../../test/unit/stack_test.cpp \
../../../test/unit/stack_header_test.cpp \
../../../test/unit/stdexcept_header_test.cpp \
../../../test/unit/stldbg_include.cpp \
../../../test/unit/string_test.cpp \
../../../test/unit/strstream_buffer_read_test.cpp \
../../../test/unit/strstream_header_test.cpp \
../../../test/unit/swap_test.cpp \
../../../test/unit/times_test.cpp \
../../../test/unit/transform_test.cpp \
../../../test/unit/type_traits_test.cpp \
../../../test/unit/typeinfo_header_test.cpp \
../../../test/unit/unary_test.cpp \
../../../test/unit/uninitialized_test.cpp \
../../../test/unit/unique_test.cpp \
../../../test/unit/unordered_test.cpp \
../../../test/unit/utility_header_test.cpp \
../../../test/unit/valarray_test.cpp \
../../../test/unit/valarray_header_test.cpp \
../../../test/unit/vector_test.cpp \
../../../test/unit/vector_header_test.cpp \
../../../test/unit/test_errno.cpp \
../../../test/unit/time_facets_test.cpp
SRC_C = ../../../test/unit/assert_header_test.c \
../../../test/unit/ctype_header_test.c \
../../../test/unit/c_limits_header_test.c \
../../../test/unit/c_locale_header_test.c \
../../../test/unit/errno_header_test.c \
../../../test/unit/float_header_test.c \
../../../test/unit/iso646_header_test.c \
../../../test/unit/math_header_test.c \
../../../test/unit/setjmp_header_test.c \
../../../test/unit/signal_header_test.c \
../../../test/unit/stdarg_header_test.c \
../../../test/unit/stddef_header_test.c \
../../../test/unit/stdio_header_test.c \
../../../test/unit/stdlib_header_test.c \
../../../test/unit/string_header_test.c \
../../../test/unit/time_header_test.c \
../../../test/unit/wchar_header_test.c \
../../../test/unit/wctype_header_test.c
# -*- makefile -*- Time-stamp: <07/06/27 20:39:05 ptr>
# this is the version number of needed STLport library for linking
LIBMAJOR = 5
LIBMINOR = 2
PRGNAME = stl_unit_test
SRC_CPP = ../../../test/unit/cppunit/test_main.cpp \
../../../test/unit/accum_test.cpp \
../../../test/unit/adj_test.cpp \
../../../test/unit/advance_test.cpp \
../../../test/unit/alg_test.cpp \
../../../test/unit/algorithm_header_test.cpp \
../../../test/unit/allocator_test.cpp \
../../../test/unit/bcompos_test.cpp \
../../../test/unit/bind_test.cpp \
../../../test/unit/binsert_test.cpp \
../../../test/unit/bitset_test.cpp \
../../../test/unit/bitset_header_test.cpp \
../../../test/unit/bnegate_test.cpp \
../../../test/unit/boost_check.cpp \
../../../test/unit/bound_test.cpp \
../../../test/unit/bsearch_test.cpp \
../../../test/unit/bvector_test.cpp \
../../../test/unit/cassert_header_test.cpp \
../../../test/unit/cctype_header_test.cpp \
../../../test/unit/cerrno_header_test.cpp \
../../../test/unit/cfloat_header_test.cpp \
../../../test/unit/ciso646_header_test.cpp \
../../../test/unit/climits_header_test.cpp \
../../../test/unit/clocale_header_test.cpp \
../../../test/unit/cmath_test.cpp \
../../../test/unit/cmath_header_test.cpp \
../../../test/unit/codecvt_test.cpp \
../../../test/unit/collate_facets_test.cpp \
../../../test/unit/complex_header_test.cpp \
../../../test/unit/config_test.cpp \
../../../test/unit/copy_test.cpp \
../../../test/unit/count_test.cpp \
../../../test/unit/csetjmp_header_test.cpp \
../../../test/unit/setjmp_header_test2.cpp \
../../../test/unit/csignal_header_test.cpp \
../../../test/unit/cstdarg_header_test.cpp \
../../../test/unit/cstddef_header_test.cpp \
../../../test/unit/cstdio_header_test.cpp \
../../../test/unit/cstdlib_header_test.cpp \
../../../test/unit/cstring_test.cpp \
../../../test/unit/cstring_header_test.cpp \
../../../test/unit/ctime_header_test.cpp \
../../../test/unit/ctype_facets_test.cpp \
../../../test/unit/cwchar_header_test.cpp \
../../../test/unit/cwctype_header_test.cpp \
../../../test/unit/deque_test.cpp \
../../../test/unit/deque_header_test.cpp \
../../../test/unit/divides_test.cpp \
../../../test/unit/equal_test.cpp \
../../../test/unit/exception_test.cpp \
../../../test/unit/exception_header_test.cpp \
../../../test/unit/epilog_test.cpp \
../../../test/unit/fill_test.cpp \
../../../test/unit/find_test.cpp \
../../../test/unit/finsert_test.cpp \
../../../test/unit/foreach_test.cpp \
../../../test/unit/fstream_test.cpp \
../../../test/unit/fstream_header_test.cpp \
../../../test/unit/func_test.cpp \
../../../test/unit/functional_header_test.cpp \
../../../test/unit/generator_test.cpp \
../../../test/unit/greater_test.cpp \
../../../test/unit/hash_test.cpp \
../../../test/unit/heap_test.cpp \
../../../test/unit/includes_test.cpp \
../../../test/unit/innerprod_test.cpp \
../../../test/unit/inplace_test.cpp \
../../../test/unit/insert_test.cpp \
../../../test/unit/ioiter_test.cpp \
../../../test/unit/iomanip_header_test.cpp \
../../../test/unit/ios_header_test.cpp \
../../../test/unit/iosfwd_header_test.cpp \
../../../test/unit/iostream_header_test.cpp \
../../../test/unit/iostream_test.cpp \
../../../test/unit/iota_test.cpp \
../../../test/unit/istmit_test.cpp \
../../../test/unit/istream_header_test.cpp \
../../../test/unit/iter_test.cpp \
../../../test/unit/iterator_header_test.cpp \
../../../test/unit/less_test.cpp \
../../../test/unit/lexcmp_test.cpp \
../../../test/unit/limits_test.cpp \
../../../test/unit/limits_header_test.cpp \
../../../test/unit/list_test.cpp \
../../../test/unit/list_header_test.cpp \
../../../test/unit/locale_test.cpp \
../../../test/unit/locale_header_test.cpp \
../../../test/unit/logic_test.cpp \
../../../test/unit/macro_checks.cpp \
../../../test/unit/map_test.cpp \
../../../test/unit/map_header_test.cpp \
../../../test/unit/max_test.cpp \
../../../test/unit/memory_header_test.cpp \
../../../test/unit/memory_test.cpp \
../../../test/unit/merge_test.cpp \
../../../test/unit/messages_facets_test.cpp \
../../../test/unit/mfunptr_test.cpp \
../../../test/unit/min_test.cpp \
../../../test/unit/mismatch_test.cpp \
../../../test/unit/modulus_test.cpp \
../../../test/unit/money_facets_test.cpp \
../../../test/unit/multiset_test.cpp \
../../../test/unit/mvctor_test.cpp \
../../../test/unit/mvctor_declaration_test.cpp \
../../../test/unit/mvctor_traits_test.cpp \
../../../test/unit/neq_test.cpp \
../../../test/unit/new_header_test.cpp \
../../../test/unit/nthelm_test.cpp \
../../../test/unit/num_facets_test.cpp \
../../../test/unit/num_put_get_test.cpp \
../../../test/unit/numeric_header_test.cpp \
../../../test/unit/ostmit_test.cpp \
../../../test/unit/ostream_header_test.cpp \
../../../test/unit/pair_test.cpp \
../../../test/unit/partial_test.cpp \
../../../test/unit/partition_test.cpp \
../../../test/unit/perm_test.cpp \
../../../test/unit/plusminus_test.cpp \
../../../test/unit/ptr2_test.cpp \
../../../test/unit/ptrspec_test.cpp \
../../../test/unit/queue_test.cpp \
../../../test/unit/queue_header_test.cpp \
../../../test/unit/rawriter_test.cpp \
../../../test/unit/reference_wrapper_test.cpp \
../../../test/unit/resolve_name.cpp \
../../../test/unit/reviter_test.cpp \
../../../test/unit/rm_cp_test.cpp \
../../../test/unit/rndshf_test.cpp \
../../../test/unit/rope_test.cpp \
../../../test/unit/rotate_test.cpp \
../../../test/unit/search_test.cpp \
../../../test/unit/set_test.cpp \
../../../test/unit/set_header_test.cpp \
../../../test/unit/setdiff_test.cpp \
../../../test/unit/setinter_test.cpp \
../../../test/unit/setunion_test.cpp \
../../../test/unit/shared_ptr_test.cpp \
../../../test/unit/slist_test.cpp \
../../../test/unit/sort_test.cpp \
../../../test/unit/sstream_test.cpp \
../../../test/unit/sstream_header_test.cpp \
../../../test/unit/stack_test.cpp \
../../../test/unit/stack_header_test.cpp \
../../../test/unit/stdexcept_header_test.cpp \
../../../test/unit/stldbg_include.cpp \
../../../test/unit/string_test.cpp \
../../../test/unit/strstream_buffer_read_test.cpp \
../../../test/unit/strstream_header_test.cpp \
../../../test/unit/swap_test.cpp \
../../../test/unit/times_test.cpp \
../../../test/unit/transform_test.cpp \
../../../test/unit/type_traits_test.cpp \
../../../test/unit/typeinfo_header_test.cpp \
../../../test/unit/unary_test.cpp \
../../../test/unit/uninitialized_test.cpp \
../../../test/unit/unique_test.cpp \
../../../test/unit/unordered_test.cpp \
../../../test/unit/utility_header_test.cpp \
../../../test/unit/valarray_test.cpp \
../../../test/unit/valarray_header_test.cpp \
../../../test/unit/vector_test.cpp \
../../../test/unit/vector_header_test.cpp \
../../../test/unit/test_errno.cpp \
../../../test/unit/time_facets_test.cpp
SRC_C = ../../../test/unit/assert_header_test.c \
../../../test/unit/ctype_header_test.c \
../../../test/unit/c_limits_header_test.c \
../../../test/unit/c_locale_header_test.c \
../../../test/unit/errno_header_test.c \
../../../test/unit/float_header_test.c \
../../../test/unit/iso646_header_test.c \
../../../test/unit/math_header_test.c \
../../../test/unit/setjmp_header_test.c \
../../../test/unit/signal_header_test.c \
../../../test/unit/stdarg_header_test.c \
../../../test/unit/stddef_header_test.c \
../../../test/unit/stdio_header_test.c \
../../../test/unit/stdlib_header_test.c \
../../../test/unit/string_header_test.c \
../../../test/unit/time_header_test.c \
../../../test/unit/wchar_header_test.c \
../../../test/unit/wctype_header_test.c

View file

@ -1,409 +1,409 @@
$Id$
===========================
STLport testing unit README
===========================
=======
Purpose
=======
Provide independent STLport unit tests, with clearly defined pass/failed
result for every single test without any user action (i.e. diff)
and without any input request (i.e. files, cin input ...).
=====
Build
=====
Use makefile(s):
make -f gcc.mak
======================
Running the test suite
======================
commad-line syntax as follows:
stl_unit_test [OPTIONS]
where OPTIONS are
-t=CLASS[::TEST] run the test class CLASS or member test CLASS::TEST
-f=FILE save output in file FILE instead of stdout
examples:
./stl_unit_test
- runs all tests registered with this unit
./stl_unit_test -f=out.txt
- runs all tests registered with this unit but print results into out.txt instead of stdout
./stl_unit_test -t=VectorTest
- runs all tests registered in VectorTest class
./stl_unit_test -t=VectorTest::vec_test_1 -f=out.txt
- runs only VectorTest::vec_test_1() test, print result into out.txt instead of stdout
==================
CU mini background
==================
see:
http://www.stlport.com/dcforum/DCForumID5/764.html
Note: cppunit mini sources are modified from original!
===============
Adding new test
===============
You can add/create new tests easily just use _template.cpp as your new
test class and do not forget to edit Makefile.inc
For guide to CppUnit like tests see http://cppunit.sourceforge.net/
==============================================
Replacement of regression by unit tests:
==============================================
regression unit
-----------------------------------------
accum1.cpp accum_test.cpp
accum2.cpp
adjdiff0.cpp adj_test.cpp
adjdiff1.cpp
adjdiff2.cpp
adjfind0.cpp
adjfind1.cpp
adjfind2.cpp
advance.cpp advance_test.cpp
alg1.cpp alg_test.cpp
alg2.cpp
alg3.cpp
alg4.cpp
alg5.cpp
bcompos1.cpp bcompos_test.cpp
bcompos2.cpp
bind1st1.cpp bind_test.cpp
bind1st2.cpp
bind2nd1.cpp
bind2nd2.cpp
binsert1.cpp binsert_test.cpp
binsert2.cpp
binsrch1.cpp bsearch_test.cpp
binsrch2.cpp
bnegate1.cpp bnegate_test.cpp
bnegate2.cpp
bvec1.cpp bvector_test.cpp
bug.cpp -
copy1.cpp copy_test.cpp
copy2.cpp
copy3.cpp
copy4.cpp
copyb0.cpp
copyb.cpp
count0.cpp count_test.cpp
count1.cpp
countif1.cpp
deque1.cpp deque_test.cpp
divides.cpp divides_test.cpp
eqlrnge0.cpp equal_test.cpp
eqlrnge1.cpp
eqlrnge2.cpp
equal0.cpp
equal1.cpp
equal2.cpp
equalto.cpp
fill1.cpp fill_test.cpp
filln1.cpp
find0.cpp find_test.cpp
find1.cpp
findif0.cpp
findif1.cpp
finsert1.cpp finsert_test.cpp
finsert2.cpp
float_input.cpp floatio_test.cpp
float_output.cpp
foreach0.cpp foreach_test.cpp
foreach1.cpp
fstream1.cpp -
func1.cpp func_test.cpp
func2.cpp
func3.cpp
gener1.cpp generator_test.cpp
gener2.cpp
genern1.cpp
genern2.cpp
greateq.cpp greater_test.cpp
greater.cpp
hmap1.cpp hash_test.cpp
hmmap1.cpp
hmset1.cpp
hset2.cpp
incl0.cpp includes_test.cpp
incl1.cpp
incl2.cpp
inplmrg1.cpp inplace_test.cpp
inplmrg2.cpp
inrprod0.cpp innerprod_test.cpp
inrprod1.cpp
inrprod2.cpp
insert1.cpp insert_test.cpp
insert2.cpp
ioiter.cpp ioiter_test.cpp
iota1.cpp iota_test.cpp
istmit1.cpp istmit_test.cpp
iter1.cpp iter_test.cpp
iter2.cpp
iter3.cpp
iter4.cpp
iterswp.cpp
less.cpp less_test.cpp
lesseq.cpp
lexcmp1.cpp lexcmp_test.cpp
lexcmp2.cpp
list1.cpp list_test.cpp
list2.cpp
list3.cpp
list4.cpp
logicand.cpp logic_test.cpp
logicnot.cpp
logicor.cpp
lwrbnd1.cpp bound_test.cpp
lwrbnd2.cpp
uprbnd1.cpp
uprbnd2.cpp
map1.cpp map_test.cpp
mmap1.cpp
mmap2.cpp
max1.cpp max_test.cpp
max2.cpp
maxelem1.cpp
maxelem2.cpp
memfunptr.cpp mfunptr_test.cpp
merge0.cpp merge_test.cpp
merge1.cpp
merge2.cpp
min1.cpp min_test.cpp
min2.cpp
minelem1.cpp
minelem2.cpp
minus.cpp plusminus.cpp
mismtch0.cpp mismatch_test.cpp
mismtch1.cpp
mismtch2.cpp
mkheap0.cpp heap_test.cpp
mkheap1.cpp
pheap0.cpp
pheap1.cpp
modulus.cpp modulus_test.cpp
move_constructor.cpp mvctor_test.cpp
multiset.cpp multiset_test.cpp
negate.cpp neq_test.cpp
nequal.cpp
nextprm0.cpp perm_test.cpp
nextprm1.cpp
nextprm2.cpp
prevprm0.cpp
prevprm1.cpp
prevprm2.cpp
nthelem0.cpp nthelm_test.cpp
nthelem1.cpp
nthelem2.cpp
ostmit.cpp ostmit_test.cpp
pair0.cpp pair_test.cpp
pair1.cpp
pair2.cpp
parsrt0.cpp partial_test.cpp
parsrt1.cpp
parsrt2.cpp
parsrtc0.cpp
parsrtc1.cpp
parsrtc2.cpp
partsum0.cpp
partsum1.cpp
partsum2.cpp
pqueue1.cpp queue_test.cpp
queue1.cpp
ptition0.cpp partition_test.cpp
ptition1.cpp
stblptn0.cpp
stblptn1.cpp
ptrbinf1.cpp ptr2_test.cpp
ptrbinf2.cpp
ptrunf1.cpp
ptrunf2.cpp
ptr_specialization.cpp ptrspec_test.cpp
quiet_signal_nan.cpp -
rawiter.cpp rawiter.cpp
remcopy1.cpp rm_cp_test.cpp
remcpif1.cpp
remif1.cpp
remove1.cpp
repcpif1.cpp
replace0.cpp
replace1.cpp
replcpy1.cpp
replif1.cpp
revcopy1.cpp
reverse1.cpp
reviter1.cpp reviter_test.cpp
reviter2.cpp
revbit1.cpp
rndshuf0.cpp rndshf_test.cpp
rndshuf1.cpp
rndshuf2.cpp
rotate0.cpp rotate_copy.cpp
rotate1.cpp
rotcopy0.cpp
rotcopy1.cpp
search0.cpp search_test.cpp
search1.cpp
search2.cpp
seek.cpp -
set.cpp set_test.cpp
setdiff0.cpp setdiff_test.cpp
setdiff1.cpp
setdiff2.cpp
setsymd0.cpp
setsymd1.cpp
setsymd2.cpp
setintr0.cpp setinter_test.cpp
setintr1.cpp
setintr2.cpp
setunon0.cpp setunion_test.cpp
setunon1.cpp
setunon2.cpp
single.cpp -
slist1.cpp slist_test.cpp
sort1.cpp sort_test.cpp
sort2.cpp
stblsrt1.cpp
stblsrt2.cpp
sstream1.cpp -
stack1.cpp stack_test.cpp
stack2.cpp
strass1.cpp -
string1.cpp string_test.cpp
string_mt.cpp
short_string.cpp
swap1.cpp swap_test.cpp
swprnge1.cpp
times.cpp times_test.cpp
trnsfrm1.cpp transform_test.cpp
trnsfrm2.cpp
tstdeq.cpp -
ucompos1.cpp unary_test.cpp
ucompos2.cpp
unegate1.cpp
unegate2.cpp
uniqcpy1.cpp unique_test.cpp
uniqcpy2.cpp
unique1.cpp
unique2.cpp
vec.cpp vector_test.cpp
======
Status
======
So far all tests from regression directory were ported except following ones:
iter2.cpp (pointless - already tested in iter1.cpp,
see iter_test.cpp)
move_constructor.cpp (not fully tested see mvctor_test.cpp)
mset1.cpp (moved in multiset.cpp)
mset3.cpp (moved in multiset.cpp)
mset4.cpp (moved in multiset.cpp)
mset5.cpp (moved in multiset.cpp)
pair1.cpp (pointless - already tested in pair0.cpp,
see pair_test.cpp)
pair2.cpp (pointless - already tested in pair0.cpp,
see pair_test.cpp)
partsrt0.cpp (identic w ith parsrt0.cpp - tested in
pair_test.cpp )
quiet_signal_nan.cpp
revbit2.cpp (pointless - already tested in revbit1.cpp,
see reviter_test.cpp )
rndshuf1.cpp (pointless - already tested in rndshuf0.cpp,
see rndshf_test.cpp )
set1.cpp (moved in set.cpp)
set2.cpp (moved in set.cpp)
$Id$
===========================
STLport testing unit README
===========================
=======
Purpose
=======
Provide independent STLport unit tests, with clearly defined pass/failed
result for every single test without any user action (i.e. diff)
and without any input request (i.e. files, cin input ...).
=====
Build
=====
Use makefile(s):
make -f gcc.mak
======================
Running the test suite
======================
commad-line syntax as follows:
stl_unit_test [OPTIONS]
where OPTIONS are
-t=CLASS[::TEST] run the test class CLASS or member test CLASS::TEST
-f=FILE save output in file FILE instead of stdout
examples:
./stl_unit_test
- runs all tests registered with this unit
./stl_unit_test -f=out.txt
- runs all tests registered with this unit but print results into out.txt instead of stdout
./stl_unit_test -t=VectorTest
- runs all tests registered in VectorTest class
./stl_unit_test -t=VectorTest::vec_test_1 -f=out.txt
- runs only VectorTest::vec_test_1() test, print result into out.txt instead of stdout
==================
CU mini background
==================
see:
http://www.stlport.com/dcforum/DCForumID5/764.html
Note: cppunit mini sources are modified from original!
===============
Adding new test
===============
You can add/create new tests easily just use _template.cpp as your new
test class and do not forget to edit Makefile.inc
For guide to CppUnit like tests see http://cppunit.sourceforge.net/
==============================================
Replacement of regression by unit tests:
==============================================
regression unit
-----------------------------------------
accum1.cpp accum_test.cpp
accum2.cpp
adjdiff0.cpp adj_test.cpp
adjdiff1.cpp
adjdiff2.cpp
adjfind0.cpp
adjfind1.cpp
adjfind2.cpp
advance.cpp advance_test.cpp
alg1.cpp alg_test.cpp
alg2.cpp
alg3.cpp
alg4.cpp
alg5.cpp
bcompos1.cpp bcompos_test.cpp
bcompos2.cpp
bind1st1.cpp bind_test.cpp
bind1st2.cpp
bind2nd1.cpp
bind2nd2.cpp
binsert1.cpp binsert_test.cpp
binsert2.cpp
binsrch1.cpp bsearch_test.cpp
binsrch2.cpp
bnegate1.cpp bnegate_test.cpp
bnegate2.cpp
bvec1.cpp bvector_test.cpp
bug.cpp -
copy1.cpp copy_test.cpp
copy2.cpp
copy3.cpp
copy4.cpp
copyb0.cpp
copyb.cpp
count0.cpp count_test.cpp
count1.cpp
countif1.cpp
deque1.cpp deque_test.cpp
divides.cpp divides_test.cpp
eqlrnge0.cpp equal_test.cpp
eqlrnge1.cpp
eqlrnge2.cpp
equal0.cpp
equal1.cpp
equal2.cpp
equalto.cpp
fill1.cpp fill_test.cpp
filln1.cpp
find0.cpp find_test.cpp
find1.cpp
findif0.cpp
findif1.cpp
finsert1.cpp finsert_test.cpp
finsert2.cpp
float_input.cpp floatio_test.cpp
float_output.cpp
foreach0.cpp foreach_test.cpp
foreach1.cpp
fstream1.cpp -
func1.cpp func_test.cpp
func2.cpp
func3.cpp
gener1.cpp generator_test.cpp
gener2.cpp
genern1.cpp
genern2.cpp
greateq.cpp greater_test.cpp
greater.cpp
hmap1.cpp hash_test.cpp
hmmap1.cpp
hmset1.cpp
hset2.cpp
incl0.cpp includes_test.cpp
incl1.cpp
incl2.cpp
inplmrg1.cpp inplace_test.cpp
inplmrg2.cpp
inrprod0.cpp innerprod_test.cpp
inrprod1.cpp
inrprod2.cpp
insert1.cpp insert_test.cpp
insert2.cpp
ioiter.cpp ioiter_test.cpp
iota1.cpp iota_test.cpp
istmit1.cpp istmit_test.cpp
iter1.cpp iter_test.cpp
iter2.cpp
iter3.cpp
iter4.cpp
iterswp.cpp
less.cpp less_test.cpp
lesseq.cpp
lexcmp1.cpp lexcmp_test.cpp
lexcmp2.cpp
list1.cpp list_test.cpp
list2.cpp
list3.cpp
list4.cpp
logicand.cpp logic_test.cpp
logicnot.cpp
logicor.cpp
lwrbnd1.cpp bound_test.cpp
lwrbnd2.cpp
uprbnd1.cpp
uprbnd2.cpp
map1.cpp map_test.cpp
mmap1.cpp
mmap2.cpp
max1.cpp max_test.cpp
max2.cpp
maxelem1.cpp
maxelem2.cpp
memfunptr.cpp mfunptr_test.cpp
merge0.cpp merge_test.cpp
merge1.cpp
merge2.cpp
min1.cpp min_test.cpp
min2.cpp
minelem1.cpp
minelem2.cpp
minus.cpp plusminus.cpp
mismtch0.cpp mismatch_test.cpp
mismtch1.cpp
mismtch2.cpp
mkheap0.cpp heap_test.cpp
mkheap1.cpp
pheap0.cpp
pheap1.cpp
modulus.cpp modulus_test.cpp
move_constructor.cpp mvctor_test.cpp
multiset.cpp multiset_test.cpp
negate.cpp neq_test.cpp
nequal.cpp
nextprm0.cpp perm_test.cpp
nextprm1.cpp
nextprm2.cpp
prevprm0.cpp
prevprm1.cpp
prevprm2.cpp
nthelem0.cpp nthelm_test.cpp
nthelem1.cpp
nthelem2.cpp
ostmit.cpp ostmit_test.cpp
pair0.cpp pair_test.cpp
pair1.cpp
pair2.cpp
parsrt0.cpp partial_test.cpp
parsrt1.cpp
parsrt2.cpp
parsrtc0.cpp
parsrtc1.cpp
parsrtc2.cpp
partsum0.cpp
partsum1.cpp
partsum2.cpp
pqueue1.cpp queue_test.cpp
queue1.cpp
ptition0.cpp partition_test.cpp
ptition1.cpp
stblptn0.cpp
stblptn1.cpp
ptrbinf1.cpp ptr2_test.cpp
ptrbinf2.cpp
ptrunf1.cpp
ptrunf2.cpp
ptr_specialization.cpp ptrspec_test.cpp
quiet_signal_nan.cpp -
rawiter.cpp rawiter.cpp
remcopy1.cpp rm_cp_test.cpp
remcpif1.cpp
remif1.cpp
remove1.cpp
repcpif1.cpp
replace0.cpp
replace1.cpp
replcpy1.cpp
replif1.cpp
revcopy1.cpp
reverse1.cpp
reviter1.cpp reviter_test.cpp
reviter2.cpp
revbit1.cpp
rndshuf0.cpp rndshf_test.cpp
rndshuf1.cpp
rndshuf2.cpp
rotate0.cpp rotate_copy.cpp
rotate1.cpp
rotcopy0.cpp
rotcopy1.cpp
search0.cpp search_test.cpp
search1.cpp
search2.cpp
seek.cpp -
set.cpp set_test.cpp
setdiff0.cpp setdiff_test.cpp
setdiff1.cpp
setdiff2.cpp
setsymd0.cpp
setsymd1.cpp
setsymd2.cpp
setintr0.cpp setinter_test.cpp
setintr1.cpp
setintr2.cpp
setunon0.cpp setunion_test.cpp
setunon1.cpp
setunon2.cpp
single.cpp -
slist1.cpp slist_test.cpp
sort1.cpp sort_test.cpp
sort2.cpp
stblsrt1.cpp
stblsrt2.cpp
sstream1.cpp -
stack1.cpp stack_test.cpp
stack2.cpp
strass1.cpp -
string1.cpp string_test.cpp
string_mt.cpp
short_string.cpp
swap1.cpp swap_test.cpp
swprnge1.cpp
times.cpp times_test.cpp
trnsfrm1.cpp transform_test.cpp
trnsfrm2.cpp
tstdeq.cpp -
ucompos1.cpp unary_test.cpp
ucompos2.cpp
unegate1.cpp
unegate2.cpp
uniqcpy1.cpp unique_test.cpp
uniqcpy2.cpp
unique1.cpp
unique2.cpp
vec.cpp vector_test.cpp
======
Status
======
So far all tests from regression directory were ported except following ones:
iter2.cpp (pointless - already tested in iter1.cpp,
see iter_test.cpp)
move_constructor.cpp (not fully tested see mvctor_test.cpp)
mset1.cpp (moved in multiset.cpp)
mset3.cpp (moved in multiset.cpp)
mset4.cpp (moved in multiset.cpp)
mset5.cpp (moved in multiset.cpp)
pair1.cpp (pointless - already tested in pair0.cpp,
see pair_test.cpp)
pair2.cpp (pointless - already tested in pair0.cpp,
see pair_test.cpp)
partsrt0.cpp (identic w ith parsrt0.cpp - tested in
pair_test.cpp )
quiet_signal_nan.cpp
revbit2.cpp (pointless - already tested in revbit1.cpp,
see reviter_test.cpp )
rndshuf1.cpp (pointless - already tested in rndshuf0.cpp,
see rndshf_test.cpp )
set1.cpp (moved in set.cpp)
set2.cpp (moved in set.cpp)

File diff suppressed because it is too large Load diff

View file

@ -1,333 +1,333 @@
#!/bin/sh
# Time-stamp: <08/06/07 15:22:19 yeti>
base=`cd \`dirname $0\`; echo $PWD`
configmak=$base/build/Makefiles/gmake/config.mak
write_option() {
target=`echo $1 | sed -e 's/^[^=]*=//'`
echo $2 := $3$target >> ${configmak}
}
write_over_option() {
target=`echo $1 | sed -e 's/^[^=]*=//'`
echo $2 ?= $target >> ${configmak}
}
print_help() {
cat <<EOF
Configuration utility.
Usage:
configure [options]
Available options:
--prefix=<dir> base install path (/usr/local/)
--bindir=<dir> install path for executables (PREFIX/bin)
--libdir=<dir> install path for libraries (PREFIX/lib)
--includedir=<dir> install path for headers (PREFIX/include)
--target=<target> target platform (cross-compiling)
--help print this help message and exit
--with-stlport=<dir> use STLport in catalog <dir>
--without-stlport compile without STLport
--with-boost=<dir> use boost headers in catalog <dir>
--with-system-boost use boost installed on this system
--with-msvc=<dir> use MS VC from this catalog
--with-mssdk=<dir> use MS SDK from this catalog
--with-extra-cxxflags=<options>
pass extra options to C++ compiler
--with-extra-cflags=<options>
pass extra options to C compiler
--with-extra-ldflags=<options>
pass extra options to linker (via C/C++)
--use-static-gcc use static gcc libs instead of shared libgcc_s (useful for gcc compiler,
that was builded with --enable-shared [default]; if compiler was builded
with --disable-shared, static libraries will be used in any case)
--clean remove custom settings (file ${configmak})
and use default values
--with-cxx=<name> use <name> as C++ compiler (use --target= for cross-compilation)
--with-cc=<name> use <name> as C compiler (use --target= for cross-compilation)
--use-compiler-family=<name> use compiler family; one of:
gcc GNU compilers (default)
icc Intel compilers
aCC HP's aCC compilers
CC SunPro's CC compilers
bcc Borland's compilers
--without-debug don't build debug variant
--without-stldebug don't build STLport's STLP_DEBUG mode
--enable-static build static
--disable-shared don't build shared
--with-lib-motif=<motif>
Use this option to customize the generated library name.
The motif will be used in the last place before version information,
separated by an underscore, ex:
stlportd_MOTIF.5.0.lib
stlportstld_static_MOTIF.5.1.lib
--without-thread Per default STLport libraries are built in order to be usable
in a multithreaded context. If you don't need this you can ask
for a not thread safe version with this option.
--without-rtti Disable RTTI when building libraries.
--with-static-rtl
--with-dynamic-rtl
Enables usage of static (libc.lib family) or dynamic (msvcrt.lib family)
C/C++ runtime library when linking with STLport. If you want your appli/dll
to link statically with STLport but using the dynamic C runtime use
--with-dynamic-rtl; if you want to link dynamicaly with STLport but using the
static C runtime use --with-static-rtl. See README.options for details.
Don't forget to signal the link method when building your appli or dll, in
stlport/stl/config/host.h set the following macro depending on the configure
option:
--with-static-rtl -> _STLP_USE_DYNAMIC_LIB"
--with-dynamic-rtl -> _STLP_USE_STATIC_LIB"
--windows-platform=<name>
Targetted OS when building for Windows; one of:
win95 Windows 95
win98 Windows 98
winxp Windows XP and later (default)
Environment variables:
\$CXX C++ compiler name (use --target= for cross-compilation)
\$CC C compiler name (use --target= for cross-compilation)
\$CXXFLAGS pass extra options to C++ compiler
\$CFLAGS pass extra options to C compiler
\$LDFLAGS pass extra options to linker (via C/C++)
Options has preference over environment variables.
EOF
}
default_settings () {
# if [ "$boost_set" = "" ]; then
# write_option "${PWD}/external/boost" BOOST_DIR
# fi
# if [ -z "${stlport_set}" ]; then
# write_over_option "$base" STLPORT_DIR
# fi
# Set in Makefiles/gmake/top.mak
if [ -z "${compiler_family_set}" ]; then
# write_option gcc COMPILER_NAME
echo include gcc.mak > ${base}/build/lib/Makefile
echo include gcc.mak > ${base}/build/test/unit/Makefile
echo include gcc.mak > ${base}/build/test/eh/Makefile
fi
# Set in Makefiles/gmake/targetdirs.mak
# if [ -z "${prefix_set}" ]; then
# write_option "/usr/local" BASE_INSTALL_DIR '${DESTDIR}'
# fi
}
[ $# -eq 0 ] && { >${configmak}; default_settings; exit 0; }
for a in $@ ; do
case $a in
--help)
print_help
exit 0
;;
--clean)
rm -f ${configmak}
exit 0
;;
esac
done
>${configmak}
while :
do
case $# in
0)
break
;;
esac
option="$1"
shift
case $option in
--target=*)
write_option "$option" TARGET_OS
target_set=y
;;
--with-stlport=*)
write_option "$option" STLPORT_DIR
stlport_set=y
;;
--without-stlport)
write_option 1 WITHOUT_STLPORT
stlport_set=y
;;
--with-boost=*)
write_option "$option" BOOST_DIR
;;
--with-system-boost)
write_option 1 USE_SYSTEM_BOOST
;;
--with-msvc=*)
write_option "$option" MSVC_DIR
;;
--with-mssdk=*)
write_option "$option" MSSDK_DIR
;;
--with-extra-cxxflags=*)
write_option "$option" EXTRA_CXXFLAGS
cxxflags_set=y
;;
--with-extra-cflags=*)
write_option "$option" EXTRA_CFLAGS
cflags_set=y
;;
--with-extra-ldflags=*)
write_option "$option" EXTRA_LDFLAGS
ldflags_set=y
;;
--with-lib-motif=*)
echo "Using $option in generated library names"
write_option "$option" LIB_MOTIF
;;
--without-thread)
write_option 1 WITHOUT_THREAD
;;
--without-rtti)
write_option 1 WITHOUT_RTTI
;;
--with-dynamic-rtl)
write_option 1 WITH_DYNAMIC_RTL
;;
--with-static-rtl)
write_option 1 WITH_STATIC_RTL
;;
--use-static-gcc)
write_option 1 USE_STATIC_LIBGCC
;;
--without-debug)
write_option 1 _NO_DBG_BUILD
;;
--without-stldebug)
write_option 1 _NO_STLDBG_BUILD
;;
--enable-static)
write_option 1 _STATIC_BUILD
;;
--disable-shared)
write_option 1 _NO_SHARED_BUILD
;;
--with-cxx=*)
write_option "$option" _FORCE_CXX
cxx_set=y
;;
--with-cc=*)
write_option "$option" _FORCE_CC
cc_set=y
;;
--use-compiler-family=*)
case `echo $option | sed -e 's/^[^=]*=//'` in
gcc|icc|aCC|CC|bcc|dmc)
target=`echo $option | sed -e 's/^[^=]*=//'`
echo COMPILER_NAME := $target >> ${configmak}
echo include $target.mak > ${base}/build/lib/Makefile
echo include $target.mak > ${base}/build/test/unit/Makefile
echo include $target.mak > ${base}/build/test/eh/Makefile
;;
*)
echo "Not supported compilers family"
exit -1
;;
esac
compiler_family_set=y
;;
--prefix=*)
write_option "$option" BASE_INSTALL_DIR '${DESTDIR}'
prefix_set=y
;;
--bindir=*)
write_option "$option" INSTALL_BIN_DIR '${DESTDIR}'
;;
--libdir=*)
write_option "$option" INSTALL_LIB_DIR '${DESTDIR}'
;;
--includedir=*)
write_option "$option" INSTALL_HDR_DIR '${DESTDIR}'
;;
--windows-platform=*)
case `echo $option | sed -e 's/^[^=]*=//'` in
win95)
write_option 0x0400 WINVER
;;
win98)
write_option 0x0410 WINVER
;;
winxp)
write_option 0x0501 WINVER
;;
*)
echo "Not supported windows platform"
exit -1
;;
esac
;;
*)
echo "Unknown configuration option '$option'"
exit -1
;;
esac
done
if [ -n "${CXX}" ]; then
if [ -n "${cxx_set}" ]; then
echo "Both --with-cxx and \$CXX set, using the first"
elif [ -z "${target_set}" ]; then
write_option "${CXX}" _FORCE_CXX
else
echo "For cross-compilation with gcc use --target option only"
fi
if [ -z "${CC}" -a -z "${cc_set}" ]; then
echo "\$CXX set, but I don't see \$CC!"
fi
fi
if [ -n "${CC}" ]; then
if [ -n "${cxx_set}" ]; then
echo "Both --with-cc and \$CC set, using the first"
else
write_option "${CC}" _FORCE_CC
fi
fi
if [ -n "${CXXFLAGS}" ]; then
if [ -z "${cxxflags_set}" ]; then
write_option "${CXXFLAGS}" EXTRA_CXXFLAGS
else
echo "Both --with-extra-cxxflags and \$CXXFLAGS set, using the first"
fi
fi
if [ -n "${CFLAGS}" ]; then
if [ -z "${cflags_set}" ]; then
write_option "${CFLAGS}" EXTRA_CFLAGS
else
echo "Both --with-extra-cflags and \$CFLAGS set, using the first"
fi
fi
if [ -n "${LDFLAGS}" ]; then
if [ -z "${ldflags_set}" ]; then
write_option "${LDFLAGS}" EXTRA_LDFLAGS
else
echo "Both --with-extra-ldflags and \$LDFLAGS set, using the first"
fi
fi
# default settings
#!/bin/sh
# Time-stamp: <08/06/07 15:22:19 yeti>
base=`cd \`dirname $0\`; echo $PWD`
configmak=$base/build/Makefiles/gmake/config.mak
write_option() {
target=`echo $1 | sed -e 's/^[^=]*=//'`
echo $2 := $3$target >> ${configmak}
}
write_over_option() {
target=`echo $1 | sed -e 's/^[^=]*=//'`
echo $2 ?= $target >> ${configmak}
}
print_help() {
cat <<EOF
Configuration utility.
Usage:
configure [options]
Available options:
--prefix=<dir> base install path (/usr/local/)
--bindir=<dir> install path for executables (PREFIX/bin)
--libdir=<dir> install path for libraries (PREFIX/lib)
--includedir=<dir> install path for headers (PREFIX/include)
--target=<target> target platform (cross-compiling)
--help print this help message and exit
--with-stlport=<dir> use STLport in catalog <dir>
--without-stlport compile without STLport
--with-boost=<dir> use boost headers in catalog <dir>
--with-system-boost use boost installed on this system
--with-msvc=<dir> use MS VC from this catalog
--with-mssdk=<dir> use MS SDK from this catalog
--with-extra-cxxflags=<options>
pass extra options to C++ compiler
--with-extra-cflags=<options>
pass extra options to C compiler
--with-extra-ldflags=<options>
pass extra options to linker (via C/C++)
--use-static-gcc use static gcc libs instead of shared libgcc_s (useful for gcc compiler,
that was builded with --enable-shared [default]; if compiler was builded
with --disable-shared, static libraries will be used in any case)
--clean remove custom settings (file ${configmak})
and use default values
--with-cxx=<name> use <name> as C++ compiler (use --target= for cross-compilation)
--with-cc=<name> use <name> as C compiler (use --target= for cross-compilation)
--use-compiler-family=<name> use compiler family; one of:
gcc GNU compilers (default)
icc Intel compilers
aCC HP's aCC compilers
CC SunPro's CC compilers
bcc Borland's compilers
--without-debug don't build debug variant
--without-stldebug don't build STLport's STLP_DEBUG mode
--enable-static build static
--disable-shared don't build shared
--with-lib-motif=<motif>
Use this option to customize the generated library name.
The motif will be used in the last place before version information,
separated by an underscore, ex:
stlportd_MOTIF.5.0.lib
stlportstld_static_MOTIF.5.1.lib
--without-thread Per default STLport libraries are built in order to be usable
in a multithreaded context. If you don't need this you can ask
for a not thread safe version with this option.
--without-rtti Disable RTTI when building libraries.
--with-static-rtl
--with-dynamic-rtl
Enables usage of static (libc.lib family) or dynamic (msvcrt.lib family)
C/C++ runtime library when linking with STLport. If you want your appli/dll
to link statically with STLport but using the dynamic C runtime use
--with-dynamic-rtl; if you want to link dynamicaly with STLport but using the
static C runtime use --with-static-rtl. See README.options for details.
Don't forget to signal the link method when building your appli or dll, in
stlport/stl/config/host.h set the following macro depending on the configure
option:
--with-static-rtl -> _STLP_USE_DYNAMIC_LIB"
--with-dynamic-rtl -> _STLP_USE_STATIC_LIB"
--windows-platform=<name>
Targetted OS when building for Windows; one of:
win95 Windows 95
win98 Windows 98
winxp Windows XP and later (default)
Environment variables:
\$CXX C++ compiler name (use --target= for cross-compilation)
\$CC C compiler name (use --target= for cross-compilation)
\$CXXFLAGS pass extra options to C++ compiler
\$CFLAGS pass extra options to C compiler
\$LDFLAGS pass extra options to linker (via C/C++)
Options has preference over environment variables.
EOF
}
default_settings () {
# if [ "$boost_set" = "" ]; then
# write_option "${PWD}/external/boost" BOOST_DIR
# fi
# if [ -z "${stlport_set}" ]; then
# write_over_option "$base" STLPORT_DIR
# fi
# Set in Makefiles/gmake/top.mak
if [ -z "${compiler_family_set}" ]; then
# write_option gcc COMPILER_NAME
echo include gcc.mak > ${base}/build/lib/Makefile
echo include gcc.mak > ${base}/build/test/unit/Makefile
echo include gcc.mak > ${base}/build/test/eh/Makefile
fi
# Set in Makefiles/gmake/targetdirs.mak
# if [ -z "${prefix_set}" ]; then
# write_option "/usr/local" BASE_INSTALL_DIR '${DESTDIR}'
# fi
}
[ $# -eq 0 ] && { >${configmak}; default_settings; exit 0; }
for a in $@ ; do
case $a in
--help)
print_help
exit 0
;;
--clean)
rm -f ${configmak}
exit 0
;;
esac
done
>${configmak}
while :
do
case $# in
0)
break
;;
esac
option="$1"
shift
case $option in
--target=*)
write_option "$option" TARGET_OS
target_set=y
;;
--with-stlport=*)
write_option "$option" STLPORT_DIR
stlport_set=y
;;
--without-stlport)
write_option 1 WITHOUT_STLPORT
stlport_set=y
;;
--with-boost=*)
write_option "$option" BOOST_DIR
;;
--with-system-boost)
write_option 1 USE_SYSTEM_BOOST
;;
--with-msvc=*)
write_option "$option" MSVC_DIR
;;
--with-mssdk=*)
write_option "$option" MSSDK_DIR
;;
--with-extra-cxxflags=*)
write_option "$option" EXTRA_CXXFLAGS
cxxflags_set=y
;;
--with-extra-cflags=*)
write_option "$option" EXTRA_CFLAGS
cflags_set=y
;;
--with-extra-ldflags=*)
write_option "$option" EXTRA_LDFLAGS
ldflags_set=y
;;
--with-lib-motif=*)
echo "Using $option in generated library names"
write_option "$option" LIB_MOTIF
;;
--without-thread)
write_option 1 WITHOUT_THREAD
;;
--without-rtti)
write_option 1 WITHOUT_RTTI
;;
--with-dynamic-rtl)
write_option 1 WITH_DYNAMIC_RTL
;;
--with-static-rtl)
write_option 1 WITH_STATIC_RTL
;;
--use-static-gcc)
write_option 1 USE_STATIC_LIBGCC
;;
--without-debug)
write_option 1 _NO_DBG_BUILD
;;
--without-stldebug)
write_option 1 _NO_STLDBG_BUILD
;;
--enable-static)
write_option 1 _STATIC_BUILD
;;
--disable-shared)
write_option 1 _NO_SHARED_BUILD
;;
--with-cxx=*)
write_option "$option" _FORCE_CXX
cxx_set=y
;;
--with-cc=*)
write_option "$option" _FORCE_CC
cc_set=y
;;
--use-compiler-family=*)
case `echo $option | sed -e 's/^[^=]*=//'` in
gcc|icc|aCC|CC|bcc|dmc)
target=`echo $option | sed -e 's/^[^=]*=//'`
echo COMPILER_NAME := $target >> ${configmak}
echo include $target.mak > ${base}/build/lib/Makefile
echo include $target.mak > ${base}/build/test/unit/Makefile
echo include $target.mak > ${base}/build/test/eh/Makefile
;;
*)
echo "Not supported compilers family"
exit -1
;;
esac
compiler_family_set=y
;;
--prefix=*)
write_option "$option" BASE_INSTALL_DIR '${DESTDIR}'
prefix_set=y
;;
--bindir=*)
write_option "$option" INSTALL_BIN_DIR '${DESTDIR}'
;;
--libdir=*)
write_option "$option" INSTALL_LIB_DIR '${DESTDIR}'
;;
--includedir=*)
write_option "$option" INSTALL_HDR_DIR '${DESTDIR}'
;;
--windows-platform=*)
case `echo $option | sed -e 's/^[^=]*=//'` in
win95)
write_option 0x0400 WINVER
;;
win98)
write_option 0x0410 WINVER
;;
winxp)
write_option 0x0501 WINVER
;;
*)
echo "Not supported windows platform"
exit -1
;;
esac
;;
*)
echo "Unknown configuration option '$option'"
exit -1
;;
esac
done
if [ -n "${CXX}" ]; then
if [ -n "${cxx_set}" ]; then
echo "Both --with-cxx and \$CXX set, using the first"
elif [ -z "${target_set}" ]; then
write_option "${CXX}" _FORCE_CXX
else
echo "For cross-compilation with gcc use --target option only"
fi
if [ -z "${CC}" -a -z "${cc_set}" ]; then
echo "\$CXX set, but I don't see \$CC!"
fi
fi
if [ -n "${CC}" ]; then
if [ -n "${cxx_set}" ]; then
echo "Both --with-cc and \$CC set, using the first"
else
write_option "${CC}" _FORCE_CC
fi
fi
if [ -n "${CXXFLAGS}" ]; then
if [ -z "${cxxflags_set}" ]; then
write_option "${CXXFLAGS}" EXTRA_CXXFLAGS
else
echo "Both --with-extra-cxxflags and \$CXXFLAGS set, using the first"
fi
fi
if [ -n "${CFLAGS}" ]; then
if [ -z "${cflags_set}" ]; then
write_option "${CFLAGS}" EXTRA_CFLAGS
else
echo "Both --with-extra-cflags and \$CFLAGS set, using the first"
fi
fi
if [ -n "${LDFLAGS}" ]; then
if [ -z "${ldflags_set}" ]; then
write_option "${LDFLAGS}" EXTRA_LDFLAGS
else
echo "Both --with-extra-ldflags and \$LDFLAGS set, using the first"
fi
fi
# default settings
default_settings

File diff suppressed because it is too large Load diff

View file

@ -1,154 +1,154 @@
==================================================
STLport README for Borland C++ compilers.
==================================================
by: Francois Dumont, dums@stlport.com, last edited 20 May 2006
============
Introduction
============
This document describes how STLport can be compiled and used with
Borland compilers.
For any further comments or questions visit STLport mailing lists
http://stlport.sourceforge.net/Maillists.shtml or forums
https://sourceforge.net/forum/?group_id=146814
=============
Prerequisites
=============
To build and use STLport you will need following tools and libraries:
- Borland C++ compiler package 5.5.1 or higher version.
In order to build STLport the Borland compiler and linker have to
be correctly configurated too. That is to say:
* For the Borland compiler bcc32:
In Borland's 'bin' directory (same directory as bcc32.exe), create a
bcc32.cfg file containing the compiler option giving it the path to
native Borland headers:
-I%BORLAND_PATH%\BCC55\include
* For the resource compiler brcc32:
Create an environment variable INCLUDE containing path to native Borland
headers and especially the windows.h file
set INCLUDE=%BORLAND_PATH%\BCC55\include
* For the Borland linker ilink32:
You need to give path to both the Borland libs and Borland PSDK libs.
For that you have to create, in the same directory as ilink32.exe, a
configuration file, ilink32.cfg, that contains:
-L%BORLAND_PATH%\BCC55\lib;%BORLAND_PATH%\BCC55\lib\PSDK
- A GNU make tool. You can get one from www.mingw.org or www.cygwin.com.
See README.mingw or README.cygwin for additional informations.
===================
Configuring STLport
===================
This is intended to be an optional step, if you want to use default
configuration simply jump to next chapter 'Building STLport'. Open a console
and go to the STLport build/lib folder. Run
configure --help
This command will present you the different available build options. Just follow
the instructions to set STLport configuration according your needs. For example,
to set the typical configuration for most Borland compilers, run
configure -c bcc
================
Building STLport
================
This is a step by step description of the actions to take in order to build
and install the STLport libraries:
1. Open a console, you can use a Msys, Cygwin or Windows console.
2. Go to the STLport build/lib folder:
cd C:\STLport\build\lib
3. Run the following command:
make -fbcc.mak install
Where 'make' is the GNU make utility you have installed. The name of
GNU make utility may differ, such as 'mingw32-make'. -f is a make option
telling it which makefile to use. You have of course to choose the
appropriate makefile for your compiler, 'bcc.mak' in our case.
Once the command returns you will have all the necessary import libraries
in STLport's 'lib' folder and DLLs in STLport's 'bin' folder. For a
description of the generated libraries check the FAQ file in the 'doc' folder.
For a quick start guide to the STLport make system, see the README file in the
'build/lib' folder.
===============
Testing STLport
===============
You can use the unit tests to verify STLport behaves correctly. Change into
STLport's 'build/test/unit' folder and type:
make -fbcc.mak install
This will build and install the unit tests with STLport dynamic libraries.
Once the unit tests are built you just need to run them. They can be found
in STLport's bin, bin-g or bin-stlg folders. To rebuild the unit tests
with STLport static libraries, type:
make -fbcc.mak clean
make -fbcc.mak install-static
=============
Using STLport
=============
Adjust your include and link paths in Borland IDE or in the command line config
files. In the include files add the path to STLport's 'stlport' folder. Make sure
it is the first directory listed there. Add STLport's 'lib' folder for the library
files (order of paths doesn't matter here).
Now you should be ready to use STLport.
============
Known limitations
============
1. If you extend a locale facet based on a Standard facet definition you will
have to grant your own facet id defition. Ex extracted from
test/unit/fstream_test.cpp:
#include <locale>
using namespace std;
struct my_state {
char dummy;
};
struct my_traits : public char_traits<char> {
typedef my_state state_type;
typedef fpos<state_type> pos_type;
};
class my_codecvt : public codecvt<char, char, my_state>
{};
// Mandatory locale facet id definition:
template <>
locale::id codecvt<char, char, my_state>::id;
2. If you get a linker memory error, e.g. LME351, it probably means that full
source debugging is enabled and Borland's .TDS file has exceeded the memory
capacity of Borland's linker (ilink32.exe). To resolve this error, check
Borland's website for the latest patch for ilink32.exe. In the alternative,
disable full source debugging in build\Makefiles\gmake\bcc.mak by deleting
the -v option in the OPT settings.
3. For "'uname' is not recognized . . .", see "Configuring STLport" above.
==================================================
STLport README for Borland C++ compilers.
==================================================
by: Francois Dumont, dums@stlport.com, last edited 20 May 2006
============
Introduction
============
This document describes how STLport can be compiled and used with
Borland compilers.
For any further comments or questions visit STLport mailing lists
http://stlport.sourceforge.net/Maillists.shtml or forums
https://sourceforge.net/forum/?group_id=146814
=============
Prerequisites
=============
To build and use STLport you will need following tools and libraries:
- Borland C++ compiler package 5.5.1 or higher version.
In order to build STLport the Borland compiler and linker have to
be correctly configurated too. That is to say:
* For the Borland compiler bcc32:
In Borland's 'bin' directory (same directory as bcc32.exe), create a
bcc32.cfg file containing the compiler option giving it the path to
native Borland headers:
-I%BORLAND_PATH%\BCC55\include
* For the resource compiler brcc32:
Create an environment variable INCLUDE containing path to native Borland
headers and especially the windows.h file
set INCLUDE=%BORLAND_PATH%\BCC55\include
* For the Borland linker ilink32:
You need to give path to both the Borland libs and Borland PSDK libs.
For that you have to create, in the same directory as ilink32.exe, a
configuration file, ilink32.cfg, that contains:
-L%BORLAND_PATH%\BCC55\lib;%BORLAND_PATH%\BCC55\lib\PSDK
- A GNU make tool. You can get one from www.mingw.org or www.cygwin.com.
See README.mingw or README.cygwin for additional informations.
===================
Configuring STLport
===================
This is intended to be an optional step, if you want to use default
configuration simply jump to next chapter 'Building STLport'. Open a console
and go to the STLport build/lib folder. Run
configure --help
This command will present you the different available build options. Just follow
the instructions to set STLport configuration according your needs. For example,
to set the typical configuration for most Borland compilers, run
configure -c bcc
================
Building STLport
================
This is a step by step description of the actions to take in order to build
and install the STLport libraries:
1. Open a console, you can use a Msys, Cygwin or Windows console.
2. Go to the STLport build/lib folder:
cd C:\STLport\build\lib
3. Run the following command:
make -fbcc.mak install
Where 'make' is the GNU make utility you have installed. The name of
GNU make utility may differ, such as 'mingw32-make'. -f is a make option
telling it which makefile to use. You have of course to choose the
appropriate makefile for your compiler, 'bcc.mak' in our case.
Once the command returns you will have all the necessary import libraries
in STLport's 'lib' folder and DLLs in STLport's 'bin' folder. For a
description of the generated libraries check the FAQ file in the 'doc' folder.
For a quick start guide to the STLport make system, see the README file in the
'build/lib' folder.
===============
Testing STLport
===============
You can use the unit tests to verify STLport behaves correctly. Change into
STLport's 'build/test/unit' folder and type:
make -fbcc.mak install
This will build and install the unit tests with STLport dynamic libraries.
Once the unit tests are built you just need to run them. They can be found
in STLport's bin, bin-g or bin-stlg folders. To rebuild the unit tests
with STLport static libraries, type:
make -fbcc.mak clean
make -fbcc.mak install-static
=============
Using STLport
=============
Adjust your include and link paths in Borland IDE or in the command line config
files. In the include files add the path to STLport's 'stlport' folder. Make sure
it is the first directory listed there. Add STLport's 'lib' folder for the library
files (order of paths doesn't matter here).
Now you should be ready to use STLport.
============
Known limitations
============
1. If you extend a locale facet based on a Standard facet definition you will
have to grant your own facet id defition. Ex extracted from
test/unit/fstream_test.cpp:
#include <locale>
using namespace std;
struct my_state {
char dummy;
};
struct my_traits : public char_traits<char> {
typedef my_state state_type;
typedef fpos<state_type> pos_type;
};
class my_codecvt : public codecvt<char, char, my_state>
{};
// Mandatory locale facet id definition:
template <>
locale::id codecvt<char, char, my_state>::id;
2. If you get a linker memory error, e.g. LME351, it probably means that full
source debugging is enabled and Borland's .TDS file has exceeded the memory
capacity of Borland's linker (ilink32.exe). To resolve this error, check
Borland's website for the latest patch for ilink32.exe. In the alternative,
disable full source debugging in build\Makefiles\gmake\bcc.mak by deleting
the -v option in the OPT settings.
3. For "'uname' is not recognized . . .", see "Configuring STLport" above.

View file

@ -1,43 +1,43 @@
The cygwin platform is used to build STLport with different compilers.
- gcc (native compiler):
Makefile : gcc.mak
Notes:
1. Static builds (archive)
If you use the static version of the STLport libraries you have
to define the _STLP_USE_STATIC_LIB macro in order to have your
executable linked correctly.
2. Link
Under this platform STLport is complete replacement for libstdc++.
It means that when you were linking with libstdc++ (-lstdc++) you only
have to replace it with STLport (-lstlport.5.2 for instance). However
default gcc behavior is to automatically link libstdc++ and a number of
other system libs. To avoid this behavior you have to use the -nodefaultlibs
compiler option and explicitely give all libraries by yourself. See build of
unit tests to see what library you might need, here is the list when this
note was written:
without -mnocygwin option:
-lstlportg.5.2 -lgcc -lm -lc -lpthread -lkernel32
with -mno-cygwin option:
-lstlportg.5.2 -lgcc -lmingw32 -lmingwex -lmsvcrt -lm -lmoldname
-lcoldname -lkernel32
3. No cygwin
To build STLport libraries that do not depend on cygwin1.dll
making them freely redistributable pass the following option to
the configure script:
./configure --with-extra-cflags=-mno-cygwin --with-extra-cxxflags=-mno-cygwin
- Borland C++ compiler
The cygwin platform is used to build STLport with different compilers.
- gcc (native compiler):
Makefile : gcc.mak
Notes:
1. Static builds (archive)
If you use the static version of the STLport libraries you have
to define the _STLP_USE_STATIC_LIB macro in order to have your
executable linked correctly.
2. Link
Under this platform STLport is complete replacement for libstdc++.
It means that when you were linking with libstdc++ (-lstdc++) you only
have to replace it with STLport (-lstlport.5.2 for instance). However
default gcc behavior is to automatically link libstdc++ and a number of
other system libs. To avoid this behavior you have to use the -nodefaultlibs
compiler option and explicitely give all libraries by yourself. See build of
unit tests to see what library you might need, here is the list when this
note was written:
without -mnocygwin option:
-lstlportg.5.2 -lgcc -lm -lc -lpthread -lkernel32
with -mno-cygwin option:
-lstlportg.5.2 -lgcc -lmingw32 -lmingwex -lmsvcrt -lm -lmoldname
-lcoldname -lkernel32
3. No cygwin
To build STLport libraries that do not depend on cygwin1.dll
making them freely redistributable pass the following option to
the configure script:
./configure --with-extra-cflags=-mno-cygwin --with-extra-cxxflags=-mno-cygwin
- Borland C++ compiler

View file

@ -1,81 +1,81 @@
==================================================
STLport README for Digital Mars C++ compilers.
==================================================
Build of STLport with Digital Mars C++ compiler is very similar
to the one for Microsoft Visual Studio compiler (see README.msvc).
Below are some additional hints. [DMC users are encouraged to
contribute additional information.]
=============
Prerequisites
=============
- Digital Mars C++ 8.49 or above
- A GNU environment with make tool. Prefer MinGW/MSys to Cygwin because the
latter contains a link command that is also the name of the Digital Mars linker
and you might experiment collision between both commands.
See README.mingw for additional information.
===================
Installing STLport
===================
- STLport directory can be almost anywhere EXCEPT native dm\include directory.
===================
Configuring STLport
===================
- In a console window go to the STLport build\lib folder. Run
configure -c dmc
================
Building STLport
================
- To build STLport libraries:
cd [STLport dir]\build\lib
[mingw32-make] -f dmc.mak install
- To build STLport (dynamic) unit tests:
cd [STLport dir]\build\test\unit
[mingw32-make] -f dmc.mak install
============
Known issues
============
1. typeinfo.h
DMC forces inclusion of typeinfo.h header at the begining of any
translation unit. This breaks the STLport include schema, especially
when building the library. As a workaround STLport typeinfo.h simply
include native DMC header not performing any internal STLport work as
importing things to STLport namespace. As a result typeinfo.h should
never be reference in user code, as it is neither a C nor a C++ header
this is not considered as a major limitation. The C++ Standard header
is typeinfo.
2. link.exe and lib.exe
STLport makefiles for DMC use dm_link and dm_lib instead of link and lib to
avoid conflicts with other vendors' linkers and archivers. To build STLport
with DMC, please copy or rename the following files:
copy dm\bin\link.exe dm\bin\dm_link.exe
copy dm\bin\lib.exe dm\bin\dm_lib.exe
3. Free online version.
If DMC's free online version reports compiler or linker errors, the
solution may be in a free online CD update. Download and unzip all free
CD patches for versions 8.30 and above, in consecutive order, overwriting
previous files. Then install free online version 8.49 or above, overwriting
previous files.
==================================================
STLport README for Digital Mars C++ compilers.
==================================================
Build of STLport with Digital Mars C++ compiler is very similar
to the one for Microsoft Visual Studio compiler (see README.msvc).
Below are some additional hints. [DMC users are encouraged to
contribute additional information.]
=============
Prerequisites
=============
- Digital Mars C++ 8.49 or above
- A GNU environment with make tool. Prefer MinGW/MSys to Cygwin because the
latter contains a link command that is also the name of the Digital Mars linker
and you might experiment collision between both commands.
See README.mingw for additional information.
===================
Installing STLport
===================
- STLport directory can be almost anywhere EXCEPT native dm\include directory.
===================
Configuring STLport
===================
- In a console window go to the STLport build\lib folder. Run
configure -c dmc
================
Building STLport
================
- To build STLport libraries:
cd [STLport dir]\build\lib
[mingw32-make] -f dmc.mak install
- To build STLport (dynamic) unit tests:
cd [STLport dir]\build\test\unit
[mingw32-make] -f dmc.mak install
============
Known issues
============
1. typeinfo.h
DMC forces inclusion of typeinfo.h header at the begining of any
translation unit. This breaks the STLport include schema, especially
when building the library. As a workaround STLport typeinfo.h simply
include native DMC header not performing any internal STLport work as
importing things to STLport namespace. As a result typeinfo.h should
never be reference in user code, as it is neither a C nor a C++ header
this is not considered as a major limitation. The C++ Standard header
is typeinfo.
2. link.exe and lib.exe
STLport makefiles for DMC use dm_link and dm_lib instead of link and lib to
avoid conflicts with other vendors' linkers and archivers. To build STLport
with DMC, please copy or rename the following files:
copy dm\bin\link.exe dm\bin\dm_link.exe
copy dm\bin\lib.exe dm\bin\dm_lib.exe
3. Free online version.
If DMC's free online version reports compiler or linker errors, the
solution may be in a free online CD update. Download and unzip all free
CD patches for versions 8.30 and above, in consecutive order, overwriting
previous files. Then install free online version 8.49 or above, overwriting
previous files.

View file

@ -1,157 +1,157 @@
========================================
STLport README for eMbedded Visual C++ 3
========================================
by: Michael Fink, vividos@users.sourceforge.net, last edited 2005-11-15
============
Introduction
============
This document describes how STLport can be compiled and used with Microsoft
eMbedded Visual C++ 3.
For any further comments or questsion visit STLport mailing lists
http://stlport.sourceforge.net/Maillists.shtml or forums
https://sourceforge.net/forum/?group_id=146814
=============
Prerequisites
=============
To build and use STLport you will need following tools and libraries:
- eMbedded Visual C++ 3.0
- latest CVS version of STLport, use info from page
'http://stlport.sourceforge.net/CVS.shtml' to get it.
Note that you may have to get a different branch, please check out the
STLport forum "Announcements" which sourcecode is being worked on.
================
Building STLport
================
Note: if you don't plan to use the iostreams part of STLport (via the define
_STLP_NO_IOSTREAMS), you don't have to build the library. You can skip straight
to the "Using STLport" section.
If you want to compile for the Pocket PC 2002 SDK (which in most cases you want)
be sure to set the PLATFORM environment variable to "Pocket PC 2002", e.g. with
this command:
set PLATFORM=Pocket PC 2002
Open a command line prompt and execute the batch file that sets up compiling
for ARM or x86 processors. These files usually are in a folder like
'C:\Program Files\Windows CE eMbedded Tools\EVC\WCE300\BIN\' and are called
WCEARM.bat and WCEx86.bat. Check if the environment variables are set up
properly after that call. You can also adjust the batch files to have the
PLATFORM variable set automatically.
Go into STLport's 'build\lib' folder and type:
configure.bat -c evc3
The makefiles are configured with the given settings. Call configure.bat with
the --help option to see all options. The program automatically tells you which
command line to use. If you want to install the libraries, add the "install"
target as follows:
nmake /fmsvc.mak install
All libraries (debug, stldebug, release) are now built, static and shared
ones. Import libraries (.lib files) are put in the 'lib\evc3-arm' folder, DLLs
are put in the 'bin\evc3-arm' folder. If you use another target platform, the
name of the folder is changed accordingly, e.g. evc3-x86 for emulator files.
Once STLport is built you can decrease the size of the STLport folder by
removing intermediate build files. This is done with the following command:
nmake /fmsvc.mak clobber
Note: MIPS platform is also available for build, but it may not compile or work
properly. Use with caution!
===============
Testing STLport
===============
You can use the unit tests to verify STLport behaves correctly. Change into
STLports 'build\test\unit' folder and type:
nmake /fmsvc.mak install
If you want to build the unit tests for the emulator, you have to reconfigure
STLport with the configure.bat, as described above.
Once the unit tests are built, upload the binary (found in the 'bin\evc3-arm'
folder) to your device or emulator and start it (the test runs for about 30
seconds, depending on the speed of the device). The file 'stlp_test.txt' is
created in the root folder of the device, which contains the unit test
results. It should report no errors.
=============
Using STLport
=============
Adjust your include and link paths in eVC3 in 'Tools -> Options -> Directories'
and add the paths for all platforms and CPUs on which you want to use STLport.
In the include files add the path to STLport's 'stlport' folder. Make sure it
is the first directory listed there. Add STLport's 'lib\evc3-arm' or
'lib\evc3-x86' (depending on what target you use) folder for the library files
(order of paths doesn't matter here).
There are some preprocessor defines that control usage of the STLport in evc3
projects:
Define the symbol _STLP_USE_STATIC_LIB when you want to statically link against
STLport. The linker will remove unused classes and methods then, saving some
space in the executable.
If you don't want to use the iostreams part of the library, you can specify the
define _STLP_NO_IOSTREAMS. In this mode there is no need to link against the
library.
STLport uses automatic linking to find the proper .lib file. If you want to see
what import library STLport is going to use, define _STLP_VERBOSE_AUTO_LINK.
When not using automatic linking (by specifying _STLP_DONT_USE_AUTO_LINK), you
have to specify the proper .lib file in the Project Settings, on the "link" tab.
The .lib names have the following syntax:
stlport(d|stld)[_static].<STLport-Version>.lib
Examples:
stlport_static.5.0.lib - static release version, Version 5.0.0
stlportd_50.lib - dll debug version, Version 5.0.0
Note that usage of the _STLP_DEBUG mode is currently not recommended for
eMbedded Visual C++ builds using the ARM compiler, due to a compiler bug.
When using STLport together with MFC, be sure to include the MFC headers first,
then include STLport headers, e.g. in your Stdafx.h. This way STLport correctly
recognizes MFC usage. You also can define the macro _STLP_USE_MFC, either in
your project settings or in stlport/stl/config/user_config.h.
Now you should be ready to use STLport.
============
Known issues
============
- Unit Tests in _STLP_DEBUG mode (target 'stldbg-shared') fails in
__stl_debug_engine::_M_detach() for several tests due to unknown reasons.
A compiler bug in the ARM compiler is suspected.
There is currently no workaround for this bug. It is recommended to not use
_STLP_DEBUG mode.
- Resource compiler issue:
The resource compiler is not a C++ compiler, it is a compiler that translates
resource files, i.e. files that describe dialogs, strings, version information
and other parts of the GUI on MS Windows systems.
The problem is that it includes files from the C/C++ include path, and
STLport uses mechanisms the resource compiler can't handle, e.g. using macro
names longer than 31 characters.
The workaround is to guard all affected headers (stdio.h, string.h, stdarg.h,
stdlib.h, ctype.h) against this. The resource compiler is detected by the
macro RC_INVOKED.
- See also README.evc4 issues.
========================================
STLport README for eMbedded Visual C++ 3
========================================
by: Michael Fink, vividos@users.sourceforge.net, last edited 2005-11-15
============
Introduction
============
This document describes how STLport can be compiled and used with Microsoft
eMbedded Visual C++ 3.
For any further comments or questsion visit STLport mailing lists
http://stlport.sourceforge.net/Maillists.shtml or forums
https://sourceforge.net/forum/?group_id=146814
=============
Prerequisites
=============
To build and use STLport you will need following tools and libraries:
- eMbedded Visual C++ 3.0
- latest CVS version of STLport, use info from page
'http://stlport.sourceforge.net/CVS.shtml' to get it.
Note that you may have to get a different branch, please check out the
STLport forum "Announcements" which sourcecode is being worked on.
================
Building STLport
================
Note: if you don't plan to use the iostreams part of STLport (via the define
_STLP_NO_IOSTREAMS), you don't have to build the library. You can skip straight
to the "Using STLport" section.
If you want to compile for the Pocket PC 2002 SDK (which in most cases you want)
be sure to set the PLATFORM environment variable to "Pocket PC 2002", e.g. with
this command:
set PLATFORM=Pocket PC 2002
Open a command line prompt and execute the batch file that sets up compiling
for ARM or x86 processors. These files usually are in a folder like
'C:\Program Files\Windows CE eMbedded Tools\EVC\WCE300\BIN\' and are called
WCEARM.bat and WCEx86.bat. Check if the environment variables are set up
properly after that call. You can also adjust the batch files to have the
PLATFORM variable set automatically.
Go into STLport's 'build\lib' folder and type:
configure.bat -c evc3
The makefiles are configured with the given settings. Call configure.bat with
the --help option to see all options. The program automatically tells you which
command line to use. If you want to install the libraries, add the "install"
target as follows:
nmake /fmsvc.mak install
All libraries (debug, stldebug, release) are now built, static and shared
ones. Import libraries (.lib files) are put in the 'lib\evc3-arm' folder, DLLs
are put in the 'bin\evc3-arm' folder. If you use another target platform, the
name of the folder is changed accordingly, e.g. evc3-x86 for emulator files.
Once STLport is built you can decrease the size of the STLport folder by
removing intermediate build files. This is done with the following command:
nmake /fmsvc.mak clobber
Note: MIPS platform is also available for build, but it may not compile or work
properly. Use with caution!
===============
Testing STLport
===============
You can use the unit tests to verify STLport behaves correctly. Change into
STLports 'build\test\unit' folder and type:
nmake /fmsvc.mak install
If you want to build the unit tests for the emulator, you have to reconfigure
STLport with the configure.bat, as described above.
Once the unit tests are built, upload the binary (found in the 'bin\evc3-arm'
folder) to your device or emulator and start it (the test runs for about 30
seconds, depending on the speed of the device). The file 'stlp_test.txt' is
created in the root folder of the device, which contains the unit test
results. It should report no errors.
=============
Using STLport
=============
Adjust your include and link paths in eVC3 in 'Tools -> Options -> Directories'
and add the paths for all platforms and CPUs on which you want to use STLport.
In the include files add the path to STLport's 'stlport' folder. Make sure it
is the first directory listed there. Add STLport's 'lib\evc3-arm' or
'lib\evc3-x86' (depending on what target you use) folder for the library files
(order of paths doesn't matter here).
There are some preprocessor defines that control usage of the STLport in evc3
projects:
Define the symbol _STLP_USE_STATIC_LIB when you want to statically link against
STLport. The linker will remove unused classes and methods then, saving some
space in the executable.
If you don't want to use the iostreams part of the library, you can specify the
define _STLP_NO_IOSTREAMS. In this mode there is no need to link against the
library.
STLport uses automatic linking to find the proper .lib file. If you want to see
what import library STLport is going to use, define _STLP_VERBOSE_AUTO_LINK.
When not using automatic linking (by specifying _STLP_DONT_USE_AUTO_LINK), you
have to specify the proper .lib file in the Project Settings, on the "link" tab.
The .lib names have the following syntax:
stlport(d|stld)[_static].<STLport-Version>.lib
Examples:
stlport_static.5.0.lib - static release version, Version 5.0.0
stlportd_50.lib - dll debug version, Version 5.0.0
Note that usage of the _STLP_DEBUG mode is currently not recommended for
eMbedded Visual C++ builds using the ARM compiler, due to a compiler bug.
When using STLport together with MFC, be sure to include the MFC headers first,
then include STLport headers, e.g. in your Stdafx.h. This way STLport correctly
recognizes MFC usage. You also can define the macro _STLP_USE_MFC, either in
your project settings or in stlport/stl/config/user_config.h.
Now you should be ready to use STLport.
============
Known issues
============
- Unit Tests in _STLP_DEBUG mode (target 'stldbg-shared') fails in
__stl_debug_engine::_M_detach() for several tests due to unknown reasons.
A compiler bug in the ARM compiler is suspected.
There is currently no workaround for this bug. It is recommended to not use
_STLP_DEBUG mode.
- Resource compiler issue:
The resource compiler is not a C++ compiler, it is a compiler that translates
resource files, i.e. files that describe dialogs, strings, version information
and other parts of the GUI on MS Windows systems.
The problem is that it includes files from the C/C++ include path, and
STLport uses mechanisms the resource compiler can't handle, e.g. using macro
names longer than 31 characters.
The workaround is to guard all affected headers (stdio.h, string.h, stdarg.h,
stdlib.h, ctype.h) against this. The resource compiler is detected by the
macro RC_INVOKED.
- See also README.evc4 issues.

View file

@ -1,126 +1,126 @@
========================================
STLport README for eMbedded Visual C++ 4
========================================
by: Zdenek Nemec, zero@mapfactor.com, last edited 2005-10-17
============
Introduction
============
This document should provide step-by-step guidance for installing, testing and using the STLport library under Windows CE .NET 4.x
(aka Windows Mobile 2003 aka Pocket PC 2003).
For any further comments or questions visit the STLport mailing lists
http://stlport.sourceforge.net/Maillists.shtml or forums
https://sourceforge.net/forum/?group_id=146814
=============
Prerequisites
=============
To build and use the STLport you will need following tools and libraries:
- eMbedded Visual C++ 4.0 SP4
- an SDK for your target platform with RTTI support
================
Building STLport
================
First, make sure that RTTI is available. Not all SDKs that come with eVC4 also include
the necessary libs, but there is a patch for the PPC2003 SDK, available at
http://support.microsoft.com/default.aspx?scid=kb;[LN];830482.
Second, open command line and set proper system variables.
This can be done by using batch files under your 'eMbedded Visual C++' directory(use either WCEemulator.BAT if you want to build STLport for the emulator or WCEARMV4.BAT if you intend to aim an ARM device).
NOTE: If you are using Microsoft's batch files to set system variables check if both WCEROOT and SDKROOT vars are set to correct locations. example:
WCEROOT=C:\Program Files\Microsoft eMbedded C++ 4.0
SDKROOT=C:\Program Files\Windows CE Tools
Third, when you are 100percent sure you've set correctly systems variables go to the STLport/build/lib dir and run the configure.bat with
proper -c option (ie. "-c evc4"),
then invoke following command: 'nmake /fmsvc.mak install' to build the library.
If anything goes wrong check if you met all prerequisities and if you set system vars accordingly to the makfile you are using.
At the end of build process you should have some libs installed in STLport/lib/evc4-arm or STLport/lib/evc4-x86 and dynamic libs in STLport/bin directory.
You might want to repeat all those steps if you would like to have
e.g. both ARM and x86 emulator binaries, just don't forget to do
'nmake /fmsvc.mak clobber' before new build.
Note: MIPS platform is also available for build, but it may not compile or work properly. Use with caution!
===============
Testing STLport
===============
When you successfuly build STLport libs, you should go to STLport/test/unit directory build and run the STLP test suite.
Use 'nmake /fmsvc.mak' and keep in mind that you still have to have proper system variables set!
Once test build has finished upload and run stlp_unit_test.exe to your emulator or device.
Wait for a while (aprox. 2mins) until all tests are done.
You should see two files next to your binary now.
Check stlp_test.txt for any errors. If all tests passed you are ready to deploy STLport.
If some test fails don't worry and check the STLport forum if it's already reported bug or you have found a new one.
=============
Using STLport
=============
Setting up the IDE:
Before you start using STLport you have to set proper include and libraries search paths.
Go to 'Tools'>'Options' menu in your eVC 4.0 and then to 'Directories' tab.
For every platform you want to use STLport add STLport/stlport directory to the FIRST place in 'Include Files'
and STLport/lib directory in 'Library files' section.
Setting up projects:
When using STLport together with MFC, you have to define _STLP_USE_MFC to properly include and use STLport.
By default, exception support is not activated. You can detect this via _CPPUNWIND and activate this via /GX.
Without exception support, e.g. std::bad_alloc is not available, causing compile errors for some code.
Also, there is only one runtime available but the IDE doesn't add the corresponding switch to the command line.
The right switch (selecting a dynamically linked runtime) is IMHO /MD or /MDd. This then also switches STLport to dynamic linking.
Alternatively, you can #define _DLL for your project, which achieves the same but, again IMHO, is a less clean solution.
============
Known issues
============
- The compilers that come with eVC4 are almost bug-to-bug compatible with
the one from VC6, so most workarounds for that compiler apply here, too.
- There is a bug in the MIPS compiler that comes with eVC4 which only surfaces
under certain conditions:
* in release mode with global optimizations on (#pragma optimize("g", on))
* a baseclass has (at least) two pointer members
* a derived class adds no data members
* the derived class' cctor defers to the basclass' compiler-generated cctor
* it is passed as template parameter to a function
The smallest testcase I could come up with is this:
struct base {
void* ptr1;
void* ptr2;
};
struct derived: public base {
derived() {}
derived(const derived& __x): base(__x) {}
};
template<typename SomeType> void function( SomeType st1, SomeType st2) {}
struct test {
derived tmp;
~test() { function(tmp, tmp); }
};
test test;
..which causes an internal compiler error. Removing the base::ptr1, adding data
to derived, making function() a normal function, or turning off optimization
(#pragma optimize("g", off)) all causes the code to compile. This bug affects
iterators of deque and vector<bool>.
- Because of interdependancy between STLport and native Standard library headers
STLport headers should always be included first in your translation unit (.cpp
file). That is to say that:
//Wrong headers order:
#include <windows.h>
#include <cstdlib>
// Correct headers order
#include <cstdlib>
#include <windows.h>
========================================
STLport README for eMbedded Visual C++ 4
========================================
by: Zdenek Nemec, zero@mapfactor.com, last edited 2005-10-17
============
Introduction
============
This document should provide step-by-step guidance for installing, testing and using the STLport library under Windows CE .NET 4.x
(aka Windows Mobile 2003 aka Pocket PC 2003).
For any further comments or questions visit the STLport mailing lists
http://stlport.sourceforge.net/Maillists.shtml or forums
https://sourceforge.net/forum/?group_id=146814
=============
Prerequisites
=============
To build and use the STLport you will need following tools and libraries:
- eMbedded Visual C++ 4.0 SP4
- an SDK for your target platform with RTTI support
================
Building STLport
================
First, make sure that RTTI is available. Not all SDKs that come with eVC4 also include
the necessary libs, but there is a patch for the PPC2003 SDK, available at
http://support.microsoft.com/default.aspx?scid=kb;[LN];830482.
Second, open command line and set proper system variables.
This can be done by using batch files under your 'eMbedded Visual C++' directory(use either WCEemulator.BAT if you want to build STLport for the emulator or WCEARMV4.BAT if you intend to aim an ARM device).
NOTE: If you are using Microsoft's batch files to set system variables check if both WCEROOT and SDKROOT vars are set to correct locations. example:
WCEROOT=C:\Program Files\Microsoft eMbedded C++ 4.0
SDKROOT=C:\Program Files\Windows CE Tools
Third, when you are 100percent sure you've set correctly systems variables go to the STLport/build/lib dir and run the configure.bat with
proper -c option (ie. "-c evc4"),
then invoke following command: 'nmake /fmsvc.mak install' to build the library.
If anything goes wrong check if you met all prerequisities and if you set system vars accordingly to the makfile you are using.
At the end of build process you should have some libs installed in STLport/lib/evc4-arm or STLport/lib/evc4-x86 and dynamic libs in STLport/bin directory.
You might want to repeat all those steps if you would like to have
e.g. both ARM and x86 emulator binaries, just don't forget to do
'nmake /fmsvc.mak clobber' before new build.
Note: MIPS platform is also available for build, but it may not compile or work properly. Use with caution!
===============
Testing STLport
===============
When you successfuly build STLport libs, you should go to STLport/test/unit directory build and run the STLP test suite.
Use 'nmake /fmsvc.mak' and keep in mind that you still have to have proper system variables set!
Once test build has finished upload and run stlp_unit_test.exe to your emulator or device.
Wait for a while (aprox. 2mins) until all tests are done.
You should see two files next to your binary now.
Check stlp_test.txt for any errors. If all tests passed you are ready to deploy STLport.
If some test fails don't worry and check the STLport forum if it's already reported bug or you have found a new one.
=============
Using STLport
=============
Setting up the IDE:
Before you start using STLport you have to set proper include and libraries search paths.
Go to 'Tools'>'Options' menu in your eVC 4.0 and then to 'Directories' tab.
For every platform you want to use STLport add STLport/stlport directory to the FIRST place in 'Include Files'
and STLport/lib directory in 'Library files' section.
Setting up projects:
When using STLport together with MFC, you have to define _STLP_USE_MFC to properly include and use STLport.
By default, exception support is not activated. You can detect this via _CPPUNWIND and activate this via /GX.
Without exception support, e.g. std::bad_alloc is not available, causing compile errors for some code.
Also, there is only one runtime available but the IDE doesn't add the corresponding switch to the command line.
The right switch (selecting a dynamically linked runtime) is IMHO /MD or /MDd. This then also switches STLport to dynamic linking.
Alternatively, you can #define _DLL for your project, which achieves the same but, again IMHO, is a less clean solution.
============
Known issues
============
- The compilers that come with eVC4 are almost bug-to-bug compatible with
the one from VC6, so most workarounds for that compiler apply here, too.
- There is a bug in the MIPS compiler that comes with eVC4 which only surfaces
under certain conditions:
* in release mode with global optimizations on (#pragma optimize("g", on))
* a baseclass has (at least) two pointer members
* a derived class adds no data members
* the derived class' cctor defers to the basclass' compiler-generated cctor
* it is passed as template parameter to a function
The smallest testcase I could come up with is this:
struct base {
void* ptr1;
void* ptr2;
};
struct derived: public base {
derived() {}
derived(const derived& __x): base(__x) {}
};
template<typename SomeType> void function( SomeType st1, SomeType st2) {}
struct test {
derived tmp;
~test() { function(tmp, tmp); }
};
test test;
..which causes an internal compiler error. Removing the base::ptr1, adding data
to derived, making function() a normal function, or turning off optimization
(#pragma optimize("g", off)) all causes the code to compile. This bug affects
iterators of deque and vector<bool>.
- Because of interdependancy between STLport and native Standard library headers
STLport headers should always be included first in your translation unit (.cpp
file). That is to say that:
//Wrong headers order:
#include <windows.h>
#include <cstdlib>
// Correct headers order
#include <cstdlib>
#include <windows.h>

View file

@ -1,98 +1,98 @@
setup VC8 for CE:
------------------
- VC8 doesn't have any setup batchfiles that prepare the environment for compiling
with CE. You can take those from eVC4 and adapt them or write your own. This snippet
should get you going:
rem you need to adapt at least these three
set OSVERSION=WCE500
set PLATFORM=MY_OWN_PLATFORM
set TARGETCPU=MIPSII
rem the compiler is always cl.exe, different compilers are in different paths
set CC=cl.exe
rem obviously, these need to be adjusted to where you installed VS2005 and the SDKs
set VSINSTALLDIR=C:\Programme\Microsoft Visual Studio 8
set SDKROOT=C:\Programme\Windows CE Tools
set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_mips;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\%OSVERSION%\%PLATFORM%
rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include\%TARGETCPU%;%PLATFORMROOT%\MFC\include;%PLATFORMROOT%\ATL\include
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%;%PLATFORMROOT%\MFC\lib\%TARGETCPU%;%PLATFORMROOT%\ATL\lib\%TARGETCPU%
rem add libs that came with VC8
rem Note: there are more libs and includes under ce\atlmfc, not sure if these are needed.
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%
- The snippet below can be used to build STLport for Pocket PC 2003 (using the
Pocket PC 2003 SDK shipped with Visual Studio 2005, this is the SDK used when
compiling programs from within the IDE):
set OSVERSION=WCE420
set PLATFORM=POCKET PC 2003
set TARGETCPU=ARMV4
rem the compiler is always cl.exe, different compilers are in different paths
set CC=cl.exe
rem obviously, these need to be adjusted to where you installed VS2005
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
set SDKROOT=%VSINSTALLDIR%\SmartDevices\SDK
set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_arm;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\PocketPC2003
rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%
rem add libs that came with VC8
set INCLUDE=%INCLUDE%;%VSINSTALLDIR%\VC\ce\atlmfc\include
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%;%VSINSTALLDIR%\VC\ce\atlmfc\lib\%TARGETCPU%
You should now be able to run cl.exe for the target you expected.
- The cross compilers of VC8 are the same version as for the native target, i.e. MSC14.
- The cross compiler for MIPS has the same bug as mentioned in doc/README.evc4 and
the same workaround applies. However, using 'whole program optimization', it results
in an error in the link phase.
- In order for STLport to recognize which target you are compiling for, you need to have
some macros defined, e.g. for the target architecture. The compilers do that partially on
their own, but not sufficiently. Therefore, STLport requires these defines:
-- These are generally set for CE:
_UNICODE;UNICODE;_WIN32;WIN32;UNDER_CE;WINCE;
-- This one uses an environment variable to set the CE version:
_WIN32_WCE=$(CEVER);
-- These are used to help STLport recognise the target architecture:
$(ARCHFAM);$(_ARCHFAM_);$(INSTRUCTIONSET)
Note that the instructionset is not strictly needed for x86 but definitely for ARM. It
doesn't hurt for x86 though, so I'd always set these in any new project.
-- For release builds:
NDEBUG;
-- For debug builds:
DEBUG;_DEBUG;
-- For debug builds with additional STLport diagnostics:
DEBUG;_DEBUG;_STLP_DEBUG;
-- For MFC applications:
_AFXDLL;
- Further settings:
Code generation: Multithreaded [Debug] DLL
Language: enable RTTI
Optimization: maximise speed and enable whole program optimization for release builds
- Linker settings:
Ignore specific libraries: libc.lib;libcd.lib
Commandline: /SUBSYSTEM:WINDOWSCE
Optimisation: /LTCG for release builds
- Resource compiler:
Define: UNDER_CE;WINCE;_WIN32_WCE=$(CEVER)
setup VC8 for CE:
------------------
- VC8 doesn't have any setup batchfiles that prepare the environment for compiling
with CE. You can take those from eVC4 and adapt them or write your own. This snippet
should get you going:
rem you need to adapt at least these three
set OSVERSION=WCE500
set PLATFORM=MY_OWN_PLATFORM
set TARGETCPU=MIPSII
rem the compiler is always cl.exe, different compilers are in different paths
set CC=cl.exe
rem obviously, these need to be adjusted to where you installed VS2005 and the SDKs
set VSINSTALLDIR=C:\Programme\Microsoft Visual Studio 8
set SDKROOT=C:\Programme\Windows CE Tools
set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_mips;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\%OSVERSION%\%PLATFORM%
rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include\%TARGETCPU%;%PLATFORMROOT%\MFC\include;%PLATFORMROOT%\ATL\include
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%;%PLATFORMROOT%\MFC\lib\%TARGETCPU%;%PLATFORMROOT%\ATL\lib\%TARGETCPU%
rem add libs that came with VC8
rem Note: there are more libs and includes under ce\atlmfc, not sure if these are needed.
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%
- The snippet below can be used to build STLport for Pocket PC 2003 (using the
Pocket PC 2003 SDK shipped with Visual Studio 2005, this is the SDK used when
compiling programs from within the IDE):
set OSVERSION=WCE420
set PLATFORM=POCKET PC 2003
set TARGETCPU=ARMV4
rem the compiler is always cl.exe, different compilers are in different paths
set CC=cl.exe
rem obviously, these need to be adjusted to where you installed VS2005
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
set SDKROOT=%VSINSTALLDIR%\SmartDevices\SDK
set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_arm;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\PocketPC2003
rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%
rem add libs that came with VC8
set INCLUDE=%INCLUDE%;%VSINSTALLDIR%\VC\ce\atlmfc\include
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%;%VSINSTALLDIR%\VC\ce\atlmfc\lib\%TARGETCPU%
You should now be able to run cl.exe for the target you expected.
- The cross compilers of VC8 are the same version as for the native target, i.e. MSC14.
- The cross compiler for MIPS has the same bug as mentioned in doc/README.evc4 and
the same workaround applies. However, using 'whole program optimization', it results
in an error in the link phase.
- In order for STLport to recognize which target you are compiling for, you need to have
some macros defined, e.g. for the target architecture. The compilers do that partially on
their own, but not sufficiently. Therefore, STLport requires these defines:
-- These are generally set for CE:
_UNICODE;UNICODE;_WIN32;WIN32;UNDER_CE;WINCE;
-- This one uses an environment variable to set the CE version:
_WIN32_WCE=$(CEVER);
-- These are used to help STLport recognise the target architecture:
$(ARCHFAM);$(_ARCHFAM_);$(INSTRUCTIONSET)
Note that the instructionset is not strictly needed for x86 but definitely for ARM. It
doesn't hurt for x86 though, so I'd always set these in any new project.
-- For release builds:
NDEBUG;
-- For debug builds:
DEBUG;_DEBUG;
-- For debug builds with additional STLport diagnostics:
DEBUG;_DEBUG;_STLP_DEBUG;
-- For MFC applications:
_AFXDLL;
- Further settings:
Code generation: Multithreaded [Debug] DLL
Language: enable RTTI
Optimization: maximise speed and enable whole program optimization for release builds
- Linker settings:
Ignore specific libraries: libc.lib;libcd.lib
Commandline: /SUBSYSTEM:WINDOWSCE
Optimisation: /LTCG for release builds
- Resource compiler:
Define: UNDER_CE;WINCE;_WIN32_WCE=$(CEVER)

View file

@ -1,95 +1,95 @@
setup VC9 for CE:
------------------
- VC9 doesn't have any setup batchfiles that prepare the environment for compiling
with CE. You can take those from eVC4 and adapt them or write your own. This snippet
should get you going:
rem you need to adapt at least these three
set OSVERSION=WCE500
set PLATFORM=MY_OWN_PLATFORM
set TARGETCPU=MIPSII
rem the compiler is always cl.exe, different compilers are in different paths
set CC=cl.exe
rem obviously, these need to be adjusted to where you installed VS2008 and the SDKs
set VSINSTALLDIR=C:\Programme\Microsoft Visual Studio 9.0
set SDKROOT=C:\Programme\Windows CE Tools
set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_mips;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\%OSVERSION%\%PLATFORM%
rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include\%TARGETCPU%;%PLATFORMROOT%\MFC\include;%PLATFORMROOT%\ATL\include
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%;%PLATFORMROOT%\MFC\lib\%TARGETCPU%;%PLATFORMROOT%\ATL\lib\%TARGETCPU%
rem add libs that came with VC9
rem Note: there are more libs and includes under ce\atlmfc, you need to add these
rem instead of the ones in the SDK if you want to use the newer version of ATL/MFC.
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%
- The snippet below can be used to build STLport for Pocket PC 2003 (using the
Pocket PC 2003 SDK shipped with Visual Studio 2008, this is the SDK used when
compiling programs from within the IDE):
set OSVERSION=WCE420
set PLATFORM=POCKET PC 2003
set TARGETCPU=ARMV4
rem the compiler is always cl.exe, different compilers are in different paths
set CC=cl.exe
rem obviously, these need to be adjusted to where you installed VS2008
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0
set SDKROOT=%VSINSTALLDIR%\SmartDevices\SDK
set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_arm;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\PocketPC2003
rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%
rem add libs that came with VC9
set INCLUDE=%INCLUDE%;%VSINSTALLDIR%\VC\ce\atlmfc\include
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%;%VSINSTALLDIR%\VC\ce\atlmfc\lib\%TARGETCPU%
You should now be able to run cl.exe for the target you expected.
- The cross compilers of VC9 are the same version as for the native target, i.e. MSC15.
- In order for STLport to recognize which target you are compiling for, you need to have
some macros defined, e.g. for the target architecture. The compilers do that partially on
their own, but not sufficiently. Therefore, STLport requires these defines:
-- These are generally set for CE:
_UNICODE;UNICODE;_WIN32;WIN32;UNDER_CE;WINCE;
-- This one uses an environment variable to set the CE version:
_WIN32_WCE=$(CEVER);
-- These are used to help STLport recognise the target architecture:
$(ARCHFAM);$(_ARCHFAM_);$(INSTRUCTIONSET)
Note that the instructionset is not strictly needed for x86 but definitely for ARM. It
doesn't hurt for x86 though, so I'd always set these in any new project.
-- For release builds:
NDEBUG;
-- For debug builds:
DEBUG;_DEBUG;
-- For debug builds with additional STLport diagnostics:
DEBUG;_DEBUG;_STLP_DEBUG;
-- For MFC applications:
_AFXDLL;
- Further settings:
Code generation: Multithreaded [Debug] DLL
Language: enable RTTI
Optimization: maximise speed and enable whole program optimization for release builds
- Linker settings:
Ignore specific libraries: libc.lib;libcd.lib
Commandline: /SUBSYSTEM:WINDOWSCE
Optimisation: /LTCG for release builds
- Resource compiler:
Define: UNDER_CE;WINCE;_WIN32_WCE=$(CEVER)
setup VC9 for CE:
------------------
- VC9 doesn't have any setup batchfiles that prepare the environment for compiling
with CE. You can take those from eVC4 and adapt them or write your own. This snippet
should get you going:
rem you need to adapt at least these three
set OSVERSION=WCE500
set PLATFORM=MY_OWN_PLATFORM
set TARGETCPU=MIPSII
rem the compiler is always cl.exe, different compilers are in different paths
set CC=cl.exe
rem obviously, these need to be adjusted to where you installed VS2008 and the SDKs
set VSINSTALLDIR=C:\Programme\Microsoft Visual Studio 9.0
set SDKROOT=C:\Programme\Windows CE Tools
set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_mips;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\%OSVERSION%\%PLATFORM%
rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include\%TARGETCPU%;%PLATFORMROOT%\MFC\include;%PLATFORMROOT%\ATL\include
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%;%PLATFORMROOT%\MFC\lib\%TARGETCPU%;%PLATFORMROOT%\ATL\lib\%TARGETCPU%
rem add libs that came with VC9
rem Note: there are more libs and includes under ce\atlmfc, you need to add these
rem instead of the ones in the SDK if you want to use the newer version of ATL/MFC.
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%
- The snippet below can be used to build STLport for Pocket PC 2003 (using the
Pocket PC 2003 SDK shipped with Visual Studio 2008, this is the SDK used when
compiling programs from within the IDE):
set OSVERSION=WCE420
set PLATFORM=POCKET PC 2003
set TARGETCPU=ARMV4
rem the compiler is always cl.exe, different compilers are in different paths
set CC=cl.exe
rem obviously, these need to be adjusted to where you installed VS2008
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0
set SDKROOT=%VSINSTALLDIR%\SmartDevices\SDK
set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_arm;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\PocketPC2003
rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%
rem add libs that came with VC9
set INCLUDE=%INCLUDE%;%VSINSTALLDIR%\VC\ce\atlmfc\include
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%;%VSINSTALLDIR%\VC\ce\atlmfc\lib\%TARGETCPU%
You should now be able to run cl.exe for the target you expected.
- The cross compilers of VC9 are the same version as for the native target, i.e. MSC15.
- In order for STLport to recognize which target you are compiling for, you need to have
some macros defined, e.g. for the target architecture. The compilers do that partially on
their own, but not sufficiently. Therefore, STLport requires these defines:
-- These are generally set for CE:
_UNICODE;UNICODE;_WIN32;WIN32;UNDER_CE;WINCE;
-- This one uses an environment variable to set the CE version:
_WIN32_WCE=$(CEVER);
-- These are used to help STLport recognise the target architecture:
$(ARCHFAM);$(_ARCHFAM_);$(INSTRUCTIONSET)
Note that the instructionset is not strictly needed for x86 but definitely for ARM. It
doesn't hurt for x86 though, so I'd always set these in any new project.
-- For release builds:
NDEBUG;
-- For debug builds:
DEBUG;_DEBUG;
-- For debug builds with additional STLport diagnostics:
DEBUG;_DEBUG;_STLP_DEBUG;
-- For MFC applications:
_AFXDLL;
- Further settings:
Code generation: Multithreaded [Debug] DLL
Language: enable RTTI
Optimization: maximise speed and enable whole program optimization for release builds
- Linker settings:
Ignore specific libraries: libc.lib;libcd.lib
Commandline: /SUBSYSTEM:WINDOWSCE
Optimisation: /LTCG for release builds
- Resource compiler:
Define: UNDER_CE;WINCE;_WIN32_WCE=$(CEVER)

View file

@ -1,19 +1,19 @@
Build of STLport with Intel C++ compiler for Windows is identical
to the one for Microsoft Visual Studio compiler (see README.msvc).
Known issues:
1. If you have bind your Intel C++ compiler to the Visual Studio 6
install and build your application without the -Qvc6 option you might
experiement linking issue concerning 'std::unexpected' missing symbol.
The reason of this problem is that without -Qvc6, ICL adds necessary
code to invoke std::unexpected function when a raised exception is
different to the one specified in a function prototype. As VC6 library
do not contain this symbol ICL cannot find it anywhere.
As a workaround, STLport has its own std::unexpected implementation
that you will find in src/dll_main.cpp. ICL is looking for a static
symbol so if you use STLport static lib ICL will use its std::unexpected
implementation but if you use STLport dynamic lib then ICL won't find
it. You only need then to copy/paste the STLport implementation somewhere
in your implementation and ICL will be happy.
Build of STLport with Intel C++ compiler for Windows is identical
to the one for Microsoft Visual Studio compiler (see README.msvc).
Known issues:
1. If you have bind your Intel C++ compiler to the Visual Studio 6
install and build your application without the -Qvc6 option you might
experiement linking issue concerning 'std::unexpected' missing symbol.
The reason of this problem is that without -Qvc6, ICL adds necessary
code to invoke std::unexpected function when a raised exception is
different to the one specified in a function prototype. As VC6 library
do not contain this symbol ICL cannot find it anywhere.
As a workaround, STLport has its own std::unexpected implementation
that you will find in src/dll_main.cpp. ICL is looking for a static
symbol so if you use STLport static lib ICL will use its std::unexpected
implementation but if you use STLport dynamic lib then ICL won't find
it. You only need then to copy/paste the STLport implementation somewhere
in your implementation and ICL will be happy.

View file

@ -1,55 +1,55 @@
The MinGW GNU make command can be used to build STLport with different
compilers
- gcc (native compiler):
Makefile : gcc.mak
Notes:
1. Static library (archive)
If you use the static version of the STLport libraries
you have to define the _STLP_USE_STATIC_LIB macro in order
to have your executable linked correctly.
2. Shell
You will need MSys in order to build STLport.
Be carefull about what make command you are using. STLport comes with a
GNU make build system design for unix like platforms, make files have not
been adapted for the Windows platform. So you have to use the make command
coming with the MinGW package 'mingw32-make' and not the one coming with MSys
that is a portage of the GNU make for Windows.
3. Threading configuration
STLport libraries are built per default in order to be used in a
multithreaded environment. Under MinGW it means that we use the '-mthread'
compiler option. Don't forget to add it to your compiler command line too
if you want to use STLport libraries. You can also ask for not thread
safe libraries using the --no-thread configure script option.
4. Linking
In this environment STLport is almost complete replacement for libstdc++.
It means that when you were linking with libstdc++ (-lstdc++) you only have
to replace it with STLport (-lstlport.5.2 for instance) and with libsupc++
containing language compiler support (lsupc++). However default gcc
behavior is to automatically link libstdc++ and a number of other system libs.
To avoid this behavior you have to use the -nodefaultlibs compiler option and
explicitely give all libraries by yourself. See build of unit tests to see what
library you might need, here is the list when this note was written:
-lstlportg.5.2 -lsupc++ -lgcc_s -lmingw32 -lmingwex -lmsvcrt -lm -lmoldname
-lcoldname -lkernel32
- Borland C++ compiler:
Makefile : bcc.mak
- Digital Mars C++ compiler:
Makefile : dmc.mak
The MinGW GNU make command can be used to build STLport with different
compilers
- gcc (native compiler):
Makefile : gcc.mak
Notes:
1. Static library (archive)
If you use the static version of the STLport libraries
you have to define the _STLP_USE_STATIC_LIB macro in order
to have your executable linked correctly.
2. Shell
You will need MSys in order to build STLport.
Be carefull about what make command you are using. STLport comes with a
GNU make build system design for unix like platforms, make files have not
been adapted for the Windows platform. So you have to use the make command
coming with the MinGW package 'mingw32-make' and not the one coming with MSys
that is a portage of the GNU make for Windows.
3. Threading configuration
STLport libraries are built per default in order to be used in a
multithreaded environment. Under MinGW it means that we use the '-mthread'
compiler option. Don't forget to add it to your compiler command line too
if you want to use STLport libraries. You can also ask for not thread
safe libraries using the --no-thread configure script option.
4. Linking
In this environment STLport is almost complete replacement for libstdc++.
It means that when you were linking with libstdc++ (-lstdc++) you only have
to replace it with STLport (-lstlport.5.2 for instance) and with libsupc++
containing language compiler support (lsupc++). However default gcc
behavior is to automatically link libstdc++ and a number of other system libs.
To avoid this behavior you have to use the -nodefaultlibs compiler option and
explicitely give all libraries by yourself. See build of unit tests to see what
library you might need, here is the list when this note was written:
-lstlportg.5.2 -lsupc++ -lgcc_s -lmingw32 -lmingwex -lmsvcrt -lm -lmoldname
-lcoldname -lkernel32
- Borland C++ compiler:
Makefile : bcc.mak
- Digital Mars C++ compiler:
Makefile : dmc.mak

View file

@ -1,186 +1,186 @@
==================================================
STLport README for Microsoft Visual C++ compilers.
==================================================
by: Francois Dumont, dums@stlport.com, last edited 08/02/2005
============
Introduction
============
This document describes how STLport can be compiled and used with Microsoft
Visual C++ 6 SP5. It can also be used for the MSVC++ family.
For any further comments or questsion visit STLport mailing lists
http://stlport.sourceforge.net/Maillists.shtml or forums
https://sourceforge.net/forum/?group_id=146814
=============
Prerequisites
=============
To build and use STLport you will need following tools and libraries:
- Microsoft Visual C++ 6.0 with at least Service Pack 5 or any higher
version.
===================
Configuring STLport
===================
In a console window go to the STLport build/lib folder. Run
configure --help
This command will present you the different available build options. Just follow
the instructions to set STLport configuration according your needs. The only
mandatory configuration is to declare what is the compiler you are going to
use, for MSVC 6 it is:
configure -c msvc6
================
Building STLport
================
This is a step by step description of the actions to take in order to have
the STLport library built:
1. Open a console window. You can get it executing cmd or command depending
on your Windows OS.
2. Go to MSVC++ Bin directory with a default MSVC6 install it is
cd "C:\Program Files\Microsoft Visual Studio\VC98\Bin"
3. Run the vcvars32.bat script. This sets the environment variables required
to have the MSVC++ compiler run during the build process. The most important
one is the PATH variable so that you can call the cl.exe command which is the
MSVC++ command line compiler. [You may omit this step, if you chose 'Install paths
to access command-line tools' during Microsoft Visual Studio installation procedure.]
4. Go to the STLport build/lib folder:
cd C:\STLport\build\lib
5. Run the following command:
nmake /fmsvc.mak install
nmake is the make utility from Microsoft. /f is an nmake option
telling it which make file script to use. You have of course to grant the
closer make file to your effective compiler, msvc.mak in our case.
Once the command returns, you will have all the necessary libraries within
the STLport lib folder. For a description of the generated libraries check the README
file within the src folder.
===============
Testing STLport
===============
You can use the unit tests to verify STLport behaves correctly. Change into
STLports 'build/test/unit' folder and type:
nmake /fmsvc.mak install
Once the unit test is built you just need to run it. They can be found
within the STLport bin folder.
=============
Using STLport
=============
Adjust your include and link paths in MSVC IDE (in 'Tools -> Options -> Directories'
for MSVC6 IDE). In the include files add the path to STLport's 'stlport' folder.
Make sure it is the first directory listed there. Add STLport's 'lib' folder for
the library files (order of paths doesn't matter here).
There are some preprocessor defines that control usage of the STLport in msvc
projects:
If you don't want to use the iostreams part of the library, you can specify the
define _STLP_NO_IOSTREAMS. In this mode there is no need to link against the
library.
STLport uses automatic linking to find the proper .lib file. If you want to see
what import library STLport is going to use, define _STLP_VERBOSE_AUTO_LINK.
When not using automatic linking (by specifying _STLP_DONT_USE_AUTO_LINK), you
have to specify the proper .lib file in the Project Settings, on the "link" tab.
The .lib names have the following syntax:
stlport[d|stld][_x,_static,_statix].<STLport-Version>.lib
d : debug build
stld: debug build with _STLP_DEBUG (STL safe) mode
_x: Build of STLport as a dll but statically link to the native runtime.
_static : build of a static library
_statix : build of a static library link dynamically to the native runtime.
Examples:
stlport_static.5.0.lib - static release version, Version 5.0.0
stlportd.5.0.lib - dll debug version, Version 5.0.0
When using STLport together with MFC, be sure to include the MFC headers first,
then include STLport headers, e.g. in your Stdafx.h. This way STLport correctly
recognizes MFC usage. You also can define the macro _STLP_USE_MFC, either in
your project settings or in stlport/stl/config/user_config.h.
In order to enhance debugging with STLport you can optionally add the content of
the etc/autoexp.dat file in the autoexp.dat file coming with your Visual Studio
install.
Now you should be ready to use STLport.
============
Known issues
============
1. InterlockedIncrement
If you experiment trouble with the InterlockedIncrement Win32 API function
like the following message:
C:\Program Files\Microsoft SDK\Include\.\winbase.h(1392) : error C2733: second C
linkage of overloaded function 'InterlockedIncrement' not allowed
C:\Program Files\Microsoft SDK\Include\.\winbase.h(1390) : see declaration of
'InterlockedIncrement'
It means that you are using the new Microsoft platform SDK. There is no
way to known it from STLport code so you have to signal it in the
stlport/stl/config/user_config.h file (uncomment _STLP_NEW_PLATFORM_SDK in this file).
2. Native C/C++ library headers location
If you experiment trouble with location of ctime and other Standard headers
while building or using STLport you might be using the compiler coming with a
platform SDK. If so please uncomment _STLP_USING_PLATFORM_SDK_COMPILER in
stlport/stl/config/user_config.h. If it still do not find native headers you will
perhaps need to change native headers relative path used by STLport. In this case use
_STLP_NATIVE_INCLUDE_PATH and associated macro in stlport/stl/config/host.h.
4. C symbols in std namespace
The compiler of MSVC++ 6 has a bug when dealing with symbols existant in both
the global namespace and symbols imported by a using-directive or a
using-declaration - it will report an ambiguous call to an overloaded
function (error C2668). Example:
void function();
namespace ns {
void function();
// or:
// using ::function;
}
using ns::function;
// or:
// using namespace ns;
void call() {
function();
}
Since we anticipate that using-declarations or even using-directives are common
use, STLport by default doesn't import or wrap functions that exist in both the
global namespace and namespace std, in particular those are functions with C
origin like fopen() or abs(). Also, it defines additional overloads for
functions like abs() (overloaded for int, long, float, double, long double) in
the global namespace.
In order to make STLport include them in the std namespace, you can define the
_STLP_DO_IMPORT_CSTD_FUNCTIONS macro. Doing so, you will have to explicitely
scope all your functions calls like std::abs() though - otherwise you only get
the global abs(int) from the C library.
==================================================
STLport README for Microsoft Visual C++ compilers.
==================================================
by: Francois Dumont, dums@stlport.com, last edited 08/02/2005
============
Introduction
============
This document describes how STLport can be compiled and used with Microsoft
Visual C++ 6 SP5. It can also be used for the MSVC++ family.
For any further comments or questsion visit STLport mailing lists
http://stlport.sourceforge.net/Maillists.shtml or forums
https://sourceforge.net/forum/?group_id=146814
=============
Prerequisites
=============
To build and use STLport you will need following tools and libraries:
- Microsoft Visual C++ 6.0 with at least Service Pack 5 or any higher
version.
===================
Configuring STLport
===================
In a console window go to the STLport build/lib folder. Run
configure --help
This command will present you the different available build options. Just follow
the instructions to set STLport configuration according your needs. The only
mandatory configuration is to declare what is the compiler you are going to
use, for MSVC 6 it is:
configure -c msvc6
================
Building STLport
================
This is a step by step description of the actions to take in order to have
the STLport library built:
1. Open a console window. You can get it executing cmd or command depending
on your Windows OS.
2. Go to MSVC++ Bin directory with a default MSVC6 install it is
cd "C:\Program Files\Microsoft Visual Studio\VC98\Bin"
3. Run the vcvars32.bat script. This sets the environment variables required
to have the MSVC++ compiler run during the build process. The most important
one is the PATH variable so that you can call the cl.exe command which is the
MSVC++ command line compiler. [You may omit this step, if you chose 'Install paths
to access command-line tools' during Microsoft Visual Studio installation procedure.]
4. Go to the STLport build/lib folder:
cd C:\STLport\build\lib
5. Run the following command:
nmake /fmsvc.mak install
nmake is the make utility from Microsoft. /f is an nmake option
telling it which make file script to use. You have of course to grant the
closer make file to your effective compiler, msvc.mak in our case.
Once the command returns, you will have all the necessary libraries within
the STLport lib folder. For a description of the generated libraries check the README
file within the src folder.
===============
Testing STLport
===============
You can use the unit tests to verify STLport behaves correctly. Change into
STLports 'build/test/unit' folder and type:
nmake /fmsvc.mak install
Once the unit test is built you just need to run it. They can be found
within the STLport bin folder.
=============
Using STLport
=============
Adjust your include and link paths in MSVC IDE (in 'Tools -> Options -> Directories'
for MSVC6 IDE). In the include files add the path to STLport's 'stlport' folder.
Make sure it is the first directory listed there. Add STLport's 'lib' folder for
the library files (order of paths doesn't matter here).
There are some preprocessor defines that control usage of the STLport in msvc
projects:
If you don't want to use the iostreams part of the library, you can specify the
define _STLP_NO_IOSTREAMS. In this mode there is no need to link against the
library.
STLport uses automatic linking to find the proper .lib file. If you want to see
what import library STLport is going to use, define _STLP_VERBOSE_AUTO_LINK.
When not using automatic linking (by specifying _STLP_DONT_USE_AUTO_LINK), you
have to specify the proper .lib file in the Project Settings, on the "link" tab.
The .lib names have the following syntax:
stlport[d|stld][_x,_static,_statix].<STLport-Version>.lib
d : debug build
stld: debug build with _STLP_DEBUG (STL safe) mode
_x: Build of STLport as a dll but statically link to the native runtime.
_static : build of a static library
_statix : build of a static library link dynamically to the native runtime.
Examples:
stlport_static.5.0.lib - static release version, Version 5.0.0
stlportd.5.0.lib - dll debug version, Version 5.0.0
When using STLport together with MFC, be sure to include the MFC headers first,
then include STLport headers, e.g. in your Stdafx.h. This way STLport correctly
recognizes MFC usage. You also can define the macro _STLP_USE_MFC, either in
your project settings or in stlport/stl/config/user_config.h.
In order to enhance debugging with STLport you can optionally add the content of
the etc/autoexp.dat file in the autoexp.dat file coming with your Visual Studio
install.
Now you should be ready to use STLport.
============
Known issues
============
1. InterlockedIncrement
If you experiment trouble with the InterlockedIncrement Win32 API function
like the following message:
C:\Program Files\Microsoft SDK\Include\.\winbase.h(1392) : error C2733: second C
linkage of overloaded function 'InterlockedIncrement' not allowed
C:\Program Files\Microsoft SDK\Include\.\winbase.h(1390) : see declaration of
'InterlockedIncrement'
It means that you are using the new Microsoft platform SDK. There is no
way to known it from STLport code so you have to signal it in the
stlport/stl/config/user_config.h file (uncomment _STLP_NEW_PLATFORM_SDK in this file).
2. Native C/C++ library headers location
If you experiment trouble with location of ctime and other Standard headers
while building or using STLport you might be using the compiler coming with a
platform SDK. If so please uncomment _STLP_USING_PLATFORM_SDK_COMPILER in
stlport/stl/config/user_config.h. If it still do not find native headers you will
perhaps need to change native headers relative path used by STLport. In this case use
_STLP_NATIVE_INCLUDE_PATH and associated macro in stlport/stl/config/host.h.
4. C symbols in std namespace
The compiler of MSVC++ 6 has a bug when dealing with symbols existant in both
the global namespace and symbols imported by a using-directive or a
using-declaration - it will report an ambiguous call to an overloaded
function (error C2668). Example:
void function();
namespace ns {
void function();
// or:
// using ::function;
}
using ns::function;
// or:
// using namespace ns;
void call() {
function();
}
Since we anticipate that using-declarations or even using-directives are common
use, STLport by default doesn't import or wrap functions that exist in both the
global namespace and namespace std, in particular those are functions with C
origin like fopen() or abs(). Also, it defines additional overloads for
functions like abs() (overloaded for int, long, float, double, long double) in
the global namespace.
In order to make STLport include them in the std namespace, you can define the
_STLP_DO_IMPORT_CSTD_FUNCTIONS macro. Doing so, you will have to explicitely
scope all your functions calls like std::abs() though - otherwise you only get
the global abs(int) from the C library.

View file

@ -1,51 +1,51 @@
Here is a description of how you can use STLport to read/write utf8 files.
utf8 is a way of encoding wide characters. As so, management of encoding in
the C++ Standard library is handle by the codecvt locale facet which is part
of the ctype category. However utf8 only describe how encoding must be
performed, it cannot be used to classify characters so it is not enough info
to know how to generate the whole ctype category facets of a locale
instance.
In C++ it means that the following code will throw an exception to
signal that creation failed:
#include <locale>
// Will throw a std::runtime_error exception.
std::locale loc(".utf8");
For the same reason building a locale with the ctype facets based on
UTF8 is also wrong:
// Will throw a std::runtime_error exception:
std::locale loc(locale::classic(), ".utf8", std::locale::ctype);
The only solution to get a locale instance that will handle utf8 encoding
is to specifically signal that the codecvt facet should be based on utf8
encoding:
// Will succeed if there is necessary platform support.
locale loc(locale::classic(), new codecvt_byname<wchar_t, char, mbstate_t>(".utf8"));
Once you have obtain a locale instance you can inject it in a file stream to
read/write utf8 files:
std::fstream fstr("file.utf8");
fstr.imbue(loc);
You can also access the facet directly to perform utf8 encoding/decoding operations:
typedef std::codecvt<wchar_t, char, mbstate_t> codecvt_t;
const codecvt_t& encoding = use_facet<codecvt_t>(loc);
Notes:
1. The dot ('.') is mandatory in front of utf8. This is a POSIX convention, locale
names have the following format:
language[_country[.encoding]]
Ex: 'fr_FR'
'french'
'ru_RU.koi8r'
2. utf8 encoding is only supported for the moment under Windows. The less common
utf7 encoding is also supported.
Here is a description of how you can use STLport to read/write utf8 files.
utf8 is a way of encoding wide characters. As so, management of encoding in
the C++ Standard library is handle by the codecvt locale facet which is part
of the ctype category. However utf8 only describe how encoding must be
performed, it cannot be used to classify characters so it is not enough info
to know how to generate the whole ctype category facets of a locale
instance.
In C++ it means that the following code will throw an exception to
signal that creation failed:
#include <locale>
// Will throw a std::runtime_error exception.
std::locale loc(".utf8");
For the same reason building a locale with the ctype facets based on
UTF8 is also wrong:
// Will throw a std::runtime_error exception:
std::locale loc(locale::classic(), ".utf8", std::locale::ctype);
The only solution to get a locale instance that will handle utf8 encoding
is to specifically signal that the codecvt facet should be based on utf8
encoding:
// Will succeed if there is necessary platform support.
locale loc(locale::classic(), new codecvt_byname<wchar_t, char, mbstate_t>(".utf8"));
Once you have obtain a locale instance you can inject it in a file stream to
read/write utf8 files:
std::fstream fstr("file.utf8");
fstr.imbue(loc);
You can also access the facet directly to perform utf8 encoding/decoding operations:
typedef std::codecvt<wchar_t, char, mbstate_t> codecvt_t;
const codecvt_t& encoding = use_facet<codecvt_t>(loc);
Notes:
1. The dot ('.') is mandatory in front of utf8. This is a POSIX convention, locale
names have the following format:
language[_country[.encoding]]
Ex: 'fr_FR'
'french'
'ru_RU.koi8r'
2. utf8 encoding is only supported for the moment under Windows. The less common
utf7 encoding is also supported.

View file

@ -1,94 +1,94 @@
Programming under MS Windows CE with STLport
=============================================
This is supposed to give an overview for programming on MS Windows CE, with and
partially without STLport, what tools are available and what common pitfalls
exist. Note that for every supported compiler there is another readme file which
explains the specifics of that compiler.
Available compilers:
---------------------
- Embedded Visual C++ 3 (eVC3): this IDE/compiler is for the CE3 target platforms.
The included compiler is MSC12, the same as for VC6, so many workarounds for its
'features' apply here, too. STLport works out of the box with this.
- Embedded Visual C++ 4 (eVC4): basically the same as eVC3, but it can compile for
CE4.x and 5. Note that currently (2007-03-06) I haven't tested this with CE5,
because you can use a better compiler using VC8/VS2005. This compiler can be
downloaded for free from the MS website, including a product activation key.
STLport works out of the box with this.
- Visual C++ 8 (VC8) aka Visual Studio 2005 (VS2005): with this version (and
partially already version 7) the embedded and desktop IDEs have been merged again,
so it supports compiling for MS Windows CE, versions 5 and later. Note that the
freely downloadable express edition does not(!) allow compiling for CE. This IDE
uses MSC14 as compiler. STLport works out of the box with CE5.
- Platform Builders (PB): this tool is used to create a CE image. You can select the
modules (e.g. Explorer, but also C++ RTTI) you include in the image. These IDEs use
several different compilers (MSC12-14). STLport hasn't been tested with this
IDE, AFAIK.
- There used to be an addon for VC6(?) that allowed compiling for CE. This plugin
has been superceeded by eVC3/4 and support for it has been removed from STLport in
version 5.
- Others: some vendors (e.g. Intel) provide compilers that are able to generate
CE executables. I'm not aware of an attempt to compile STLport with them.
Environment specialties:
-------------------------
- In order to develop for a platform, the first thing you need is a so-called SDK.
This package includes headers and libraries that (more or less) resemble the APIs
available on the device. The IDEs come with a basic selection of SDKs, but in
general you need to retrieve an according SDK from the vendor. If you are the
vendor, you can generate an SDK for a platform with Platform Builder.
- The provided API is typically a subset of the 'normal' win32 API. Often, some
features are simply not supported, like security descriptors when opening files.
Also, these APIs are only supported for wchar_t strings, e.g. only CreateFileW()
and not CreateFileA().
- CE doesn't have a current directory, hence no relative paths to that dir. You can
have relative parts in global paths though.
- CE doesn't have environment variables, thus STLport can't support e.g.
setenv/getenv. It also doesn't attempt to provide workarounds.
- Since many features are optional (see the description of Platform Builder), it
is possible that you don't have e.g. a console that std::cout could write to. The
same applies to exceptions (see e.g. the add-on lib for RTTI for eVC4). Other
features might go amiss, too. This makes it hard for STLport to adapt to, in
particular because this information is not available outside PB, a header might
declare a function that in fact is not present. Keep this in mind when you get
linker errors.
- The supplied C++ standard library is extremely cut down, e.g. iostreams and
locales are missing completely.
- The supplied standard C API is at best rudimentary. Functions like e.g. time() or
clock() are declared but not defined. STLport doesn't include any workarounds for
these missing functions at present.
- All compilers are cross-compilers, i.e. you run them on a win32 host and they
produce executable code for the target platform. The same applies to the debugger,
which is connected via serial, USB or ethernet. Alternatively, there are emulators
that run on the host machine and simulate the target platform.
- The entrypoint for executables is generally WinMain. Normally, you would have
switched to a normal main() using /SUBSYSTEM:CONSOLE on the linker commandline.
The linkers for at least CE4 and 5 don't understand this switch, they claim it
conflicts with CE targets. Instead, set the entrypoint directly to
mainACRTStartup.
- The name of a DLL loaded via an import library can't be longer than 32 chars. If
this is not the case, the application will behave as if the DLL was not present or
couldn't be loaded for whatever other reason. This limitation applies to at least
CE 4 and 5.
Programming under MS Windows CE with STLport
=============================================
This is supposed to give an overview for programming on MS Windows CE, with and
partially without STLport, what tools are available and what common pitfalls
exist. Note that for every supported compiler there is another readme file which
explains the specifics of that compiler.
Available compilers:
---------------------
- Embedded Visual C++ 3 (eVC3): this IDE/compiler is for the CE3 target platforms.
The included compiler is MSC12, the same as for VC6, so many workarounds for its
'features' apply here, too. STLport works out of the box with this.
- Embedded Visual C++ 4 (eVC4): basically the same as eVC3, but it can compile for
CE4.x and 5. Note that currently (2007-03-06) I haven't tested this with CE5,
because you can use a better compiler using VC8/VS2005. This compiler can be
downloaded for free from the MS website, including a product activation key.
STLport works out of the box with this.
- Visual C++ 8 (VC8) aka Visual Studio 2005 (VS2005): with this version (and
partially already version 7) the embedded and desktop IDEs have been merged again,
so it supports compiling for MS Windows CE, versions 5 and later. Note that the
freely downloadable express edition does not(!) allow compiling for CE. This IDE
uses MSC14 as compiler. STLport works out of the box with CE5.
- Platform Builders (PB): this tool is used to create a CE image. You can select the
modules (e.g. Explorer, but also C++ RTTI) you include in the image. These IDEs use
several different compilers (MSC12-14). STLport hasn't been tested with this
IDE, AFAIK.
- There used to be an addon for VC6(?) that allowed compiling for CE. This plugin
has been superceeded by eVC3/4 and support for it has been removed from STLport in
version 5.
- Others: some vendors (e.g. Intel) provide compilers that are able to generate
CE executables. I'm not aware of an attempt to compile STLport with them.
Environment specialties:
-------------------------
- In order to develop for a platform, the first thing you need is a so-called SDK.
This package includes headers and libraries that (more or less) resemble the APIs
available on the device. The IDEs come with a basic selection of SDKs, but in
general you need to retrieve an according SDK from the vendor. If you are the
vendor, you can generate an SDK for a platform with Platform Builder.
- The provided API is typically a subset of the 'normal' win32 API. Often, some
features are simply not supported, like security descriptors when opening files.
Also, these APIs are only supported for wchar_t strings, e.g. only CreateFileW()
and not CreateFileA().
- CE doesn't have a current directory, hence no relative paths to that dir. You can
have relative parts in global paths though.
- CE doesn't have environment variables, thus STLport can't support e.g.
setenv/getenv. It also doesn't attempt to provide workarounds.
- Since many features are optional (see the description of Platform Builder), it
is possible that you don't have e.g. a console that std::cout could write to. The
same applies to exceptions (see e.g. the add-on lib for RTTI for eVC4). Other
features might go amiss, too. This makes it hard for STLport to adapt to, in
particular because this information is not available outside PB, a header might
declare a function that in fact is not present. Keep this in mind when you get
linker errors.
- The supplied C++ standard library is extremely cut down, e.g. iostreams and
locales are missing completely.
- The supplied standard C API is at best rudimentary. Functions like e.g. time() or
clock() are declared but not defined. STLport doesn't include any workarounds for
these missing functions at present.
- All compilers are cross-compilers, i.e. you run them on a win32 host and they
produce executable code for the target platform. The same applies to the debugger,
which is connected via serial, USB or ethernet. Alternatively, there are emulators
that run on the host machine and simulate the target platform.
- The entrypoint for executables is generally WinMain. Normally, you would have
switched to a normal main() using /SUBSYSTEM:CONSOLE on the linker commandline.
The linkers for at least CE4 and 5 don't understand this switch, they claim it
conflicts with CE targets. Instead, set the entrypoint directly to
mainACRTStartup.
- The name of a DLL loaded via an import library can't be longer than 32 chars. If
this is not the case, the application will behave as if the DLL was not present or
couldn't be loaded for whatever other reason. This limitation applies to at least
CE 4 and 5.

View file

@ -1,55 +1,55 @@
Note for Windows users:
It is highly recommended to declare the Windows OS version you are
targetting when building the library as well as when using it. You can do so
thanks to the well known Microsoft macros WINVER, _WIN32_WINDOWS or
_WIN32_WINNT, see your platform SDK documentation for a description
of those macros and how to use them. To define it when building the
library, use the configure script --extra-cxxflag option. Here is the
configuration to build STLport using Visual Studio 2005 and targetting
Windows XP:
configure -c msvc8 --extra-cxxflag "/D_WIN32_WINNT=0x0501"
If you do not declare it at build time STLport will adapt to the PSDK in
use, windows.h gives a default value to WINVER. However, when using the
library, windows.h is not necessarily included, at least not by STLport
internally, so none of the macros are defined which will result in an
inconsistency in the build process which most of time will generate undefined
behavior at runtime.
Here is the main reason for following this advise, the Windows 95
compatibility issue:
Because of a modification in the behavior of the Win32 API functions
InterlockedIncrement and InterlockedDecrement after Windows 95, STLport
libraries built for Windows 95 cannot be used to generate an application
built for Windows XP for instance. So, if you build STLport with a Windows
95 PSDK, STLport will be ready for Windows 95. If you then use it without
defining _WIN32_WINDOWS to signal Windows 95 compatibility, STLport will
consider that it can use latest Windows OS features like the new
InterlockedIncrement and InterlockedDecrement functions which change the
memory footprint of some internal STLport objects making it incompatible
with the libraries built for Windows 95.
Normally, doing so wouldn't generate any compilation or link error, you
would only experiment undefined behavior at runtime. In order to make this
problem more obvious STLport forces a link time error in debug mode (_DEBUG
macro defined).
Unresolved symbol will be:
- 'building_for_at_least_windows98_but_library_built_for_windows95'
if you are trying to use STLport libraries built for Windows 98 or later
to generate an application targetting the Windows 95 platform.
- 'building_for_windows95_but_library_built_for_at_least_windows98'
if you are trying to use STLport libraries built for Windows 95 to generate
an appliation targetting the
Windows XP platform for instance.
Of course, targetting the latest Windows OS versions will give you the best
performance from STLport. This is why when none of the platform macros are
defined STLport consider that there is no minimum OS requirement and will
use the latest API functions. There is only one exception to this behavior,
the SwitchToThread function that is used only if you define _WIN32_WINNT to a
value higher or equal to 0X0400.
Note for Windows users:
It is highly recommended to declare the Windows OS version you are
targetting when building the library as well as when using it. You can do so
thanks to the well known Microsoft macros WINVER, _WIN32_WINDOWS or
_WIN32_WINNT, see your platform SDK documentation for a description
of those macros and how to use them. To define it when building the
library, use the configure script --extra-cxxflag option. Here is the
configuration to build STLport using Visual Studio 2005 and targetting
Windows XP:
configure -c msvc8 --extra-cxxflag "/D_WIN32_WINNT=0x0501"
If you do not declare it at build time STLport will adapt to the PSDK in
use, windows.h gives a default value to WINVER. However, when using the
library, windows.h is not necessarily included, at least not by STLport
internally, so none of the macros are defined which will result in an
inconsistency in the build process which most of time will generate undefined
behavior at runtime.
Here is the main reason for following this advise, the Windows 95
compatibility issue:
Because of a modification in the behavior of the Win32 API functions
InterlockedIncrement and InterlockedDecrement after Windows 95, STLport
libraries built for Windows 95 cannot be used to generate an application
built for Windows XP for instance. So, if you build STLport with a Windows
95 PSDK, STLport will be ready for Windows 95. If you then use it without
defining _WIN32_WINDOWS to signal Windows 95 compatibility, STLport will
consider that it can use latest Windows OS features like the new
InterlockedIncrement and InterlockedDecrement functions which change the
memory footprint of some internal STLport objects making it incompatible
with the libraries built for Windows 95.
Normally, doing so wouldn't generate any compilation or link error, you
would only experiment undefined behavior at runtime. In order to make this
problem more obvious STLport forces a link time error in debug mode (_DEBUG
macro defined).
Unresolved symbol will be:
- 'building_for_at_least_windows98_but_library_built_for_windows95'
if you are trying to use STLport libraries built for Windows 98 or later
to generate an application targetting the Windows 95 platform.
- 'building_for_windows95_but_library_built_for_at_least_windows98'
if you are trying to use STLport libraries built for Windows 95 to generate
an appliation targetting the
Windows XP platform for instance.
Of course, targetting the latest Windows OS versions will give you the best
performance from STLport. This is why when none of the platform macros are
defined STLport consider that there is no minimum OS requirement and will
use the latest API functions. There is only one exception to this behavior,
the SwitchToThread function that is used only if you define _WIN32_WINNT to a
value higher or equal to 0X0400.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,309 +1,309 @@
algo.h
algobase.h
algorith.h
algorithm
alloc.h
bitset
bitset.h
bvector.h
cassert
cassert.h
cctype
cctype.h
cerrno
cerrno.h
cfloat
cfloat.h
char_traits.h
climits
climits.h
clocale
clocale.h
cmath
cmath.h
complex
complex.h
concept_checks.h
configure
configure.in
csetjmp
csetjmp.h
csignal
csignal.h
cstdarg
cstdarg.h
cstddef
cstddef.h
cstdio
cstdio.h
cstdlib
cstdlib.h
cstring
cstring.h
ctime
ctime.h
ctype.h
cwchar
cwchar.h
cwctype
cwctype.h
c_locale.h
defalloc.h
deque
deque.h
exceptio.h
exception
exception.h
export
fstream
fstream.h
function.h
functional
hashtable.h
hash_map
hash_map.h
hash_set
hash_set.h
heap.h
iomanip
iomanip.h
ios
ios.h
iosfwd
iosfwd.h
iostream
iostream.h
istream
istream.h
iterator
iterator.h
limits
limits.h
list
list.h
locale
locale.h
map
map.h
math.h
mem.h
memory
memory.h
mmemory.h
msl_string.h
multimap.h
multiset.h
new
new.h
numeric
numeric.h
numeric.h
ostream
ostream.h
pair.h
pthread.h
pthread_alloc
pthread_alloc.h
queue
queue.h
rope
rope.h
set
set.h
setjmp.h
signal.h
slist
slist.h
sstream
sstream.h
stack
stack.h
stdarg.h
stddef.h
stddef.h
stdexcep.h
stdexcept
stdio.h
stdio_streambuf
stdlib.h
stdlib.h
stlcomp.h
stlconf.h.in
stl_apcc.h
stl_apple.bak.h
stl_apple.h
stl_as400.h
stl_bc.h
stl_como.h
stl_confix.h
stl_dec.h
stl_dec_vms.h
stl_fujitsu.h
stl_gcc.h
stl_hpacc.h
stl_ibm.h
stl_intel.h
stl_kai.h
stl_mlc.h
stl_msvc.h
stl_mwerks.h
stl_mycomp.h
stl_sco.h
stl_select_lib.h
stl_sgi.h
stl_solaris.h
stl_sunpro.h
stl_symantec.h
stl_tmpl.h
stl_user_config.h
stl_watcom.h
stl_wince.h
streambu.h
streambuf
streambuf.h
string
string.h
strstrea.h
strstream
strstream.h
tempbuf.h
time.h
tree.h
typeinfo
typeinfo.h
type_traits.h
utility
utility.h
valarray
valarray.h
vc_select_lib.h
vector
vector.h
wchar.h
wctype.h
_abbrevs.h
_algo.c
_algo.h
_algobase.c
_algobase.h
_alloc.c
_alloc.h
_alloc_old.h
_auto_ptr.h
_bitset.c
_bitset.h
_bvector.h
_check_config.h
_codecvt.h
_collate.h
_complex.c
_complex.h
_config.h
_config_compat.h
_config_compat_post.h
_construct.h
_ctraits_fns.h
_ctype.h
_cwchar.h
_debug.c
_debug.h
_deque.c
_deque.h
_epilog.h
_epilog.h
_exception.h
_fstream.c
_fstream.h
_function.h
_function_base.h
_hashtable.c
_hashtable.h
_hash_fun.h
_hash_map.h
_hash_set.h
_heap.c
_heap.h
_ios.c
_ios.h
_iosfwd.h
_ios_base.h
_istream.c
_istream.h
_istreambuf_iterator.h
_iterator.h
_iterator.h
_iterator_base.h
_iterator_old.h
_limits.c
_limits.h
_list.c
_list.h
_list.h
_locale.h
_map.h
_messages_facets.h
_mmap.h
_monetary.c
_monetary.h
_msvc_warnings_off.h
_null_stream.h
_numeric.c
_numeric.h
_numpunct.h
_num_get.c
_num_get.h
_num_put.c
_num_put.h
_ostream.c
_ostream.h
_ostreambuf_iterator.h
_pair.h
_prolog.h
_pthread_alloc.h
_ptrs_specialize.h
_queue.h
_range_errors.h
_raw_storage_iter.h
_relops.h
_relops_cont.h
_relops_template.h
_rope.c
_rope.h
_set.h
_set_operators.h
_site_config.h
_slist.c
_slist.h
_slist_base.c
_slist_base.h
_sparc_atomic.h
_sstream.c
_sstream.h
_stack.h
_stdio_file.h
_stdio_file.h.new
_streambuf.c
_streambuf.h
_streambuf_iterator.h
_stream_iterator.h
_string.c
_string.h
_string_fwd.c
_string_fwd.h
_string_hash.h
_string_io.c
_string_io.h
_strstream.h
_tempbuf.c
_tempbuf.h
_threads.c
_threads.h
_time_facets.c
_time_facets.h
_tree.c
_tree.h
_uninitialized.h
_valarray.c
_valarray.h
_vector.c
_vector.h
algo.h
algobase.h
algorith.h
algorithm
alloc.h
bitset
bitset.h
bvector.h
cassert
cassert.h
cctype
cctype.h
cerrno
cerrno.h
cfloat
cfloat.h
char_traits.h
climits
climits.h
clocale
clocale.h
cmath
cmath.h
complex
complex.h
concept_checks.h
configure
configure.in
csetjmp
csetjmp.h
csignal
csignal.h
cstdarg
cstdarg.h
cstddef
cstddef.h
cstdio
cstdio.h
cstdlib
cstdlib.h
cstring
cstring.h
ctime
ctime.h
ctype.h
cwchar
cwchar.h
cwctype
cwctype.h
c_locale.h
defalloc.h
deque
deque.h
exceptio.h
exception
exception.h
export
fstream
fstream.h
function.h
functional
hashtable.h
hash_map
hash_map.h
hash_set
hash_set.h
heap.h
iomanip
iomanip.h
ios
ios.h
iosfwd
iosfwd.h
iostream
iostream.h
istream
istream.h
iterator
iterator.h
limits
limits.h
list
list.h
locale
locale.h
map
map.h
math.h
mem.h
memory
memory.h
mmemory.h
msl_string.h
multimap.h
multiset.h
new
new.h
numeric
numeric.h
numeric.h
ostream
ostream.h
pair.h
pthread.h
pthread_alloc
pthread_alloc.h
queue
queue.h
rope
rope.h
set
set.h
setjmp.h
signal.h
slist
slist.h
sstream
sstream.h
stack
stack.h
stdarg.h
stddef.h
stddef.h
stdexcep.h
stdexcept
stdio.h
stdio_streambuf
stdlib.h
stdlib.h
stlcomp.h
stlconf.h.in
stl_apcc.h
stl_apple.bak.h
stl_apple.h
stl_as400.h
stl_bc.h
stl_como.h
stl_confix.h
stl_dec.h
stl_dec_vms.h
stl_fujitsu.h
stl_gcc.h
stl_hpacc.h
stl_ibm.h
stl_intel.h
stl_kai.h
stl_mlc.h
stl_msvc.h
stl_mwerks.h
stl_mycomp.h
stl_sco.h
stl_select_lib.h
stl_sgi.h
stl_solaris.h
stl_sunpro.h
stl_symantec.h
stl_tmpl.h
stl_user_config.h
stl_watcom.h
stl_wince.h
streambu.h
streambuf
streambuf.h
string
string.h
strstrea.h
strstream
strstream.h
tempbuf.h
time.h
tree.h
typeinfo
typeinfo.h
type_traits.h
utility
utility.h
valarray
valarray.h
vc_select_lib.h
vector
vector.h
wchar.h
wctype.h
_abbrevs.h
_algo.c
_algo.h
_algobase.c
_algobase.h
_alloc.c
_alloc.h
_alloc_old.h
_auto_ptr.h
_bitset.c
_bitset.h
_bvector.h
_check_config.h
_codecvt.h
_collate.h
_complex.c
_complex.h
_config.h
_config_compat.h
_config_compat_post.h
_construct.h
_ctraits_fns.h
_ctype.h
_cwchar.h
_debug.c
_debug.h
_deque.c
_deque.h
_epilog.h
_epilog.h
_exception.h
_fstream.c
_fstream.h
_function.h
_function_base.h
_hashtable.c
_hashtable.h
_hash_fun.h
_hash_map.h
_hash_set.h
_heap.c
_heap.h
_ios.c
_ios.h
_iosfwd.h
_ios_base.h
_istream.c
_istream.h
_istreambuf_iterator.h
_iterator.h
_iterator.h
_iterator_base.h
_iterator_old.h
_limits.c
_limits.h
_list.c
_list.h
_list.h
_locale.h
_map.h
_messages_facets.h
_mmap.h
_monetary.c
_monetary.h
_msvc_warnings_off.h
_null_stream.h
_numeric.c
_numeric.h
_numpunct.h
_num_get.c
_num_get.h
_num_put.c
_num_put.h
_ostream.c
_ostream.h
_ostreambuf_iterator.h
_pair.h
_prolog.h
_pthread_alloc.h
_ptrs_specialize.h
_queue.h
_range_errors.h
_raw_storage_iter.h
_relops.h
_relops_cont.h
_relops_template.h
_rope.c
_rope.h
_set.h
_set_operators.h
_site_config.h
_slist.c
_slist.h
_slist_base.c
_slist_base.h
_sparc_atomic.h
_sstream.c
_sstream.h
_stack.h
_stdio_file.h
_stdio_file.h.new
_streambuf.c
_streambuf.h
_streambuf_iterator.h
_stream_iterator.h
_string.c
_string.h
_string_fwd.c
_string_fwd.h
_string_hash.h
_string_io.c
_string_io.h
_strstream.h
_tempbuf.c
_tempbuf.h
_threads.c
_threads.h
_time_facets.c
_time_facets.h
_tree.c
_tree.h
_uninitialized.h
_valarray.c
_valarray.h
_vector.c
_vector.h

View file

@ -1,6 +1,6 @@
# -*- makefile -*- Time-stamp: <04/10/17 21:16:38 ptr>
PRGNAME = compiler_test
SRC_CPP = ttei1.cpp ttei2.cpp ttei3.cpp ttei4.cpp ttei5.cpp ttei6.cpp ttei7.cpp \
partial_spec.cpp movable.cpp
SRC_CC = eh.cc
# -*- makefile -*- Time-stamp: <04/10/17 21:16:38 ptr>
PRGNAME = compiler_test
SRC_CPP = ttei1.cpp ttei2.cpp ttei3.cpp ttei4.cpp ttei5.cpp ttei6.cpp ttei7.cpp \
partial_spec.cpp movable.cpp
SRC_CC = eh.cc

View file

@ -1,29 +1,29 @@
1. About this tests
This is tests to check whether compiler understand or not some language
construction. It is NOT tests for language support libraries, only tests for
compiler!
The main purposes of this tests is to help for developers to find correct
workarounds, if compiler don't understand some (correct) language constructions.
--------------------------------------------------------
2. Compilation
Compilation with GNU Make utility and gcc compiler:
make -f gcc.mak -k
--------------------------------------------------------
Notes about tests.
ttei1.cpp, ttei2.cpp, ttei3.cpp, ttei4.cpp, ttei5.cpp:
tests for template-in-the-template explicit specialization.
Indeed ttei3.cpp, ttei4.cpp, ttei5.cpp suggest syntax not approved by standard
(14.7.3, paragraphs 16--18), but ttei3.cpp, ttei4.cpp accepted (recheck!) by VC6,
while ttei5.cpp accepted by gcc before 3.4.0.
1. About this tests
This is tests to check whether compiler understand or not some language
construction. It is NOT tests for language support libraries, only tests for
compiler!
The main purposes of this tests is to help for developers to find correct
workarounds, if compiler don't understand some (correct) language constructions.
--------------------------------------------------------
2. Compilation
Compilation with GNU Make utility and gcc compiler:
make -f gcc.mak -k
--------------------------------------------------------
Notes about tests.
ttei1.cpp, ttei2.cpp, ttei3.cpp, ttei4.cpp, ttei5.cpp:
tests for template-in-the-template explicit specialization.
Indeed ttei3.cpp, ttei4.cpp, ttei5.cpp suggest syntax not approved by standard
(14.7.3, paragraphs 16--18), but ttei3.cpp, ttei4.cpp accepted (recheck!) by VC6,
while ttei5.cpp accepted by gcc before 3.4.0.

View file

@ -1,12 +1,12 @@
# -*- Makefile -*- Time-stamp: <03/07/09 18:08:47 ptr>
SRCROOT := ../../../build
COMPILER_NAME := gcc
# WITHOUT_STLPORT = 1
# STLPORT_DIR := ../../..
include Makefile.inc
include ${SRCROOT}/Makefiles/top.mak
#CXXFLAGS += -fuse-cxa-atexit
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}
# -*- Makefile -*- Time-stamp: <03/07/09 18:08:47 ptr>
SRCROOT := ../../../build
COMPILER_NAME := gcc
# WITHOUT_STLPORT = 1
# STLPORT_DIR := ../../..
include Makefile.inc
include ${SRCROOT}/Makefiles/top.mak
#CXXFLAGS += -fuse-cxa-atexit
LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR}

View file

@ -1,4 +1,4 @@
# -*- makefile -*- Time-stamp: <02/07/14 14:03:13 ptr>
PRGNAME = stterm-test
SRC_CC = stterm-test.cc
# -*- makefile -*- Time-stamp: <02/07/14 14:03:13 ptr>
PRGNAME = stterm-test
SRC_CC = stterm-test.cc

View file

@ -1,117 +1,117 @@
/*
* The conversation with Matti Rintala on STLport forum 2005-08-24:
*
* Do you mean ISO/IEC 14882 3.6.3 [basic.start.term]?
*
* Yes. "Destructors (12.4) for initialized objects of static storage duration
* (declared at block scope or at namespace scope) are called as a result
* of returning from main and as a result of calling exit (18.3). These objects
* are destroyed in the reverse order of the completion of their constructor
* or of the completion of their dynamic initialization."
*
* I found a confirmation on the web that gcc may not strictly conform
* to this behaviour in certains cases unless -fuse-cxa-atexit is used.
*
* Test below give (without -fuse-cxa-atexit)
Init::Init()
Init::use_it
It ctor done <-- 0
Init::use_it done
Init ctor done <-- 1
Init2 ctor done <-- 2
It dtor done <-- 0
Init2 dtor done <-- 2
Init dtor done <-- 1
* but should:
Init::Init()
Init::use_it
It ctor done <-- 0
Init::use_it done
Init ctor done <-- 1
Init2 ctor done <-- 2
Init2 dtor done <-- 2
Init dtor done <-- 1
It dtor done <-- 0
*/
#include <stdio.h>
using namespace std;
class Init
{
public:
Init();
~Init();
static void use_it();
};
class Init2
{
public:
Init2();
~Init2();
};
static Init init;
static Init2 init2;
class It
{
public:
It();
~It();
};
Init::Init()
{
printf( "Init::Init()\n" );
use_it();
printf( "Init ctor done\n" );
}
Init::~Init()
{
printf( "Init dtor done\n" );
}
void Init::use_it()
{
printf( "Init::use_it\n" );
static It it;
printf( "Init::use_it done\n" );
}
Init2::Init2()
{
printf( "Init2 ctor done\n" );
}
Init2::~Init2()
{
printf( "Init2 dtor done\n" );
}
It::It()
{
printf( "It ctor done\n" );
}
It::~It()
{
printf( "It dtor done\n" );
}
int main()
{
return 0;
}
/*
* The conversation with Matti Rintala on STLport forum 2005-08-24:
*
* Do you mean ISO/IEC 14882 3.6.3 [basic.start.term]?
*
* Yes. "Destructors (12.4) for initialized objects of static storage duration
* (declared at block scope or at namespace scope) are called as a result
* of returning from main and as a result of calling exit (18.3). These objects
* are destroyed in the reverse order of the completion of their constructor
* or of the completion of their dynamic initialization."
*
* I found a confirmation on the web that gcc may not strictly conform
* to this behaviour in certains cases unless -fuse-cxa-atexit is used.
*
* Test below give (without -fuse-cxa-atexit)
Init::Init()
Init::use_it
It ctor done <-- 0
Init::use_it done
Init ctor done <-- 1
Init2 ctor done <-- 2
It dtor done <-- 0
Init2 dtor done <-- 2
Init dtor done <-- 1
* but should:
Init::Init()
Init::use_it
It ctor done <-- 0
Init::use_it done
Init ctor done <-- 1
Init2 ctor done <-- 2
Init2 dtor done <-- 2
Init dtor done <-- 1
It dtor done <-- 0
*/
#include <stdio.h>
using namespace std;
class Init
{
public:
Init();
~Init();
static void use_it();
};
class Init2
{
public:
Init2();
~Init2();
};
static Init init;
static Init2 init2;
class It
{
public:
It();
~It();
};
Init::Init()
{
printf( "Init::Init()\n" );
use_it();
printf( "Init ctor done\n" );
}
Init::~Init()
{
printf( "Init dtor done\n" );
}
void Init::use_it()
{
printf( "Init::use_it\n" );
static It it;
printf( "Init::use_it done\n" );
}
Init2::Init2()
{
printf( "Init2 ctor done\n" );
}
Init2::~Init2()
{
printf( "Init2 dtor done\n" );
}
It::It()
{
printf( "It ctor done\n" );
}
It::~It()
{
printf( "It dtor done\n" );
}
int main()
{
return 0;
}

View file

@ -1,60 +1,60 @@
#include <list> /* required, to expose allocator */
#include <stdexcept>
#include <stdio.h>
using namespace std;
struct BigStruct
{
char _data[4096];
};
void bad_alloc_test()
{
typedef allocator<BigStruct> BigStructAllocType;
BigStructAllocType bigStructAlloc;
try {
//Lets try to allocate almost 4096 Go (on most of the platforms) of memory:
BigStructAllocType::pointer pbigStruct = bigStructAlloc.allocate(1024 * 1024 * 1024);
// CPPUNIT_ASSERT( pbigStruct != 0 && "Allocation failed but no exception thrown" );
}
catch (bad_alloc const&) {
printf( "Ok\n" );
}
catch (...) {
//We shouldn't be there:
// CPPUNIT_ASSERT( false && "Not bad_alloc exception thrown." );
}
}
void bad_alloc_test1()
{
try {
allocator<BigStruct> all;
BigStruct *bs = all.allocate(1024*1024*1024);
// throw bad_alloc();
}
catch ( bad_alloc const & ) {
printf( "I am here\n" );
}
catch ( ... ) {
}
}
int main()
{
bad_alloc_test();
#if 0
try {
throw bad_alloc();
}
catch ( bad_alloc& ) {
}
catch ( ... ) {
}
#endif
return 0;
}
#include <list> /* required, to expose allocator */
#include <stdexcept>
#include <stdio.h>
using namespace std;
struct BigStruct
{
char _data[4096];
};
void bad_alloc_test()
{
typedef allocator<BigStruct> BigStructAllocType;
BigStructAllocType bigStructAlloc;
try {
//Lets try to allocate almost 4096 Go (on most of the platforms) of memory:
BigStructAllocType::pointer pbigStruct = bigStructAlloc.allocate(1024 * 1024 * 1024);
// CPPUNIT_ASSERT( pbigStruct != 0 && "Allocation failed but no exception thrown" );
}
catch (bad_alloc const&) {
printf( "Ok\n" );
}
catch (...) {
//We shouldn't be there:
// CPPUNIT_ASSERT( false && "Not bad_alloc exception thrown." );
}
}
void bad_alloc_test1()
{
try {
allocator<BigStruct> all;
BigStruct *bs = all.allocate(1024*1024*1024);
// throw bad_alloc();
}
catch ( bad_alloc const & ) {
printf( "I am here\n" );
}
catch ( ... ) {
}
}
int main()
{
bad_alloc_test();
#if 0
try {
throw bad_alloc();
}
catch ( bad_alloc& ) {
}
catch ( ... ) {
}
#endif
return 0;
}

View file

@ -1,54 +1,54 @@
# ;;; -*- Mode:makefile;-*-
# Generated manually for MMS
# point this to proper location
STL_INCL= /include="../../stlport"
# STL_INCL= -DEH_NO_SGI_STL
.SUFFIXES .obj .cpp
all : check
AUX_LIST=TestClass.obj,main.obj,nc_alloc.obj,random_number.obj
TEST_LIST=test_algo.obj,-
test_algobase.obj,test_list.obj,test_slist.obj,-
test_bit_vector.obj,test_vector.obj,-
test_deque.obj,test_set.obj,test_map.obj,-
test_hash_map.obj,test_hash_set.obj,test_rope.obj,-
test_string.obj,test_bitset.obj,test_valarray.obj
LIST=$(AUX_LIST),$(TEST_LIST)
OBJECTS = $(LIST)
EXECS = $(LIST:%.obj=%.exe)
TESTS = $(LIST:%.obj=%.out)
TEST_EXE = eh_test.exe
TEST = eh_test.out
CC = cxx
CXX = $(CC)
LINK = cxxlink
# -std strict_ansi_errors
CXXFLAGS = $(STL_INCL) /define=(__NO_USE_STD_IOSTREAM,EH_VECTOR_OPERATOR_NEW,EH_DELETE_HAS_THROW_SPEC)
# This is to test with native STL
# CXXFLAGS = +w2 -xildoff -D__STL_USE_NEWALLOC -DEH_NO_SGI_STL -DEH_NEW_HEADERS -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC
LIBS =
LIBSTDCXX =
check : $(TEST)
$(TEST) : $(OBJECTS)
$(LINK)/exe=$(TEST_EXE) $(OBJECTS) $(LIBS)
run $(TEST_EXE)
.cpp.obj :
$(CXX) $(CXXFLAGS) /obj=$@ $<
# ;;; -*- Mode:makefile;-*-
# Generated manually for MMS
# point this to proper location
STL_INCL= /include="../../stlport"
# STL_INCL= -DEH_NO_SGI_STL
.SUFFIXES .obj .cpp
all : check
AUX_LIST=TestClass.obj,main.obj,nc_alloc.obj,random_number.obj
TEST_LIST=test_algo.obj,-
test_algobase.obj,test_list.obj,test_slist.obj,-
test_bit_vector.obj,test_vector.obj,-
test_deque.obj,test_set.obj,test_map.obj,-
test_hash_map.obj,test_hash_set.obj,test_rope.obj,-
test_string.obj,test_bitset.obj,test_valarray.obj
LIST=$(AUX_LIST),$(TEST_LIST)
OBJECTS = $(LIST)
EXECS = $(LIST:%.obj=%.exe)
TESTS = $(LIST:%.obj=%.out)
TEST_EXE = eh_test.exe
TEST = eh_test.out
CC = cxx
CXX = $(CC)
LINK = cxxlink
# -std strict_ansi_errors
CXXFLAGS = $(STL_INCL) /define=(__NO_USE_STD_IOSTREAM,EH_VECTOR_OPERATOR_NEW,EH_DELETE_HAS_THROW_SPEC)
# This is to test with native STL
# CXXFLAGS = +w2 -xildoff -D__STL_USE_NEWALLOC -DEH_NO_SGI_STL -DEH_NEW_HEADERS -DEH_VECTOR_OPERATOR_NEW -DEH_DELETE_HAS_THROW_SPEC
LIBS =
LIBSTDCXX =
check : $(TEST)
$(TEST) : $(OBJECTS)
$(LINK)/exe=$(TEST_EXE) $(OBJECTS) $(LIBS)
run $(TEST_EXE)
.cpp.obj :
$(CXX) $(CXXFLAGS) /obj=$@ $<

View file

@ -1,37 +1,37 @@
LeakCheck.h
Prefix.h
SortClass.h
TestClass.cpp
TestClass.h
Tests.h
ThrowCompare.h
export
gcc.mak
main.cpp
nc_alloc.cpp
nc_alloc.h
random_number.cpp
random_number.h
sunpro.mak
test_algo.cpp
test_algobase.cpp
test_assign_op.h
test_bit_vector.cpp
test_bitset.cpp
test_construct.h
test_deque.cpp
test_hash_map.cpp
test_hash_resize.h
test_hash_set.cpp
test_insert.h
test_list.cpp
test_map.cpp
test_push_back.h
test_push_front.h
test_rope.cpp
test_set.cpp
test_slist.cpp
test_string.cpp
test_valarray.cpp
test_vector.cpp
vc.mak
LeakCheck.h
Prefix.h
SortClass.h
TestClass.cpp
TestClass.h
Tests.h
ThrowCompare.h
export
gcc.mak
main.cpp
nc_alloc.cpp
nc_alloc.h
random_number.cpp
random_number.h
sunpro.mak
test_algo.cpp
test_algobase.cpp
test_assign_op.h
test_bit_vector.cpp
test_bitset.cpp
test_construct.h
test_deque.cpp
test_hash_map.cpp
test_hash_resize.h
test_hash_set.cpp
test_insert.h
test_list.cpp
test_map.cpp
test_push_back.h
test_push_front.h
test_rope.cpp
test_set.cpp
test_slist.cpp
test_string.cpp
test_valarray.cpp
test_vector.cpp
vc.mak

View file

@ -1,35 +1,35 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcscat
.code
FUNC _tcscat
FPO 0, 2, 2, 2, 0, FRAME_FPO
push esi
push edi
mov edi, [esp + 12]
mov esi, [esp + 16]
xor eax, eax
mov ecx, -1
cld
repne _tscas
_tdec(edi)
.L1:
_tlods
_tstos
test _treg(a), _treg(a)
jnz .L1
mov eax, [esp + 12]
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcscat
.code
FUNC _tcscat
FPO 0, 2, 2, 2, 0, FRAME_FPO
push esi
push edi
mov edi, [esp + 12]
mov esi, [esp + 16]
xor eax, eax
mov ecx, -1
cld
repne _tscas
_tdec(edi)
.L1:
_tlods
_tstos
test _treg(a), _treg(a)
jnz .L1
mov eax, [esp + 12]
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,32 +1,32 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcschr
.code
FUNC _tcschr
FPO 0, 2, 1, 1, 0, FRAME_FPO
push esi
mov esi, [esp + 8]
mov edx, [esp + 12]
cld
.L1:
_tlods
cmp _treg(d), _treg(a)
je .L2
test _treg(a), _treg(a)
jnz .L1
mov esi, _tsize
.L2:
mov eax, esi
_tdec(eax)
pop esi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcschr
.code
FUNC _tcschr
FPO 0, 2, 1, 1, 0, FRAME_FPO
push esi
mov esi, [esp + 8]
mov edx, [esp + 12]
cld
.L1:
_tlods
cmp _treg(d), _treg(a)
je .L2
test _treg(a), _treg(a)
jnz .L1
mov esi, _tsize
.L2:
mov eax, esi
_tdec(eax)
pop esi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,37 +1,37 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcscmp
.code
FUNC _tcscmp
FPO 0, 2, 2, 2, 0, FRAME_FPO
push esi
push edi
mov esi, [esp + 12]
mov edi, [esp + 16]
xor eax, eax
cld
.L1:
_tlods
_tscas
jne .L2
test eax, eax
jne .L1
xor eax, eax
jmp .L3
.L2:
sbb eax, eax
or al, 1
.L3:
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcscmp
.code
FUNC _tcscmp
FPO 0, 2, 2, 2, 0, FRAME_FPO
push esi
push edi
mov esi, [esp + 12]
mov edi, [esp + 16]
xor eax, eax
cld
.L1:
_tlods
_tscas
jne .L2
test eax, eax
jne .L1
xor eax, eax
jmp .L3
.L2:
sbb eax, eax
or al, 1
.L3:
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,31 +1,31 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcscpy
.code
FUNC _tcscpy
FPO 0, 2, 2, 2, 0, FRAME_FPO
push esi
push edi
mov edi, [esp + 12]
mov esi, [esp + 16]
cld
.L1:
_tlods
_tstos
test _treg(a), _treg(a)
jnz .L1
mov eax, [esp + 12]
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcscpy
.code
FUNC _tcscpy
FPO 0, 2, 2, 2, 0, FRAME_FPO
push esi
push edi
mov edi, [esp + 12]
mov esi, [esp + 16]
cld
.L1:
_tlods
_tstos
test _treg(a), _treg(a)
jnz .L1
mov eax, [esp + 12]
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,45 +1,45 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcslen
.code
FUNC _tcslen
FPO 0, 1, 1, 1, 0, FRAME_FPO
/* Save edi and eflags (according to the x86 ABI, we don't need to do that
but since the native function doesn't change the direction flag, we don't
either */
push edi
pushfd
/* Load the string pointer into edi */
mov edi, [esp + 12]
/* Set eax to 0, since we want to compare with 0 */
xor eax, eax
/* Set ecx to -1 (i.e. 0xFFFFFFFF) */
mov ecx, -1
/* Clear direction flag */
cld
/* Now compare the characters until a 0 is found */
repne _tscas
/* Calculate the count. For n characters, we do (n + 1) comparisons. Initial
value of ecx was -1, so end value of ecx is (-1 - (n + 1)) = -(n + 2).
=> n = -ecx - 2 = ~ecx - 1 */
not ecx
lea eax, [ecx - 1]
/* Restore eflags/edi and return the result */
popfd
pop edi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcslen
.code
FUNC _tcslen
FPO 0, 1, 1, 1, 0, FRAME_FPO
/* Save edi and eflags (according to the x86 ABI, we don't need to do that
but since the native function doesn't change the direction flag, we don't
either */
push edi
pushfd
/* Load the string pointer into edi */
mov edi, [esp + 12]
/* Set eax to 0, since we want to compare with 0 */
xor eax, eax
/* Set ecx to -1 (i.e. 0xFFFFFFFF) */
mov ecx, -1
/* Clear direction flag */
cld
/* Now compare the characters until a 0 is found */
repne _tscas
/* Calculate the count. For n characters, we do (n + 1) comparisons. Initial
value of ecx was -1, so end value of ecx is (-1 - (n + 1)) = -(n + 2).
=> n = -ecx - 2 = ~ecx - 1 */
not ecx
lea eax, [ecx - 1]
/* Restore eflags/edi and return the result */
popfd
pop edi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,45 +1,45 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsncat
.code
FUNC _tcsncat
FPO 0, 3, 2, 2, 0, FRAME_FPO
push esi
push edi
mov edi, [esp + 12]
mov esi, [esp + 16]
cld
xor eax, eax
mov ecx, -1
repne _tscas
_tdec(edi)
mov ecx, [esp + 20]
.L1:
dec ecx
js .L2
_tlods
_tstos
test _treg(a), _treg(a)
jne .L1
jmp .L3
.L2:
xor eax, eax
_tstos
.L3:
mov eax, [esp + 12]
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsncat
.code
FUNC _tcsncat
FPO 0, 3, 2, 2, 0, FRAME_FPO
push esi
push edi
mov edi, [esp + 12]
mov esi, [esp + 16]
cld
xor eax, eax
mov ecx, -1
repne _tscas
_tdec(edi)
mov ecx, [esp + 20]
.L1:
dec ecx
js .L2
_tlods
_tstos
test _treg(a), _treg(a)
jne .L1
jmp .L3
.L2:
xor eax, eax
_tstos
.L3:
mov eax, [esp + 12]
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,43 +1,43 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsncmp
.code
FUNC _tcsncmp
FPO 0, 3, 2, 2, 0, FRAME_FPO
push esi
push edi
mov esi, [esp + 12] /* s1 */
mov edi, [esp + 16] /* s2 */
mov ecx, [esp + 20] /* n */
xor eax, eax
cld
.L1:
dec ecx
js .L2
_tlods
_tscas
jne .L3
test eax, eax
jne .L1
.L2:
xor eax, eax
jmp .L4
.L3:
sbb eax, eax
or al, 1
.L4:
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsncmp
.code
FUNC _tcsncmp
FPO 0, 3, 2, 2, 0, FRAME_FPO
push esi
push edi
mov esi, [esp + 12] /* s1 */
mov edi, [esp + 16] /* s2 */
mov ecx, [esp + 20] /* n */
xor eax, eax
cld
.L1:
dec ecx
js .L2
_tlods
_tscas
jne .L3
test eax, eax
jne .L1
.L2:
xor eax, eax
jmp .L4
.L3:
sbb eax, eax
or al, 1
.L4:
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,37 +1,37 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsncpy
.code
FUNC _tcsncpy
FPO 0, 3, 2, 2, 0, FRAME_FPO
push esi
push edi
mov edi, [esp + 12] /* s1 */
mov esi, [esp + 16] /* s2 */
mov ecx, [esp + 20] /* n */
xor eax, eax
cld
.L1:
dec ecx
js .L2
_tlods
_tstos
test _treg(a), _treg(a)
jnz .L1
rep _tstos
.L2:
mov eax, [esp + 12]
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsncpy
.code
FUNC _tcsncpy
FPO 0, 3, 2, 2, 0, FRAME_FPO
push esi
push edi
mov edi, [esp + 12] /* s1 */
mov esi, [esp + 16] /* s2 */
mov ecx, [esp + 20] /* n */
xor eax, eax
cld
.L1:
dec ecx
js .L2
_tlods
_tstos
test _treg(a), _treg(a)
jnz .L1
rep _tstos
.L2:
mov eax, [esp + 12]
pop edi
pop esi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,33 +1,33 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsnlen
.code
FUNC _tcsnlen
FPO 0, 2, 1, 1, 0, FRAME_FPO
push edi
mov edi, [esp + 8]
mov ecx, [esp + 12]
xor eax, eax
test ecx, ecx
jz .L1
mov edx, ecx
cld
repne _tscas
sete al
sub edx, ecx
sub edx, eax
mov eax, edx
.L1:
pop edi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsnlen
.code
FUNC _tcsnlen
FPO 0, 2, 1, 1, 0, FRAME_FPO
push edi
mov edi, [esp + 8]
mov ecx, [esp + 12]
xor eax, eax
test ecx, ecx
jz .L1
mov edx, ecx
cld
repne _tscas
sete al
sub edx, ecx
sub edx, eax
mov eax, edx
.L1:
pop edi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,34 +1,34 @@
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsrchr
.code
FUNC _tcsrchr
FPO 0, 2, 1, 1, 0, FRAME_FPO
push esi
mov esi, [esp + 8]
mov edx, [esp + 12]
cld
mov ecx, _tsize
.L1:
_tlods
cmp _treg(d), _treg(a)
jne .L2
mov ecx, esi
.L2:
test _treg(a), _treg(a)
jnz .L1
mov eax, ecx
_tdec(eax)
pop esi
ret
ENDFUNC
END
/* EOF */
#include "tchar.h"
#include <asm.inc>
PUBLIC _tcsrchr
.code
FUNC _tcsrchr
FPO 0, 2, 1, 1, 0, FRAME_FPO
push esi
mov esi, [esp + 8]
mov edx, [esp + 12]
cld
mov ecx, _tsize
.L1:
_tlods
cmp _treg(d), _treg(a)
jne .L2
mov ecx, esi
.L2:
test _treg(a), _treg(a)
jnz .L1
mov eax, ecx
_tdec(eax)
pop esi
ret
ENDFUNC
END
/* EOF */

View file

@ -1,6 +1,6 @@
=== MMIXER TASKS ===
- Add hacks for source lines, such that Wave Mixer line always has a volume control
- Support custom mixer controls
- Assign mixer controls after all controls have been assigned (starting on the destination lines)
=== MMIXER TASKS ===
- Add hacks for source lines, such that Wave Mixer line always has a volume control
- Support custom mixer controls
- Assign mixer controls after all controls have been assigned (starting on the destination lines)
- TESTING & BUGFIXING