Boost logo

Boost-Build :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2005-08-01 09:00:26


On Saturday 30 July 2005 19:33, Andrey Melnikov wrote:
> Vladimir Prus wrote:
> > As I've said before, I'd like to roll Milestone 11 of Boost.Build V2
> > in early August.
> >
> > There's a couple of pending things:
> >
> > - msvc patches from Andrey (waiting for him to send a diff against CVS)
>
> Here is a diff. As a GUI guy used to graphical diffs of Perforce and
> Clearcase, I found contextual (-c) diffs the most human-readable. I can
> send the diff in any other format if you want.

I (and I think others here), prefer unified diff.

Here are the comments on the patch:

> - else if [ MATCH "(\\.NET 2003\\VC7)" : $(command) ] ||
> + else if [ MATCH "(NET 2003[\/\\\\]VC7)" : $(command) ] ||
> [ MATCH "(Microsoft Visual C\\+\\+ Toolkit 2003)" :
$(command) ]
> {
> version = 7.1 ;
> }
> - else if [ MATCH "(.NET\\VC7)" : $(command) ]
> + else if [ MATCH "(.NET[\/\\\\]VC7)" : $(command) ]

I'm not sure about this [\/\\\\] thing. After jam unescapes the string, you
get [/\\] The second backslash does not seem necessary inside character set.
Here's what I get on the command line:

$ bjam -f-
ECHO [ MATCH (2003[\/\\]VC7) : 2003/VC7 ] ;
ECHO [ MATCH (2003[\/\\]VC7) : 2003\\VC7 ] ; <Ctrl-D>
2003/VC7
2003\VC7

So, it works with just [\/\\]. Am I missing something?

> # 8.0 deprecates some of the options
> - if ! [ MATCH ^([67].*) : $(version) ]
> + if $(version) = "8.0"

This just waits to break when 8.1 is released ;-) What was wrong with the
previous condition?

> + possible-paths = $(possible-paths)\\bin ;
> +
> + local VCToolkitInstallDir = [ modules.peek : VCToolkitInstallDir ] ;
> + if $(VCToolkitInstallDir)
> + {
> +
> + if $(version) = "7.1"
> + {
> + VCToolkitInstallDir = [ path.native [ path.make
"$(VCToolkitInstallDir:J= )" ] ] ;
> + # NOTE it's impossible to switch between Toolkit and VS.
> + # I wonder is toolkit and VS can be installed together?
> +
> + possible-paths += ;
> + }

This means that if the user has

using msvc : 7.1 ;

then 7.1 toolkit will never be used? I'm not sure that's good, why I can both
using the free toolkit, and explicitly specify the version?

> @@ -357,6 +389,7 @@
> actions link bind DEF_FILE RSP
> {
> $(.LD) /NOLOGO
$(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /LIBPATH:"$(LINKPATH:W)"
$(USER_LINKFLAGS) @"$(RSP:W)" && $(RM) "$(RSP)"
> + $(MANIFEST)$(<[1]).manifest $(OUTPUTRESOURCE)$(<[1]);#2
> }

I'd appreciate a comment saying why manifests are usefull for DLLs, too.

> A question: Do we still need these =J hacks? Can we just replace [
> modules.peek ] with [ os.environ ] and remove =J lines everywhere in the
> VS detection code?

Yes, we no longer need :J

> Also I have lib* prefix patch and maybe some other patches pending
> because they aren't in msvc.jam. I'll take a look and send you a diff soon.

I'm looking forward at revised version of this patch, and the new one!

- 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