architecture.jam 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. import configure ;
  9. import project ;
  10. import path ;
  11. import property ;
  12. local here = [ modules.binding $(__name__) ] ;
  13. project.push-current [ project.current ] ;
  14. project.load [ path.join [ path.make $(here:D) ] ../config ] ;
  15. project.pop-current ;
  16. rule deduce-address-model ( properties * )
  17. {
  18. local result = [ property.select <address-model> : $(properties) ] ;
  19. if $(result)
  20. {
  21. return $(result) ;
  22. }
  23. else
  24. {
  25. if [ configure.builds /boost/architecture//32 : $(properties) : 32-bit ]
  26. {
  27. return <address-model>32 ;
  28. }
  29. else if [ configure.builds /boost/architecture//64 : $(properties) : 64-bit ]
  30. {
  31. return <address-model>64 ;
  32. }
  33. }
  34. }
  35. rule address-model ( )
  36. {
  37. return <conditional>@architecture.deduce-address-model ;
  38. }
  39. rule deduce-architecture ( properties * )
  40. {
  41. local result = [ property.select <architecture> : $(properties) ] ;
  42. if $(result)
  43. {
  44. return $(result) ;
  45. }
  46. else
  47. {
  48. if [ configure.builds /boost/architecture//arm : $(properties) : arm ]
  49. {
  50. return <architecture>arm ;
  51. }
  52. else if [ configure.builds /boost/architecture//mips1 : $(properties) : mips1 ]
  53. {
  54. return <architecture>mips1 ;
  55. }
  56. else if [ configure.builds /boost/architecture//power : $(properties) : power ]
  57. {
  58. return <architecture>power ;
  59. }
  60. else if [ configure.builds /boost/architecture//riscv : $(properties) : riscv ]
  61. {
  62. return <architecture>riscv ;
  63. }
  64. else if [ configure.builds /boost/architecture//s390x : $(properties) : s390x ]
  65. {
  66. return <architecture>s390x ;
  67. }
  68. else if [ configure.builds /boost/architecture//sparc : $(properties) : sparc ]
  69. {
  70. return <architecture>sparc ;
  71. }
  72. else if [ configure.builds /boost/architecture//x86 : $(properties) : x86 ]
  73. {
  74. return <architecture>x86 ;
  75. }
  76. else if [ configure.builds /boost/architecture//combined : $(properties) : combined ]
  77. {
  78. return <architecture>combined ;
  79. }
  80. }
  81. }
  82. rule architecture ( )
  83. {
  84. return <conditional>@architecture.deduce-architecture ;
  85. }