Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / context / build / architecture.jam
1 # architecture.jam
2 #
3 # Copyright 2012 Steven Watanabe
4 #
5 # Distributed under the Boost Software License Version 1.0. (See
6 # accompanying file LICENSE_1_0.txt or copy at
7 # http://www.boost.org/LICENSE_1_0.txt)
8
9 import configure ;
10 import project ;
11 import path ;
12 import property ;
13
14 local here = [ modules.binding $(__name__) ] ;
15
16 project.push-current [ project.current ] ;
17 project.load [ path.join [ path.make $(here:D) ] ../config ] ;
18 project.pop-current ;
19
20 rule deduce-address-model ( properties * )
21 {
22     local result = [ property.select <address-model> : $(properties) ] ;
23     if $(result)
24     {
25         return $(result) ;
26     }
27     else
28     {
29         if [ configure.builds /boost/architecture//32 : $(properties) : 32-bit ]
30         {
31             return <address-model>32 ;
32         }
33         else if [ configure.builds /boost/architecture//64 : $(properties) : 64-bit ]
34         {
35             return <address-model>64 ;
36         }
37     }
38 }
39
40 rule address-model ( )
41 {
42     return <conditional>@architecture.deduce-address-model ;
43 }
44
45 rule deduce-architecture ( properties * )
46 {
47     local result = [ property.select <architecture> : $(properties) ] ;
48     if $(result)
49     {
50         return $(result) ;
51     }
52     else
53     {
54         if [ configure.builds /boost/architecture//arm : $(properties) : arm ]
55         {
56             return <architecture>arm ;
57         }
58         else if [ configure.builds /boost/architecture//mips1 : $(properties) : mips1 ]
59         {
60             return <architecture>mips1 ;
61         }
62         else if [ configure.builds /boost/architecture//power : $(properties) : power ]
63         {
64             return <architecture>power ;
65         }
66         else if [ configure.builds /boost/architecture//riscv : $(properties) : riscv ]
67         {
68             return <architecture>riscv ;
69         }
70         else if [ configure.builds /boost/architecture//s390x : $(properties) : s390x ]
71         {
72             return <architecture>s390x ;
73         }
74         else if [ configure.builds /boost/architecture//sparc : $(properties) : sparc ]
75         {
76             return <architecture>sparc ;
77         }
78         else if [ configure.builds /boost/architecture//x86 : $(properties) : x86 ]
79         {
80             return <architecture>x86 ;
81         }
82         else if [ configure.builds /boost/architecture//combined : $(properties) : combined ]
83         {
84             return <architecture>combined ;
85         }
86     }
87 }
88
89 rule architecture ( )
90 {
91     return <conditional>@architecture.deduce-architecture ;
92 }