gecoder-with-gecode 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (634) hide show
  1. data/CHANGES +81 -0
  2. data/COPYING +17 -0
  3. data/LGPL-LICENSE +458 -0
  4. data/README +45 -0
  5. data/Rakefile +13 -0
  6. data/example/example_helper.rb +1 -0
  7. data/example/magic_sequence.rb +43 -0
  8. data/example/queens.rb +43 -0
  9. data/example/raw_bindings.rb +42 -0
  10. data/example/send_more_money.rb +43 -0
  11. data/example/send_most_money.rb +58 -0
  12. data/example/square_tiling.rb +84 -0
  13. data/example/sudoku-set.rb +110 -0
  14. data/example/sudoku.rb +61 -0
  15. data/ext/extconf.rb +29 -0
  16. data/ext/gecode-1.3.1/LICENSE +34 -0
  17. data/ext/gecode-1.3.1/Makefile.contribs +71 -0
  18. data/ext/gecode-1.3.1/Makefile.dep +3928 -0
  19. data/ext/gecode-1.3.1/Makefile.in +966 -0
  20. data/ext/gecode-1.3.1/changelog.in +1065 -0
  21. data/ext/gecode-1.3.1/configure +8590 -0
  22. data/ext/gecode-1.3.1/configure.ac +179 -0
  23. data/ext/gecode-1.3.1/configure.ac.in +175 -0
  24. data/ext/gecode-1.3.1/contribs/README +26 -0
  25. data/ext/gecode-1.3.1/contribs/graph/INSTALL +53 -0
  26. data/ext/gecode-1.3.1/contribs/graph/LICENSE +11 -0
  27. data/ext/gecode-1.3.1/contribs/graph/Makefile +167 -0
  28. data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +169 -0
  29. data/ext/gecode-1.3.1/contribs/graph/TODO +28 -0
  30. data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +82 -0
  31. data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +186 -0
  32. data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +257 -0
  33. data/ext/gecode-1.3.1/contribs/graph/configure +2160 -0
  34. data/ext/gecode-1.3.1/contribs/graph/configure.ac +33 -0
  35. data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +1226 -0
  36. data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +132 -0
  37. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +94 -0
  38. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +104 -0
  39. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +105 -0
  40. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +92 -0
  41. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +273 -0
  42. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +311 -0
  43. data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +1 -0
  44. data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +1 -0
  45. data/ext/gecode-1.3.1/contribs/graph/graph.hh +51 -0
  46. data/ext/gecode-1.3.1/contribs/graph/graphutils.h +46 -0
  47. data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +140 -0
  48. data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +1 -0
  49. data/ext/gecode-1.3.1/contribs/graph/path.hh +116 -0
  50. data/ext/gecode-1.3.1/contribs/graph/path.icc +64 -0
  51. data/ext/gecode-1.3.1/contribs/graph/path/path.icc +139 -0
  52. data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +133 -0
  53. data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +341 -0
  54. data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +1 -0
  55. data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +105 -0
  56. data/ext/gecode-1.3.1/contribs/graph/var.icc +106 -0
  57. data/ext/gecode-1.3.1/contribs/graph/view.icc +373 -0
  58. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +162 -0
  59. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +78 -0
  60. data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +349 -0
  61. data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +148 -0
  62. data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +337 -0
  63. data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +493 -0
  64. data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +60 -0
  65. data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +600 -0
  66. data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +135 -0
  67. data/ext/gecode-1.3.1/contribs/map/COMPILING +68 -0
  68. data/ext/gecode-1.3.1/contribs/map/LICENSE +11 -0
  69. data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +173 -0
  70. data/ext/gecode-1.3.1/contribs/map/configure +2285 -0
  71. data/ext/gecode-1.3.1/contribs/map/configure.ac +32 -0
  72. data/ext/gecode-1.3.1/contribs/map/constraints.hh +46 -0
  73. data/ext/gecode-1.3.1/contribs/map/constraints.icc +84 -0
  74. data/ext/gecode-1.3.1/contribs/map/doxygen.conf +1229 -0
  75. data/ext/gecode-1.3.1/contribs/map/doxygen.hh +33 -0
  76. data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +199 -0
  77. data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +1 -0
  78. data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +1 -0
  79. data/ext/gecode-1.3.1/contribs/map/examples/graph-examples.tgz +0 -0
  80. data/ext/gecode-1.3.1/contribs/map/examples/isomorphism.cc +148 -0
  81. data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
  82. data/ext/gecode-1.3.1/contribs/map/examples/map.cc +80 -0
  83. data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +155 -0
  84. data/ext/gecode-1.3.1/contribs/map/map.hh +65 -0
  85. data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +235 -0
  86. data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +771 -0
  87. data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +2 -0
  88. data/ext/gecode-1.3.1/contribs/map/var.icc +346 -0
  89. data/ext/gecode-1.3.1/contribs/map/var/imp.cc +42 -0
  90. data/ext/gecode-1.3.1/contribs/map/var/imp.icc +436 -0
  91. data/ext/gecode-1.3.1/doxygen.conf.in +1225 -0
  92. data/ext/gecode-1.3.1/doxygen.hh.in +877 -0
  93. data/ext/gecode-1.3.1/examples/all-interval-sort.cc +201 -0
  94. data/ext/gecode-1.3.1/examples/all-interval.cc +114 -0
  95. data/ext/gecode-1.3.1/examples/alpha.cc +112 -0
  96. data/ext/gecode-1.3.1/examples/baseline.cc +71 -0
  97. data/ext/gecode-1.3.1/examples/bibd.cc +173 -0
  98. data/ext/gecode-1.3.1/examples/black-hole.cc +281 -0
  99. data/ext/gecode-1.3.1/examples/cars.cc +165 -0
  100. data/ext/gecode-1.3.1/examples/crew.cc +220 -0
  101. data/ext/gecode-1.3.1/examples/crowded-chess.cc +312 -0
  102. data/ext/gecode-1.3.1/examples/donald.cc +93 -0
  103. data/ext/gecode-1.3.1/examples/eq20.cc +111 -0
  104. data/ext/gecode-1.3.1/examples/golf.cc +242 -0
  105. data/ext/gecode-1.3.1/examples/golomb.cc +141 -0
  106. data/ext/gecode-1.3.1/examples/graph-color.cc +371 -0
  107. data/ext/gecode-1.3.1/examples/grocery.cc +107 -0
  108. data/ext/gecode-1.3.1/examples/hamming.cc +107 -0
  109. data/ext/gecode-1.3.1/examples/ind-set.cc +130 -0
  110. data/ext/gecode-1.3.1/examples/knights.cc +146 -0
  111. data/ext/gecode-1.3.1/examples/langfordnum.cc +244 -0
  112. data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +93 -0
  113. data/ext/gecode-1.3.1/examples/magic-sequence.cc +108 -0
  114. data/ext/gecode-1.3.1/examples/magic-square.cc +120 -0
  115. data/ext/gecode-1.3.1/examples/money.cc +92 -0
  116. data/ext/gecode-1.3.1/examples/ortho-latin.cc +156 -0
  117. data/ext/gecode-1.3.1/examples/packing.cc +211 -0
  118. data/ext/gecode-1.3.1/examples/partition.cc +126 -0
  119. data/ext/gecode-1.3.1/examples/photo.cc +155 -0
  120. data/ext/gecode-1.3.1/examples/picture-puzzle.cc +481 -0
  121. data/ext/gecode-1.3.1/examples/queen-armies.cc +240 -0
  122. data/ext/gecode-1.3.1/examples/queens.cc +99 -0
  123. data/ext/gecode-1.3.1/examples/sports-league.cc +454 -0
  124. data/ext/gecode-1.3.1/examples/steiner.cc +148 -0
  125. data/ext/gecode-1.3.1/examples/stress-domain.cc +86 -0
  126. data/ext/gecode-1.3.1/examples/stress-element.cc +95 -0
  127. data/ext/gecode-1.3.1/examples/stress-exec.cc +74 -0
  128. data/ext/gecode-1.3.1/examples/stress-min.cc +84 -0
  129. data/ext/gecode-1.3.1/examples/stress-search.cc +72 -0
  130. data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +282 -0
  131. data/ext/gecode-1.3.1/examples/sudoku-set.cc +162 -0
  132. data/ext/gecode-1.3.1/examples/sudoku.cc +188 -0
  133. data/ext/gecode-1.3.1/examples/sudoku.icc +703 -0
  134. data/ext/gecode-1.3.1/examples/support.cc +160 -0
  135. data/ext/gecode-1.3.1/examples/support.hh +98 -0
  136. data/ext/gecode-1.3.1/examples/support.icc +187 -0
  137. data/ext/gecode-1.3.1/examples/timer.cc +47 -0
  138. data/ext/gecode-1.3.1/examples/timer.hh +72 -0
  139. data/ext/gecode-1.3.1/examples/warehouses.cc +176 -0
  140. data/ext/gecode-1.3.1/extconf.rb +8 -0
  141. data/ext/gecode-1.3.1/gecode.m4 +736 -0
  142. data/ext/gecode-1.3.1/gecode/config.icc.in +50 -0
  143. data/ext/gecode-1.3.1/gecode/int.hh +1426 -0
  144. data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +87 -0
  145. data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +292 -0
  146. data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +213 -0
  147. data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +196 -0
  148. data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +478 -0
  149. data/ext/gecode-1.3.1/gecode/int/array.cc +61 -0
  150. data/ext/gecode-1.3.1/gecode/int/array.icc +264 -0
  151. data/ext/gecode-1.3.1/gecode/int/bool.cc +187 -0
  152. data/ext/gecode-1.3.1/gecode/int/bool.hh +255 -0
  153. data/ext/gecode-1.3.1/gecode/int/bool/base.icc +123 -0
  154. data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +89 -0
  155. data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +132 -0
  156. data/ext/gecode-1.3.1/gecode/int/bool/or.icc +380 -0
  157. data/ext/gecode-1.3.1/gecode/int/branch.cc +81 -0
  158. data/ext/gecode-1.3.1/gecode/int/branch.hh +444 -0
  159. data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +83 -0
  160. data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +76 -0
  161. data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +104 -0
  162. data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +219 -0
  163. data/ext/gecode-1.3.1/gecode/int/channel.cc +62 -0
  164. data/ext/gecode-1.3.1/gecode/int/channel.hh +144 -0
  165. data/ext/gecode-1.3.1/gecode/int/channel/base.icc +60 -0
  166. data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +313 -0
  167. data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +59 -0
  168. data/ext/gecode-1.3.1/gecode/int/channel/val.icc +239 -0
  169. data/ext/gecode-1.3.1/gecode/int/count.cc +174 -0
  170. data/ext/gecode-1.3.1/gecode/int/count.hh +401 -0
  171. data/ext/gecode-1.3.1/gecode/int/count/int.icc +495 -0
  172. data/ext/gecode-1.3.1/gecode/int/count/rel.icc +100 -0
  173. data/ext/gecode-1.3.1/gecode/int/count/view.icc +332 -0
  174. data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +210 -0
  175. data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +118 -0
  176. data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +377 -0
  177. data/ext/gecode-1.3.1/gecode/int/distinct.cc +77 -0
  178. data/ext/gecode-1.3.1/gecode/int/distinct.hh +272 -0
  179. data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +73 -0
  180. data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +335 -0
  181. data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +62 -0
  182. data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +740 -0
  183. data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +96 -0
  184. data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +107 -0
  185. data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +97 -0
  186. data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +171 -0
  187. data/ext/gecode-1.3.1/gecode/int/dom.cc +81 -0
  188. data/ext/gecode-1.3.1/gecode/int/dom.hh +101 -0
  189. data/ext/gecode-1.3.1/gecode/int/dom/range.icc +85 -0
  190. data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +85 -0
  191. data/ext/gecode-1.3.1/gecode/int/element.cc +58 -0
  192. data/ext/gecode-1.3.1/gecode/int/element.hh +203 -0
  193. data/ext/gecode-1.3.1/gecode/int/element/int.icc +396 -0
  194. data/ext/gecode-1.3.1/gecode/int/element/view.icc +443 -0
  195. data/ext/gecode-1.3.1/gecode/int/exception.icc +137 -0
  196. data/ext/gecode-1.3.1/gecode/int/gcc.cc +708 -0
  197. data/ext/gecode-1.3.1/gecode/int/gcc.hh +338 -0
  198. data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +629 -0
  199. data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +504 -0
  200. data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +760 -0
  201. data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +2375 -0
  202. data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +375 -0
  203. data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +687 -0
  204. data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +236 -0
  205. data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +373 -0
  206. data/ext/gecode-1.3.1/gecode/int/int-set.cc +115 -0
  207. data/ext/gecode-1.3.1/gecode/int/int-set.icc +151 -0
  208. data/ext/gecode-1.3.1/gecode/int/linear.cc +247 -0
  209. data/ext/gecode-1.3.1/gecode/int/linear.hh +1056 -0
  210. data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +439 -0
  211. data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +422 -0
  212. data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +311 -0
  213. data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +503 -0
  214. data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +857 -0
  215. data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +264 -0
  216. data/ext/gecode-1.3.1/gecode/int/linear/post.cc +542 -0
  217. data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +255 -0
  218. data/ext/gecode-1.3.1/gecode/int/propagator.icc +194 -0
  219. data/ext/gecode-1.3.1/gecode/int/regular.cc +40 -0
  220. data/ext/gecode-1.3.1/gecode/int/regular.hh +83 -0
  221. data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +466 -0
  222. data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +172 -0
  223. data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +480 -0
  224. data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +738 -0
  225. data/ext/gecode-1.3.1/gecode/int/rel.cc +293 -0
  226. data/ext/gecode-1.3.1/gecode/int/rel.hh +526 -0
  227. data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +640 -0
  228. data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +212 -0
  229. data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +246 -0
  230. data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +188 -0
  231. data/ext/gecode-1.3.1/gecode/int/sortedness.cc +124 -0
  232. data/ext/gecode-1.3.1/gecode/int/sortedness.hh +108 -0
  233. data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +177 -0
  234. data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +243 -0
  235. data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +232 -0
  236. data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +727 -0
  237. data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +666 -0
  238. data/ext/gecode-1.3.1/gecode/int/var-imp.vis +198 -0
  239. data/ext/gecode-1.3.1/gecode/int/var.icc +590 -0
  240. data/ext/gecode-1.3.1/gecode/int/var/bool.icc +52 -0
  241. data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +65 -0
  242. data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +191 -0
  243. data/ext/gecode-1.3.1/gecode/int/var/imp.cc +361 -0
  244. data/ext/gecode-1.3.1/gecode/int/var/imp.icc +579 -0
  245. data/ext/gecode-1.3.1/gecode/int/var/int.cc +63 -0
  246. data/ext/gecode-1.3.1/gecode/int/var/int.icc +135 -0
  247. data/ext/gecode-1.3.1/gecode/int/view.icc +1219 -0
  248. data/ext/gecode-1.3.1/gecode/int/view/bool.icc +270 -0
  249. data/ext/gecode-1.3.1/gecode/int/view/constint.icc +306 -0
  250. data/ext/gecode-1.3.1/gecode/int/view/int.icc +221 -0
  251. data/ext/gecode-1.3.1/gecode/int/view/iter.icc +49 -0
  252. data/ext/gecode-1.3.1/gecode/int/view/minus.icc +285 -0
  253. data/ext/gecode-1.3.1/gecode/int/view/offset.icc +274 -0
  254. data/ext/gecode-1.3.1/gecode/int/view/print.cc +109 -0
  255. data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +215 -0
  256. data/ext/gecode-1.3.1/gecode/int/view/scale.icc +373 -0
  257. data/ext/gecode-1.3.1/gecode/iter.hh +65 -0
  258. data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +130 -0
  259. data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +208 -0
  260. data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +123 -0
  261. data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +143 -0
  262. data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +206 -0
  263. data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +127 -0
  264. data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +96 -0
  265. data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +202 -0
  266. data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +103 -0
  267. data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +138 -0
  268. data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +112 -0
  269. data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +142 -0
  270. data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +224 -0
  271. data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +71 -0
  272. data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +131 -0
  273. data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +211 -0
  274. data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +125 -0
  275. data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +91 -0
  276. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +247 -0
  277. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +227 -0
  278. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +236 -0
  279. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +126 -0
  280. data/ext/gecode-1.3.1/gecode/kernel.hh +141 -0
  281. data/ext/gecode-1.3.1/gecode/kernel/array.icc +954 -0
  282. data/ext/gecode-1.3.1/gecode/kernel/branching.icc +233 -0
  283. data/ext/gecode-1.3.1/gecode/kernel/core.cc +417 -0
  284. data/ext/gecode-1.3.1/gecode/kernel/core.icc +1681 -0
  285. data/ext/gecode-1.3.1/gecode/kernel/exception.cc +49 -0
  286. data/ext/gecode-1.3.1/gecode/kernel/exception.icc +104 -0
  287. data/ext/gecode-1.3.1/gecode/kernel/macros.icc +98 -0
  288. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +41 -0
  289. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +438 -0
  290. data/ext/gecode-1.3.1/gecode/kernel/memory.icc +205 -0
  291. data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +53 -0
  292. data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +680 -0
  293. data/ext/gecode-1.3.1/gecode/kernel/view.icc +583 -0
  294. data/ext/gecode-1.3.1/gecode/limits.hh +87 -0
  295. data/ext/gecode-1.3.1/gecode/minimodel.hh +942 -0
  296. data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +137 -0
  297. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +207 -0
  298. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +191 -0
  299. data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +66 -0
  300. data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +59 -0
  301. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +103 -0
  302. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +192 -0
  303. data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +200 -0
  304. data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +118 -0
  305. data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +241 -0
  306. data/ext/gecode-1.3.1/gecode/search.hh +745 -0
  307. data/ext/gecode-1.3.1/gecode/search/bab.cc +153 -0
  308. data/ext/gecode-1.3.1/gecode/search/bab.icc +101 -0
  309. data/ext/gecode-1.3.1/gecode/search/dfs.cc +63 -0
  310. data/ext/gecode-1.3.1/gecode/search/dfs.icc +144 -0
  311. data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +109 -0
  312. data/ext/gecode-1.3.1/gecode/search/lds.cc +237 -0
  313. data/ext/gecode-1.3.1/gecode/search/lds.icc +57 -0
  314. data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +219 -0
  315. data/ext/gecode-1.3.1/gecode/search/restart.icc +76 -0
  316. data/ext/gecode-1.3.1/gecode/search/statistics.icc +30 -0
  317. data/ext/gecode-1.3.1/gecode/search/stop.cc +58 -0
  318. data/ext/gecode-1.3.1/gecode/search/stop.icc +100 -0
  319. data/ext/gecode-1.3.1/gecode/set.hh +419 -0
  320. data/ext/gecode-1.3.1/gecode/set/array.cc +114 -0
  321. data/ext/gecode-1.3.1/gecode/set/array.icc +134 -0
  322. data/ext/gecode-1.3.1/gecode/set/branch.cc +57 -0
  323. data/ext/gecode-1.3.1/gecode/set/branch.hh +176 -0
  324. data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +72 -0
  325. data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +112 -0
  326. data/ext/gecode-1.3.1/gecode/set/cardinality.cc +49 -0
  327. data/ext/gecode-1.3.1/gecode/set/convex.cc +43 -0
  328. data/ext/gecode-1.3.1/gecode/set/convex.hh +92 -0
  329. data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +81 -0
  330. data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +51 -0
  331. data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +100 -0
  332. data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +52 -0
  333. data/ext/gecode-1.3.1/gecode/set/distinct.cc +48 -0
  334. data/ext/gecode-1.3.1/gecode/set/distinct.hh +97 -0
  335. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +151 -0
  336. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +50 -0
  337. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +46 -0
  338. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +157 -0
  339. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +124 -0
  340. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +58 -0
  341. data/ext/gecode-1.3.1/gecode/set/dom.cc +224 -0
  342. data/ext/gecode-1.3.1/gecode/set/exception.icc +132 -0
  343. data/ext/gecode-1.3.1/gecode/set/int.cc +139 -0
  344. data/ext/gecode-1.3.1/gecode/set/int.hh +226 -0
  345. data/ext/gecode-1.3.1/gecode/set/int/card.cc +61 -0
  346. data/ext/gecode-1.3.1/gecode/set/int/card.icc +54 -0
  347. data/ext/gecode-1.3.1/gecode/set/int/channel.cc +100 -0
  348. data/ext/gecode-1.3.1/gecode/set/int/channel.icc +75 -0
  349. data/ext/gecode-1.3.1/gecode/set/int/match.cc +148 -0
  350. data/ext/gecode-1.3.1/gecode/set/int/match.icc +67 -0
  351. data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +109 -0
  352. data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +63 -0
  353. data/ext/gecode-1.3.1/gecode/set/int/weights.cc +182 -0
  354. data/ext/gecode-1.3.1/gecode/set/int/weights.icc +174 -0
  355. data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +148 -0
  356. data/ext/gecode-1.3.1/gecode/set/projectors.cc +109 -0
  357. data/ext/gecode-1.3.1/gecode/set/projectors.hh +319 -0
  358. data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +841 -0
  359. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +69 -0
  360. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +66 -0
  361. data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +125 -0
  362. data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +79 -0
  363. data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +127 -0
  364. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +96 -0
  365. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +106 -0
  366. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +76 -0
  367. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +53 -0
  368. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +306 -0
  369. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +192 -0
  370. data/ext/gecode-1.3.1/gecode/set/propagator.icc +96 -0
  371. data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +233 -0
  372. data/ext/gecode-1.3.1/gecode/set/rel-op.cc +96 -0
  373. data/ext/gecode-1.3.1/gecode/set/rel-op.hh +267 -0
  374. data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +528 -0
  375. data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +312 -0
  376. data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +131 -0
  377. data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +198 -0
  378. data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +150 -0
  379. data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +151 -0
  380. data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +292 -0
  381. data/ext/gecode-1.3.1/gecode/set/rel.cc +201 -0
  382. data/ext/gecode-1.3.1/gecode/set/rel.hh +250 -0
  383. data/ext/gecode-1.3.1/gecode/set/rel/common.icc +109 -0
  384. data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +101 -0
  385. data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +88 -0
  386. data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +132 -0
  387. data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +142 -0
  388. data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +121 -0
  389. data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +80 -0
  390. data/ext/gecode-1.3.1/gecode/set/select.cc +88 -0
  391. data/ext/gecode-1.3.1/gecode/set/select.hh +113 -0
  392. data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +267 -0
  393. data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +59 -0
  394. data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +91 -0
  395. data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +112 -0
  396. data/ext/gecode-1.3.1/gecode/set/select/inter.icc +300 -0
  397. data/ext/gecode-1.3.1/gecode/set/sequence.cc +48 -0
  398. data/ext/gecode-1.3.1/gecode/set/sequence.hh +97 -0
  399. data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +79 -0
  400. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +83 -0
  401. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +63 -0
  402. data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +61 -0
  403. data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +53 -0
  404. data/ext/gecode-1.3.1/gecode/set/var-imp.vis +205 -0
  405. data/ext/gecode-1.3.1/gecode/set/var.icc +1090 -0
  406. data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +192 -0
  407. data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +235 -0
  408. data/ext/gecode-1.3.1/gecode/set/var/imp.cc +127 -0
  409. data/ext/gecode-1.3.1/gecode/set/var/imp.icc +356 -0
  410. data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +256 -0
  411. data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +512 -0
  412. data/ext/gecode-1.3.1/gecode/set/var/iter.icc +47 -0
  413. data/ext/gecode-1.3.1/gecode/set/var/set.cc +99 -0
  414. data/ext/gecode-1.3.1/gecode/set/var/set.icc +282 -0
  415. data/ext/gecode-1.3.1/gecode/set/view.icc +1075 -0
  416. data/ext/gecode-1.3.1/gecode/set/view/complement.icc +525 -0
  417. data/ext/gecode-1.3.1/gecode/set/view/const.icc +651 -0
  418. data/ext/gecode-1.3.1/gecode/set/view/print.cc +120 -0
  419. data/ext/gecode-1.3.1/gecode/set/view/set.icc +217 -0
  420. data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +348 -0
  421. data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +152 -0
  422. data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +131 -0
  423. data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +157 -0
  424. data/ext/gecode-1.3.1/gecode/support/random.hh +100 -0
  425. data/ext/gecode-1.3.1/gecode/support/shared-array.hh +255 -0
  426. data/ext/gecode-1.3.1/gecode/support/sort.hh +193 -0
  427. data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +240 -0
  428. data/ext/gecode-1.3.1/gecode/support/static-stack.hh +117 -0
  429. data/ext/gecode-1.3.1/install-sh +323 -0
  430. data/ext/gecode-1.3.1/misc/debian/Makefile.am +8 -0
  431. data/ext/gecode-1.3.1/misc/debian/changelog +6 -0
  432. data/ext/gecode-1.3.1/misc/debian/control +11 -0
  433. data/ext/gecode-1.3.1/misc/debian/copyright +44 -0
  434. data/ext/gecode-1.3.1/misc/debian/gecode.info +9 -0
  435. data/ext/gecode-1.3.1/misc/debian/gecode.install +2 -0
  436. data/ext/gecode-1.3.1/misc/debian/gecode.spec +58 -0
  437. data/ext/gecode-1.3.1/misc/debian/rules +81 -0
  438. data/ext/gecode-1.3.1/misc/doxygen/back.png +0 -0
  439. data/ext/gecode-1.3.1/misc/doxygen/footer.html +3 -0
  440. data/ext/gecode-1.3.1/misc/doxygen/gecode-logo-100.png +0 -0
  441. data/ext/gecode-1.3.1/misc/doxygen/header.html +46 -0
  442. data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +460 -0
  443. data/ext/gecode-1.3.1/misc/fixproperties.sh +32 -0
  444. data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +12 -0
  445. data/ext/gecode-1.3.1/misc/gecode-search.pc.in +12 -0
  446. data/ext/gecode-1.3.1/misc/gecode.pc.in +12 -0
  447. data/ext/gecode-1.3.1/misc/genchangelog.perl +190 -0
  448. data/ext/gecode-1.3.1/misc/genlicense.perl +113 -0
  449. data/ext/gecode-1.3.1/misc/genstatistics.perl +155 -0
  450. data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +170 -0
  451. data/ext/gecode-1.3.1/misc/genvarimp.perl +666 -0
  452. data/ext/gecode-1.3.1/misc/getrevision.perl +32 -0
  453. data/ext/gecode-1.3.1/misc/makedepend.perl +66 -0
  454. data/ext/gecode-1.3.1/test/int.cc +497 -0
  455. data/ext/gecode-1.3.1/test/int.hh +119 -0
  456. data/ext/gecode-1.3.1/test/int/arithmetic.cc +262 -0
  457. data/ext/gecode-1.3.1/test/int/basic.cc +42 -0
  458. data/ext/gecode-1.3.1/test/int/bool.cc +189 -0
  459. data/ext/gecode-1.3.1/test/int/channel.cc +79 -0
  460. data/ext/gecode-1.3.1/test/int/count.cc +264 -0
  461. data/ext/gecode-1.3.1/test/int/distinct.cc +121 -0
  462. data/ext/gecode-1.3.1/test/int/dom.cc +69 -0
  463. data/ext/gecode-1.3.1/test/int/element.cc +132 -0
  464. data/ext/gecode-1.3.1/test/int/gcc.cc +592 -0
  465. data/ext/gecode-1.3.1/test/int/linear.cc +315 -0
  466. data/ext/gecode-1.3.1/test/int/minimodel.cc +451 -0
  467. data/ext/gecode-1.3.1/test/int/regular.cc +105 -0
  468. data/ext/gecode-1.3.1/test/int/rel.cc +283 -0
  469. data/ext/gecode-1.3.1/test/int/scheduling.cc +259 -0
  470. data/ext/gecode-1.3.1/test/int/sortedness.cc +272 -0
  471. data/ext/gecode-1.3.1/test/intset.cc +40 -0
  472. data/ext/gecode-1.3.1/test/log.cc +515 -0
  473. data/ext/gecode-1.3.1/test/log.hh +68 -0
  474. data/ext/gecode-1.3.1/test/set.cc +542 -0
  475. data/ext/gecode-1.3.1/test/set.hh +152 -0
  476. data/ext/gecode-1.3.1/test/set/convex.cc +94 -0
  477. data/ext/gecode-1.3.1/test/set/distinct.cc +148 -0
  478. data/ext/gecode-1.3.1/test/set/dom.cc +67 -0
  479. data/ext/gecode-1.3.1/test/set/int.cc +249 -0
  480. data/ext/gecode-1.3.1/test/set/projection.cc +333 -0
  481. data/ext/gecode-1.3.1/test/set/rel-op.cc +662 -0
  482. data/ext/gecode-1.3.1/test/set/rel.cc +198 -0
  483. data/ext/gecode-1.3.1/test/set/select.cc +108 -0
  484. data/ext/gecode-1.3.1/test/set/sequence.cc +83 -0
  485. data/ext/gecode-1.3.1/test/stress.cc +93 -0
  486. data/ext/gecode-1.3.1/test/stress.hh +74 -0
  487. data/ext/gecode-1.3.1/test/stress/distinct.cc +70 -0
  488. data/ext/gecode-1.3.1/test/stress/domain.cc +69 -0
  489. data/ext/gecode-1.3.1/test/stress/exec.cc +60 -0
  490. data/ext/gecode-1.3.1/test/stress/minsort.cc +63 -0
  491. data/ext/gecode-1.3.1/test/stress/regular.cc +112 -0
  492. data/ext/gecode-1.3.1/test/test.cc +215 -0
  493. data/ext/gecode-1.3.1/test/test.hh +107 -0
  494. data/ext/missing.cpp +328 -0
  495. data/ext/missing.h +120 -0
  496. data/ext/vararray.cpp +330 -0
  497. data/ext/vararray.h +149 -0
  498. data/lib/gecoder.rb +5 -0
  499. data/lib/gecoder/bindings.rb +34 -0
  500. data/lib/gecoder/bindings/bindings.rb +2209 -0
  501. data/lib/gecoder/interface.rb +8 -0
  502. data/lib/gecoder/interface/binding_changes.rb +313 -0
  503. data/lib/gecoder/interface/branch.rb +152 -0
  504. data/lib/gecoder/interface/constraints.rb +397 -0
  505. data/lib/gecoder/interface/constraints/bool/boolean.rb +246 -0
  506. data/lib/gecoder/interface/constraints/bool/linear.rb +29 -0
  507. data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +84 -0
  508. data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +8 -0
  509. data/lib/gecoder/interface/constraints/bool_var_constraints.rb +75 -0
  510. data/lib/gecoder/interface/constraints/int/arithmetic.rb +71 -0
  511. data/lib/gecoder/interface/constraints/int/domain.rb +78 -0
  512. data/lib/gecoder/interface/constraints/int/linear.rb +295 -0
  513. data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +72 -0
  514. data/lib/gecoder/interface/constraints/int_enum/channel.rb +100 -0
  515. data/lib/gecoder/interface/constraints/int_enum/count.rb +92 -0
  516. data/lib/gecoder/interface/constraints/int_enum/distinct.rb +69 -0
  517. data/lib/gecoder/interface/constraints/int_enum/element.rb +82 -0
  518. data/lib/gecoder/interface/constraints/int_enum/equality.rb +38 -0
  519. data/lib/gecoder/interface/constraints/int_enum/sort.rb +126 -0
  520. data/lib/gecoder/interface/constraints/int_enum_constraints.rb +37 -0
  521. data/lib/gecoder/interface/constraints/int_var_constraints.rb +58 -0
  522. data/lib/gecoder/interface/constraints/reifiable_constraints.rb +78 -0
  523. data/lib/gecoder/interface/constraints/set/cardinality.rb +75 -0
  524. data/lib/gecoder/interface/constraints/set/connection.rb +193 -0
  525. data/lib/gecoder/interface/constraints/set/domain.rb +109 -0
  526. data/lib/gecoder/interface/constraints/set/operation.rb +132 -0
  527. data/lib/gecoder/interface/constraints/set/relation.rb +178 -0
  528. data/lib/gecoder/interface/constraints/set_enum/channel.rb +18 -0
  529. data/lib/gecoder/interface/constraints/set_enum/distinct.rb +80 -0
  530. data/lib/gecoder/interface/constraints/set_enum/operation.rb +60 -0
  531. data/lib/gecoder/interface/constraints/set_enum/selection.rb +217 -0
  532. data/lib/gecoder/interface/constraints/set_enum_constraints.rb +34 -0
  533. data/lib/gecoder/interface/constraints/set_var_constraints.rb +72 -0
  534. data/lib/gecoder/interface/enum_matrix.rb +64 -0
  535. data/lib/gecoder/interface/enum_wrapper.rb +153 -0
  536. data/lib/gecoder/interface/model.rb +251 -0
  537. data/lib/gecoder/interface/search.rb +123 -0
  538. data/lib/gecoder/interface/variables.rb +254 -0
  539. data/lib/gecoder/version.rb +4 -0
  540. data/specs/binding_changes.rb +76 -0
  541. data/specs/bool_var.rb +74 -0
  542. data/specs/branch.rb +170 -0
  543. data/specs/constraints/arithmetic.rb +266 -0
  544. data/specs/constraints/bool_enum.rb +140 -0
  545. data/specs/constraints/boolean.rb +232 -0
  546. data/specs/constraints/cardinality.rb +154 -0
  547. data/specs/constraints/channel.rb +126 -0
  548. data/specs/constraints/connection.rb +373 -0
  549. data/specs/constraints/constraint_helper.rb +180 -0
  550. data/specs/constraints/constraints.rb +74 -0
  551. data/specs/constraints/count.rb +139 -0
  552. data/specs/constraints/distinct.rb +218 -0
  553. data/specs/constraints/element.rb +106 -0
  554. data/specs/constraints/equality.rb +31 -0
  555. data/specs/constraints/int_domain.rb +69 -0
  556. data/specs/constraints/int_relation.rb +78 -0
  557. data/specs/constraints/linear.rb +332 -0
  558. data/specs/constraints/reification_sugar.rb +96 -0
  559. data/specs/constraints/selection.rb +292 -0
  560. data/specs/constraints/set_domain.rb +181 -0
  561. data/specs/constraints/set_operation.rb +285 -0
  562. data/specs/constraints/set_relation.rb +201 -0
  563. data/specs/constraints/sort.rb +175 -0
  564. data/specs/enum_matrix.rb +43 -0
  565. data/specs/enum_wrapper.rb +122 -0
  566. data/specs/int_var.rb +144 -0
  567. data/specs/logging.rb +24 -0
  568. data/specs/model.rb +190 -0
  569. data/specs/search.rb +246 -0
  570. data/specs/set_var.rb +68 -0
  571. data/specs/spec_helper.rb +93 -0
  572. data/tasks/all_tasks.rb +1 -0
  573. data/tasks/distribution.rake +129 -0
  574. data/tasks/rcov.rake +17 -0
  575. data/tasks/specs.rake +15 -0
  576. data/tasks/svn.rake +11 -0
  577. data/tasks/website.rake +51 -0
  578. data/vendor/rust/README +28 -0
  579. data/vendor/rust/bin/cxxgenerator.rb +93 -0
  580. data/vendor/rust/include/rust_checks.hh +115 -0
  581. data/vendor/rust/include/rust_conversions.hh +102 -0
  582. data/vendor/rust/rust.rb +67 -0
  583. data/vendor/rust/rust/attribute.rb +51 -0
  584. data/vendor/rust/rust/bindings.rb +172 -0
  585. data/vendor/rust/rust/class.rb +339 -0
  586. data/vendor/rust/rust/constants.rb +48 -0
  587. data/vendor/rust/rust/container.rb +110 -0
  588. data/vendor/rust/rust/cppifaceparser.rb +129 -0
  589. data/vendor/rust/rust/cwrapper.rb +72 -0
  590. data/vendor/rust/rust/cxxclass.rb +98 -0
  591. data/vendor/rust/rust/element.rb +81 -0
  592. data/vendor/rust/rust/enum.rb +63 -0
  593. data/vendor/rust/rust/function.rb +407 -0
  594. data/vendor/rust/rust/namespace.rb +61 -0
  595. data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +17 -0
  596. data/vendor/rust/rust/templates/AttributeInitBinding.rusttpl +9 -0
  597. data/vendor/rust/rust/templates/BindingsHeader.rusttpl +24 -0
  598. data/vendor/rust/rust/templates/BindingsUnit.rusttpl +46 -0
  599. data/vendor/rust/rust/templates/CWrapperClassDefinitions.rusttpl +64 -0
  600. data/vendor/rust/rust/templates/ClassDeclarations.rusttpl +7 -0
  601. data/vendor/rust/rust/templates/ClassInitialize.rusttpl +6 -0
  602. data/vendor/rust/rust/templates/ConstructorStub.rusttpl +21 -0
  603. data/vendor/rust/rust/templates/CxxClassDefinitions.rusttpl +91 -0
  604. data/vendor/rust/rust/templates/CxxMethodStub.rusttpl +12 -0
  605. data/vendor/rust/rust/templates/CxxStandaloneClassDefinitions.rusttpl +26 -0
  606. data/vendor/rust/rust/templates/EnumDeclarations.rusttpl +3 -0
  607. data/vendor/rust/rust/templates/EnumDefinitions.rusttpl +29 -0
  608. data/vendor/rust/rust/templates/FunctionDefinition.rusttpl +9 -0
  609. data/vendor/rust/rust/templates/FunctionInitAlias.rusttpl +5 -0
  610. data/vendor/rust/rust/templates/FunctionInitBinding.rusttpl +9 -0
  611. data/vendor/rust/rust/templates/MethodInitBinding.rusttpl +9 -0
  612. data/vendor/rust/rust/templates/ModuleDeclarations.rusttpl +3 -0
  613. data/vendor/rust/rust/templates/ModuleDefinitions.rusttpl +3 -0
  614. data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +7 -0
  615. data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +14 -0
  616. data/vendor/rust/rust/type.rb +98 -0
  617. data/vendor/rust/test/Makefile +4 -0
  618. data/vendor/rust/test/constants.rb +36 -0
  619. data/vendor/rust/test/cppclass.cc +45 -0
  620. data/vendor/rust/test/cppclass.hh +67 -0
  621. data/vendor/rust/test/cppclass.rb +59 -0
  622. data/vendor/rust/test/cwrapper.c +74 -0
  623. data/vendor/rust/test/cwrapper.h +41 -0
  624. data/vendor/rust/test/cwrapper.rb +56 -0
  625. data/vendor/rust/test/dummyclass.hh +31 -0
  626. data/vendor/rust/test/lib/extension-test.rb +98 -0
  627. data/vendor/rust/test/operators.cc +41 -0
  628. data/vendor/rust/test/operators.hh +39 -0
  629. data/vendor/rust/test/operators.rb +39 -0
  630. data/vendor/rust/test/test-constants.rb +43 -0
  631. data/vendor/rust/test/test-cppclass.rb +82 -0
  632. data/vendor/rust/test/test-cwrapper.rb +80 -0
  633. data/vendor/rust/test/test-operators.rb +42 -0
  634. metadata +826 -0
@@ -0,0 +1,72 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2004
7
+ *
8
+ * Bugfixes provided by:
9
+ * Javier Andr�s Mena Zapata <javimena@gmail.com>
10
+ *
11
+ * Last modified:
12
+ * $Date: 2006-04-11 15:58:37 +0200 (Tue, 11 Apr 2006) $ by $Author: tack $
13
+ * $Revision: 3188 $
14
+ *
15
+ * This file is part of Gecode, the generic constraint
16
+ * development environment:
17
+ * http://www.gecode.org
18
+ *
19
+ * See the file "LICENSE" for information on usage and
20
+ * redistribution of this file, and for a
21
+ * DISCLAIMER OF ALL WARRANTIES.
22
+ *
23
+ */
24
+
25
+ #ifndef __GECODE_EXAMPLES_TIMER_HH__
26
+ #define __GECODE_EXAMPLES_TIMER_HH__
27
+
28
+ #include <ctime>
29
+ #include <cmath>
30
+
31
+ #include "gecode/config.icc"
32
+
33
+ /*
34
+ * Support for measuring time
35
+ *
36
+ */
37
+
38
+ /// Timer interface used for examples
39
+ class Timer {
40
+ private:
41
+ clock_t t0;
42
+ public:
43
+ void start(void);
44
+ double stop(void);
45
+ };
46
+
47
+ forceinline void
48
+ Timer::start(void) {
49
+ t0 = clock();
50
+ }
51
+ forceinline double
52
+ Timer::stop(void) {
53
+ return (static_cast<double>(clock()-t0) / CLOCKS_PER_SEC) * 1000.0;
54
+ }
55
+
56
+
57
+ /**
58
+ * \brief Compute arithmetic mean of \a n elements in \a t
59
+ * \relates Timer
60
+ */
61
+ double
62
+ am(double t[], int n);
63
+ /**
64
+ * \brief Compute deviation of \a n elements in \a t
65
+ * \relates Timer
66
+ */
67
+ double
68
+ dev(double t[], int n);
69
+
70
+ #endif
71
+
72
+ // STATISTICS: example-any
@@ -0,0 +1,176 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:06:52 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3517 $
11
+ *
12
+ * This file is part of Gecode, the generic constraint
13
+ * development environment:
14
+ * http://www.gecode.org
15
+ *
16
+ * See the file "LICENSE" for information on usage and
17
+ * redistribution of this file, and for a
18
+ * DISCLAIMER OF ALL WARRANTIES.
19
+ *
20
+ */
21
+
22
+ #include "examples/support.hh"
23
+ #include "gecode/minimodel.hh"
24
+
25
+ /// Number of warehouses
26
+ static const int n_suppliers = 5;
27
+ /// Number of stores
28
+ static const int n_stores = 10;
29
+
30
+ /// Cost of building one warehouse
31
+ static const int building_cost = 30;
32
+
33
+ /// Capacity of a single warehouse
34
+ static const int capacity[n_suppliers] = {
35
+ 1, 4, 2, 1, 3
36
+ };
37
+
38
+ /// Cost for store to warehouse
39
+ static const int cost_matrix[n_stores][n_suppliers] = {
40
+ {20, 24, 11, 25, 30},
41
+ {28, 27, 82, 83, 74},
42
+ {74, 97, 71, 96, 70},
43
+ { 2, 55, 73, 69, 61},
44
+ {46, 96, 59, 83, 4},
45
+ {42, 22, 29, 67, 59},
46
+ { 1, 5, 73, 59, 56},
47
+ {10, 73, 13, 43, 96},
48
+ {93, 35, 63, 85, 46},
49
+ {47, 65, 55, 71, 95}
50
+ };
51
+
52
+
53
+
54
+ /**
55
+ * \brief %Example: Locating warehouses
56
+ *
57
+ * A company needs to construct warehouses to supply stores with
58
+ * goods. Each warehouse possibly to be constructed has a certain
59
+ * capacity defining how many stores it can supply. Constructing a
60
+ * warehouse incurs a fixed cost. Costs for transportation from
61
+ * warehouses to stores depend on the locations of warehouses and
62
+ * stores.
63
+ *
64
+ * Determine which warehouses should be constructed and which
65
+ * warehouse should supply which store such that overall cost
66
+ * (transportation cost plus construction cost) is smallest.
67
+ *
68
+ * \ingroup Example
69
+ *
70
+ */
71
+ class Warehouses : public Example {
72
+ protected:
73
+ /// Map store to the supplier
74
+ IntVarArray supplier;
75
+ /// Is a supplier open (warehouse needed)
76
+ BoolVarArray open;
77
+ /// Cost of a store
78
+ IntVarArray cost;
79
+ /// Total cost
80
+ IntVar total;
81
+ public:
82
+ /// Actual model
83
+ Warehouses(const Options& opt)
84
+ : supplier(this, n_stores, 0, n_suppliers-1),
85
+ open(this, n_suppliers, 0, 1),
86
+ cost(this, n_stores, 0, Limits::Int::int_max),
87
+ total(this, 0, Limits::Int::int_max) {
88
+ // Compute total cost
89
+ {
90
+ IntArgs c(n_stores + n_suppliers);
91
+ IntVarArgs x(n_stores + n_suppliers);
92
+ for (int i=0; i<n_stores; i++) {
93
+ c[i]=1; x[i]=cost[i];
94
+ }
95
+ for (int i=0; i<n_suppliers; i++) {
96
+ c[n_stores+i]=building_cost;
97
+ x[n_stores+i]=open[i];
98
+ }
99
+ linear(this, c, x, IRT_EQ, total);
100
+ }
101
+
102
+ // Compute cost for store
103
+ for (int i=0; i<n_stores; i++) {
104
+ IntArgs c(n_suppliers);
105
+ for (int j=0; j<n_suppliers; j++)
106
+ c[j] = cost_matrix[i][j];
107
+ element(this, c, supplier[i], cost[i]);
108
+ }
109
+
110
+ // Do not exceed capacity
111
+ for (int i=0; i<n_suppliers; i++)
112
+ count(this, supplier, i, IRT_LQ, capacity[i]);
113
+
114
+ // A warehouse is open, if it supplies to a shop
115
+ for (int i=0; i<n_suppliers; i++) {
116
+ BoolVarArgs store_by_supplier(n_stores);
117
+ for (int j=0; j<n_stores; j++)
118
+ store_by_supplier[j] = post(this, ~(supplier[j] == i));
119
+ BoolVar b(this, 0, 1);
120
+ rel(this, open[i], IRT_EQ, 1, b);
121
+ linear(this, store_by_supplier, IRT_GR, 0, b);
122
+ }
123
+
124
+ branch(this, cost, BVAR_REGRET_MIN_MAX, BVAL_MIN);
125
+ }
126
+
127
+ /// Add constraint for next better solution
128
+ void
129
+ constrain(Space* s) {
130
+ rel(this, total, IRT_LE, static_cast<Warehouses*>(s)->total.val());
131
+ }
132
+ /// Constructor for cloning \a s
133
+ Warehouses(bool share, Warehouses& s) : Example(share,s) {
134
+ supplier.update(this, share, s.supplier);
135
+ open.update(this, share, s.open);
136
+ cost.update(this, share, s.cost);
137
+ total.update(this, share, s.total);
138
+ }
139
+
140
+ /// Copy during cloning
141
+ virtual Space*
142
+ copy(bool share) {
143
+ return new Warehouses(share,*this);
144
+ }
145
+ /// Print solution
146
+ virtual void
147
+ print(void) {
148
+ std::cout << "\tSupplier: {";
149
+ for (int i=0; i<n_stores; i++) {
150
+ std::cout << supplier[i] << ((i<n_stores-1)?", ":"};\n");
151
+ }
152
+ std::cout << "\tCost: {";
153
+ for (int i=0; i<n_stores; i++) {
154
+ std::cout << cost[i] << ((i<n_stores-1)?", ":"};\n");
155
+ }
156
+ std::cout << "\tTotal cost: " << total << std::endl;
157
+ std::cout << std::endl;
158
+ }
159
+ };
160
+
161
+ /** \brief Main-function
162
+ * \relates Warehouses
163
+ */
164
+ int
165
+ main(int argc, char** argv) {
166
+ Options opt("Warehouses");
167
+ opt.solutions = 0;
168
+ opt.iterations = 10;
169
+ opt.naive = true;
170
+ opt.parse(argc,argv);
171
+ Example::run<Warehouses,BAB>(opt);
172
+ return 0;
173
+ }
174
+
175
+ // STATISTICS: example-any
176
+
@@ -0,0 +1,8 @@
1
+ require 'pathname'
2
+
3
+ # Set up some important locations.
4
+ CONFIG_FILE = Pathname.new("#{File.dirname(__FILE__)}/configure").realpath
5
+
6
+ # Delegate to Gecode's configure file.
7
+ File.chmod 0755, CONFIG_FILE
8
+ `#{CONFIG_FILE} --disable-examples`
@@ -0,0 +1,736 @@
1
+ dnl
2
+ dnl Main authors:
3
+ dnl Guido Tack <tack@gecode.org>
4
+ dnl
5
+ dnl Copyright:
6
+ dnl Guido Tack, 2004, 2005
7
+ dnl
8
+ dnl Last modified:
9
+ dnl $Date: 2005-10-27 21:01:30 +0200 (Thu, 27 Oct 2005) $
10
+ dnl by $Author: schulte $
11
+ dnl $Revision: 2420 $
12
+ dnl
13
+ dnl This file is part of Gecode, the generic constraint
14
+ dnl development environment:
15
+ dnl http://www.gecode.org
16
+ dnl
17
+ dnl See the file "LICENSE" for information on usage and
18
+ dnl redistribution of this file, and for a
19
+ dnl DISCLAIMER OF ALL WARRANTIES.
20
+ dnl
21
+ dnl
22
+
23
+ dnl check whether we have pkgconfig and should generate config files for it
24
+ AC_DEFUN([AC_GECODE_PKGCONFIG],
25
+ [AC_CHECK_TOOL(PKGCONFIG, pkg-config)
26
+ AC_MSG_CHECKING(whether to generate pkg-config files)
27
+ if test "${PKGCONFIG}x" = "x"; then
28
+ AC_MSG_RESULT(no)
29
+ AC_SUBST(HAVE_PKGCONFIG, "no")
30
+ else
31
+ AC_MSG_RESULT(yes)
32
+ AC_SUBST(HAVE_PKGCONFIG, "yes")
33
+ fi])
34
+
35
+ AC_DEFUN([AC_GECODE_GET_OS],
36
+ [AC_ARG_WITH([host-os],
37
+ AC_HELP_STRING([--with-host-os],
38
+ [Override operating system test. Valid values are Linux, Darwin, and Windows.]))
39
+ AC_MSG_CHECKING([for the host operating system])
40
+ if test "${with_host_os:-no}" = "no"; then
41
+ guess_host_os=$(uname -s 2>/dev/null)
42
+ else
43
+ guess_host_os=${with_host_os}
44
+ fi
45
+ dnl Try to find out operating system
46
+ case ${guess_host_os} in
47
+ GNU/kFreeBSD|*inux*)
48
+ host_os=linux
49
+ AC_MSG_RESULT([Linux])
50
+ ;;
51
+ *arwin*)
52
+ host_os=darwin
53
+ AC_MSG_RESULT([Darwin])
54
+ ;;
55
+ CYGWIN*|*indows*)
56
+ host_os=windows
57
+ AC_MSG_RESULT([Windows])
58
+ ;;
59
+ *)
60
+ AC_MSG_ERROR([Host OS not supported.])
61
+ ;;
62
+ esac])
63
+
64
+ dnl Macros:
65
+ dnl AC_GECODE_ADD_TO_CXXFLAGS ([FLAG...])
66
+ dnl AC_GECODE_ADD_TO_LDFLAGS ([FLAG...])
67
+ dnl
68
+ dnl Description:
69
+ dnl Add the flags to the corresponding variables
70
+ dnl
71
+ dnl Author:
72
+ dnl Marco Kuhlmann <kuhlmann@ps.uni-sb.de>
73
+ dnl
74
+ AC_DEFUN([AC_GECODE_ADD_TO_CXXFLAGS],
75
+ [CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1"])
76
+ AC_DEFUN([AC_GECODE_ADD_TO_LDFLAGS],
77
+ [LDFLAGS="${LDFLAGS}${LDFLAGS:+ }$1"])
78
+ AC_DEFUN([AC_GECODE_ADD_TO_PKG_CXXFLAGS],
79
+ [ac_gecode_pkg_cxxflags="${ac_gecode_pkg_cxxflags}${ac_gecode_pkg_cxxflags:+ }$1"])
80
+ AC_DEFUN([AC_GECODE_ADD_TO_DLLFLAGS],
81
+ [DLLFLAGS="${DLLFLAGS}${DLLFLAGS:+ }$1"])
82
+
83
+
84
+ dnl Macro:
85
+ dnl AC_GECODE_CHECK_CXXFLAG (FLAG, [ACTION-IF-TRUE,
86
+ dnl [ACTION-IF-FALSE]])
87
+ dnl
88
+ dnl Description:
89
+ dnl Check whether FLAG is supported by the C++ compiler. Run
90
+ dnl the shell commands ACTION-IF-TRUE if it is, ACTION-IF-FALSE
91
+ dnl otherwise. If ACTION-IF-TRUE is not given, append FLAG to
92
+ dnl the contents of $CXXFLAGS.
93
+ dnl
94
+ dnl Authors:
95
+ dnl Leif Kornstaedt <kornstae@ps.uni-sb.de>
96
+ dnl Marco Kuhlmann <kuhlmann@ps.uni-sb.de>
97
+ dnl
98
+ AC_DEFUN([AC_GECODE_CHECK_CXXFLAG],
99
+ [AC_MSG_CHECKING(whether ${CXX} accepts [$1])
100
+ ac_gecode_save_CXXFLAGS="${CXXFLAGS}"
101
+ CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1 -Werror"
102
+ AC_LANG_PUSH(C++)
103
+ AC_COMPILE_IFELSE(AC_LANG_PROGRAM(),
104
+ [AC_MSG_RESULT(yes)
105
+ CXXFLAGS="${ac_gecode_save_CXXFLAGS}"
106
+ ifelse([$2], , [CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1"], [$2])],
107
+ [AC_MSG_RESULT(no)
108
+ CXXFLAGS="${ac_gecode_save_CXXFLAGS}"
109
+ ifelse([$3], , :, [$3])])
110
+ AC_LANG_POP])dnl
111
+
112
+ dnl Macro:
113
+ dnl AC_GECODE_CHECK_LDFLAG (FLAG, [ACTION-IF-TRUE,
114
+ dnl [ACTION-IF-FALSE]])
115
+ dnl
116
+ dnl Description:
117
+ dnl Check whether FLAG is supported by the linker. Run the
118
+ dnl shell commands ACTION-IF-TRUE if it is, ACTION-IF-FALSE
119
+ dnl otherwise. If ACTION-IF-TRUE is not given, append FLAG to
120
+ dnl the contents of $LDFLAGS.
121
+ dnl
122
+ dnl Authors:
123
+ dnl Leif Kornstaedt <kornstae@ps.uni-sb.de>
124
+ dnl Marco Kuhlmann <kuhlmann@ps.uni-sb.de>
125
+ dnl
126
+ AC_DEFUN([AC_GECODE_CHECK_LDFLAG],
127
+ [AC_REQUIRE([AC_PROG_CXX])
128
+ AC_MSG_CHECKING(whether the linker accepts [$1])
129
+ ac_gecode_save_LDFLAGS="${LDFLAGS}"
130
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }$1"
131
+ AC_LINK_IFELSE(AC_LANG_PROGRAM(),
132
+ [AC_MSG_RESULT(yes)
133
+ LDFLAGS="$ac_gecode_save_LDFLAGS"
134
+ ifelse([$2], , [LDFLAGS="${LDFLAGS}${LDFLAGS:+ }$1"], [$2])],
135
+ [AC_MSG_RESULT(no)
136
+ LDFLAGS="$ac_gecode_save_LDFLAGS"
137
+ ifelse([$3], , :, [$3])])])dnl
138
+
139
+ dnl @synopsis _AC_C_IFDEF(MACRO-NAME, ACTION-IF-DEF, ACTION-IF-NOT-DEF)
140
+ dnl
141
+ dnl Check for the definition of macro MACRO-NAME using the current
142
+ dnl language's compiler.
143
+ dnl
144
+ dnl @category Misc
145
+ dnl @author Ludovic Court�s <ludo@chbouib.org>
146
+ dnl @version 2004-09-07
147
+ dnl @license AllPermissive
148
+ AC_DEFUN([_AC_C_IFDEF],
149
+ [AC_COMPILE_IFELSE([#ifndef $1
150
+ # error "Macro $1 is undefined!"
151
+ /* For some compilers (eg. SGI's CC), #error is not
152
+ enough... */
153
+ please, do fail
154
+ #endif],
155
+ [$2], [$3])])
156
+
157
+ dnl @synopsis AC_CXX_COMPILER_VENDOR(VENDOR-NAME)
158
+ dnl
159
+ dnl Set VENDOR-NAME to the lower-case name of the compiler vendor or `unknown'
160
+ dnl if the compiler's vendor is unknown.
161
+ dnl
162
+ dnl @version 20040907
163
+ dnl @author Ludovic Court�s <ludo@chbouib.org>
164
+ dnl Modified by G. Tack to recognize only those compilers we need.
165
+ AC_DEFUN([AC_CXX_COMPILER_VENDOR],
166
+ [AC_ARG_WITH([compiler-vendor],
167
+ AC_HELP_STRING([--with-compiler-vendor],
168
+ [Override compiler test. Valid values are gnu, intel, and microsoft.]))
169
+ AC_REQUIRE([AC_PROG_CXX])
170
+ AC_REQUIRE([AC_PROG_CXXCPP])
171
+ AC_CACHE_CHECK([the C++ compiler vendor],
172
+ [ac_cv_cxx_compiler_vendor],
173
+
174
+ [if test "${with_compiler_vendor:-no}" = "no"; then
175
+
176
+ AC_LANG_PUSH([C++])
177
+
178
+ dnl GNU C++
179
+ _AC_C_IFDEF([__GNUG__],
180
+ [ac_cv_cxx_compiler_vendor=gnu],
181
+ [_AC_C_IFDEF([__INTEL_COMPILER],
182
+ [ac_cv_cxx_compiler_vendor=intel],
183
+ [dnl Note: We are using the C compiler because VC++ doesn't
184
+ dnl recognize `.cc'(which is used by `configure') as a C++ file
185
+ dnl extension and requires `/TP' to be passed.
186
+ AC_LANG_PUSH([C])
187
+ _AC_C_IFDEF([_MSC_VER],
188
+ [ac_cv_cxx_compiler_vendor=microsoft],
189
+ [ac_cv_cxx_compiler_vendor=unknown])
190
+ AC_LANG_POP()])])
191
+
192
+ AC_LANG_POP()
193
+ else
194
+ ac_cv_cxx_compiler_vendor=${with_compiler_vendor}
195
+ fi
196
+ $1="$ac_cv_cxx_compiler_vendor"])])dnl
197
+
198
+
199
+ dnl Macro:
200
+ dnl AC_GECODE_VTI (vartype, help-string, default,
201
+ dnl [ACTION-IF-ENABLED])
202
+ dnl
203
+ dnl Description:
204
+ dnl Introduce --enable-vartype-vars configure switch. The help-string
205
+ dnl is used for the configure --help output. VAR is the name of the
206
+ dnl variable type, it is used to create the VTI_VAR constant in vti.icc.
207
+ dnl default is either yes or no and says whether this option should be
208
+ dnl enabled by default. ACTION-IF-ENABLED can be used to perform additional
209
+ dnl actions in case this variable type is enabled.
210
+ dnl
211
+ dnl Authors:
212
+ dnl Guido Tack <tack@gecode.org>
213
+ AC_DEFUN([AC_GECODE_ADD_VTI],
214
+ [ac_gecode_vtis="VTI_$1 ${ac_gecode_vtis}";])
215
+
216
+ AC_DEFUN([AC_GECODE_VTI],
217
+ [
218
+ AC_ARG_ENABLE([$1-vars],
219
+ AC_HELP_STRING([--enable-$1-vars],[build $2 @<:@default=$3@:>@]))
220
+ AC_MSG_CHECKING(whether to build the $1 variables library)
221
+ if test "${enable_$1_vars:-$3}" = "yes"; then
222
+ AC_MSG_RESULT(yes)
223
+ enable_$1_vars="yes";
224
+ AC_GECODE_ADD_VTI(translit($1,`a-z', `A-Z'))
225
+ $4
226
+ else
227
+ enable_$1_vars="no";
228
+ AC_MSG_RESULT(no)
229
+ fi
230
+ AC_SUBST(enable_$1_vars, ${enable_$1_vars})
231
+ ])
232
+
233
+ dnl Description:
234
+ dnl Make config.status create the vti.icc file.
235
+ dnl
236
+ dnl Authors:
237
+ dnl Guido Tack <tack@gecode.org>
238
+
239
+ AC_CONFIG_COMMANDS(vti.icc,
240
+ [rm -f gecode/vti.icc.new
241
+ echo "// This file was generated by config.status." > \
242
+ gecode/vti.icc.new
243
+ echo "// Do not edit. Modifications will get lost!" >> \
244
+ gecode/vti.icc.new
245
+ for v in ${ac_gecode_vtis}
246
+ do
247
+ echo "$v, ///< Generated by configure" >> gecode/vti.icc.new
248
+ done
249
+ if test ! -f gecode/vti.icc; then
250
+ touch gecode/vti.icc;
251
+ fi
252
+ if (diff gecode/vti.icc gecode/vti.icc.new >/dev/null); then
253
+ rm -f gecode/vti.icc.new;
254
+ else
255
+ rm -f gecode/vti.icc;
256
+ mv gecode/vti.icc.new gecode/vti.icc;
257
+ fi],
258
+ [ac_gecode_vtis="${ac_gecode_vtis}"])
259
+
260
+ dnl Macro:
261
+ dnl AC_GECODE_ENABLE_MODULE (module, default, help-string,
262
+ dnl [ACTION-IF-ENABLED])
263
+ dnl
264
+ dnl Description:
265
+ dnl Produces a configure switch --enable-<module>.
266
+ dnl
267
+ dnl Authors:
268
+ dnl Guido Tack <tack@gecode.org>
269
+ AC_DEFUN([AC_GECODE_ENABLE_MODULE],
270
+ [
271
+ AC_ARG_ENABLE([$1],
272
+ AC_HELP_STRING([--enable-$1],
273
+ [$3 @<:@default=$2@:>@]))
274
+ AC_MSG_CHECKING(whether to build $1)
275
+ if test "${enable_$1:-$2}" = "yes"; then
276
+ enable_$1="yes";
277
+ AC_MSG_RESULT(yes)
278
+ $4
279
+ else
280
+ enable_$1="no";
281
+ AC_MSG_RESULT(no)
282
+ fi
283
+ AC_SUBST(enable_$1, ${enable_$1})])
284
+
285
+ dnl Description:
286
+ dnl Makes an enable check for a contrib
287
+ dnl The third argument can be used for dependency checking
288
+ dnl
289
+ dnl Authors:
290
+ dnl Gr�goire Dooms <dooms@info.ucl.ac.be>
291
+ AC_DEFUN([AC_GECODE_ENABLE_CONTRIB],
292
+ [
293
+ AC_ARG_ENABLE([$1],
294
+ AC_HELP_STRING([--enable-$1],[build $2 @<:@default=yes@:>@]))
295
+ AC_MSG_CHECKING(whether to build the $1 contrib library)
296
+ if test "${enable_$1:-yes}" = "yes"; then
297
+ AC_MSG_RESULT(yes)
298
+ enable_$1="yes";
299
+ $3
300
+ else
301
+ enable_$1="no";
302
+ AC_MSG_RESULT(no)
303
+ fi
304
+ AC_SUBST(enable_$1, ${enable_$1})])
305
+
306
+
307
+ AC_DEFUN([AC_GECODE_STATICLIBS],
308
+ [AC_ARG_ENABLE([static],
309
+ AC_HELP_STRING([--enable-static],
310
+ [build static libraries @<:@default=no@:>@]))
311
+ AC_MSG_CHECKING(whether to build static libraries)
312
+ if test "${enable_static:-no}" = "yes"; then
313
+ AC_DEFINE(GECODE_STATIC_LIBS)
314
+ AC_SUBST(BUILDSTATIC, "yes")
315
+ AC_MSG_RESULT(yes)
316
+ else
317
+ AC_SUBST(BUILDSTATIC, "no")
318
+ AC_MSG_RESULT(no)
319
+ fi
320
+ AC_ARG_ENABLE([shared],
321
+ AC_HELP_STRING([--enable-shared],
322
+ [build shared libraries @<:@default=yes@:>@]))
323
+ AC_MSG_CHECKING(whether to build shared libraries)
324
+ if test "${enable_shared:-yes}" = "yes"; then
325
+ AC_SUBST(BUILDDLL, "yes")
326
+ AC_MSG_RESULT(yes)
327
+ else
328
+ AC_SUBST(BUILDDLL, "no")
329
+ if test "${enable_static:-no}" = "no"; then
330
+ AC_MSG_ERROR([One of --enable-static or --enable-shared must be given])
331
+ fi
332
+ AC_MSG_RESULT(no)
333
+ fi
334
+ ])
335
+
336
+
337
+ AC_DEFUN([AC_GECODE_DEBUG],
338
+ [AC_ARG_ENABLE([debug],
339
+ AC_HELP_STRING([--enable-debug],
340
+ [build with assertions @<:@default=no@:>@]))
341
+ AC_MSG_CHECKING(whether to build with debug symbols and assertions)
342
+ if test "${enable_debug:-no}" = "yes"; then
343
+ AC_MSG_RESULT(yes)
344
+ else
345
+ AC_MSG_RESULT(no)
346
+ AC_GECODE_ADD_TO_CXXFLAGS(-DNDEBUG)
347
+ fi])
348
+
349
+ AC_DEFUN([AC_GECODE_LEAK_DEBUG],
350
+ [AC_ARG_ENABLE([leak-debug],
351
+ AC_HELP_STRING([--enable-leak-debug],
352
+ [build with support for finding memory leaks @<:@default=no@:>@]))
353
+ AC_MSG_CHECKING(whether to build with support for finding memory leaks)
354
+ if test "${enable_leak_debug:-no}" = "yes"; then
355
+ AC_MSG_RESULT(yes)
356
+ AC_CHECK_DECL(mtrace,
357
+ [AC_DEFINE(GECODE_HAVE_MTRACE)],
358
+ [AC_MSG_ERROR(mtrace not available.)],
359
+ [[#include <mcheck.h>]])
360
+ else
361
+ AC_MSG_RESULT(no)
362
+ fi])
363
+
364
+ AC_DEFUN([AC_GECODE_AUDIT],
365
+ [AC_ARG_ENABLE([audit],
366
+ AC_HELP_STRING([--enable-audit],
367
+ [build with auditing code @<:@default=no@:>@]))
368
+ AC_MSG_CHECKING(whether to build with auditing code)
369
+ if test "${enable_audit:-no}" = "yes"; then
370
+ AC_DEFINE(GECODE_AUDIT, 1)
371
+ AC_MSG_RESULT(yes)
372
+ else
373
+ AC_DEFINE(GECODE_AUDIT, 0)
374
+ AC_MSG_RESULT(no)
375
+ fi])
376
+
377
+
378
+ AC_DEFUN([AC_GECODE_PROFILE],
379
+ [AC_ARG_ENABLE([profile],
380
+ AC_HELP_STRING([--enable-profile],
381
+ [build with profiling information @<:@default=no@:>@]))
382
+ AC_MSG_CHECKING(whether to build with profiling information)
383
+ if test "${enable_profile:-no}" = "yes"; then
384
+ AC_MSG_RESULT(yes)
385
+ AC_GECODE_CHECK_CXXFLAG(-pg,
386
+ AC_GECODE_ADD_TO_CXXFLAGS(-pg),
387
+ AC_GECODE_CHECK_CXXFLAG(-p))
388
+ else
389
+ AC_MSG_RESULT(no)
390
+ fi])
391
+
392
+ # Test for platform specific behaviour of arithmetic
393
+
394
+ AC_DEFUN([AC_GECODE_CHECK_ARITH],
395
+ [AC_LANG_PUSH([C])
396
+ AC_CHECK_SIZEOF(int)
397
+ AC_MSG_CHECKING([if int has at least 32 bit])
398
+ AC_TRY_COMPILE([],
399
+ [
400
+ #if SIZEOF_INT>=4
401
+ #else
402
+ blablub
403
+ #endif
404
+ ],
405
+ [AC_MSG_RESULT(yes)],
406
+ [AC_MSG_ERROR([Gecode needs at least 32 bit integers.])])
407
+
408
+ AC_MSG_CHECKING([if doubles have a big enough mantissa])
409
+ AC_TRY_COMPILE([#include <float.h>],
410
+ [
411
+ #if DBL_MANT_DIG>=53
412
+ #else
413
+ blablub
414
+ #endif
415
+ ],
416
+ [AC_MSG_RESULT(yes)],
417
+ [AC_MSG_ERROR([Gecode needs a double mantissa of at least 53 bits.])])
418
+
419
+ AC_LANG_POP([C])])
420
+
421
+ AC_DEFUN([AC_GECODE_GCC_GENERAL_SWITCHES],
422
+ [AC_DEFINE(forceinline, [inline])
423
+ AC_GECODE_CHECK_CXXFLAG([-fPIC])
424
+ AC_GECODE_CHECK_CXXFLAG([-Wall])
425
+ AC_GECODE_CHECK_CXXFLAG(-ggdb,
426
+ AC_GECODE_ADD_TO_CXXFLAGS(-ggdb),
427
+ AC_GECODE_CHECK_CXXFLAG(-g))
428
+
429
+ AC_SUBST(docdir, "${datadir}/doc/gecode")
430
+
431
+ dnl file extensions
432
+ AC_SUBST(SBJEXT, "s")
433
+ AC_SUBST(LIBEXT, "${DLLEXT}")
434
+ AC_SUBST(LIBPREFIX, "libgecode")
435
+ AC_SUBST(STATICLIBEXT, "a")
436
+ AC_SUBST(MINUSLDIR, "-L${libdir}")
437
+ AC_SUBST(LINKLIBDIR, "")
438
+
439
+ cygpathprefix=$prefix
440
+ test "x$cygpathprefix" = xNONE && cygpathprefix=$ac_default_prefix
441
+ AC_SUBST(cygpathprefix, "${cygpathprefix}")
442
+
443
+ AC_SUBST(COMPILEOBJ, "-c -o ")
444
+ AC_SUBST(COMPILESBJ, "-S -o ")
445
+ AC_SUBST(COMPILERIN, " ")
446
+ AC_SUBST(EXAMPLES_EXTRA_CXXFLAGS, "")
447
+
448
+ dnl Do not install stub .lib files (required for msvc)
449
+ AC_SUBST(INSTALLLIBS, "no")
450
+
451
+ AC_SUBST(LINKPREFIX, "-lgecode")
452
+ AC_SUBST(LINKSUFFIX, "")
453
+
454
+ dnl how to tell the compiler to output an object file
455
+ AC_SUBST(LINKOUTPUT, "-o ")
456
+ dnl how to tell the compiler to output an executable
457
+ AC_SUBST(EXEOUTPUT, "-o ")
458
+
459
+ dnl the names of the generated dlls
460
+ AC_SUBST(KERNEL, "kernel")
461
+ AC_SUBST(SEARCH, "search")
462
+ AC_SUBST(INT, "int")
463
+ AC_SUBST(SET, "set")
464
+ AC_SUBST(MM, "minimodel")])
465
+
466
+
467
+ AC_DEFUN([AC_GECODE_GCC_OPTIMIZED_SWITCHES],
468
+ [AC_GECODE_CHECK_CXXFLAG([-O3])
469
+ AC_GECODE_CHECK_CXXFLAG([-fno-strict-aliasing])])
470
+
471
+ AC_DEFUN([AC_GECODE_GCC_VISIBILITY],
472
+ [AC_ARG_ENABLE([gcc-visibility],
473
+ AC_HELP_STRING([--enable-gcc-visibility],
474
+ [use gcc visibility attributes @<:@default=no@:>@]))
475
+ AC_MSG_CHECKING(whether to use gcc visibility attributes)
476
+ if test "${enable_gcc_visibility:-no}" = "yes"; then
477
+ AC_MSG_RESULT(yes)
478
+ AC_GECODE_CHECK_CXXFLAG([-fvisibility=hidden],
479
+ [AC_DEFINE(GCC_HASCLASSVISIBILITY)
480
+ AC_GECODE_ADD_TO_CXXFLAGS([-fvisibility=hidden])
481
+ AC_GECODE_CHECK_CXXFLAG([-fno-rtti])],
482
+ [])
483
+ else
484
+ AC_MSG_RESULT(no)
485
+ fi])
486
+
487
+ AC_DEFUN([AC_GECODE_GCC_DEBUG_SWITCHES],
488
+ [AC_GECODE_CHECK_CXXFLAG([-fno-inline-functions])
489
+ AC_GECODE_CHECK_CXXFLAG([-fimplement-inlines])])
490
+
491
+ AC_DEFUN([AC_GECODE_NO_BUILDFLAGS],
492
+ [AC_SUBST(GECODE_BUILD_KERNEL_FLAG, "")
493
+ AC_SUBST(GECODE_BUILD_SEARCH_FLAG, "")
494
+ AC_SUBST(GECODE_BUILD_INT_FLAG, "")
495
+ AC_SUBST(GECODE_BUILD_SET_FLAG, "")
496
+ AC_SUBST(GECODE_BUILD_MINIMODEL_FLAG, "")])
497
+
498
+ AC_DEFUN([AC_GECODE_BUILDFLAGS],
499
+ [AC_SUBST(GECODE_BUILD_KERNEL_FLAG, "-DGECODE_BUILD_KERNEL")
500
+ AC_SUBST(GECODE_BUILD_SEARCH_FLAG, "-DGECODE_BUILD_SEARCH")
501
+ AC_SUBST(GECODE_BUILD_INT_FLAG, "-DGECODE_BUILD_INT")
502
+ AC_SUBST(GECODE_BUILD_SET_FLAG, "-DGECODE_BUILD_SET")
503
+ AC_SUBST(GECODE_BUILD_MINIMODEL_FLAG, "-DGECODE_BUILD_MINIMODEL")])
504
+
505
+
506
+ AC_DEFUN([AC_GECODE_UNIX_PATHS],
507
+ [AC_SUBST(DLLPATH, [-L.])
508
+ dnl flags for creating dlls
509
+ case $host_os in
510
+ darwin*)
511
+ AC_SUBST(need_soname, "yes")
512
+ AC_GECODE_ADD_TO_DLLFLAGS("-dynamiclib")
513
+ AC_SUBST(DLLEXT, "${ac_gecode_soversion}.0.dylib")
514
+ AC_SUBST(SOSUFFIX, ".${ac_gecode_soversion}.dylib")
515
+ AC_SUBST(SOLINKSUFFIX, ".dylib")
516
+ AC_SUBST(sharedlibdir, "${libdir}")
517
+ AC_SUBST(WLSONAME, "-compatibility_version ${ac_gecode_soversion}.0 -current_version ${ac_gecode_soversion}.0 -install_name ${libdir}/")
518
+ AC_GECODE_NO_BUILDFLAGS
519
+ ;;
520
+ windows*)
521
+ AC_SUBST(need_soname, "no")
522
+ if test "${enable_static:-no}" = "yes" -a \
523
+ "${enable_shared:-yes}" = "yes"; then
524
+ AC_MSG_ERROR([Only either static or shared libraries can be built.])
525
+ fi
526
+ AC_GECODE_ADD_TO_DLLFLAGS("-shared")
527
+ AC_SUBST(DLLEXT, "dll")
528
+ AC_SUBST(SOSUFFIX, "")
529
+ AC_SUBST(SOLINKSUFFIX, "")
530
+ AC_SUBST(WLSONAME, "")
531
+ if test "${enable_static:-no}" = "no"; then
532
+ AC_SUBST(sharedlibdir, "${bindir}")
533
+ else
534
+ AC_SUBST(sharedlibdir, "${libdir}")
535
+ fi
536
+ AC_GECODE_BUILDFLAGS
537
+ ;;
538
+ *)
539
+ AC_SUBST(need_soname, "yes")
540
+ AC_GECODE_ADD_TO_DLLFLAGS("-shared")
541
+ AC_SUBST(DLLEXT, "so.${ac_gecode_soversion}.0")
542
+ AC_SUBST(SOSUFFIX, ".so.${ac_gecode_soversion}")
543
+ AC_SUBST(SOLINKSUFFIX, ".so")
544
+ AC_SUBST(WLSONAME, ["-Wl,-soname="])
545
+ AC_SUBST(sharedlibdir, "${libdir}")
546
+ AC_GECODE_NO_BUILDFLAGS
547
+ ;;
548
+ esac])
549
+
550
+ AC_DEFUN([AC_GECODE_MSVC_SWITCHES],
551
+ [dnl general compiler flags
552
+ AC_DEFINE(forceinline,[__forceinline])
553
+ AC_GECODE_ADD_TO_CXXFLAGS([-nologo])
554
+ AC_GECODE_ADD_TO_CXXFLAGS([-EHsc])
555
+ AC_DEFINE(GECODE_MEMORY_ALIGNMENT, 4)
556
+
557
+ if test "${enable_debug:-no}" = "no"; then
558
+ dnl compiler flags for an optimized build
559
+ AC_GECODE_ADD_TO_CXXFLAGS([-Ox -fp:fast])
560
+
561
+ dnl flags for creating optimized dlls
562
+ AC_GECODE_ADD_TO_DLLFLAGS([${CXXFLAGS} -LD -MD])
563
+ else
564
+ dnl compiler flags for a debug build
565
+ AC_GECODE_ADD_TO_CXXFLAGS([-Zi])
566
+
567
+ dnl flags for creating debug dlls
568
+ AC_GECODE_ADD_TO_DLLFLAGS([${CXXFLAGS} -LDd MDd])
569
+ fi
570
+
571
+ AC_SUBST(sharedlibdir, "${bindir}")
572
+ AC_SUBST(docdir, "${prefix}")
573
+ if test "${enable_static:-no}" = "yes"; then
574
+ AC_MSG_ERROR([Static linking not supported for Windows/cl.])
575
+ fi
576
+
577
+ dnl linker flags
578
+ AC_GECODE_ADD_TO_LDFLAGS([-link])
579
+ AC_SUBST(DLLPATH, "")
580
+
581
+ dnl file extensions
582
+ AC_SUBST(SBJEXT, "sbj")
583
+ AC_SUBST(DLLEXT, "dll")
584
+ AC_SUBST(SOSUFFIX, "")
585
+ AC_SUBST(SOLINKSUFFIX, "")
586
+ AC_SUBST(WLSONAME, "")
587
+ AC_SUBST(LIBEXT, "lib")
588
+ AC_SUBST(LIBPREFIX, "Gecode")
589
+ AC_SUBST(LINKPREFIX, "Gecode")
590
+ AC_SUBST(LINKSUFFIX, ".lib")
591
+ AC_SUBST(MINUSLDIR, "")
592
+ AC_SUBST(LINKLIBDIR, "${libdir}/")
593
+
594
+ cygpathprefix=$prefix
595
+ test "x$cygpathprefix" = xNONE && cygpathprefix=$ac_default_prefix
596
+ cygpathprefix=`cygpath -m ${cygpathprefix}`
597
+
598
+ AC_SUBST(cygpathprefix, "${cygpathprefix}")
599
+ AC_GECODE_BUILDFLAGS
600
+
601
+ dnl compiler options
602
+ AC_SUBST(COMPILEOBJ, "-c -Fo")
603
+ AC_SUBST(COMPILESBJ, "-c -Fa")
604
+ AC_SUBST(COMPILERIN, "-Tp")
605
+ AC_SUBST(EXAMPLES_EXTRA_CXXFLAGS, "-wd4355")
606
+
607
+ dnl Install stub .lib files (required for msvc)
608
+ AC_SUBST(INSTALLLIBS, "yes")
609
+
610
+ dnl how to tell the compiler to output an object file
611
+ AC_SUBST(LINKOUTPUT, "-Fe")
612
+ dnl how to tell the compiler to output an executable
613
+ AC_SUBST(EXEOUTPUT, "-Fe")
614
+
615
+ dnl the names of the generated dlls
616
+ AC_SUBST(KERNEL, "Kernel")
617
+ AC_SUBST(SEARCH, "Search")
618
+ AC_SUBST(INT, "Int")
619
+ AC_SUBST(SET, "Set")
620
+ AC_SUBST(MM, "Minimodel")])
621
+
622
+ dnl Macro:
623
+ dnl AC_GECODE_DOC_SWITCHES
624
+ dnl
625
+ dnl Description:
626
+ dnl Produces the configure switches --enable-doc-search,
627
+ dnl --enable-doc-chm, and --enable-doc-tagfile.
628
+ dnl
629
+ dnl Authors:
630
+ dnl Guido Tack <tack@gecode.org>
631
+ AC_DEFUN([AC_GECODE_DOC_SWITCHES],
632
+ [dnl check if we can use dot for generating graphs in the documentation
633
+ AC_ARG_ENABLE([doc-dot],
634
+ AC_HELP_STRING([--enable-doc-dot],
635
+ [enable graphs in documentation @<:@default=yes@:>@]))
636
+ AC_CHECK_PROG(DOT, dot, dot)
637
+ AC_MSG_CHECKING(whether to enable graphs in the documentation)
638
+ if test "${enable_doc_dot:-yes}" = "yes"; then
639
+ if test x$DOT = x; then
640
+ if test x"${enable_doc_dot}" = x; then
641
+ AC_MSG_RESULT(no)
642
+ AC_SUBST(GECODE_DOXYGEN_DOT, NO)
643
+ else
644
+ AC_MSG_ERROR(you need the dot tool from graphviz to generate graphs in the documentation)
645
+ fi
646
+ else
647
+ AC_MSG_RESULT(yes)
648
+ AC_SUBST(GECODE_DOXYGEN_DOT, YES)
649
+ fi
650
+ else
651
+ AC_MSG_RESULT(no)
652
+ AC_SUBST(GECODE_DOXYGEN_DOT, NO)
653
+ fi
654
+
655
+ AC_ARG_ENABLE([doc-search],
656
+ AC_HELP_STRING([--enable-doc-search],
657
+ [enable documentation search engine @<:@default=no@:>@]))
658
+ AC_MSG_CHECKING(whether to enable the documentation search engine)
659
+ if test "${enable_doc_search:-no}" = "yes"; then
660
+ AC_MSG_RESULT(yes)
661
+ AC_SUBST(ENABLEDOCSEARCH, "yes")
662
+ else
663
+ AC_MSG_RESULT(no)
664
+ AC_SUBST(ENABLEDOCSEARCH, "no")
665
+ fi
666
+ AC_ARG_ENABLE([doc-tagfile],
667
+ AC_HELP_STRING([--enable-doc-tagfile],
668
+ [generate doxygen tagfile @<:@default=no@:>@]))
669
+ AC_MSG_CHECKING(whether to generate a doxygen tagfile)
670
+ if test "${enable_doc_tagfile:-no}" = "yes"; then
671
+ AC_MSG_RESULT(yes)
672
+ AC_SUBST(GECODE_DOXYGEN_TAGFILE, "doc/gecode-doc.tag")
673
+ else
674
+ AC_MSG_RESULT(no)
675
+ AC_SUBST(GECODE_DOXYGEN_TAGFILE, [])
676
+ fi
677
+ AC_ARG_ENABLE([doc-chm],
678
+ AC_HELP_STRING([--enable-doc-chm],
679
+ [build compressed html documentation @<:@default=yes on Windows@:>@]))
680
+ AC_MSG_CHECKING(whether to build compressed html documentation)
681
+ case $host_os in
682
+ windows*)
683
+ if test "${enable_doc_chm:-yes}" = "yes"; then
684
+ AC_MSG_RESULT(yes)
685
+ AC_SUBST(ENABLEDOCCHM, "yes")
686
+ AC_SUBST(ENABLEDOCSEARCH, "no")
687
+ else
688
+ AC_MSG_RESULT(no)
689
+ AC_SUBST(ENABLEDOCCHM, "no")
690
+ fi
691
+ ;;
692
+ *)
693
+ if test "${enable_doc_chm:-no}" = "yes"; then
694
+ AC_MSG_ERROR([building chms is only supported on Windows.])
695
+ else
696
+ AC_MSG_RESULT(no)
697
+ AC_SUBST(ENABLEDOCCHM, "no")
698
+ fi
699
+ ;;
700
+ esac])
701
+
702
+ dnl Macro:
703
+ dnl AC_GECODE_UNIVERSAL
704
+ dnl
705
+ dnl Description:
706
+ dnl Produces the configure switches --enable-universal and --with-sdk
707
+ dnl for compiling universal binaries on Mac OS X.
708
+ dnl
709
+ dnl Authors:
710
+ dnl Guido Tack <tack@gecode.org>
711
+ AC_DEFUN([AC_GECODE_UNIVERSAL],
712
+ [dnl build universal binaries on Mac OS X
713
+ AC_ARG_WITH([sdk],
714
+ AC_HELP_STRING([--with-sdk],
715
+ [SDK to use on Mac OS X]))
716
+ if test "${host_os}" = "darwin"; then
717
+ if test "${with_sdk:-no}" != "no"; then
718
+ AC_GECODE_CHECK_CXXFLAG([-isysroot ${with_sdk}])
719
+ AC_GECODE_ADD_TO_DLLFLAGS([-Wl,-syslibroot,${with_sdk}])
720
+ fi
721
+ fi
722
+ AC_ARG_ENABLE([universal],
723
+ AC_HELP_STRING([--enable-universal],
724
+ [build universal binaries on Mac OS X @<:@default=no@:>@]))
725
+ if test "${host_os}" = "darwin"; then
726
+ AC_MSG_CHECKING(whether to build universal binaries on Mac OS X)
727
+ if test "${enable_universal:-no}" = "yes"; then
728
+ AC_MSG_RESULT(yes)
729
+ AC_GECODE_CHECK_CXXFLAG([-arch i386 -arch ppc])
730
+ AC_GECODE_ADD_TO_DLLFLAGS([-arch i386 -arch ppc])
731
+ else
732
+ AC_MSG_RESULT(no)
733
+ fi
734
+ fi
735
+
736
+ ])