|
Boost-Build : |
From: Roland Schwarz (roland.schwarz_at_[hidden])
Date: 2008-03-25 03:46:41
In the hope anyone has idea what could be wrong....
I know my chances are low, anyone has the same problem. Also it is not
possible to post the entire project. But perhaps someone ...
I was succesfull to integrate my pkgspec custom code generator into my
toolchain.
This generator, as explained in my previous posts, generates a cpp and
an hpp file.
Later on the hpp file is copied over to a install directory. This works
well under
windows XP and on my debian box. Funningly the same gives me the following
"Duplicate name of actual target" error when run on a rock-linux
distribution.
I am using the very same boost-build files and a recent bjam. (From trunk.)
The relevant snippets from the pkgsepc generator jam file:
( Caution, there might be a typo in the following since I needed to
anonymize...
please ask if in doubt. )
import generators ;
import "class" : new ;
import type ;
import property ;
type.register PKGSPEC : psp ;
rule init ( )
{
}
class pkgspec-generator : generator
{
import property-set ;
rule __init__ (
id composing ?
: source-types *
: target-types-and-names +
: requirements * )
{
generator.__init__
$(id) $(composing)
: $(source-types)
: $(target-types-and-names)
: $(requirements)
;
}
rule generated-targets ( sources + : property-set : project name ? )
{
# remove irrelevant features, i.e. all, since pkgspec does not
# generate code that is dependant on any of those
return
[ generator.generated-targets
$(sources)
: [ property-set.empty ]
: $(project) $(name)
] ;
}
}
generators.register [ new pkgspec-generator pkgspec.generate.c++ :
PKGSPEC : CPP HPP ] ;
actions generate.c++
{
pkgspec -fcpp -fhpp $(>) -o $(<[1]:S=.dummy)
}
And the usage in my Jamfile:
hpp company/dataspec
: dataspec.psp
;
install headers
: company/dataspec
[ path.glob-tree $(MYLIB_ROOT)/include/company : *.hpp : CVS ]
: <install-type>HPP
<location>$(DIST_PATH)/include/company
;
error: Duplicate name of actual target:
<p/home/rs/mylib/dist/include/company>dataspec.hpp
error: previous virtual target { common%common.copy-dataspec.hpp.HPP {
pkgspec%pkgspec.generate.c++-company/dataspec.hpp.HPP {
dataspec.psp.PKGSPEC } } }
error: created from mylib/build/bb/headers
error: another virtual target { common%common.copy-dataspec.hpp.HPP {
/home/rs/projects/mylib/include/company/dataspec.hpp.HPP } }
error: created from mylib/build/bb/headers
error: added properties: none
error: removed properties: none
/usr/local/share/boost-build/build/virtual-target.jam:453: in
actualize-no-scanner from module object(file-target)@299
/usr/local/share/boost-build/build/virtual-target.jam:118: in
object(file-target)@299.actualize from module object(file-target)@299
/usr/local/share/boost-build/build-system.jam:675: in load from module
build-system
/usr/local/share/boost-build/kernel/modules.jam:267: in import from
module modules
/usr/local/share/boost-build/kernel/bootstrap.jam:132: in boost-build
from module
/usr/local/share/boost-build/boost-build.jam:8: in module scope from module
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