* Clang: Use --version instead of -dumpversion
Fixes issue when Clang 8 and below determined as 4.2.1 version.
* Bootstrap and test with versioned toolset
Eliminates need to manual configure toolsets via `user-config.jam` for testing, and allows to pass to `bootstrap.sh` the same toolset string as you would to B2 invocation what eliminates need to specify a custom exec via `--cxx=`.
This adds default/fallback logic to determine the b2 exec absolute path
as possible. It uses the arg0 and current dir or path to construct the
liekliest path.
fixes#25
Features that are narked as 'free' and 'optional' will now be
ignored when the value specified on the command line is
empty. Hence once can specify `cxxflags=` on the command
line without errors. All current "flags" features are now optional.
fixes#5
Specifying the intel-linux compiler in the path would result in failure
because the path to the compiler would never get detected and hence
the path to the compiler libs would also be missing. This fixes the
issue by explicitly computing the absolute path to the compiler exec
always for both already specified and as found in PATH.
fixes#23
Some platforms, like AIX, when building with gcc need `-pthread` option to enable std thread support. This adds an alternate check with that option as fallback to plain gcc compile.
Previously it was needed to include pch header in every source file, but Clang does it automatically making the usage non-uniform. It is also a very noisy process to add pch header to an existing project. Automatic on-demand header inclusion solves both issues.
* pch: msvc source automatic header folder inclusion
* pch test refactoring
* pch test msvc automatic pch source generation
* Include pch header automatically and on-demand
* no more need in gcc pch naming hack
* Versioned Clang automatic configuration
Currently, without annoying `toolset.using` directives in `user-config.jam`, `b2 toolset=clang-xx` silently uses clang++ binary, even if it is a different version than requested. Instead of copycating GCC or reinventing a wheel I have generalized GCC automatic configuration and used it for Clang.
Surround the `CXX` path with double quotes to support spaces in the path.
Otherwise if the `CXX` variable is set to a path containing spaces like
```
C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe
```
the following error message is printed:
```
'C:/Program' is not recognized as an internal or external command,
operable program or batch file.
```
Using pygments.rb fails on Ruby3 because of missing class create
methods. Which makes using the same script for ruby2 and ruby3
a problem. We aren't using pygments currently anyway, so
disable it for now.
* src/tools/python.jam
(compute-default-paths): When the python include folder without any
suffix does not exist, but one with a m-suffix does, use the latter
Re-introduces functionality that was present in B2, but removed when the "" feature was introduced
Previously, generators could return a property-set as the first item in the result list, this feature removed that. It doesn't seem clear to me that removing this functionality was intentional or necessary to make the feature work. I suspect it was overlooked because the built-in generators did not utilize this functionality that the system supported
Adding the variant information to the configure messages caused a lot of
long output. Avoid most of the long output by removing the data output
duplication and summarizing the variants as notes below the configure
items.
Before this indirect rule references in features like
"-<conditional>@global.my-rule" had no effect. This was due to such
references being contextually encoded and evaluated. Hence every
reference was different and nothing could be removed. This change
makes it such that those indirect references do not use the invocation
context to compare for the removal of the inherited features. And hence,
allowing them to work.
Fixes#709
This change removes the "hard wired" set of features that are relevant
for a configure check. And instead uses the dynamic base properties
of the target property set. Hence always giving the minimal set of
unique properties for the configure check. This also adds output to
the configure items showing what that feature set is.
fixes#582
There was a systemic error of using ":=" instead of ":-" var expansion
that caused all kinds of problems. Replacing all the instances to be
correct fixed them. But also brought to light other problems. The
changes include fixing the intel detection to no leak and persist it's
setup. And to also support setup script generally if required.
Fixes#705
Fix for the latest icl.exe in the Intel OneAPI product. The icl.exe major version number in the oneAPI product starts with "2021" rather than "21", but the fix supports also specifying the major version number of icl.exe in the oneAPI as starting with "21". In the oneAPI product the setup file is called "setvars.bat" and not "iclvars.bat". Finally all tests for icl major versions are changed from the previously faulty string comparisons to the correct number comparisons.
CXX was previously only used to replace the exec part of the compiler
commands. This change restores that aspect. It also makes the toolset
checks short circuit so that we do get the best toolset and command
detected.
This rewrites the build.sh to remove duplication of base compiler
command to combine checking the command and specifying it.
Which allows for only detecting valid working commands, and
hence toolsets. This also adds the new Intel oneAPI compiler.