Boost logo

Boost-Build :

From: Mark Evans (evans_mark_at_[hidden])
Date: 2006-03-13 10:40:34


I couldn't get this to work:

alias vprocn : ../../import/tns-r/import/aaavproc/vprocn.o : <hptns-arch>tnsr ;

lib ioa :
    db.c
    vprocn
    ;

/usr/bin/bash -i -c "bjam hptnsr3d"
/cygdrive/c/mse/proj/boost-build/build/generators.jam:918: in ensure-type from module generators
error: target { ../../import/tns-r/import/aaavproc/vprocn.o. } has no type
/cygdrive/c/mse/proj/boost-build/build/generators.jam:1138: in generators.construct from module generators
/cygdrive/c/mse/proj/boost-build/build/targets.jam:1329: in construct from module object(typed-target)@161
/cygdrive/c/mse/proj/boost-build/build/targets.jam:1175: in object(typed-target)@161.generate from module object(typed-target)@161
/cygdrive/c/mse/proj/boost-build/build/targets.jam:764: in generate-really from module object(main-target)@202
/cygdrive/c/mse/proj/boost-build/build/targets.jam:737: in object(main-target)@202.generate from module object(main-target)@202
/cygdrive/c/mse/proj/boost-build/build/targets.jam:252: in object(project-target)@154.generate from module object(project-target)@154
/cygdrive/c/mse/proj/boost-build/build-system.jam:291: in load from module build-system
/cygdrive/c/mse/proj/boost-build/kernel/modules.jam:261: in import from module modules
/cygdrive/c/mse/proj/boost-build/kernel/bootstrap.jam:121: in boost-build from module
/cygdrive/c/mse/proj/boost-build/boost-build.jam:1: in module scope from module

Is bjam thrown by the fact that there is no local C or C++ source file present for vprocn.o?

I arrived at a solution to this by adding a feature and rule logic to my toolset that allows a given Jamfile in a fairly complex project tree to include property <hptns-prebuilt>vproc for a given exe or lib target. (I don't want to have to cut and paste a bunch of conditional alias statements to every Jamfile for this.) Based on a rule invoked in the Jamroot (hptns.register-prebuilt) that associates different vproc objects with different variants (variables = architecture, runtime-link), the toolset determines which specific vproc[x].o object to include in the link when it sees <hptns-prebuilt>vproc in the link properties.

If there's a more straightforward way I could have solved this, it would be good to know.

Best regards,
Mark

Vladimir Prus <ghost_at_[hidden]> wrote:
Well, the features only matter for 'lib' rule. You can use this:

  alias vprocn : import/tns-r/import/aaavproc/vprocn.o : tnsr ;
  alias vprocn :



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