Imported Upstream version 1.51.0
[platform/upstream/boost.git] / tools / build / v2 / test / generators-test / jamroot.jam
1 # Copyright 2002, 2003, 2004, 2005 Vladimir Prus 
2 # Distributed under the Boost Software License, Version 1.0. 
3 # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) 
4
5
6 import "class" : new ;
7
8 import lex ;
9 import qt ;
10 import extra ;
11
12 import type ;
13
14 type.register tUI : tui ;
15 type.register tUIC_H ;
16 type.set-generated-target-suffix tUIC_H : : h ;
17
18 type.register X1 : x1 ;
19 type.register X2 : x2  ;
20 type.register X_PRO : x_pro ;
21
22 import generators ;
23
24 generators.register-standard qt.uic : tUI tUIC_H : CPP ;
25 generators.register-standard qt.uic-h : tUI : tUIC_H ;
26
27 # That's an interesting example. Currently, X_PRO will be processed
28 # twice.
29 generators.register-standard extra.x : X1 X2 : CPP ;
30 generators.register-standard extra.x_pro : X_PRO : X1 X2 ;
31
32 # The point of this setup of to implement this functionality
33 # "When main target type is EST_EXE, build OBJ from CPP-MARKED, not
34 # for anything else (like CPP)
35 # Unfortunately, this does not really works.
36
37 #if $(no-var) {
38 import nm ;
39
40 type.register CPP_MARKED : marked_cpp : CPP ;
41 type.register POSITIONS : positions ;
42 type.register NM.TARGET.CPP : target_cpp : CPP ;
43 type.register NM_EXE : : EXE ;
44
45 generators.register-standard nm.target-source : CPP_MARKED : NM.TARGET.CPP ;
46 generators.register-standard nm.cpp-mark : CPP : CPP_MARKED POSITIONS ;
47     
48 class nm::target::cpp-obj-generator : generator
49 {
50     rule __init__ ( )
51     {        
52         generator.__init__ nm.target-obj : NM.TARGET.CPP : OBJ ;
53     }
54     
55     rule requirements ( )
56     {
57         return <main-target-type>NM_EXE ;
58     }
59         
60     # Consider: it it OK to ignore all other generated targets except for the first?
61     rule run ( project name ? : properties * : source : multiple ? ) 
62     {
63         if [ $(source).type ] = CPP {    
64             local converted = [ generators.construct $(project) : NM.TARGET.CPP : $(properties) : $(source) ] ;
65         if $(converted[1])
66             {            
67                 local result = [ generators.construct $(project) : OBJ : $(properties) : $(converted[2]) ] ;
68                 return $(result) ;
69             }
70             else
71             {
72                 return ;
73             }        
74         }
75         else
76         {
77             return ;
78         }        
79     }                
80 }
81
82 generators.register [ new nm::target::cpp-obj-generator ] ;
83
84 generators.override nm.target-obj : all ;
85
86 #}
87
88
89
90
91
92
93
94
95