Subject: Re: [Boost-build] Copy TCL script using install rule
From: Alexander Sack (pisymbol_at_[hidden])
Date: 2008-11-26 12:34:21
On Sat, Nov 22, 2008 at 4:00 AM, Vladimir Prus <ghost_at_[hidden]> wrote:
> On Tuesday 18 November 2008 12:55:05 Johan Nilsson wrote:
>> Alexander Sack wrote:
>> > On Fri, Nov 14, 2008 at 9:02 AM, Johan Nilsson
>> > <r.johan.nilsson_at_[hidden]> wrote:
>> >> Alexander Sack wrote:
>> >>> Sill question, but why not just copy it in place since its not a
>> >>> binary?
>> >> It's not a silly question. I considered it myself, and might revert
>> >> to that unless I can find out another way.
>> > I only mention is because bjam manages installed targets and your
>> > script is sort of out-of-band in the context in which you described.
>> The script "is-a" target due to the usage of the make rule (which only,
>> quite unnecessarily, copies the script to a gristed target). Or did I
>> misunderstand your statement?
>> >> My main reason for not doing that is that I want to have a
>> >> consistent way of installing targets from Jamroot.
>> > In either case its consistent. The question is if there is an
>> > existing automated way to do what you are asking I suppose...
>> I'd like to have some way of expressing e.g. <install-type>SCRIPT in
>> addition to <install-type>EXE in the install rule (I think).
> I think there are few ways to install random files:
> - Just add another install target, with the same location, with extra
> files as sources, and without <install-type> property
> - Teach Boost.Build that .tcl files have a type. Your Jamroot might have:
> import type ;
> type.register TCL : tcl ;
> and add the .tcl script as the source for install -- no need for 'make'
> - Make Boost.Build always install things specified in the sources list for
> 'install' -- even if they have 'wrong' type. I think I've tried to do this,
> using some new feature, but in the end approach (1) proved to be easier.
> The reason your code does not work is that:
> make $(APP) : $(sources) : common.copy ;
> when built, does not produce a target of EXE type, but rather of whatever type
> is associated with the name of the target. E.g.
> make a.cpp : ....... ;
> will produce the target of type CPP. In your case, no type is associated with the
> name, so target is typeless, not of type EXE.
I have stupid question (again): Why doesn't Boost.Build register some
common known types to avoid stuff like this? I mean TCL is pretty
standard and so are some others off the top of my head (XML, maybe SH
or PL etc. etc.). I know its minor but...
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