Genex-LINK_GROUP: Add feature RESCAN

Feature RESCAN can be used to manage circular references between
static libraries.
This commit is contained in:
Marc Chevrier
2022-03-02 17:32:44 +01:00
parent a950fd9553
commit b0fada9964
11 changed files with 92 additions and 4 deletions
@@ -18,3 +18,10 @@ See also the associated variable
features independent from the link language.
.. include:: CMAKE_LINK_GROUP_USING_FEATURE.txt
Predefined Features
^^^^^^^^^^^^^^^^^^^
CMake pre-defines some features of general interest:
.. include:: LINK_GROUP_PREDEFINED_FEATURES.txt
@@ -23,3 +23,10 @@ for the linker language, the variable
set.
.. include:: CMAKE_LINK_GROUP_USING_FEATURE.txt
Predefined Features
^^^^^^^^^^^^^^^^^^^
CMake pre-defines some features of general interest:
.. include:: LINK_GROUP_PREDEFINED_FEATURES.txt
@@ -0,0 +1,22 @@
**Circular references with static libraries**
Some linkers are one-pass only so to handle circular references between
static libraries, the following feature can be used:
``RESCAN``
The specified static libraries are searched repeatedly until no
new undefined references are created. Normally, an static library is searched
only once in the order that it is specified on the command line. If a symbol
in that library is needed to resolve an undefined symbol referred to by an
object in an library that appears later on the command line, the linker would
not be able to resolve that reference. By grouping the static libraries, they
all be searched repeatedly until all possible references are resolved (use
linker options ``--start-group`` and ``--end-group`` or, on ``SunOS``,
``-z rescan-start`` and ``-z rescan-end``).
Using this feature has a significant performance cost. It is best to use it
only when there are unavoidable circular references between two or more static
libraries.
This feature is available on ``Linux`` and ``SunOS`` platforms as well as
``Windows`` when ``GNU`` toolchain is used.