nutcracker 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. data/README.md +22 -0
  2. data/Rakefile +55 -0
  3. data/bin/nutcracker +2 -0
  4. data/ext/nutcracker/ChangeLog +66 -0
  5. data/ext/nutcracker/LICENSE +177 -0
  6. data/ext/nutcracker/Makefile.am +7 -0
  7. data/ext/nutcracker/Makefile.in +726 -0
  8. data/ext/nutcracker/NOTICE +124 -0
  9. data/ext/nutcracker/README.md +240 -0
  10. data/ext/nutcracker/aclocal.m4 +956 -0
  11. data/ext/nutcracker/conf/nutcracker.leaf.yml +10 -0
  12. data/ext/nutcracker/conf/nutcracker.root.yml +8 -0
  13. data/ext/nutcracker/conf/nutcracker.yml +67 -0
  14. data/ext/nutcracker/config.h.in +316 -0
  15. data/ext/nutcracker/config/config.guess +1561 -0
  16. data/ext/nutcracker/config/config.sub +1686 -0
  17. data/ext/nutcracker/config/depcomp +630 -0
  18. data/ext/nutcracker/config/install-sh +520 -0
  19. data/ext/nutcracker/config/ltmain.sh +8413 -0
  20. data/ext/nutcracker/config/missing +376 -0
  21. data/ext/nutcracker/configure +18862 -0
  22. data/ext/nutcracker/configure.ac +155 -0
  23. data/ext/nutcracker/contrib/Makefile.am +3 -0
  24. data/ext/nutcracker/contrib/Makefile.in +560 -0
  25. data/ext/nutcracker/contrib/yaml-0.1.4.tar.gz +0 -0
  26. data/ext/nutcracker/contrib/yaml-0.1.4/LICENSE +19 -0
  27. data/ext/nutcracker/contrib/yaml-0.1.4/Makefile.am +20 -0
  28. data/ext/nutcracker/contrib/yaml-0.1.4/Makefile.in +736 -0
  29. data/ext/nutcracker/contrib/yaml-0.1.4/README +27 -0
  30. data/ext/nutcracker/contrib/yaml-0.1.4/aclocal.m4 +956 -0
  31. data/ext/nutcracker/contrib/yaml-0.1.4/config.h.in +80 -0
  32. data/ext/nutcracker/contrib/yaml-0.1.4/config/config.guess +1561 -0
  33. data/ext/nutcracker/contrib/yaml-0.1.4/config/config.sub +1686 -0
  34. data/ext/nutcracker/contrib/yaml-0.1.4/config/depcomp +630 -0
  35. data/ext/nutcracker/contrib/yaml-0.1.4/config/install-sh +520 -0
  36. data/ext/nutcracker/contrib/yaml-0.1.4/config/ltmain.sh +8406 -0
  37. data/ext/nutcracker/contrib/yaml-0.1.4/config/missing +376 -0
  38. data/ext/nutcracker/contrib/yaml-0.1.4/configure +13085 -0
  39. data/ext/nutcracker/contrib/yaml-0.1.4/configure.ac +75 -0
  40. data/ext/nutcracker/contrib/yaml-0.1.4/doc/doxygen.cfg +222 -0
  41. data/ext/nutcracker/contrib/yaml-0.1.4/include/yaml.h +1971 -0
  42. data/ext/nutcracker/contrib/yaml-0.1.4/m4/libtool.m4 +7357 -0
  43. data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltoptions.m4 +368 -0
  44. data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltsugar.m4 +123 -0
  45. data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltversion.m4 +23 -0
  46. data/ext/nutcracker/contrib/yaml-0.1.4/m4/lt~obsolete.m4 +92 -0
  47. data/ext/nutcracker/contrib/yaml-0.1.4/src/Makefile.am +4 -0
  48. data/ext/nutcracker/contrib/yaml-0.1.4/src/Makefile.in +484 -0
  49. data/ext/nutcracker/contrib/yaml-0.1.4/src/api.c +1392 -0
  50. data/ext/nutcracker/contrib/yaml-0.1.4/src/dumper.c +394 -0
  51. data/ext/nutcracker/contrib/yaml-0.1.4/src/emitter.c +2329 -0
  52. data/ext/nutcracker/contrib/yaml-0.1.4/src/loader.c +432 -0
  53. data/ext/nutcracker/contrib/yaml-0.1.4/src/parser.c +1374 -0
  54. data/ext/nutcracker/contrib/yaml-0.1.4/src/reader.c +465 -0
  55. data/ext/nutcracker/contrib/yaml-0.1.4/src/scanner.c +3570 -0
  56. data/ext/nutcracker/contrib/yaml-0.1.4/src/writer.c +141 -0
  57. data/ext/nutcracker/contrib/yaml-0.1.4/src/yaml_private.h +640 -0
  58. data/ext/nutcracker/contrib/yaml-0.1.4/tests/Makefile.am +8 -0
  59. data/ext/nutcracker/contrib/yaml-0.1.4/tests/Makefile.in +675 -0
  60. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor-alt.c +800 -0
  61. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor.c +1130 -0
  62. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter-alt.c +217 -0
  63. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter.c +202 -0
  64. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-dumper.c +311 -0
  65. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-emitter.c +327 -0
  66. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-loader.c +63 -0
  67. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-parser.c +63 -0
  68. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-scanner.c +63 -0
  69. data/ext/nutcracker/contrib/yaml-0.1.4/tests/test-reader.c +354 -0
  70. data/ext/nutcracker/contrib/yaml-0.1.4/tests/test-version.c +29 -0
  71. data/ext/nutcracker/extconf.rb +5 -0
  72. data/ext/nutcracker/m4/libtool.m4 +7376 -0
  73. data/ext/nutcracker/m4/ltoptions.m4 +368 -0
  74. data/ext/nutcracker/m4/ltsugar.m4 +123 -0
  75. data/ext/nutcracker/m4/ltversion.m4 +23 -0
  76. data/ext/nutcracker/m4/lt~obsolete.m4 +92 -0
  77. data/ext/nutcracker/notes/c-styleguide.txt +425 -0
  78. data/ext/nutcracker/notes/debug.txt +96 -0
  79. data/ext/nutcracker/notes/memcache.txt +123 -0
  80. data/ext/nutcracker/notes/recommendation.md +118 -0
  81. data/ext/nutcracker/notes/redis.md +415 -0
  82. data/ext/nutcracker/notes/socket.txt +131 -0
  83. data/ext/nutcracker/scripts/multi_get.sh +26 -0
  84. data/ext/nutcracker/scripts/nutcracker.init +73 -0
  85. data/ext/nutcracker/scripts/nutcracker.spec +52 -0
  86. data/ext/nutcracker/scripts/pipelined_read.sh +23 -0
  87. data/ext/nutcracker/scripts/pipelined_write.sh +29 -0
  88. data/ext/nutcracker/scripts/populate_memcached.sh +24 -0
  89. data/ext/nutcracker/scripts/redis-check.py +23 -0
  90. data/ext/nutcracker/scripts/redis-check.sh +564 -0
  91. data/ext/nutcracker/src/Makefile.am +46 -0
  92. data/ext/nutcracker/src/Makefile.in +726 -0
  93. data/ext/nutcracker/src/hashkit/Makefile.am +22 -0
  94. data/ext/nutcracker/src/hashkit/Makefile.in +501 -0
  95. data/ext/nutcracker/src/hashkit/nc_crc32.c +105 -0
  96. data/ext/nutcracker/src/hashkit/nc_fnv.c +82 -0
  97. data/ext/nutcracker/src/hashkit/nc_hashkit.h +74 -0
  98. data/ext/nutcracker/src/hashkit/nc_hsieh.c +93 -0
  99. data/ext/nutcracker/src/hashkit/nc_jenkins.c +230 -0
  100. data/ext/nutcracker/src/hashkit/nc_ketama.c +240 -0
  101. data/ext/nutcracker/src/hashkit/nc_md5.c +379 -0
  102. data/ext/nutcracker/src/hashkit/nc_modula.c +144 -0
  103. data/ext/nutcracker/src/hashkit/nc_murmur.c +99 -0
  104. data/ext/nutcracker/src/hashkit/nc_one_at_a_time.c +51 -0
  105. data/ext/nutcracker/src/hashkit/nc_random.c +146 -0
  106. data/ext/nutcracker/src/nc.c +573 -0
  107. data/ext/nutcracker/src/nc_array.c +204 -0
  108. data/ext/nutcracker/src/nc_array.h +73 -0
  109. data/ext/nutcracker/src/nc_client.c +189 -0
  110. data/ext/nutcracker/src/nc_client.h +28 -0
  111. data/ext/nutcracker/src/nc_conf.c +1766 -0
  112. data/ext/nutcracker/src/nc_conf.h +134 -0
  113. data/ext/nutcracker/src/nc_connection.c +392 -0
  114. data/ext/nutcracker/src/nc_connection.h +99 -0
  115. data/ext/nutcracker/src/nc_core.c +334 -0
  116. data/ext/nutcracker/src/nc_core.h +131 -0
  117. data/ext/nutcracker/src/nc_event.c +214 -0
  118. data/ext/nutcracker/src/nc_event.h +39 -0
  119. data/ext/nutcracker/src/nc_log.c +254 -0
  120. data/ext/nutcracker/src/nc_log.h +120 -0
  121. data/ext/nutcracker/src/nc_mbuf.c +285 -0
  122. data/ext/nutcracker/src/nc_mbuf.h +67 -0
  123. data/ext/nutcracker/src/nc_message.c +828 -0
  124. data/ext/nutcracker/src/nc_message.h +253 -0
  125. data/ext/nutcracker/src/nc_proxy.c +359 -0
  126. data/ext/nutcracker/src/nc_proxy.h +34 -0
  127. data/ext/nutcracker/src/nc_queue.h +788 -0
  128. data/ext/nutcracker/src/nc_rbtree.c +348 -0
  129. data/ext/nutcracker/src/nc_rbtree.h +47 -0
  130. data/ext/nutcracker/src/nc_request.c +588 -0
  131. data/ext/nutcracker/src/nc_response.c +332 -0
  132. data/ext/nutcracker/src/nc_server.c +841 -0
  133. data/ext/nutcracker/src/nc_server.h +143 -0
  134. data/ext/nutcracker/src/nc_signal.c +131 -0
  135. data/ext/nutcracker/src/nc_signal.h +34 -0
  136. data/ext/nutcracker/src/nc_stats.c +1188 -0
  137. data/ext/nutcracker/src/nc_stats.h +206 -0
  138. data/ext/nutcracker/src/nc_string.c +109 -0
  139. data/ext/nutcracker/src/nc_string.h +112 -0
  140. data/ext/nutcracker/src/nc_util.c +619 -0
  141. data/ext/nutcracker/src/nc_util.h +214 -0
  142. data/ext/nutcracker/src/proto/Makefile.am +14 -0
  143. data/ext/nutcracker/src/proto/Makefile.in +482 -0
  144. data/ext/nutcracker/src/proto/nc_memcache.c +1306 -0
  145. data/ext/nutcracker/src/proto/nc_proto.h +155 -0
  146. data/ext/nutcracker/src/proto/nc_redis.c +2102 -0
  147. data/lib/nutcracker.rb +7 -0
  148. data/lib/nutcracker/version.rb +3 -0
  149. metadata +194 -0
@@ -0,0 +1,630 @@
1
+ #! /bin/sh
2
+ # depcomp - compile a program generating dependencies as side-effects
3
+
4
+ scriptversion=2009-04-28.21; # UTC
5
+
6
+ # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7
+ # Software Foundation, Inc.
8
+
9
+ # This program is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation; either version 2, or (at your option)
12
+ # any later version.
13
+
14
+ # This program is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
21
+
22
+ # As a special exception to the GNU General Public License, if you
23
+ # distribute this file as part of a program that contains a
24
+ # configuration script generated by Autoconf, you may include it under
25
+ # the same distribution terms that you use for the rest of that program.
26
+
27
+ # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28
+
29
+ case $1 in
30
+ '')
31
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
32
+ exit 1;
33
+ ;;
34
+ -h | --h*)
35
+ cat <<\EOF
36
+ Usage: depcomp [--help] [--version] PROGRAM [ARGS]
37
+
38
+ Run PROGRAMS ARGS to compile a file, generating dependencies
39
+ as side-effects.
40
+
41
+ Environment variables:
42
+ depmode Dependency tracking mode.
43
+ source Source file read by `PROGRAMS ARGS'.
44
+ object Object file output by `PROGRAMS ARGS'.
45
+ DEPDIR directory where to store dependencies.
46
+ depfile Dependency file to output.
47
+ tmpdepfile Temporary file to use when outputing dependencies.
48
+ libtool Whether libtool is used (yes/no).
49
+
50
+ Report bugs to <bug-automake@gnu.org>.
51
+ EOF
52
+ exit $?
53
+ ;;
54
+ -v | --v*)
55
+ echo "depcomp $scriptversion"
56
+ exit $?
57
+ ;;
58
+ esac
59
+
60
+ if test -z "$depmode" || test -z "$source" || test -z "$object"; then
61
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
62
+ exit 1
63
+ fi
64
+
65
+ # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66
+ depfile=${depfile-`echo "$object" |
67
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68
+ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69
+
70
+ rm -f "$tmpdepfile"
71
+
72
+ # Some modes work just like other modes, but use different flags. We
73
+ # parameterize here, but still list the modes in the big case below,
74
+ # to make depend.m4 easier to write. Note that we *cannot* use a case
75
+ # here, because this file can only contain one case statement.
76
+ if test "$depmode" = hp; then
77
+ # HP compiler uses -M and no extra arg.
78
+ gccflag=-M
79
+ depmode=gcc
80
+ fi
81
+
82
+ if test "$depmode" = dashXmstdout; then
83
+ # This is just like dashmstdout with a different argument.
84
+ dashmflag=-xM
85
+ depmode=dashmstdout
86
+ fi
87
+
88
+ cygpath_u="cygpath -u -f -"
89
+ if test "$depmode" = msvcmsys; then
90
+ # This is just like msvisualcpp but w/o cygpath translation.
91
+ # Just convert the backslash-escaped backslashes to single forward
92
+ # slashes to satisfy depend.m4
93
+ cygpath_u="sed s,\\\\\\\\,/,g"
94
+ depmode=msvisualcpp
95
+ fi
96
+
97
+ case "$depmode" in
98
+ gcc3)
99
+ ## gcc 3 implements dependency tracking that does exactly what
100
+ ## we want. Yay! Note: for some reason libtool 1.4 doesn't like
101
+ ## it if -MD -MP comes after the -MF stuff. Hmm.
102
+ ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
103
+ ## the command line argument order; so add the flags where they
104
+ ## appear in depend2.am. Note that the slowdown incurred here
105
+ ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
106
+ for arg
107
+ do
108
+ case $arg in
109
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
110
+ *) set fnord "$@" "$arg" ;;
111
+ esac
112
+ shift # fnord
113
+ shift # $arg
114
+ done
115
+ "$@"
116
+ stat=$?
117
+ if test $stat -eq 0; then :
118
+ else
119
+ rm -f "$tmpdepfile"
120
+ exit $stat
121
+ fi
122
+ mv "$tmpdepfile" "$depfile"
123
+ ;;
124
+
125
+ gcc)
126
+ ## There are various ways to get dependency output from gcc. Here's
127
+ ## why we pick this rather obscure method:
128
+ ## - Don't want to use -MD because we'd like the dependencies to end
129
+ ## up in a subdir. Having to rename by hand is ugly.
130
+ ## (We might end up doing this anyway to support other compilers.)
131
+ ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
132
+ ## -MM, not -M (despite what the docs say).
133
+ ## - Using -M directly means running the compiler twice (even worse
134
+ ## than renaming).
135
+ if test -z "$gccflag"; then
136
+ gccflag=-MD,
137
+ fi
138
+ "$@" -Wp,"$gccflag$tmpdepfile"
139
+ stat=$?
140
+ if test $stat -eq 0; then :
141
+ else
142
+ rm -f "$tmpdepfile"
143
+ exit $stat
144
+ fi
145
+ rm -f "$depfile"
146
+ echo "$object : \\" > "$depfile"
147
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
148
+ ## The second -e expression handles DOS-style file names with drive letters.
149
+ sed -e 's/^[^:]*: / /' \
150
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
151
+ ## This next piece of magic avoids the `deleted header file' problem.
152
+ ## The problem is that when a header file which appears in a .P file
153
+ ## is deleted, the dependency causes make to die (because there is
154
+ ## typically no way to rebuild the header). We avoid this by adding
155
+ ## dummy dependencies for each header file. Too bad gcc doesn't do
156
+ ## this for us directly.
157
+ tr ' ' '
158
+ ' < "$tmpdepfile" |
159
+ ## Some versions of gcc put a space before the `:'. On the theory
160
+ ## that the space means something, we add a space to the output as
161
+ ## well.
162
+ ## Some versions of the HPUX 10.20 sed can't process this invocation
163
+ ## correctly. Breaking it into two sed invocations is a workaround.
164
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
165
+ rm -f "$tmpdepfile"
166
+ ;;
167
+
168
+ hp)
169
+ # This case exists only to let depend.m4 do its work. It works by
170
+ # looking at the text of this script. This case will never be run,
171
+ # since it is checked for above.
172
+ exit 1
173
+ ;;
174
+
175
+ sgi)
176
+ if test "$libtool" = yes; then
177
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
178
+ else
179
+ "$@" -MDupdate "$tmpdepfile"
180
+ fi
181
+ stat=$?
182
+ if test $stat -eq 0; then :
183
+ else
184
+ rm -f "$tmpdepfile"
185
+ exit $stat
186
+ fi
187
+ rm -f "$depfile"
188
+
189
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
190
+ echo "$object : \\" > "$depfile"
191
+
192
+ # Clip off the initial element (the dependent). Don't try to be
193
+ # clever and replace this with sed code, as IRIX sed won't handle
194
+ # lines with more than a fixed number of characters (4096 in
195
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
196
+ # the IRIX cc adds comments like `#:fec' to the end of the
197
+ # dependency line.
198
+ tr ' ' '
199
+ ' < "$tmpdepfile" \
200
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
201
+ tr '
202
+ ' ' ' >> "$depfile"
203
+ echo >> "$depfile"
204
+
205
+ # The second pass generates a dummy entry for each header file.
206
+ tr ' ' '
207
+ ' < "$tmpdepfile" \
208
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
209
+ >> "$depfile"
210
+ else
211
+ # The sourcefile does not contain any dependencies, so just
212
+ # store a dummy comment line, to avoid errors with the Makefile
213
+ # "include basename.Plo" scheme.
214
+ echo "#dummy" > "$depfile"
215
+ fi
216
+ rm -f "$tmpdepfile"
217
+ ;;
218
+
219
+ aix)
220
+ # The C for AIX Compiler uses -M and outputs the dependencies
221
+ # in a .u file. In older versions, this file always lives in the
222
+ # current directory. Also, the AIX compiler puts `$object:' at the
223
+ # start of each line; $object doesn't have directory information.
224
+ # Version 6 uses the directory in both cases.
225
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226
+ test "x$dir" = "x$object" && dir=
227
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
228
+ if test "$libtool" = yes; then
229
+ tmpdepfile1=$dir$base.u
230
+ tmpdepfile2=$base.u
231
+ tmpdepfile3=$dir.libs/$base.u
232
+ "$@" -Wc,-M
233
+ else
234
+ tmpdepfile1=$dir$base.u
235
+ tmpdepfile2=$dir$base.u
236
+ tmpdepfile3=$dir$base.u
237
+ "$@" -M
238
+ fi
239
+ stat=$?
240
+
241
+ if test $stat -eq 0; then :
242
+ else
243
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
244
+ exit $stat
245
+ fi
246
+
247
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248
+ do
249
+ test -f "$tmpdepfile" && break
250
+ done
251
+ if test -f "$tmpdepfile"; then
252
+ # Each line is of the form `foo.o: dependent.h'.
253
+ # Do two passes, one to just change these to
254
+ # `$object: dependent.h' and one to simply `dependent.h:'.
255
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256
+ # That's a tab and a space in the [].
257
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
258
+ else
259
+ # The sourcefile does not contain any dependencies, so just
260
+ # store a dummy comment line, to avoid errors with the Makefile
261
+ # "include basename.Plo" scheme.
262
+ echo "#dummy" > "$depfile"
263
+ fi
264
+ rm -f "$tmpdepfile"
265
+ ;;
266
+
267
+ icc)
268
+ # Intel's C compiler understands `-MD -MF file'. However on
269
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
270
+ # ICC 7.0 will fill foo.d with something like
271
+ # foo.o: sub/foo.c
272
+ # foo.o: sub/foo.h
273
+ # which is wrong. We want:
274
+ # sub/foo.o: sub/foo.c
275
+ # sub/foo.o: sub/foo.h
276
+ # sub/foo.c:
277
+ # sub/foo.h:
278
+ # ICC 7.1 will output
279
+ # foo.o: sub/foo.c sub/foo.h
280
+ # and will wrap long lines using \ :
281
+ # foo.o: sub/foo.c ... \
282
+ # sub/foo.h ... \
283
+ # ...
284
+
285
+ "$@" -MD -MF "$tmpdepfile"
286
+ stat=$?
287
+ if test $stat -eq 0; then :
288
+ else
289
+ rm -f "$tmpdepfile"
290
+ exit $stat
291
+ fi
292
+ rm -f "$depfile"
293
+ # Each line is of the form `foo.o: dependent.h',
294
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
295
+ # Do two passes, one to just change these to
296
+ # `$object: dependent.h' and one to simply `dependent.h:'.
297
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
298
+ # Some versions of the HPUX 10.20 sed can't process this invocation
299
+ # correctly. Breaking it into two sed invocations is a workaround.
300
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
301
+ sed -e 's/$/ :/' >> "$depfile"
302
+ rm -f "$tmpdepfile"
303
+ ;;
304
+
305
+ hp2)
306
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
307
+ # compilers, which have integrated preprocessors. The correct option
308
+ # to use with these is +Maked; it writes dependencies to a file named
309
+ # 'foo.d', which lands next to the object file, wherever that
310
+ # happens to be.
311
+ # Much of this is similar to the tru64 case; see comments there.
312
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
313
+ test "x$dir" = "x$object" && dir=
314
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
315
+ if test "$libtool" = yes; then
316
+ tmpdepfile1=$dir$base.d
317
+ tmpdepfile2=$dir.libs/$base.d
318
+ "$@" -Wc,+Maked
319
+ else
320
+ tmpdepfile1=$dir$base.d
321
+ tmpdepfile2=$dir$base.d
322
+ "$@" +Maked
323
+ fi
324
+ stat=$?
325
+ if test $stat -eq 0; then :
326
+ else
327
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
328
+ exit $stat
329
+ fi
330
+
331
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
332
+ do
333
+ test -f "$tmpdepfile" && break
334
+ done
335
+ if test -f "$tmpdepfile"; then
336
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
337
+ # Add `dependent.h:' lines.
338
+ sed -ne '2,${
339
+ s/^ *//
340
+ s/ \\*$//
341
+ s/$/:/
342
+ p
343
+ }' "$tmpdepfile" >> "$depfile"
344
+ else
345
+ echo "#dummy" > "$depfile"
346
+ fi
347
+ rm -f "$tmpdepfile" "$tmpdepfile2"
348
+ ;;
349
+
350
+ tru64)
351
+ # The Tru64 compiler uses -MD to generate dependencies as a side
352
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
353
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
354
+ # dependencies in `foo.d' instead, so we check for that too.
355
+ # Subdirectories are respected.
356
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
357
+ test "x$dir" = "x$object" && dir=
358
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
359
+
360
+ if test "$libtool" = yes; then
361
+ # With Tru64 cc, shared objects can also be used to make a
362
+ # static library. This mechanism is used in libtool 1.4 series to
363
+ # handle both shared and static libraries in a single compilation.
364
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
365
+ #
366
+ # With libtool 1.5 this exception was removed, and libtool now
367
+ # generates 2 separate objects for the 2 libraries. These two
368
+ # compilations output dependencies in $dir.libs/$base.o.d and
369
+ # in $dir$base.o.d. We have to check for both files, because
370
+ # one of the two compilations can be disabled. We should prefer
371
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
372
+ # automatically cleaned when .libs/ is deleted, while ignoring
373
+ # the former would cause a distcleancheck panic.
374
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
375
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
376
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
377
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
378
+ "$@" -Wc,-MD
379
+ else
380
+ tmpdepfile1=$dir$base.o.d
381
+ tmpdepfile2=$dir$base.d
382
+ tmpdepfile3=$dir$base.d
383
+ tmpdepfile4=$dir$base.d
384
+ "$@" -MD
385
+ fi
386
+
387
+ stat=$?
388
+ if test $stat -eq 0; then :
389
+ else
390
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
391
+ exit $stat
392
+ fi
393
+
394
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
395
+ do
396
+ test -f "$tmpdepfile" && break
397
+ done
398
+ if test -f "$tmpdepfile"; then
399
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
400
+ # That's a tab and a space in the [].
401
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
402
+ else
403
+ echo "#dummy" > "$depfile"
404
+ fi
405
+ rm -f "$tmpdepfile"
406
+ ;;
407
+
408
+ #nosideeffect)
409
+ # This comment above is used by automake to tell side-effect
410
+ # dependency tracking mechanisms from slower ones.
411
+
412
+ dashmstdout)
413
+ # Important note: in order to support this mode, a compiler *must*
414
+ # always write the preprocessed file to stdout, regardless of -o.
415
+ "$@" || exit $?
416
+
417
+ # Remove the call to Libtool.
418
+ if test "$libtool" = yes; then
419
+ while test "X$1" != 'X--mode=compile'; do
420
+ shift
421
+ done
422
+ shift
423
+ fi
424
+
425
+ # Remove `-o $object'.
426
+ IFS=" "
427
+ for arg
428
+ do
429
+ case $arg in
430
+ -o)
431
+ shift
432
+ ;;
433
+ $object)
434
+ shift
435
+ ;;
436
+ *)
437
+ set fnord "$@" "$arg"
438
+ shift # fnord
439
+ shift # $arg
440
+ ;;
441
+ esac
442
+ done
443
+
444
+ test -z "$dashmflag" && dashmflag=-M
445
+ # Require at least two characters before searching for `:'
446
+ # in the target name. This is to cope with DOS-style filenames:
447
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
448
+ "$@" $dashmflag |
449
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
450
+ rm -f "$depfile"
451
+ cat < "$tmpdepfile" > "$depfile"
452
+ tr ' ' '
453
+ ' < "$tmpdepfile" | \
454
+ ## Some versions of the HPUX 10.20 sed can't process this invocation
455
+ ## correctly. Breaking it into two sed invocations is a workaround.
456
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
457
+ rm -f "$tmpdepfile"
458
+ ;;
459
+
460
+ dashXmstdout)
461
+ # This case only exists to satisfy depend.m4. It is never actually
462
+ # run, as this mode is specially recognized in the preamble.
463
+ exit 1
464
+ ;;
465
+
466
+ makedepend)
467
+ "$@" || exit $?
468
+ # Remove any Libtool call
469
+ if test "$libtool" = yes; then
470
+ while test "X$1" != 'X--mode=compile'; do
471
+ shift
472
+ done
473
+ shift
474
+ fi
475
+ # X makedepend
476
+ shift
477
+ cleared=no eat=no
478
+ for arg
479
+ do
480
+ case $cleared in
481
+ no)
482
+ set ""; shift
483
+ cleared=yes ;;
484
+ esac
485
+ if test $eat = yes; then
486
+ eat=no
487
+ continue
488
+ fi
489
+ case "$arg" in
490
+ -D*|-I*)
491
+ set fnord "$@" "$arg"; shift ;;
492
+ # Strip any option that makedepend may not understand. Remove
493
+ # the object too, otherwise makedepend will parse it as a source file.
494
+ -arch)
495
+ eat=yes ;;
496
+ -*|$object)
497
+ ;;
498
+ *)
499
+ set fnord "$@" "$arg"; shift ;;
500
+ esac
501
+ done
502
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
503
+ touch "$tmpdepfile"
504
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
505
+ rm -f "$depfile"
506
+ cat < "$tmpdepfile" > "$depfile"
507
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
508
+ ' | \
509
+ ## Some versions of the HPUX 10.20 sed can't process this invocation
510
+ ## correctly. Breaking it into two sed invocations is a workaround.
511
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
512
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
513
+ ;;
514
+
515
+ cpp)
516
+ # Important note: in order to support this mode, a compiler *must*
517
+ # always write the preprocessed file to stdout.
518
+ "$@" || exit $?
519
+
520
+ # Remove the call to Libtool.
521
+ if test "$libtool" = yes; then
522
+ while test "X$1" != 'X--mode=compile'; do
523
+ shift
524
+ done
525
+ shift
526
+ fi
527
+
528
+ # Remove `-o $object'.
529
+ IFS=" "
530
+ for arg
531
+ do
532
+ case $arg in
533
+ -o)
534
+ shift
535
+ ;;
536
+ $object)
537
+ shift
538
+ ;;
539
+ *)
540
+ set fnord "$@" "$arg"
541
+ shift # fnord
542
+ shift # $arg
543
+ ;;
544
+ esac
545
+ done
546
+
547
+ "$@" -E |
548
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
549
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
550
+ sed '$ s: \\$::' > "$tmpdepfile"
551
+ rm -f "$depfile"
552
+ echo "$object : \\" > "$depfile"
553
+ cat < "$tmpdepfile" >> "$depfile"
554
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
555
+ rm -f "$tmpdepfile"
556
+ ;;
557
+
558
+ msvisualcpp)
559
+ # Important note: in order to support this mode, a compiler *must*
560
+ # always write the preprocessed file to stdout.
561
+ "$@" || exit $?
562
+
563
+ # Remove the call to Libtool.
564
+ if test "$libtool" = yes; then
565
+ while test "X$1" != 'X--mode=compile'; do
566
+ shift
567
+ done
568
+ shift
569
+ fi
570
+
571
+ IFS=" "
572
+ for arg
573
+ do
574
+ case "$arg" in
575
+ -o)
576
+ shift
577
+ ;;
578
+ $object)
579
+ shift
580
+ ;;
581
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
582
+ set fnord "$@"
583
+ shift
584
+ shift
585
+ ;;
586
+ *)
587
+ set fnord "$@" "$arg"
588
+ shift
589
+ shift
590
+ ;;
591
+ esac
592
+ done
593
+ "$@" -E 2>/dev/null |
594
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
595
+ rm -f "$depfile"
596
+ echo "$object : \\" > "$depfile"
597
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
598
+ echo " " >> "$depfile"
599
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
600
+ rm -f "$tmpdepfile"
601
+ ;;
602
+
603
+ msvcmsys)
604
+ # This case exists only to let depend.m4 do its work. It works by
605
+ # looking at the text of this script. This case will never be run,
606
+ # since it is checked for above.
607
+ exit 1
608
+ ;;
609
+
610
+ none)
611
+ exec "$@"
612
+ ;;
613
+
614
+ *)
615
+ echo "Unknown depmode $depmode" 1>&2
616
+ exit 1
617
+ ;;
618
+ esac
619
+
620
+ exit 0
621
+
622
+ # Local Variables:
623
+ # mode: shell-script
624
+ # sh-indentation: 2
625
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
626
+ # time-stamp-start: "scriptversion="
627
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
628
+ # time-stamp-time-zone: "UTC"
629
+ # time-stamp-end: "; # UTC"
630
+ # End: