* Updated borland.jam to support latest Embarcadero C++ using the 32-bit compilers bcc32/bcc32c.
# Conflicts:
# src/tools/borland.jam
* Don't pass command line options which bcc32c can not handle.
(cherry picked from commit 7c1ae7d6b1)
* Only set shared when creating DLL.
(cherry picked from commit c71077e2ef)
* Use -b- only with bcc32.
(cherry picked from commit 5be4246c43)
* Add embarcadero toolset for C++ Builder using clang technology. This initially includes bcc32c and bcc32x for 32-bit Windows and bcc64 for 64-bit Windows.
(cherry picked from commit 3dc0664ecf)
* Clean up conditional flags when the condition is not needed.
(cherry picked from commit 2bce8908d0)
* Fixed syntax and other errors.
(cherry picked from commit 3d350030c2)
* More fixes for embarcadero jam file syntax problems. Set the default EXE to a console application.
(cherry picked from commit 61844755ce)
* Added support for static library archive with tlib/tlib64.
(cherry picked from commit 365de8eb71)
* Update before further changes.
(cherry picked from commit 3a7e024686)
* Simplify requirements.
(cherry picked from commit 250ec1d7ed)
* Dropped support for bcc32c since it errors out with quite a number of clang command line options. That compiler is supported by the borland.jam file.
(cherry picked from commit 7648561a8c)
* Support for asm, archive, and user-interface options. Addition of precompiled header type.
(cherry picked from commit 25adec6e69)
* Added docs. Removed precompiled headers.
(cherry picked from commit 5af0447386)
* Remove change to version.jam and put code locally into borland.jam.
(cherry picked from commit 2ef8485e7a)
* Fixed a number of syntax issues. Fix the methods for finding the root directory. Updated the documentation.
(cherry picked from commit a52cda799f)
* Adding address model options for compile and link.
(cherry picked from commit 439c9fdaaf)
* Added linker option to generate the import library.
(cherry picked from commit b934a4fd8a)
* Update import library switch to link.dll.
(cherry picked from commit c8891dda7d)
* Added my copyright to borland.jam toolset and fixed the creation of DLLs and static libraries in the embarcadero.jam troolset.
Co-authored-by: Edward Diener <eldlistmailingz@tropicsoft.com>
Commit de026bc61e changed the order to first detect the unusable vcunk
toolset before the vc142 and vc141 toolsets. This breaks building from
the Visual Studio Preview command prompt if no other Visual Studio
version is detected. Move the vcunk block down to where it was before
to restore this functionality.
This adds a check_cxx11.cpp source that is checked for compile with the
chosen toolset before actually building. This include an appropriate
user error. To see such errors, we also nolonger output to
bootstrap.log. Instead the bootstrap outputs to cerr and sets the
error code.
seems to only be called from basic-target.create-subvariant, which
seems (looking at the comments and 5.6.4 of docs) to assume that it
exists on virtual-target.
without this fix a user wanting to produce something derived from
virtual-target in the construct-function of something derived from
basic-target will get an error.
* Add png16 and libpng16 to library names in libpng.jam
On Windows, this allows to successfully find the library installed
using vcpkg which deploys the library named as libpng16.lib
and not png16.lib or png.lib.
* Add rationale behind listing multiple libpng names
armasm and armasm64, the MSVC toolchain's assemblers for arm and arm64
respectively, have completely different invocations than their ml and
ml64 counterparts targetting x86 and x86-64.
Here's the full output of armasm's help:
```
cmd> armasm64 -h
Microsoft (R) ARM Macro Assembler Version 14.23.28106.4 for 64 bits
Copyright (C) Microsoft Corporation. All rights reserved.
Usage: armasm [<options>] sourcefile objectfile
armasm [<options>] -o objectfile sourcefile
armasm -h for help
<options>: (Upper case shows allowable abbreviation)
-Errors errorsfile redirect stderr diagnostics to errorsfile
-I dir[;dir] add dirs to include search path
-PreDefine directive pre-execute a SET{L,A,S} directive
-NOWarn turn off warning messages
-ignore <warning-num> don't report warning-num
-Help help (this information)
-via <file> read further arguments from <file>
-machine <machine> set the PE machine type field
-g generate debugging info
-gh:SHA_256 use SHA256 for file checksum in debug info (experimental)
-errorReport:<option> report internal assembler errors to Microsoft
none - do not send report
prompt - prompt to immediately send report
queue - at next admin logon, prompt to send report (default)
send - send report automatically
<machine>: ARM64
```
Adds gnu11 (libstdc++ with new ABI) and libc++ values to stdlib feature.
The value gnu was already in use by sun toolset, so this commit sets it as
libstdc++ with old ABI. Adds support for that feature to gcc, clang-linux and
clang-darwin toolsets. Refactors sun toolset to use stdlib feature via toolset
flags.
* add LTO support
Adds lto feature with 2 values: off (the default) and on. The feature
enables link-time optimizations. Also adds support for the feature to
gcc, clang and msvc toolsets.
* add docs for lto feature
* add lto-mode subfeature
* change lto-mode=full to be the default for uniform behaviour
* make lto feature optional
* build: Support toolset=msvc even as Cygwin build.
Fixes: https://github.com/boostorg/build/issues/459
* msvc.jam: Avoid segmentation fault if ProgramFiles env is missing.
When we run in an 'env -i' session in Cygwin, which may not have the
"ProgramFiles(x86)" or "ProgramFiles" environment variables set, we
really should not end up in a segmentation fault.
* msvc.jam: On Cygwin, query cygpath on missing ProgramFiles env.
When we run in an 'env -i' session in Cygwin, which may not have the
"ProgramFiles(x86)" or "ProgramFiles" environment variables set, we can
try to query cygpath instead.
Some system headers on POSIX systems indirectly include strings.h in extern "C"
region. This sometimes results in Boost.Build's strings.h being included into
such region, which marks all string_* functions as extern "C" and changes their
name mangling rules accordingly, which causes linking errors. To resolve this
header conflict, this commit renames strings.h to jam_strings.h. And strings.cpp
to jam_strings.cpp for consistency.
Fixes https://github.com/boostorg/build/issues/468.