When I upgrade our boost-build version to the latest svn commit (85183), I noticed that the order of sources provided to actions has undergone a subtle change. Previously, if a target called out its sources in a particular order, that order was preserved in the final action performed. However, a change was mode which no longer preserves the order when non-file targets are used. What happens is that the following:
alias B : file1.lib ;
alias A : file2.lib ;
lib test : A B ;
used to produce:
file bin\msvc-11.0\debug\test.dll.rsp
"file2.lib"
"file1.lib"
msvc.link.dll bin\msvc-11.0\debug\test.dll
call "C:\Program Files (x86)\microsoft visual studio 11.0\vc\vcvarsall.bat" x86 >nul
link /NOLOGO /INCREMENTAL:NO /DLL /DEBUG /MACHINE:X86 /subsystem:console /out:"bin\msvc-11.0\debug\test.dll" /IMPLIB:"bin\msvc-11.0\debug\test.lib" @"bin\msvc-11.0\debug\test.dll.rsp"
if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%
but now it produces:
file bin\msvc-11.0\debug\test.dll.rsp
"file1.lib"
"file2.lib"
msvc.link.dll bin\msvc-11.0\debug\test.dll
call "C:\Program Files (x86)\microsoft visual studio 11.0\vc\vcvarsall.bat" x86 >nul
link /NOLOGO /INCREMENTAL:NO /DLL /DEBUG /MACHINE:X86 /subsystem:console /out:"bin\msvc-11.0\debug\test.dll" /IMPLIB:"bin\msvc-11.0\debug\test.lib" @"bin\msvc-11.0\debug\test.dll.rsp"
if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL%
I did a git bisect to find the change that introduced the problem:
9b556de4a64f574831d18df54f1e70c3da544fc1 is the first bad commit
commit 9b556de4a64f574831d18df54f1e70c3da544fc1
Author: steven_watanabe <steven_watanabe@b8fc166d-592f-0410-95f2-cb63ce0dd405>
Date: Tue Apr 16 18:40:52 2013 +0000
Tiny optimization of generator.convert-multiple-sources-to-consumable-types.
git-svn-id: http://svn.boost.org/svn/boost/trunk/tools/build@83930 b8fc166d-592f-0410-95f2-cb63ce0dd405
:040000 040000 6c02ac0752f150f5c2aa850a9597125bbc3b4979 0b9c031d8fce3ec3b50b62fc 269c0da4ea2311cb M v2
Can this be fixed and the original behavior maintained? This problem is an issue with many of my generators that assume the order will be maintained.
Thanks,
Chris