using embarcadero : [version] : [c++-compile-command] : [compiler options] ;
+diff --git a/manual/release/index.html b/manual/release/index.html index 5714e4ad64..54d7a86e27 100644 --- a/manual/release/index.html +++ b/manual/release/index.html @@ -4,7 +4,7 @@ - +
B2 support automatic, or manual, loading of generated build files +
B2 supports automatic, or manual, loading of generated build files
from package managers. For example using the Conan package manager which
generates conanbuildinfo.jam
files B2 will load that files automatically
when it loads the project at the same location. The included file can
@@ -4372,6 +4374,189 @@
B2 supports automatic searching for referenced global projects. For example,
+if you have references to /boost/predef
with some minimal configuration B2
+can find the B2 project for it and automatically resolve the reference. The
+searching supports two modes: finding regular B2 project directories, and
+package/config style loading of single jam files.
To control which and where projects are found one can use different methods:
+B2_PROJECT_PATH
environment variable.
--project-search
command line argument.
rule project-search
project rule.
The search path in both B2_PROJECT_PATH
and --project-search
specifies a
+key-value list of project-id and path. The parts of that key-value list, as
+the name indicates, is a path delimiter separated list. For example if we had
+these two projects we wanted to find: /zlib
and /boost/asio
the search paths
+could look like:
+Linux + | +
+
|
+
+Windows, VxWorks + | +
+
|
+
+VMS + | +
+
|
+
The project-id in the search path specification maps that project root to the +indicated path. Which B2 will use to search for any projects and sub-projects +with that project-id root.
+Regardless of how the search path is specified, how the search happens is the
+same. Searching involves either searching for a B2 project directory, i.e.
+a directory containing a jamfile, or searching for a specially named *.jam
+file to include (similar to how the Package Managers support includes
+jam files).
For a given project-id of the form /d1/d2/../dn
we search for the following,
+in this order:
The project at d1/d2/../dn
in any path registered for the /
root.
The project at dn
in any path registered for the /d1/d2/../dn-1
root.
The jamfile dn.jam
in any path registered for the /d1/d2/../dn-1
root.
The project at dn-1_dn
in any path registered for the /d1/d2/../dn-2
root.
The jamfile dn-1_dn.jam
in any path registered for the /d1/d2/../dn-2
+root.
And so on until it searches for the project d1_d2_.._dn
in any path
+registered for the /
root.
And for the jamfile d1_d2_.._dn.jam
in any path registered for the /
root.
For example, with this search paths:
+/boost
: /usr/share/boost-1.81.0
, /home/user/boost-dev/libs
/
: /usr/share/b2/external
And given the /boost/core
project-id to resolve, we search for:
/usr/share/b2/external/boost/core/<jamfile>
/usr/share/boost-1.81.0/core/<jamfile>
/home/user/boost-dev/libs/core/<jamfile>
/usr/share/boost-1.81.0/core.jam
/home/user/boost-dev/libs/core.jam
/usr/share/boost-1.81.0/boost_core/<jamfile>
/home/user/boost-dev/libs/boost_core/<jamfile>
/usr/share/boost-1.81.0/boost_core.jam
/home/user/boost-dev/libs/boost_core.jam
/usr/share/b2/external/boost_core.jam
The first project jamfile will be assigned to the project-id. Or the first
+*.jam
file found will be loaded.
Depending on whether a project jamfile or *.jam
file determines how the
+project is loaded.
When loading a project jamfile with a project-id and path it is equivalent
+to calling use-project project-id : path ;
from the context of the project
+that has the reference.
When loading a *.jam
file as the path it is equivalent to calling:
+use-packages path ;
from the context of the project that has the reference.
+In this case it means that the file will be loaded as part of the referenced
+project and hence any bare targets or information it declares will be part of
+the project.
compileflags
+The value of this feature is passed without modification to the corresponding
+tools. The values from the compileflags
is applied to all compilation of any
+language for the tools.
conditional
Used to introduce indirect conditional requirements. The value should have the @@ -5075,6 +5266,17 @@
linemarkers
+Allowed values: off
.
On preprocessing targets changes behavior to emit/omit line directives
+like #line
and #linenum
.
NOTE: The value doesn’t propagate.
+link
Allowed values: shared
, static
threadapi
Allowed values: pthread
, win32
.
Selects threading implementation. The default is win32
if <target-os>
is
+windows
and pthread
otherwise.
threading
Allowed values: single
, multi
The embarcadero
module supports the 32-bit command line C compiler
+bcc32x and the 64-bit command line C compiler bcc64, both clang-based,
+running on Microsoft Windows. These are the clang-based Windows compilers
+for all versions of Embarcadero C++.
The module is initialized using the following syntax:
+using embarcadero : [version] : [c++-compile-command] : [compiler options] ;
+This statement may be repeated several times, if you want to configure +several versions of the compiler.
+version
:
The version should be the compiler version if specified. if the +version is not specified Boost Build will find the latest installed +version of Embarcadero C and use that for the version. If the version +is specified Boost Build does not check if this matches any particular +version of Embarcadero C, so you may use the version as a mnemonic to +configure separate 'versions'.
+c++-compile-command
:
If the c-compile-command is not specified, Boost.Build will default to the +bcc64 compiler. If you specify a compiler option of <address-model>32 the +default compiler will be bcc32x. In either case when the command is not given +Boost Build will assume the compiler is in the PATH. So it is not necessary +to specify a command if you accept the default compiler and the Embarcadero +C binary directory is in the PATH.
+If the command is specified it will be used as is to invoke the compiler. +If the command has either 'bcc32x(.exe)' or 'bcc64(.exe)' in it Boost Build +will use the appropriate compiler to configure the toolset. If the command +does not have either 'bcc32x(.exe)' or 'bcc64(.exe)' in it, Boost Build +will use the default compiler to configure the toolset. If you have your +own command, which does not have 'bcc32x(.exe)' in it but invokes the +'bcc32x(.exe)' compiler, specify the <address-model>32 compiler option.
+compiler options
:
The following options can be provided, using +`<option-name>option-value syntax`:
+cflags
Specifies additional compiler flags that will be used when compiling C +and C++ sources.
+cxxflags
Specifies additional compiler flags that will be used when compiling C++ +sources.
+linkflags
Specifies additional command line options that will be passed to the linker.
+asmflags
Specifies additional command line options that will be passed to the assembler.
+archiveflags
Specifies additional command line options that will be passed to the archiver, +which creates a static library.
+address-model
This option can be used to specify the default compiler as specified in the +dicsussion above of the c++-compile-command. Otherwise the address model +is not used to initialize the toolset.
+user-interface
Specifies the user interface for applications. Valid choices are console
+for a console applicatiuon and gui
for a Windows application.
root
Normallly Boost Build will automatically be able to determine the root of +the Embarcadero C installation. It does this in various ways, but primarily +by checking a registry entry. If you specify the root it will use that +path, and the root you specify should be the full path to the Embarcadero +C installation on your machine ( without a trailing \ or / ). You should +not need to specify this option unless Boost Build can not find the +Embarcadero C++ root directory.
+using embarcadero ;
+Configures the toolset to use the latest version, with bcc64 as the compiler. +The bcc64 compiler must be in the PATH.
+using embarcadero : 7.40 ;
+Configures the toolset to use the 7.40 version, with bcc64 as the compiler. +The bcc64 compiler must be in the PATH.
+using embarcadero : 7.40 : bcc32x ; +using embarcadero : 7.40 : : <address-model>32 ;
+Configures the toolset to use the 7.40 version, with bcc32x as the compiler. +The bcc32x compiler must be in the PATH.
+using embarcadero : : c:/some_path/bcc64 ;
+Configures the toolset to use the latest version, with full command specified.
+using embarcadero : : full_command : <address-model>32 ;
+Configures the toolset to use the latest version, with full command specified +and bcc32x as the compiler.
+using embarcadero : : : <root>c:/root_path ;
+Configures the toolset to use the latest version, with bcc64 as the compiler +and the root directory of the installation specified. The bcc64 compiler must +be in the PATH.
+The gcc
module supports the GNU C++ compiler on
@@ -14193,7 +14554,108 @@
This release contains many bug fixes but along the way also cleanup and +refactoring of many toolsets, thanks to Nikita.
+New: Scan assembler files for C Preprocessor includes. — Nikita Kniazev
+Fix: Inherit generator overrides from a base toolset. — Nikita Kniazev
+New: Add linemarkers feature that on preprocessing targets changes behavior to
+emit/omit line directives like #line
and #<linenum>
. — Nikita Kniazev
Fix compiler name for QNX. — James Choi
+Fix openssl name handling. — Dmitry Arkhipov
+Fix clang-win assembler path deduction. — Nikita Kniazev
+Fix toolset sub-feature requirements inheritance. — Nikita Kniazev
+Unify compile and link of clang-linux toolset with gcc toolset. — Nikita Kniazev
+Fix same directory pch header generation for msvc toolset. — Nikita Kniazev
+Implement --durations
which reports top targets by execution time. — Nikita Kniazev
Change clang-darwin to inherit from clang-linux and unify compile commands. — Nikita Kniazev
+Fix clang-linux to not override RPATH_OPTION. — Nikita Kniazev
+Fix inadvertently running configuration checks that shouldn’t (as reported by
+Alexander Grund). By changing <build>no
conditionals evaluation to short
+circuit. — Nikita Kniazev
Fix same toolset overrides (inherit-overrides). — Nikita Kniazev
+New: Add using the C processors for assembly source files. — Nikita Kniazev
+Many improvements and cleanup of internal testing. — Nikita Kniazev
+Unify gcc and clang-linux soname option handling and disable it on Windows. — Nikita Kniazev
+Unity gcc/mingw linking of shared and import libs. — Nikita Kniazev
+Fix pdb generation ordering and naming issues. — Nikita Kniazev
+Unify clang-darwin linking with gcc. — Nikita Kniazev
+Fix mingw/msys/cygwin, winthreads/pthread inconsistencies to correct compiler +flags. — Nikita Kniazev
+Unify clang-vxworks by inheriting from clang-linux. — Nikita Kniazev
+Don’t store empty config cache and log. — Nikita Kniazev
+Fix generator custom rule name inheritance. This affects cygwin/mingw linking. — Nikita Kniazev
+Fix testing.execute=off to correct run-fail behavior. — Nikita Kniazev
+Fix use-project with native paths. — René Ferdinand Rivera Morell
+Fix msvc auto config version priority. Now msvc toolsets are configured in +correct newest to oldest regardless of being found from the registry or not. — René Ferdinand Rivera Morell
+New: Add support for automatic searching of external projects for global +target and project references. — René Ferdinand Rivera Morell
+