Jamfile 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #==============================================================================
  2. # Copyright (c) 2001-2011 Joel de Guzman
  3. #
  4. # Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. #==============================================================================
  7. project spirit-qi-compiler_tutorial
  8. : requirements
  9. <c++-template-depth>300
  10. :
  11. ;
  12. import modules ;
  13. exe calc1 : calc1.cpp ;
  14. exe calc2 : calc2.cpp ;
  15. exe calc3 : calc3.cpp ;
  16. exe calc4 : calc4.cpp ;
  17. exe calc5 : calc5.cpp ;
  18. exe calc6 : calc6.cpp ;
  19. exe calc7 :
  20. calc7/vm.cpp
  21. calc7/compiler.cpp
  22. calc7/expression.cpp
  23. calc7/statement.cpp
  24. calc7/main.cpp
  25. ;
  26. exe calc8 :
  27. calc8/vm.cpp
  28. calc8/compiler.cpp
  29. calc8/expression.cpp
  30. calc8/statement.cpp
  31. calc8/main.cpp
  32. ;
  33. exe mini_c :
  34. mini_c/vm.cpp
  35. mini_c/compiler.cpp
  36. mini_c/expression.cpp
  37. mini_c/statement.cpp
  38. mini_c/function.cpp
  39. mini_c/main.cpp
  40. ;
  41. exe conjure1 :
  42. conjure1/vm.cpp
  43. conjure1/compiler.cpp
  44. conjure1/expression.cpp
  45. conjure1/statement.cpp
  46. conjure1/function.cpp
  47. conjure1/main.cpp
  48. ;
  49. exe conjure2 :
  50. conjure2/compiler.cpp
  51. conjure2/expression.cpp
  52. conjure2/function.cpp
  53. conjure2/lexer.cpp
  54. conjure2/main.cpp
  55. conjure2/statement.cpp
  56. conjure2/vm.cpp
  57. ;
  58. #==============================================================================
  59. # conjure3 and above require LLVM. Make sure you provide the
  60. # LLVM_PATH in your bjam invocation. E.g.:
  61. #
  62. # bjam -sLLVM_PATH=C:/dev/llvm conjure3
  63. #
  64. #==============================================================================
  65. if [ modules.peek : LLVM_PATH ]
  66. {
  67. LLVM_PATH = [ modules.peek : LLVM_PATH ] ;
  68. }
  69. if $(LLVM_PATH)
  70. {
  71. path-constant LLVM_LIB_DEBUG_PATH : $(LLVM_PATH)/lib/Debug ;
  72. path-constant LLVM_LIB_RELEASE_PATH : $(LLVM_PATH)/lib/Release ;
  73. llvm_linker_flags =
  74. "advapi32.lib"
  75. "shell32.lib"
  76. ;
  77. llvm_debug_libs = [ glob $(LLVM_LIB_DEBUG_PATH)/LLVM*.lib ] ;
  78. llvm_release_libs = [ glob $(LLVM_LIB_RELEASE_PATH)/LLVM*.lib ] ;
  79. rule build_exe_1 ( target-name : sources + : requirements * )
  80. {
  81. local llvm_lib ;
  82. if <variant>debug in $(requirements)
  83. {
  84. llvm_lib = $(llvm_debug_libs) ;
  85. }
  86. else
  87. {
  88. llvm_lib = $(llvm_release_libs) ;
  89. }
  90. exe $(target-name)
  91. : $(sources)
  92. $(llvm_lib)
  93. : $(requirements)
  94. <toolset>msvc
  95. <include>$(LLVM_PATH)/include
  96. <linkflags>$(llvm_linker_flags)
  97. ;
  98. }
  99. rule build_exe ( target-name : sources + )
  100. {
  101. build_exe_1 $(target-name) : $(sources) : <variant>debug ;
  102. build_exe_1 $(target-name) : $(sources) : <variant>release ;
  103. }
  104. build_exe conjure3 :
  105. conjure3/compiler.cpp
  106. conjure3/expression.cpp
  107. conjure3/function.cpp
  108. conjure3/lexer.cpp
  109. conjure3/main.cpp
  110. conjure3/statement.cpp
  111. conjure3/vm.cpp
  112. ;
  113. }