]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/tools/build/src/tools/builtin.jam
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / tools / build / src / tools / builtin.jam
CommitLineData
7c673cae
FG
1# Copyright 2002, 2003, 2004, 2005 Dave Abrahams
2# Copyright 2002, 2005, 2006, 2007, 2010 Rene Rivera
3# Copyright 2006 Juergen Hunold
4# Copyright 2005 Toon Knapen
5# Copyright 2002, 2003, 2004, 2005, 2006 Vladimir Prus
6# Distributed under the Boost Software License, Version 1.0.
1e59de90
TL
7# (See accompanying file LICENSE.txt or copy at
8# https://www.bfgroup.xyz/b2/LICENSE.txt)
7c673cae
FG
9
10# Defines standard features and rules.
11
12import alias ;
13import "class" : new ;
14import errors ;
15import feature ;
b32b8144 16import features/__init_features__ ;
7c673cae
FG
17import generators ;
18import numbers ;
19import os ;
20import path ;
21import print ;
22import project ;
23import property ;
24import regex ;
25import scanner ;
26import sequence ;
27import stage ;
28import symlink ;
29import toolset ;
30import type ;
31import targets ;
32import types/register ;
33import utility ;
34import virtual-target ;
35import message ;
36import convert ;
37
b32b8144
FG
38# Generators need the target types registered first. So this import needs
39# to be after that.
40import generators/__init_generators__ ;
41
7c673cae
FG
42# FIXME: the following generate module import is not needed here but removing it
43# too hastily will break using code (e.g. the main Boost library Jamroot file)
44# that forgot to import the generate module before calling the generate rule.
45import generate ;
46
47
7c673cae
FG
48variant debug : <optimization>off <debug-symbols>on <inlining>off
49 <runtime-debugging>on ;
50variant release : <optimization>speed <debug-symbols>off <inlining>full
51 <runtime-debugging>off <define>NDEBUG ;
52variant profile : release : <profiling>on <debug-symbols>on ;
53
54
7c673cae
FG
55class preprocessed-target-class : basic-target
56{
57 import generators ;
58 rule construct ( name : sources * : property-set )
59 {
60 local result = [ generators.construct [ project ]
61 $(name) : PREPROCESSED_CPP : $(property-set) : $(sources) ] ;
62 if ! $(result)
63 {
64 result = [ generators.construct [ project ]
65 $(name) : PREPROCESSED_C : $(property-set) : $(sources) ] ;
66 }
67 if ! $(result)
68 {
69 local s ;
70 for x in $(sources)
71 {
72 s += [ $(x).name ] ;
73 }
74 local p = [ project ] ;
75 errors.user-error
76 "In project" [ $(p).name ] :
77 "Could not construct preprocessed file \"$(name)\" from $(s:J=, )." ;
78 }
79 return $(result) ;
80 }
81}
82
83rule preprocessed ( name : sources * : requirements * : default-build * :
84 usage-requirements * )
85{
86 local project = [ project.current ] ;
87 return [ targets.main-target-alternative
88 [ new preprocessed-target-class $(name) : $(project)
89 : [ targets.main-target-sources $(sources) : $(name) ]
90 : [ targets.main-target-requirements $(requirements) : $(project) ]
91 : [ targets.main-target-default-build $(default-build) : $(project) ]
92 : [ targets.main-target-usage-requirements $(usage-requirements) : $(project) ]
93 ] ] ;
94}
95
96IMPORT $(__name__) : preprocessed : : preprocessed ;