Boost logo

Boost-Build :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2006-07-22 04:41:15


On Thursday 20 July 2006 23:22, Reece Dunn wrote:

> Should the default msvc assembler be used for one build set, and msvc+nsam
> be used in another build set? If a toolset has a notion of primary types --
> types that cannot be composed with other toolsets -- and all other types
> are secondary, then in the above case, msvc will define ASM as a secondary
> type, OBJ as a primary type, while nasm will define ASM as a primary type,
> OBJ as a secondary (i.e. it does not know how to link executable code). The
> two toolsets are merged (for the purpose of this build run) into msvc+nasm,
> where ASM and OBJ are both primary.
>
> The primary/secondary list of supported types should be enough to support
> what we want. When evaluating the toolset list:
>
> bjam msvc borland nasm
>
> the toolsets msvc and borland have ovrelapping primary typelists, so are
> not merged, but are evaluated as if they were executed on separate command
> lines. The nasm toolset will compose onto msvc and borland, giving the
> effective command line of:
>
> bjam msvc nasm
> bjam borland nasm
>
> Toolsets from the toolsetlist are combined into a toolset t' only if:
> 1. t1.primary intersect t2.primary is empty
> 2. t1.secondary intersect t2.primary equals t2.primary
> where:
> t'.primary = t1.primary union t2.primary
> t'.secondary = t1.secondary intersect t2.primary
> until:
> there does not exists t in toolsetlist suchthat
> t.primary intersect t'.primary is empty
>
> The toolsets to use as the buildset are given as the toolsets in the cross
> product of the toolsets passed to the command line that meet the above
> criteria.
>
> Hmm, this is getting complicated. I hope it makes sense. Comments?
> Thoughts?

I think it's getting complicated indeed. Can we go back to the original
problem? IIUC, there's that "MSI" target type, that you can produce using
different tools. You've added WiX tool support, and used <toolset> to
indicate that WiX tool should be used, and not other other one.

How about using "msi_toolset" feature instread? That would allow me to write:

  bjam toolset=msvc msi_toolset=wix

and have things working. I somehow suspect that allowing <toolset> to mean
different things depending on context is going to break, not to mention that

  bjam toolset=msvc toolset=wix

is just not going to work out of the box -- Boost.Build requires <toolset>,
just like every non-free feature, to have just a single value.

I might have completely misunderstood the problem, does the above makes any
sense?

- Volodya

-- 
Vladimir Prus
http://vladimir_prus.blogspot.com
Boost.Build V2: http://boost.org/boost-build2

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk