nutcracker 0.2.3 → 0.2.4.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (296) hide show
  1. data/README.md +53 -5
  2. data/Rakefile +14 -19
  3. data/bin/nutcracker +6 -1
  4. data/ext/nutcracker/ChangeLog +9 -0
  5. data/ext/nutcracker/LICENSE +0 -0
  6. data/ext/nutcracker/Makefile +643 -0
  7. data/ext/nutcracker/Makefile.am +0 -0
  8. data/ext/nutcracker/Makefile.in +66 -149
  9. data/ext/nutcracker/NOTICE +0 -0
  10. data/ext/nutcracker/README.md +13 -11
  11. data/ext/nutcracker/aclocal.m4 +112 -201
  12. data/ext/nutcracker/autom4te.cache/output.0 +18664 -0
  13. data/ext/nutcracker/autom4te.cache/output.1 +18664 -0
  14. data/ext/nutcracker/autom4te.cache/output.2 +18664 -0
  15. data/ext/nutcracker/autom4te.cache/requests +494 -0
  16. data/ext/nutcracker/autom4te.cache/traces.0 +2415 -0
  17. data/ext/nutcracker/autom4te.cache/traces.1 +945 -0
  18. data/ext/nutcracker/autom4te.cache/traces.2 +2415 -0
  19. data/ext/nutcracker/conf/nutcracker.leaf.yml +0 -0
  20. data/ext/nutcracker/conf/nutcracker.root.yml +0 -0
  21. data/ext/nutcracker/conf/nutcracker.yml +0 -0
  22. data/ext/nutcracker/config.h +332 -0
  23. data/ext/nutcracker/config.h.in +15 -0
  24. data/ext/nutcracker/config.log +2684 -0
  25. data/ext/nutcracker/config.status +2317 -0
  26. data/ext/nutcracker/config/config.guess +23 -84
  27. data/ext/nutcracker/config/config.sub +23 -93
  28. data/ext/nutcracker/config/depcomp +35 -81
  29. data/ext/nutcracker/config/install-sh +109 -122
  30. data/ext/nutcracker/config/ltmain.sh +1053 -721
  31. data/ext/nutcracker/config/missing +20 -29
  32. data/ext/nutcracker/configure +2122 -2320
  33. data/ext/nutcracker/configure.ac +35 -3
  34. data/ext/nutcracker/contrib/Makefile +494 -0
  35. data/ext/nutcracker/contrib/Makefile.am +0 -0
  36. data/ext/nutcracker/contrib/Makefile.in +41 -107
  37. data/ext/nutcracker/contrib/yaml-0.1.4.tar.gz +0 -0
  38. data/ext/nutcracker/contrib/yaml-0.1.4/Makefile +736 -0
  39. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/output.0 +13102 -0
  40. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/output.1 +13085 -0
  41. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/output.2 +13085 -0
  42. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/requests +476 -0
  43. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/traces.0 +2339 -0
  44. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/traces.1 +545 -0
  45. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/traces.2 +2339 -0
  46. data/ext/nutcracker/contrib/yaml-0.1.4/config.h +81 -0
  47. data/ext/nutcracker/contrib/yaml-0.1.4/config.h.in~ +80 -0
  48. data/ext/nutcracker/contrib/yaml-0.1.4/config.log +688 -0
  49. data/ext/nutcracker/contrib/yaml-0.1.4/config.status +2032 -0
  50. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/annotated.html +51 -0
  51. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/bc_s.png +0 -0
  52. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/classes.html +41 -0
  53. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/closed.png +0 -0
  54. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/doxygen.css +656 -0
  55. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/doxygen.png +0 -0
  56. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/files.html +40 -0
  57. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions.html +91 -0
  58. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x62.html +84 -0
  59. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x63.html +87 -0
  60. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x64.html +83 -0
  61. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x65.html +110 -0
  62. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x66.html +79 -0
  63. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x68.html +80 -0
  64. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x69.html +92 -0
  65. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6b.html +71 -0
  66. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6c.html +88 -0
  67. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6d.html +96 -0
  68. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6e.html +71 -0
  69. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6f.html +80 -0
  70. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x70.html +100 -0
  71. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x71.html +71 -0
  72. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x72.html +87 -0
  73. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x73.html +163 -0
  74. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x74.html +115 -0
  75. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x75.html +71 -0
  76. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x76.html +80 -0
  77. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x77.html +77 -0
  78. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars.html +91 -0
  79. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x62.html +84 -0
  80. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x63.html +87 -0
  81. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x64.html +83 -0
  82. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x65.html +110 -0
  83. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x66.html +79 -0
  84. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x68.html +80 -0
  85. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x69.html +92 -0
  86. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6b.html +71 -0
  87. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6c.html +88 -0
  88. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6d.html +96 -0
  89. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6e.html +71 -0
  90. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6f.html +80 -0
  91. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x70.html +100 -0
  92. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x71.html +71 -0
  93. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x72.html +87 -0
  94. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x73.html +163 -0
  95. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x74.html +115 -0
  96. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x75.html +71 -0
  97. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x76.html +80 -0
  98. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x77.html +77 -0
  99. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals.html +667 -0
  100. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_defs.html +81 -0
  101. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_enum.html +78 -0
  102. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_eval.html +373 -0
  103. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_func.html +196 -0
  104. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_type.html +126 -0
  105. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__basic.html +320 -0
  106. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__emitter.html +819 -0
  107. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__events.html +664 -0
  108. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__export.html +60 -0
  109. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__nodes.html +795 -0
  110. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__parser.html +606 -0
  111. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__styles.html +222 -0
  112. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__tokens.html +246 -0
  113. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__version.html +106 -0
  114. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/index.html +31 -0
  115. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/modules.html +42 -0
  116. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/nav_f.png +0 -0
  117. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/nav_h.png +0 -0
  118. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/open.png +0 -0
  119. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__alias__data__s.html +108 -0
  120. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__document__s.html +235 -0
  121. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__emitter__s.html +1300 -0
  122. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__event__s.html +496 -0
  123. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__mark__s.html +108 -0
  124. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__node__pair__s.html +91 -0
  125. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__node__s.html +420 -0
  126. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__parser__s.html +1229 -0
  127. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__simple__key__s.html +97 -0
  128. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__tag__directive__s.html +91 -0
  129. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__token__s.html +413 -0
  130. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__version__directive__s.html +91 -0
  131. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tab_a.png +0 -0
  132. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tab_b.png +0 -0
  133. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tab_h.png +0 -0
  134. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tab_s.png +0 -0
  135. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tabs.css +59 -0
  136. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/yaml_8h.html +525 -0
  137. data/ext/nutcracker/contrib/yaml-0.1.4/include/Makefile.am +17 -0
  138. data/ext/nutcracker/contrib/yaml-0.1.4/include/Makefile.in +470 -0
  139. data/ext/nutcracker/contrib/yaml-0.1.4/libtool +8890 -0
  140. data/ext/nutcracker/contrib/yaml-0.1.4/src/Makefile +484 -0
  141. data/ext/nutcracker/contrib/yaml-0.1.4/src/api.lo +12 -0
  142. data/ext/nutcracker/contrib/yaml-0.1.4/src/api.o +0 -0
  143. data/ext/nutcracker/contrib/yaml-0.1.4/src/dumper.lo +12 -0
  144. data/ext/nutcracker/contrib/yaml-0.1.4/src/dumper.o +0 -0
  145. data/ext/nutcracker/contrib/yaml-0.1.4/src/emitter.lo +12 -0
  146. data/ext/nutcracker/contrib/yaml-0.1.4/src/emitter.o +0 -0
  147. data/ext/nutcracker/contrib/yaml-0.1.4/src/libyaml.la +41 -0
  148. data/ext/nutcracker/contrib/yaml-0.1.4/src/loader.lo +12 -0
  149. data/ext/nutcracker/contrib/yaml-0.1.4/src/loader.o +0 -0
  150. data/ext/nutcracker/contrib/yaml-0.1.4/src/parser.lo +12 -0
  151. data/ext/nutcracker/contrib/yaml-0.1.4/src/parser.o +0 -0
  152. data/ext/nutcracker/contrib/yaml-0.1.4/src/reader.lo +12 -0
  153. data/ext/nutcracker/contrib/yaml-0.1.4/src/reader.o +0 -0
  154. data/ext/nutcracker/contrib/yaml-0.1.4/src/scanner.lo +12 -0
  155. data/ext/nutcracker/contrib/yaml-0.1.4/src/scanner.o +0 -0
  156. data/ext/nutcracker/contrib/yaml-0.1.4/src/writer.lo +12 -0
  157. data/ext/nutcracker/contrib/yaml-0.1.4/src/writer.o +0 -0
  158. data/ext/nutcracker/contrib/yaml-0.1.4/stamp-h1 +1 -0
  159. data/ext/nutcracker/contrib/yaml-0.1.4/tests/Makefile +675 -0
  160. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor +0 -0
  161. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor-alt +0 -0
  162. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor-alt.o +0 -0
  163. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor.o +0 -0
  164. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter +0 -0
  165. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter-alt +0 -0
  166. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter-alt.o +0 -0
  167. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter.o +0 -0
  168. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-dumper +0 -0
  169. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-dumper.o +0 -0
  170. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-emitter +0 -0
  171. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-emitter.o +0 -0
  172. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-loader +0 -0
  173. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-loader.o +0 -0
  174. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-parser +0 -0
  175. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-parser.o +0 -0
  176. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-scanner +0 -0
  177. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-scanner.o +0 -0
  178. data/ext/nutcracker/contrib/yaml-0.1.4/yaml-0.1.pc +10 -0
  179. data/ext/nutcracker/contrib/yaml-0.1.4/yaml-0.1.pc.in +10 -0
  180. data/ext/nutcracker/extconf.rb +0 -5
  181. data/ext/nutcracker/libtool +9403 -0
  182. data/ext/nutcracker/m4/libtool.m4 +553 -492
  183. data/ext/nutcracker/m4/ltoptions.m4 +7 -6
  184. data/ext/nutcracker/m4/ltversion.m4 +5 -5
  185. data/ext/nutcracker/m4/lt~obsolete.m4 +9 -3
  186. data/ext/nutcracker/notes/c-styleguide.txt +0 -0
  187. data/ext/nutcracker/notes/debug.txt +0 -0
  188. data/ext/nutcracker/notes/memcache.txt +0 -0
  189. data/ext/nutcracker/notes/recommendation.md +21 -2
  190. data/ext/nutcracker/notes/redis.md +9 -9
  191. data/ext/nutcracker/notes/socket.txt +0 -0
  192. data/ext/nutcracker/scripts/nutcracker.init +0 -0
  193. data/ext/nutcracker/scripts/nutcracker.spec +0 -0
  194. data/ext/nutcracker/scripts/redis-check.py +0 -0
  195. data/ext/nutcracker/scripts/redis-check.sh +9 -0
  196. data/ext/nutcracker/src/Makefile +647 -0
  197. data/ext/nutcracker/src/Makefile.am +1 -1
  198. data/ext/nutcracker/src/Makefile.in +74 -153
  199. data/ext/nutcracker/src/hashkit/Makefile +476 -0
  200. data/ext/nutcracker/src/hashkit/Makefile.am +1 -0
  201. data/ext/nutcracker/src/hashkit/Makefile.in +39 -64
  202. data/ext/nutcracker/src/hashkit/libhashkit.a +0 -0
  203. data/ext/nutcracker/src/hashkit/nc_crc16.c +66 -0
  204. data/ext/nutcracker/src/hashkit/nc_crc16.o +0 -0
  205. data/ext/nutcracker/src/hashkit/nc_crc32.c +0 -0
  206. data/ext/nutcracker/src/hashkit/nc_crc32.o +0 -0
  207. data/ext/nutcracker/src/hashkit/nc_fnv.c +0 -0
  208. data/ext/nutcracker/src/hashkit/nc_fnv.o +0 -0
  209. data/ext/nutcracker/src/hashkit/nc_hashkit.h +2 -0
  210. data/ext/nutcracker/src/hashkit/nc_hsieh.c +0 -0
  211. data/ext/nutcracker/src/hashkit/nc_hsieh.o +0 -0
  212. data/ext/nutcracker/src/hashkit/nc_jenkins.c +0 -0
  213. data/ext/nutcracker/src/hashkit/nc_jenkins.o +0 -0
  214. data/ext/nutcracker/src/hashkit/nc_ketama.c +0 -0
  215. data/ext/nutcracker/src/hashkit/nc_ketama.o +0 -0
  216. data/ext/nutcracker/src/hashkit/nc_md5.c +0 -0
  217. data/ext/nutcracker/src/hashkit/nc_md5.o +0 -0
  218. data/ext/nutcracker/src/hashkit/nc_modula.c +18 -6
  219. data/ext/nutcracker/src/hashkit/nc_modula.o +0 -0
  220. data/ext/nutcracker/src/hashkit/nc_murmur.c +0 -0
  221. data/ext/nutcracker/src/hashkit/nc_murmur.o +0 -0
  222. data/ext/nutcracker/src/hashkit/nc_one_at_a_time.c +0 -0
  223. data/ext/nutcracker/src/hashkit/nc_one_at_a_time.o +0 -0
  224. data/ext/nutcracker/src/hashkit/nc_random.c +0 -0
  225. data/ext/nutcracker/src/hashkit/nc_random.o +0 -0
  226. data/ext/nutcracker/src/nc.c +0 -0
  227. data/ext/nutcracker/src/nc.o +0 -0
  228. data/ext/nutcracker/src/nc_array.c +0 -0
  229. data/ext/nutcracker/src/nc_array.h +0 -0
  230. data/ext/nutcracker/src/nc_array.o +0 -0
  231. data/ext/nutcracker/src/nc_client.c +0 -0
  232. data/ext/nutcracker/src/nc_client.h +0 -0
  233. data/ext/nutcracker/src/nc_client.o +0 -0
  234. data/ext/nutcracker/src/nc_conf.c +14 -35
  235. data/ext/nutcracker/src/nc_conf.h +1 -1
  236. data/ext/nutcracker/src/nc_conf.o +0 -0
  237. data/ext/nutcracker/src/nc_connection.c +0 -0
  238. data/ext/nutcracker/src/nc_connection.h +0 -0
  239. data/ext/nutcracker/src/nc_connection.o +0 -0
  240. data/ext/nutcracker/src/nc_core.c +29 -26
  241. data/ext/nutcracker/src/nc_core.h +13 -5
  242. data/ext/nutcracker/src/nc_core.o +0 -0
  243. data/ext/nutcracker/src/{nc_event.c → nc_epoll.c} +94 -30
  244. data/ext/nutcracker/src/nc_epoll.o +0 -0
  245. data/ext/nutcracker/src/nc_event.h +33 -13
  246. data/ext/nutcracker/src/nc_kqueue.c +296 -0
  247. data/ext/nutcracker/src/nc_kqueue.o +0 -0
  248. data/ext/nutcracker/src/nc_log.c +0 -0
  249. data/ext/nutcracker/src/nc_log.h +0 -0
  250. data/ext/nutcracker/src/nc_log.o +0 -0
  251. data/ext/nutcracker/src/nc_mbuf.c +0 -0
  252. data/ext/nutcracker/src/nc_mbuf.h +0 -0
  253. data/ext/nutcracker/src/nc_mbuf.o +0 -0
  254. data/ext/nutcracker/src/nc_message.c +0 -0
  255. data/ext/nutcracker/src/nc_message.h +2 -0
  256. data/ext/nutcracker/src/nc_message.o +0 -0
  257. data/ext/nutcracker/src/nc_proxy.c +8 -8
  258. data/ext/nutcracker/src/nc_proxy.h +0 -0
  259. data/ext/nutcracker/src/nc_proxy.o +0 -0
  260. data/ext/nutcracker/src/nc_queue.h +0 -0
  261. data/ext/nutcracker/src/nc_rbtree.c +0 -0
  262. data/ext/nutcracker/src/nc_rbtree.h +0 -0
  263. data/ext/nutcracker/src/nc_rbtree.o +0 -0
  264. data/ext/nutcracker/src/nc_request.c +3 -3
  265. data/ext/nutcracker/src/nc_request.o +0 -0
  266. data/ext/nutcracker/src/nc_response.c +4 -6
  267. data/ext/nutcracker/src/nc_response.o +0 -0
  268. data/ext/nutcracker/src/nc_server.c +14 -12
  269. data/ext/nutcracker/src/nc_server.h +0 -0
  270. data/ext/nutcracker/src/nc_server.o +0 -0
  271. data/ext/nutcracker/src/nc_signal.c +0 -0
  272. data/ext/nutcracker/src/nc_signal.h +0 -0
  273. data/ext/nutcracker/src/nc_signal.o +0 -0
  274. data/ext/nutcracker/src/nc_stats.c +16 -21
  275. data/ext/nutcracker/src/nc_stats.h +3 -4
  276. data/ext/nutcracker/src/nc_stats.o +0 -0
  277. data/ext/nutcracker/src/nc_string.c +0 -0
  278. data/ext/nutcracker/src/nc_string.h +0 -0
  279. data/ext/nutcracker/src/nc_string.o +0 -0
  280. data/ext/nutcracker/src/nc_util.c +16 -0
  281. data/ext/nutcracker/src/nc_util.h +1 -0
  282. data/ext/nutcracker/src/nc_util.o +0 -0
  283. data/ext/nutcracker/src/nutcracker +0 -0
  284. data/ext/nutcracker/src/proto/Makefile +454 -0
  285. data/ext/nutcracker/src/proto/Makefile.am +0 -0
  286. data/ext/nutcracker/src/proto/Makefile.in +32 -60
  287. data/ext/nutcracker/src/proto/libproto.a +0 -0
  288. data/ext/nutcracker/src/proto/nc_memcache.c +0 -0
  289. data/ext/nutcracker/src/proto/nc_memcache.o +0 -0
  290. data/ext/nutcracker/src/proto/nc_proto.h +0 -0
  291. data/ext/nutcracker/src/proto/nc_redis.c +17 -4
  292. data/ext/nutcracker/src/proto/nc_redis.o +0 -0
  293. data/ext/nutcracker/stamp-h1 +1 -0
  294. data/lib/nutcracker.rb +64 -2
  295. data/lib/nutcracker/version.rb +1 -1
  296. metadata +237 -9
@@ -1,13 +1,14 @@
1
1
  # Helper functions for option handling. -*- Autoconf -*-
2
2
  #
3
- # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
3
+ # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
4
+ # Inc.
4
5
  # Written by Gary V. Vaughan, 2004
5
6
  #
6
7
  # This file is free software; the Free Software Foundation gives
7
8
  # unlimited permission to copy and/or distribute it, with or without
8
9
  # modifications, as long as this notice is preserved.
9
10
 
10
- # serial 6 ltoptions.m4
11
+ # serial 7 ltoptions.m4
11
12
 
12
13
  # This is to help aclocal find these macros, as it can't see m4_define.
13
14
  AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -125,7 +126,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll],
125
126
  [enable_win32_dll=yes
126
127
 
127
128
  case $host in
128
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
129
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
129
130
  AC_CHECK_TOOL(AS, as, false)
130
131
  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
131
132
  AC_CHECK_TOOL(OBJDUMP, objdump, false)
@@ -133,13 +134,13 @@ case $host in
133
134
  esac
134
135
 
135
136
  test -z "$AS" && AS=as
136
- _LT_DECL([], [AS], [0], [Assembler program])dnl
137
+ _LT_DECL([], [AS], [1], [Assembler program])dnl
137
138
 
138
139
  test -z "$DLLTOOL" && DLLTOOL=dlltool
139
- _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
140
+ _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
140
141
 
141
142
  test -z "$OBJDUMP" && OBJDUMP=objdump
142
- _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
143
+ _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
143
144
  ])# win32-dll
144
145
 
145
146
  AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
@@ -9,15 +9,15 @@
9
9
 
10
10
  # Generated from ltversion.in.
11
11
 
12
- # serial 3012 ltversion.m4
12
+ # serial 3175 ltversion.m4
13
13
  # This file is part of GNU Libtool
14
14
 
15
- m4_define([LT_PACKAGE_VERSION], [2.2.6])
16
- m4_define([LT_PACKAGE_REVISION], [1.3012])
15
+ m4_define([LT_PACKAGE_VERSION], [2.2.10])
16
+ m4_define([LT_PACKAGE_REVISION], [1.3175])
17
17
 
18
18
  AC_DEFUN([LTVERSION_VERSION],
19
- [macro_version='2.2.6'
20
- macro_revision='1.3012'
19
+ [macro_version='2.2.10'
20
+ macro_revision='1.3175'
21
21
  _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
22
22
  _LT_DECL(, macro_revision, 0)
23
23
  ])
@@ -1,13 +1,13 @@
1
1
  # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
2
2
  #
3
- # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
3
+ # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
4
4
  # Written by Scott James Remnant, 2004.
5
5
  #
6
6
  # This file is free software; the Free Software Foundation gives
7
7
  # unlimited permission to copy and/or distribute it, with or without
8
8
  # modifications, as long as this notice is preserved.
9
9
 
10
- # serial 4 lt~obsolete.m4
10
+ # serial 5 lt~obsolete.m4
11
11
 
12
12
  # These exist entirely to fool aclocal when bootstrapping libtool.
13
13
  #
@@ -77,7 +77,6 @@ m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
77
77
  m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
78
78
  m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
79
79
  m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
80
- m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
81
80
  m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
82
81
  m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
83
82
  m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
@@ -90,3 +89,10 @@ m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
90
89
  m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
91
90
  m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
92
91
  m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
92
+ m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
93
+ m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
94
+ m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
95
+ m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
96
+ m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
97
+ m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
98
+ m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
File without changes
File without changes
File without changes
@@ -34,6 +34,8 @@ Failures are a fact of life, especially when things are distributed. To be resil
34
34
 
35
35
  Enabling `auto_eject_hosts:` ensures that a dead server can be ejected out of the hash ring after `server_failure_limit:` consecutive failures have been encountered on that said server. A non-zero `server_retry_timeout:` ensures that we don't incorrectly mark a server as dead forever especially when the failures were really transient. The combination of `server_retry_timeout:` and `server_failure_limit:` controls the tradeoff between resiliency to permanent and transient failures.
36
36
 
37
+ Note that an ejected server will not be included in the hash ring for any requests until the retry timeout passes. This will lead to data partitioning as keys originally on the ejected server will now be written to a server still in the pool.
38
+
37
39
  To ensure that requests always succeed in the face of server ejections (`auto_eject_hosts:` is enabled), some form of retry must be implemented at the client layer since nutcracker itself does not retry a request. This client-side retry count must be greater than `server_failure_limit:` value, which ensures that the original request has a chance to make it to a live server.
38
40
 
39
41
  ## Timeout
@@ -52,7 +54,7 @@ By default, nutcracker waits indefinitely for any request sent to the server. Ho
52
54
 
53
55
  ## Error Response
54
56
 
55
- Whenever a request encounters failure on a server we usually send to the client a response with the general form - `SERVER_ERROR <errno description>\r\n` (memcached) or `-ERR <errno description>` (redis).
57
+ Whenever a request encounters failure on a server we usually send to the client a response with the general form - `SERVER_ERROR <errno description>\r\n` (memcached) or `-ERR <errno description>` (redis).
56
58
 
57
59
  For example, when a memcache server is down, this error response is usually:
58
60
 
@@ -72,7 +74,7 @@ All memory for incoming requests and outgoing responses is allocated in mbuf. Mb
72
74
  If nutcracker is meant to handle a large number of concurrent client connections, you should set the mbuf size to 512 or 1K bytes.
73
75
 
74
76
  ## Maximum Key Length
75
- The memcache ascii protocol [specification](https://github.com/twitter/twemproxy/blob/master/notes/memcache.txt) limits the maximum length of the key to 250 characters. The key should not include whitespace, or '\r' or '\n' character. For redis, we have no such limitation. However, nutcracker requires the key to be stored in a contiguous memory region. Since all requests and responses in nutcracker are stored in mbuf, the maximum length of the redis key is limited by the size of the maximum available space for data in mbuf (mbuf_data_size()). This means that if you want your redis instances to handle large keys, you might want to choose large mbuf size set using -m or --mbuf-size=N command-line argument.
77
+ The memcache ascii protocol [specification](notes/memcache.txt) limits the maximum length of the key to 250 characters. The key should not include whitespace, or '\r' or '\n' character. For redis, we have no such limitation. However, nutcracker requires the key to be stored in a contiguous memory region. Since all requests and responses in nutcracker are stored in mbuf, the maximum length of the redis key is limited by the size of the maximum available space for data in mbuf (mbuf_data_size()). This means that if you want your redis instances to handle large keys, you might want to choose large mbuf size set using -m or --mbuf-size=N command-line argument.
76
78
 
77
79
  ## Node Names for Consistent Hashing
78
80
 
@@ -116,3 +118,20 @@ For example, the configuration of server pool _beta_, aslo shown below, specifie
116
118
  - 127.0.0.1:6381:1 server2
117
119
  - 127.0.0.1:6382:1 server3
118
120
  - 127.0.0.1:6383:1 server4
121
+
122
+
123
+ ## Graphing Cache-pool State
124
+
125
+ When running nutcracker in production, you often would like to know the list of live and ejected servers at any given time. You can easily answer this question, by generating a time series graph of live and/or dead servers that are part of any cache pool. To do this your graphing client must collect the following stats exposed by nutcracker:
126
+
127
+ - **server_eof** which is incremented when server closes the connection normally which should not happen because we use persistent connections.
128
+ - **server_timedout** is incremented when the connection / request to server timedout.
129
+ - **server_err** is incremented for any other kinds of errors.
130
+
131
+ So, on a given server, the cumulative number of times a server is ejected can be computed as:
132
+
133
+ ```c
134
+ (server_err + server_timedout + server_eof) / server_failure_limit
135
+ ```
136
+
137
+ A diff of the above value between two successive time intervals would generate a nice timeseries graph for ejected servers.
@@ -7,7 +7,7 @@
7
7
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
8
8
  | DEL | Yes | DEL key [key …] |
9
9
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
10
- | DUMP | No | DUMP key |
10
+ | DUMP | Yes | DUMP key |
11
11
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
12
12
  | EXISTS | Yes | EXISTS key |
13
13
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
@@ -37,7 +37,7 @@
37
37
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
38
38
  | RENAMENX | No | RENAMENX key newkey |
39
39
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
40
- | RESTORE | No | RESTORE key ttl serialized-value |
40
+ | RESTORE | Yes | RESTORE key ttl serialized-value |
41
41
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
42
42
  | SORT | No | SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] |
43
43
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
@@ -168,7 +168,7 @@
168
168
  | RPUSHX | Yes | RPUSHX key value |
169
169
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
170
170
 
171
- * RPOPLPUSH support requires that source and destination keys hash to the same server. You can ensure this by using the same [hashtag](https://github.com/twitter/twemproxy/blob/master/notes/recommendation.md#hash-tags) for source and destination key. Twemproxy does no checking on its end to verify that source and destination key hash to the same server, and the RPOPLPUSH command is forwarded to the server that the source key hashes to
171
+ * RPOPLPUSH support requires that source and destination keys hash to the same server. You can ensure this by using the same [hashtag](notes/recommendation.md#hash-tags) for source and destination key. Twemproxy does no checking on its end to verify that source and destination key hash to the same server, and the RPOPLPUSH command is forwarded to the server that the source key hashes to
172
172
 
173
173
  ### Sets
174
174
 
@@ -204,7 +204,7 @@
204
204
  | SUNIONSTORE | Yes* | SUNIONSTORE destination key [key ...] |
205
205
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
206
206
 
207
- * SIDFF, SDIFFSTORE, SINTER, SINTERSTORE, SMOVE, SUNION and SUNIONSTORE support requires that the supplied keys hash to the same server. You can ensure this by using the same [hashtag](https://github.com/twitter/twemproxy/blob/master/notes/recommendation.md#hash-tags) for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
207
+ * SIDFF, SDIFFSTORE, SINTER, SINTERSTORE, SMOVE, SUNION and SUNIONSTORE support requires that the supplied keys hash to the same server. You can ensure this by using the same [hashtag](notes/recommendation.md#hash-tags) for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
208
208
 
209
209
 
210
210
  ### Sorted Sets
@@ -245,7 +245,7 @@
245
245
  | ZUNIONSTORE | Yes* | ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] |
246
246
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
247
247
 
248
- * ZINTERSTORE and ZUNIONSTORE support requires that the supplied keys hash to the same server. You can ensure this by using the same [hashtag](https://github.com/twitter/twemproxy/blob/master/notes/recommendation.md#hash-tags) for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
248
+ * ZINTERSTORE and ZUNIONSTORE support requires that the supplied keys hash to the same server. You can ensure this by using the same [hashtag](notes/recommendation.md#hash-tags) for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
249
249
 
250
250
 
251
251
  ### Pub/Sub
@@ -297,8 +297,8 @@
297
297
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
298
298
  | SCRIPT LOAD | No | SCRIPT LOAD script |
299
299
  +-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
300
-
301
- * EVAL and EVALSHA support is limited to scripts that take at least 1 key. If multiple keys are used, all keys must hash to the same server. You can ensure this by using the same [hashtag](https://github.com/twitter/twemproxy/blob/master/notes/recommendation.md#hash-tags) for all keys. If you use more than 1 key, the proxy does no checking to verify that all keys hash to the same server, and the entire command is forwarded to the server that the first key hashes to
300
+
301
+ * EVAL and EVALSHA support is limited to scripts that take at least 1 key. If multiple keys are used, all keys must hash to the same server. You can ensure this by using the same [hashtag](notes/recommendation.md#hash-tags) for all keys. If you use more than 1 key, the proxy does no checking to verify that all keys hash to the same server, and the entire command is forwarded to the server that the first key hashes to
302
302
 
303
303
  ### Connection
304
304
 
@@ -383,7 +383,7 @@
383
383
 
384
384
  ### redis-benchmark against redis-server
385
385
 
386
- $ redis-benchmark -h <machine-A> -q -t set,get,incr,lpush,lpop,sadd,spop,lpush,lrange -c 100 -p 6379
386
+ $ redis-benchmark -h <machine-A> -q -t set,get,incr,lpush,lpop,sadd,spop,lpush,lrange -c 100 -p 6379
387
387
  SET: 89285.71 requests per second
388
388
  GET: 92592.59 requests per second
389
389
  INCR: 89285.71 requests per second
@@ -412,4 +412,4 @@
412
412
  LRANGE_300 (first 300 elements): 12376.24 requests per second
413
413
  LRANGE_500 (first 450 elements): 8605.85 requests per second
414
414
  LRANGE_600 (first 600 elements): 6587.62 requests per second
415
-
415
+
File without changes
File without changes
File without changes
File without changes
@@ -18,6 +18,11 @@ printf '*3\r\n$3\r\nset\r\n$3\r\nfoo\r\n$3\r\noof\r\n' | socat ${debug} ${timeou
18
18
  printf '*3\r\n$3\r\nset\r\n$3\r\nbar\r\n$3\r\nrab\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
19
19
  printf '*4\r\n$3\r\ndel\r\n$3\r\nfoo\r\n$3\r\nbar\r\n$6\r\nfoobar\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
20
20
 
21
+ printf '\ndump\n'
22
+ printf '*2\r\n$4\r\ndump\r\n$3\r\nfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
23
+ printf '*3\r\n$3\r\nset\r\n$3\r\nfoo\r\n$3\r\noof\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
24
+ printf '*2\r\n$4\r\ndump\r\n$3\r\nfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
25
+
21
26
  printf '\nexists\n'
22
27
  printf '*2\r\n$6\r\nexists\r\n$3\r\nfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
23
28
  printf '*3\r\n$3\r\nset\r\n$3\r\nfoo\r\n$3\r\noof\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
@@ -46,6 +51,10 @@ printf '*3\r\n$7\r\npexpire\r\n$3\r\nfoo\r\n$1\r\n0\r\n' | socat ${debug} ${time
46
51
  printf '*3\r\n$3\r\nset\r\n$3\r\nfoo\r\n$3\r\noof\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
47
52
  printf '*3\r\n$7\r\npexpire\r\n$3\r\nfoo\r\n$1\r\n0\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
48
53
 
54
+ printf '\nrestore\n'
55
+ printf '*2\r\n$3\r\ndel\r\n$3\r\nfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
56
+ printf '*4\r\n$7\r\nrestore\r\n$3\r\nfoo\r\n$1\r\n0\r\n$3\r\noof\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
57
+
49
58
  printf '\npttl\n'
50
59
  printf '*2\r\n$4\r\npttl\r\n$3\r\nfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
51
60
  printf '*3\r\n$3\r\nset\r\n$3\r\nfoo\r\n$3\r\noof\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
@@ -0,0 +1,647 @@
1
+ # Makefile.in generated by automake 1.10 from Makefile.am.
2
+ # src/Makefile. Generated from Makefile.in by configure.
3
+
4
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5
+ # 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
6
+ # This Makefile.in is free software; the Free Software Foundation
7
+ # gives unlimited permission to copy and/or distribute it,
8
+ # with or without modifications, as long as this notice is preserved.
9
+
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
12
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13
+ # PARTICULAR PURPOSE.
14
+
15
+
16
+
17
+
18
+ pkgdatadir = $(datadir)/nutcracker
19
+ pkglibdir = $(libdir)/nutcracker
20
+ pkgincludedir = $(includedir)/nutcracker
21
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
22
+ install_sh_DATA = $(install_sh) -c -m 644
23
+ install_sh_PROGRAM = $(install_sh) -c
24
+ install_sh_SCRIPT = $(install_sh) -c
25
+ INSTALL_HEADER = $(INSTALL_DATA)
26
+ transform = $(program_transform_name)
27
+ NORMAL_INSTALL = :
28
+ PRE_INSTALL = :
29
+ POST_INSTALL = :
30
+ NORMAL_UNINSTALL = :
31
+ PRE_UNINSTALL = :
32
+ POST_UNINSTALL = :
33
+ build_triplet = i386-apple-darwin11.4.2
34
+ host_triplet = i386-apple-darwin11.4.2
35
+ bin_PROGRAMS = nutcracker$(EXEEXT)
36
+ subdir = src
37
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
38
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
39
+ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
40
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
41
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
42
+ $(top_srcdir)/configure.ac
43
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
44
+ $(ACLOCAL_M4)
45
+ mkinstalldirs = $(install_sh) -d
46
+ CONFIG_HEADER = $(top_builddir)/config.h
47
+ CONFIG_CLEAN_FILES =
48
+ am__installdirs = "$(DESTDIR)$(bindir)"
49
+ binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
50
+ PROGRAMS = $(bin_PROGRAMS)
51
+ am_nutcracker_OBJECTS = nc_core.$(OBJEXT) nc_connection.$(OBJEXT) \
52
+ nc_client.$(OBJEXT) nc_server.$(OBJEXT) nc_proxy.$(OBJEXT) \
53
+ nc_message.$(OBJEXT) nc_request.$(OBJEXT) \
54
+ nc_response.$(OBJEXT) nc_mbuf.$(OBJEXT) nc_epoll.$(OBJEXT) \
55
+ nc_kqueue.$(OBJEXT) nc_conf.$(OBJEXT) nc_stats.$(OBJEXT) \
56
+ nc_signal.$(OBJEXT) nc_rbtree.$(OBJEXT) nc_log.$(OBJEXT) \
57
+ nc_string.$(OBJEXT) nc_array.$(OBJEXT) nc_util.$(OBJEXT) \
58
+ nc.$(OBJEXT)
59
+ nutcracker_OBJECTS = $(am_nutcracker_OBJECTS)
60
+ nutcracker_DEPENDENCIES = $(top_builddir)/src/hashkit/libhashkit.a \
61
+ $(top_builddir)/src/proto/libproto.a \
62
+ $(top_builddir)/contrib/yaml-0.1.4/src/.libs/libyaml.a
63
+ DEFAULT_INCLUDES = -I. -I$(top_builddir)
64
+ depcomp = $(SHELL) $(top_srcdir)/config/depcomp
65
+ am__depfiles_maybe = depfiles
66
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
67
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
68
+ LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
69
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
70
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
71
+ CCLD = $(CC)
72
+ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
73
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
74
+ $(LDFLAGS) -o $@
75
+ SOURCES = $(nutcracker_SOURCES)
76
+ DIST_SOURCES = $(nutcracker_SOURCES)
77
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
78
+ html-recursive info-recursive install-data-recursive \
79
+ install-dvi-recursive install-exec-recursive \
80
+ install-html-recursive install-info-recursive \
81
+ install-pdf-recursive install-ps-recursive install-recursive \
82
+ installcheck-recursive installdirs-recursive pdf-recursive \
83
+ ps-recursive uninstall-recursive
84
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
85
+ distclean-recursive maintainer-clean-recursive
86
+ ETAGS = etags
87
+ CTAGS = ctags
88
+ DIST_SUBDIRS = $(SUBDIRS)
89
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
90
+ ACLOCAL = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run aclocal-1.10
91
+ AMTAR = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run tar
92
+ AR = ar
93
+ AUTOCONF = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run autoconf
94
+ AUTOHEADER = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run autoheader
95
+ AUTOMAKE = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run automake-1.10
96
+ AWK = awk
97
+ CC = gcc
98
+ CCDEPMODE = depmode=gcc3
99
+ CFLAGS = -g -O2
100
+ CPP = gcc -E
101
+ CPPFLAGS =
102
+ CXX = g++
103
+ CXXCPP = g++ -E
104
+ CXXDEPMODE = depmode=gcc3
105
+ CXXFLAGS = -g -O2
106
+ CYGPATH_W = echo
107
+ DEFS = -DHAVE_CONFIG_H
108
+ DEPDIR = .deps
109
+ DSYMUTIL = dsymutil
110
+ DUMPBIN =
111
+ ECHO_C = \c
112
+ ECHO_N =
113
+ ECHO_T =
114
+ EGREP = /usr/bin/grep -E
115
+ EXEEXT =
116
+ FGREP = /usr/bin/grep -F
117
+ GREP = /usr/bin/grep
118
+ INSTALL = /usr/bin/install -c
119
+ INSTALL_DATA = ${INSTALL} -m 644
120
+ INSTALL_PROGRAM = ${INSTALL}
121
+ INSTALL_SCRIPT = ${INSTALL}
122
+ INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
123
+ LD = /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
124
+ LDFLAGS =
125
+ LIBOBJS =
126
+ LIBS = -lpthread -lm
127
+ LIBTOOL = $(SHELL) $(top_builddir)/libtool
128
+ LIPO = lipo
129
+ LN_S = ln -s
130
+ LTLIBOBJS =
131
+ MAKEINFO = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run makeinfo
132
+ MKDIR_P = ../config/install-sh -c -d
133
+ NM = /usr/bin/nm
134
+ NMEDIT = nmedit
135
+ OBJDUMP = false
136
+ OBJEXT = o
137
+ OTOOL = otool
138
+ OTOOL64 = :
139
+ PACKAGE = nutcracker
140
+ PACKAGE_BUGREPORT = manj@twitter.com
141
+ PACKAGE_NAME = nutcracker
142
+ PACKAGE_STRING = nutcracker 0.2.4
143
+ PACKAGE_TARNAME = nutcracker
144
+ PACKAGE_URL =
145
+ PACKAGE_VERSION = 0.2.4
146
+ PATH_SEPARATOR = :
147
+ RANLIB = ranlib
148
+ SED = /usr/bin/sed
149
+ SET_MAKE =
150
+ SHELL = /bin/sh
151
+ STRIP = strip
152
+ VERSION = 0.2.4
153
+ abs_builddir = /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/src
154
+ abs_srcdir = /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/src
155
+ abs_top_builddir = /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd
156
+ abs_top_srcdir = /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd
157
+ ac_ct_CC = gcc
158
+ ac_ct_CXX = g++
159
+ ac_ct_DUMPBIN =
160
+ am__include = include
161
+ am__leading_dot = .
162
+ am__quote =
163
+ am__tar = ${AMTAR} chof - "$$tardir"
164
+ am__untar = ${AMTAR} xf -
165
+ bindir = ${exec_prefix}/bin
166
+ build = i386-apple-darwin11.4.2
167
+ build_alias =
168
+ build_cpu = i386
169
+ build_os = darwin11.4.2
170
+ build_vendor = apple
171
+ builddir = .
172
+ datadir = ${datarootdir}
173
+ datarootdir = ${prefix}/share
174
+ docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
175
+ dvidir = ${docdir}
176
+ exec_prefix = ${prefix}
177
+ host = i386-apple-darwin11.4.2
178
+ host_alias =
179
+ host_cpu = i386
180
+ host_os = darwin11.4.2
181
+ host_vendor = apple
182
+ htmldir = ${docdir}
183
+ includedir = ${prefix}/include
184
+ infodir = ${datarootdir}/info
185
+ install_sh = $(SHELL) /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/install-sh
186
+ libdir = ${exec_prefix}/lib
187
+ libexecdir = ${exec_prefix}/libexec
188
+ localedir = ${datarootdir}/locale
189
+ localstatedir = ${prefix}/var
190
+ mandir = ${datarootdir}/man
191
+ mkdir_p = $(top_builddir)/config/install-sh -c -d
192
+ oldincludedir = /usr/include
193
+ pdfdir = ${docdir}
194
+ prefix = /usr/local
195
+ program_transform_name = s,x,x,
196
+ psdir = ${docdir}
197
+ sbindir = ${exec_prefix}/sbin
198
+ sharedstatedir = ${prefix}/com
199
+ srcdir = .
200
+ subdirs = contrib/yaml-0.1.4
201
+ sysconfdir = ${prefix}/etc
202
+ target_alias =
203
+ top_build_prefix = ../
204
+ top_builddir = ..
205
+ top_srcdir = ..
206
+ MAINTAINERCLEANFILES = Makefile.in
207
+ AM_CPPFLAGS = -D_GNU_SOURCE -D_XOPEN_SOURCE -I \
208
+ $(top_srcdir)/src/hashkit -I $(top_srcdir)/src/proto -I \
209
+ $(top_srcdir)/contrib/yaml-0.1.4/include
210
+ AM_CFLAGS = -Wall -Wshadow -Wpointer-arith -Winline -Wunused-function \
211
+ -Wunused-variable -Wunused-value -Wno-unused-parameter \
212
+ -Wno-unused-value -Wconversion -Wsign-compare \
213
+ -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls \
214
+ -Wmissing-declarations
215
+ AM_LDFLAGS = -lm -lpthread -rdynamic
216
+ SUBDIRS = hashkit proto
217
+ nutcracker_SOURCES = \
218
+ nc_core.c nc_core.h \
219
+ nc_connection.c nc_connection.h \
220
+ nc_client.c nc_client.h \
221
+ nc_server.c nc_server.h \
222
+ nc_proxy.c nc_proxy.h \
223
+ nc_message.c nc_message.h \
224
+ nc_request.c \
225
+ nc_response.c \
226
+ nc_mbuf.c nc_mbuf.h \
227
+ nc_epoll.c nc_kqueue.c nc_event.h \
228
+ nc_conf.c nc_conf.h \
229
+ nc_stats.c nc_stats.h \
230
+ nc_signal.c nc_signal.h \
231
+ nc_rbtree.c nc_rbtree.h \
232
+ nc_log.c nc_log.h \
233
+ nc_string.c nc_string.h \
234
+ nc_array.c nc_array.h \
235
+ nc_util.c nc_util.h \
236
+ nc_queue.h \
237
+ nc.c
238
+
239
+ nutcracker_LDADD = $(top_builddir)/src/hashkit/libhashkit.a \
240
+ $(top_builddir)/src/proto/libproto.a \
241
+ $(top_builddir)/contrib/yaml-0.1.4/src/.libs/libyaml.a
242
+ all: all-recursive
243
+
244
+ .SUFFIXES:
245
+ .SUFFIXES: .c .lo .o .obj
246
+ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
247
+ @for dep in $?; do \
248
+ case '$(am__configure_deps)' in \
249
+ *$$dep*) \
250
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
251
+ && exit 0; \
252
+ exit 1;; \
253
+ esac; \
254
+ done; \
255
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
256
+ cd $(top_srcdir) && \
257
+ $(AUTOMAKE) --foreign src/Makefile
258
+ .PRECIOUS: Makefile
259
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
260
+ @case '$?' in \
261
+ *config.status*) \
262
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
263
+ *) \
264
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
265
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
266
+ esac;
267
+
268
+ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
269
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
270
+
271
+ $(top_srcdir)/configure: $(am__configure_deps)
272
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
273
+ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
274
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
275
+ install-binPROGRAMS: $(bin_PROGRAMS)
276
+ @$(NORMAL_INSTALL)
277
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
278
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
279
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
280
+ if test -f $$p \
281
+ || test -f $$p1 \
282
+ ; then \
283
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
284
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
285
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
286
+ else :; fi; \
287
+ done
288
+
289
+ uninstall-binPROGRAMS:
290
+ @$(NORMAL_UNINSTALL)
291
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
292
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
293
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
294
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
295
+ done
296
+
297
+ clean-binPROGRAMS:
298
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
299
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
300
+ echo " rm -f $$p $$f"; \
301
+ rm -f $$p $$f ; \
302
+ done
303
+ nutcracker$(EXEEXT): $(nutcracker_OBJECTS) $(nutcracker_DEPENDENCIES)
304
+ @rm -f nutcracker$(EXEEXT)
305
+ $(LINK) $(nutcracker_OBJECTS) $(nutcracker_LDADD) $(LIBS)
306
+
307
+ mostlyclean-compile:
308
+ -rm -f *.$(OBJEXT)
309
+
310
+ distclean-compile:
311
+ -rm -f *.tab.c
312
+
313
+ include ./$(DEPDIR)/nc.Po
314
+ include ./$(DEPDIR)/nc_array.Po
315
+ include ./$(DEPDIR)/nc_client.Po
316
+ include ./$(DEPDIR)/nc_conf.Po
317
+ include ./$(DEPDIR)/nc_connection.Po
318
+ include ./$(DEPDIR)/nc_core.Po
319
+ include ./$(DEPDIR)/nc_epoll.Po
320
+ include ./$(DEPDIR)/nc_kqueue.Po
321
+ include ./$(DEPDIR)/nc_log.Po
322
+ include ./$(DEPDIR)/nc_mbuf.Po
323
+ include ./$(DEPDIR)/nc_message.Po
324
+ include ./$(DEPDIR)/nc_proxy.Po
325
+ include ./$(DEPDIR)/nc_rbtree.Po
326
+ include ./$(DEPDIR)/nc_request.Po
327
+ include ./$(DEPDIR)/nc_response.Po
328
+ include ./$(DEPDIR)/nc_server.Po
329
+ include ./$(DEPDIR)/nc_signal.Po
330
+ include ./$(DEPDIR)/nc_stats.Po
331
+ include ./$(DEPDIR)/nc_string.Po
332
+ include ./$(DEPDIR)/nc_util.Po
333
+
334
+ .c.o:
335
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
336
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
337
+ # source='$<' object='$@' libtool=no \
338
+ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
339
+ # $(COMPILE) -c $<
340
+
341
+ .c.obj:
342
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
343
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
344
+ # source='$<' object='$@' libtool=no \
345
+ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
346
+ # $(COMPILE) -c `$(CYGPATH_W) '$<'`
347
+
348
+ .c.lo:
349
+ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
350
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
351
+ # source='$<' object='$@' libtool=yes \
352
+ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
353
+ # $(LTCOMPILE) -c -o $@ $<
354
+
355
+ mostlyclean-libtool:
356
+ -rm -f *.lo
357
+
358
+ clean-libtool:
359
+ -rm -rf .libs _libs
360
+
361
+ # This directory's subdirectories are mostly independent; you can cd
362
+ # into them and run `make' without going through this Makefile.
363
+ # To change the values of `make' variables: instead of editing Makefiles,
364
+ # (1) if the variable is set in `config.status', edit `config.status'
365
+ # (which will cause the Makefiles to be regenerated when you run `make');
366
+ # (2) otherwise, pass the desired values on the `make' command line.
367
+ $(RECURSIVE_TARGETS):
368
+ @failcom='exit 1'; \
369
+ for f in x $$MAKEFLAGS; do \
370
+ case $$f in \
371
+ *=* | --[!k]*);; \
372
+ *k*) failcom='fail=yes';; \
373
+ esac; \
374
+ done; \
375
+ dot_seen=no; \
376
+ target=`echo $@ | sed s/-recursive//`; \
377
+ list='$(SUBDIRS)'; for subdir in $$list; do \
378
+ echo "Making $$target in $$subdir"; \
379
+ if test "$$subdir" = "."; then \
380
+ dot_seen=yes; \
381
+ local_target="$$target-am"; \
382
+ else \
383
+ local_target="$$target"; \
384
+ fi; \
385
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
386
+ || eval $$failcom; \
387
+ done; \
388
+ if test "$$dot_seen" = "no"; then \
389
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
390
+ fi; test -z "$$fail"
391
+
392
+ $(RECURSIVE_CLEAN_TARGETS):
393
+ @failcom='exit 1'; \
394
+ for f in x $$MAKEFLAGS; do \
395
+ case $$f in \
396
+ *=* | --[!k]*);; \
397
+ *k*) failcom='fail=yes';; \
398
+ esac; \
399
+ done; \
400
+ dot_seen=no; \
401
+ case "$@" in \
402
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
403
+ *) list='$(SUBDIRS)' ;; \
404
+ esac; \
405
+ rev=''; for subdir in $$list; do \
406
+ if test "$$subdir" = "."; then :; else \
407
+ rev="$$subdir $$rev"; \
408
+ fi; \
409
+ done; \
410
+ rev="$$rev ."; \
411
+ target=`echo $@ | sed s/-recursive//`; \
412
+ for subdir in $$rev; do \
413
+ echo "Making $$target in $$subdir"; \
414
+ if test "$$subdir" = "."; then \
415
+ local_target="$$target-am"; \
416
+ else \
417
+ local_target="$$target"; \
418
+ fi; \
419
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
420
+ || eval $$failcom; \
421
+ done && test -z "$$fail"
422
+ tags-recursive:
423
+ list='$(SUBDIRS)'; for subdir in $$list; do \
424
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
425
+ done
426
+ ctags-recursive:
427
+ list='$(SUBDIRS)'; for subdir in $$list; do \
428
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
429
+ done
430
+
431
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
432
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
433
+ unique=`for i in $$list; do \
434
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
435
+ done | \
436
+ $(AWK) ' { files[$$0] = 1; } \
437
+ END { for (i in files) print i; }'`; \
438
+ mkid -fID $$unique
439
+ tags: TAGS
440
+
441
+ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
442
+ $(TAGS_FILES) $(LISP)
443
+ tags=; \
444
+ here=`pwd`; \
445
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
446
+ include_option=--etags-include; \
447
+ empty_fix=.; \
448
+ else \
449
+ include_option=--include; \
450
+ empty_fix=; \
451
+ fi; \
452
+ list='$(SUBDIRS)'; for subdir in $$list; do \
453
+ if test "$$subdir" = .; then :; else \
454
+ test ! -f $$subdir/TAGS || \
455
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
456
+ fi; \
457
+ done; \
458
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
459
+ unique=`for i in $$list; do \
460
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
461
+ done | \
462
+ $(AWK) ' { files[$$0] = 1; } \
463
+ END { for (i in files) print i; }'`; \
464
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
465
+ test -n "$$unique" || unique=$$empty_fix; \
466
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
467
+ $$tags $$unique; \
468
+ fi
469
+ ctags: CTAGS
470
+ CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
471
+ $(TAGS_FILES) $(LISP)
472
+ tags=; \
473
+ here=`pwd`; \
474
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
475
+ unique=`for i in $$list; do \
476
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
477
+ done | \
478
+ $(AWK) ' { files[$$0] = 1; } \
479
+ END { for (i in files) print i; }'`; \
480
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
481
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
482
+ $$tags $$unique
483
+
484
+ GTAGS:
485
+ here=`$(am__cd) $(top_builddir) && pwd` \
486
+ && cd $(top_srcdir) \
487
+ && gtags -i $(GTAGS_ARGS) $$here
488
+
489
+ distclean-tags:
490
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
491
+
492
+ distdir: $(DISTFILES)
493
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
494
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
495
+ list='$(DISTFILES)'; \
496
+ dist_files=`for file in $$list; do echo $$file; done | \
497
+ sed -e "s|^$$srcdirstrip/||;t" \
498
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
499
+ case $$dist_files in \
500
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
501
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
502
+ sort -u` ;; \
503
+ esac; \
504
+ for file in $$dist_files; do \
505
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
506
+ if test -d $$d/$$file; then \
507
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
508
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
509
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
510
+ fi; \
511
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
512
+ else \
513
+ test -f $(distdir)/$$file \
514
+ || cp -p $$d/$$file $(distdir)/$$file \
515
+ || exit 1; \
516
+ fi; \
517
+ done
518
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
519
+ if test "$$subdir" = .; then :; else \
520
+ test -d "$(distdir)/$$subdir" \
521
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
522
+ || exit 1; \
523
+ distdir=`$(am__cd) $(distdir) && pwd`; \
524
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
525
+ (cd $$subdir && \
526
+ $(MAKE) $(AM_MAKEFLAGS) \
527
+ top_distdir="$$top_distdir" \
528
+ distdir="$$distdir/$$subdir" \
529
+ am__remove_distdir=: \
530
+ am__skip_length_check=: \
531
+ distdir) \
532
+ || exit 1; \
533
+ fi; \
534
+ done
535
+ check-am: all-am
536
+ check: check-recursive
537
+ all-am: Makefile $(PROGRAMS)
538
+ installdirs: installdirs-recursive
539
+ installdirs-am:
540
+ for dir in "$(DESTDIR)$(bindir)"; do \
541
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
542
+ done
543
+ install: install-recursive
544
+ install-exec: install-exec-recursive
545
+ install-data: install-data-recursive
546
+ uninstall: uninstall-recursive
547
+
548
+ install-am: all-am
549
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
550
+
551
+ installcheck: installcheck-recursive
552
+ install-strip:
553
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
554
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
555
+ `test -z '$(STRIP)' || \
556
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
557
+ mostlyclean-generic:
558
+
559
+ clean-generic:
560
+
561
+ distclean-generic:
562
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
563
+
564
+ maintainer-clean-generic:
565
+ @echo "This command is intended for maintainers to use"
566
+ @echo "it deletes files that may require special tools to rebuild."
567
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
568
+ clean: clean-recursive
569
+
570
+ clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
571
+
572
+ distclean: distclean-recursive
573
+ -rm -rf ./$(DEPDIR)
574
+ -rm -f Makefile
575
+ distclean-am: clean-am distclean-compile distclean-generic \
576
+ distclean-tags
577
+
578
+ dvi: dvi-recursive
579
+
580
+ dvi-am:
581
+
582
+ html: html-recursive
583
+
584
+ info: info-recursive
585
+
586
+ info-am:
587
+
588
+ install-data-am:
589
+
590
+ install-dvi: install-dvi-recursive
591
+
592
+ install-exec-am: install-binPROGRAMS
593
+
594
+ install-html: install-html-recursive
595
+
596
+ install-info: install-info-recursive
597
+
598
+ install-man:
599
+
600
+ install-pdf: install-pdf-recursive
601
+
602
+ install-ps: install-ps-recursive
603
+
604
+ installcheck-am:
605
+
606
+ maintainer-clean: maintainer-clean-recursive
607
+ -rm -rf ./$(DEPDIR)
608
+ -rm -f Makefile
609
+ maintainer-clean-am: distclean-am maintainer-clean-generic
610
+
611
+ mostlyclean: mostlyclean-recursive
612
+
613
+ mostlyclean-am: mostlyclean-compile mostlyclean-generic \
614
+ mostlyclean-libtool
615
+
616
+ pdf: pdf-recursive
617
+
618
+ pdf-am:
619
+
620
+ ps: ps-recursive
621
+
622
+ ps-am:
623
+
624
+ uninstall-am: uninstall-binPROGRAMS
625
+
626
+ .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
627
+ install-strip
628
+
629
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
630
+ all all-am check check-am clean clean-binPROGRAMS \
631
+ clean-generic clean-libtool ctags ctags-recursive distclean \
632
+ distclean-compile distclean-generic distclean-libtool \
633
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
634
+ install install-am install-binPROGRAMS install-data \
635
+ install-data-am install-dvi install-dvi-am install-exec \
636
+ install-exec-am install-html install-html-am install-info \
637
+ install-info-am install-man install-pdf install-pdf-am \
638
+ install-ps install-ps-am install-strip installcheck \
639
+ installcheck-am installdirs installdirs-am maintainer-clean \
640
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
641
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
642
+ tags tags-recursive uninstall uninstall-am \
643
+ uninstall-binPROGRAMS
644
+
645
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
646
+ # Otherwise a system limit (for SysV at least) may be exceeded.
647
+ .NOEXPORT: