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 9import configure ; 10import project ; 11import path ; 12import property ; 13 14local here = [ modules.binding $(__name__) ] ; 15 16project.push-current [ project.current ] ; 17project.load [ path.join [ path.make $(here:D) ] ../config ] ; 18project.pop-current ; 19 20rule 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 40rule address-model ( ) 41{ 42 return <conditional>@architecture.deduce-address-model ; 43} 44 45rule 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 89rule architecture ( ) 90{ 91 return <conditional>@architecture.deduce-architecture ; 92} 93