Recent change fixed the use of CFLAGS vs. C++FLAGS which caused a bunch
of C++ options to dissappear. This brings then back by setting them to
appropriate OPTIONS, CFLAGS, or C++FLAGS var.
The proposed asan support didn't fit into the regular msvc init structure.
This fixes that aspect and cleans up the support to correctly be minimal
and to add the missing runtime libs needed to actually enable the
asan support.
Clanf-cl is a bit more picky than plain msvc link command about order of
link option when linking. This moves the linkflags to the end of the
command as clang-cl needs.
In the case where multiple @() substitutions happen in one action the
dynamic choice of file vs content would apply to all. This would cause
problems as some of them might not be command options. This change
adds an ":O=" options specifier to variables that can control what type
of @() substitution can happen for each expansion. By specifying "O:=FC"
one can select to allow either file or content expansion making that @()
instance dynamic. When not specified the default is as if "O:=F".
* Define OSMINOR & OS_HURD on GNU/Hurd
Add a way to identify GNU/Hurd with b2, and also in the Python support.
* Use /proc/self/exe for executable_path on Hurd
Use the Linux compatibility procfs translator to get the full path of
the current executable.
* Define _GNU_SOURCE on any GNU libc-based OS
Make sure to enable GNU features when building on any OS that uses
GNU libc.
For bootstrapping `b2` itself, the current `borland` toolset is broken
now as `bcc32.exe` doesn't support C++11. Update that toolset to use
the Clang-based `bcc32c.exe`, which has largely the same cmdline args.
This implements the ability for response file "@()" substitution to
dynamically adjust to either expand the content or create the response
file depending on the possible command line length. This should
reduce the create of such response temp files improving build
performance.
The executable_path allocates a string (strdup) which was never released
Tested with ASAN and valgrind
Co-authored-by: Miroslaw Stein <miroslaw.stein@isode.com>
When the Jambase got ported we lost also searching BOOST_ROOT for the
bootstrap file. This is strictly a backward compatibility fix for Boost.
fixes#622
This change passes -fsanitize=address to the compiler and ensures synchronous pdb's generation. The linker is provided with corresponding libraries and is prohibited from incremental linking. Usage of address-sanitizer=on also assumes that debug-symbols=on and debug-store=database.