The following line in unix.jam’s generated-targets() rule (line 64 in master):
sources = $(sources2) [ unix.order-libraries $(libraries) ] ;
causes the link order to change when building with the gcc toolset. However when building with msvc, the link order is maintained based on the order of the sources as they are declared in the targets used.
Before I provide a working example of this showing the disparity between the two toolsets, I wanted to first understand the reason this is done. Especially seeing that different toolsets could potentially produce different results.
BTW, this line actually use to work (or maybe just worked better in our case) as expected before Steve reverted his ordering changes (30d35ce80db419b54f70c1b9937104994d184871 and integrated in 2e764707e03d25b6928501c25a717e195c0a8851)