Unable to use multiple intel toolsets for different versions on Windows
- Dominant language
- C++
- Stars
- 251
- Forks
- 63
- PR merge metrics
- No merged PRs in 30d
Description
My user-config.jam has, for Intel on Windows:
```
using intel : 19.0 : :
vc14.2
"C:/Utilities/IntelSWTools/parallel_studio_xe_2019/compilers_and_libraries_2019/windows/bin"
off
"/Qdiag-disable:2415,367,3280,177" ;
using intel : 18.0 : :
vc14.1
"C:/Utilities/IntelSWTools/parallel_studio_xe_2018/compilers_and_libraries_2018/windows/bin"
off
"/Qdiag-disable:2415,367,3280,177,3346" ;
```
If I run b2 with toolset=intel-19.0 on some jamfile the process succeeds in running. If I run b2 with toolset=intel-18.0 the process fails because the commands to setup, compile, and link are missing the command names while retaining their parameters.. I have checked the intel-win.init initialization and booth toolsets are initialized properly, each with their own 32 and 64-bit settings for .SETUP, .CC, and .LD etc. with the cpu-conditions matching the toolset name.
If I switch the order of the toolsets above then b2 toolset=intel-18.0 succeeds while b2 toolset=intel-19.0 fails in the same way as above.
I have not been able to discover why in the failing condition .SETUP, .CC, and .LD etc. are empty, after being set properly in intel-win.init initialization. I can debug into the code using the excellent Boost Build debugger but I have no idea how I canm determine why the .SETUP, .CC, and .LD values are empty for the second toolset each time while having their proper values for the first toolset.
This is almost certainly a bug in Boost Build but I have no idea how to fix it so I have reported it here as an issue. Not being able to use multiple intel toolsets on Windows in Boost Build is pretty discouraging, as I can use multiple clang-linux, clang-win, msvc, or gcc toolsets, for different versions of each compiler implementation, without problems.
Contributor guide
Research direction
Reproduce the issue with the two Intel toolsets in user-config.jam, swapping their order to confirm which one fails. Start in intel-win.init and use the Boost Build debugger to inspect the .SETUP, .CC, and .LD values for each toolset, especially where the second toolset becomes empty. Done means b2 toolset=intel-19.0 and b2 toolset=intel-18.0 both compile and link successfully regardless of declaration order.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- build-system, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100