mirror of
https://github.com/reactos/reactos.git
synced 2024-11-09 08:08:38 +00:00
527f2f9057
* Create a branch for some evul shell experiments. svn path=/branches/shell-experiments/; revision=61927
166 lines
7.5 KiB
Text
166 lines
7.5 KiB
Text
**********************************************************************
|
|
* 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!
|
|
|