boostorg / boostorg/build

Unable to use multiple intel toolsets for different versions on Windows

Open
#510 1 comment 0 reactions 0 assignees View on GitHub
transition
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.