mirror of
https://github.com/reactos/reactos.git
synced 2024-08-28 22:28:36 +00:00
83 lines
3.5 KiB
Plaintext
83 lines
3.5 KiB
Plaintext
The STLport build system
|
|
========================
|
|
|
|
This is a basic overview of the STLport build system. At the moment, I'm only familiar
|
|
with the working of the nmake variant, i.e. for MSVC, eVC and ICC/win32, other variants
|
|
may differ.
|
|
|
|
Overview:
|
|
----------
|
|
|
|
|
|
There are three basic classes to consider while building:
|
|
1. The used make tool (currently that is make (GNU make) an nmake (Microsoft)).
|
|
2. The used compiler
|
|
3. The target type, either application or library
|
|
|
|
Other than that, there are three different settings corresponding to the three different
|
|
STLport modes, 'release', 'debug' and 'STLdebug' and each one has two modes for either
|
|
static or dynamic linking.
|
|
|
|
The whole build system lies under the build/ dir of the source tree. There, it first
|
|
branches to Makefiles/ (which contains the base of the build system) and to lib/ (which
|
|
contains files to build the STLport library) and test/ (which contains files to build
|
|
tests) (TODO: what is the misc/ folder for?).
|
|
|
|
Under Makefiles/, you see the initially mentioned branching according to the build tool.
|
|
Here is also where the configure.bat file puts the generated config.mak file. (TODO:
|
|
what are the other files in that folder?)
|
|
|
|
nmake:
|
|
-------
|
|
|
|
Under nmake/, you then find the common support files for the different compilers and
|
|
files that define generic rules. Here, it then splits into app/ and lib/, which are
|
|
structured similar to each other and to the common nmake/ dir. In each dir you have
|
|
files for the different compilers that are used to make application specific or library
|
|
specific settings.
|
|
|
|
The branching in the three STLport modes and the static/dynamic linking is not visible
|
|
in the file structure but only in the used nmake variables.
|
|
|
|
In order to make clear which file includes which other file, here an example when
|
|
compiling the STLport library for eVC4. The call issued is 'nmake /f evc4.mak' in the
|
|
build/lib folder. From there, the following include tree is created:
|
|
|
|
build/lib/evc.mak
|
|
build/Makefiles/config.mak ; generated by configure.bat
|
|
build/Makefiles/nmake/top.mak
|
|
build/Makefiles/config.mak
|
|
build/Makefiles/nmake/sysid.mak
|
|
build/Makefiles/nmake/sys.mak
|
|
build/Makefiles/nmake/evc4.mak ; evc4 from config
|
|
build/Makefiles/nmake/evc-common.mak
|
|
build/Makefiles/nmake/targetdirs.mak
|
|
build/Makefiles/nmake/extern.mak
|
|
build/Makefiles/nmake/targets.mak
|
|
build/Makefiles/nmake/rules-o.mak
|
|
build/Makefiles/nmake/clean.mak
|
|
build/Makefiles/nmake/lib/top.mak ; would be app/top.mak when building an application
|
|
build/Makefiles/nmake/lib/macro.mak
|
|
build/Makefiles/nmake/lib/evc4.mak ; evc4 from config
|
|
build/Makefiles/nmake/lib/evc-common.mak
|
|
build/Makefiles/nmake/lib/rules-so.mak
|
|
build/Makefiles/nmake/lib/rules-a.mak
|
|
build/Makefiles/nmake/lib/rules-install-so.mak
|
|
build/Makefiles/nmake/lib/rules-install-a.mak
|
|
build/Makefiles/nmake/lib/clean.mak
|
|
|
|
TODO: build/Makefiles/config.mak is included both by build/lib/evc.mak and by
|
|
build/Makefiles/nmake/top.mak.
|
|
|
|
Known issues:
|
|
--------------
|
|
|
|
- nmake: MSC doesn't support generating dependency information for makefiles. So, unless
|
|
you modify the direct source file for an object file, no recompilation is triggered! You
|
|
need to either delete all object files that need to be recompiled or 'make clean'
|
|
|
|
- There are targets to only install e.g. the shared STLdebug version but there is no
|
|
such thing for making clean. This would be useful in the context of above issue for
|
|
making a selective clean only.
|
|
|