File: project-root.jam

package info (click to toggle)
boost-build 2.0-m11-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 4,624 kB
  • ctags: 2,387
  • sloc: ansic: 12,978; python: 5,209; xml: 4,782; cpp: 555; yacc: 456; sh: 237; makefile: 71
file content (91 lines) | stat: -rw-r--r-- 2,205 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

import "class" : new ;

import lex ;
import qt ;
import extra ;

import type ;

type.register tUI : tui ;
type.register tUIC_H ;
type.set-generated-target-suffix tUIC_H : : h ;

type.register X1 : x1 ;
type.register X2 : x2  ;
type.register X_PRO : x_pro ;

import generators ;

generators.register-standard qt.uic : tUI tUIC_H : CPP ;
generators.register-standard qt.uic-h : tUI : tUIC_H ;

# That's an interesting example. Currently, X_PRO will be processed
# twice.
generators.register-standard extra.x : X1 X2 : CPP ;
generators.register-standard extra.x_pro : X_PRO : X1 X2 ;

# The point of this setup of to implement this functionality
# "When main target type is EST_EXE, build OBJ from CPP-MARKED, not
# for anything else (like CPP)
# Unfortunately, this does not really works.

#if $(no-var) {
import nm ;

type.register CPP_MARKED : marked_cpp : CPP ;
type.register POSITIONS : positions ;
type.register NM.TARGET.CPP : target_cpp : CPP ;
type.register NM_EXE : : EXE ;

generators.register-standard nm.target-source : CPP_MARKED : NM.TARGET.CPP ;
generators.register-standard nm.cpp-mark : CPP : CPP_MARKED POSITIONS ;
    
class nm::target::cpp-obj-generator : generator
{
    rule __init__ ( )
    {        
        generator.__init__ nm.target-obj : NM.TARGET.CPP : OBJ ;
    }
    
    rule requirements ( )
    {
        return <main-target-type>NM_EXE ;
    }
        
    # Consider: it it OK to ignore all other generated targets except for the first?
    rule run ( project name ? : properties * : source : multiple ? ) 
    {
        if [ $(source).type ] = CPP {    
            local converted = [ generators.construct $(project) : NM.TARGET.CPP : $(properties) : $(source) ] ;
        if $(converted[1])
            {            
                local result = [ generators.construct $(project) : OBJ : $(properties) : $(converted[2]) ] ;
                return $(result) ;
            }
            else
            {
                return ;
            }        
        }
        else
        {
            return ;
        }        
    }                
}

generators.register [ new nm::target::cpp-obj-generator ] ;

generators.override nm.target-obj : all ;

#}