rice 1.4.3 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/COPYING +2 -2
  2. data/Doxyfile +1 -1
  3. data/Makefile.in +296 -166
  4. data/README +18 -13
  5. data/Rakefile +3 -2
  6. data/aclocal.m4 +375 -248
  7. data/config.guess +296 -261
  8. data/config.sub +268 -94
  9. data/configure +2789 -3054
  10. data/configure.ac +1 -1
  11. data/depcomp +403 -197
  12. data/extconf.rb +14 -3
  13. data/install-sh +139 -119
  14. data/missing +154 -306
  15. data/rice/Builtin_Object_defn.hpp +0 -1
  16. data/rice/Constructor.hpp +31 -30
  17. data/rice/Data_Object_defn.hpp +8 -2
  18. data/rice/Hash.hpp +26 -9
  19. data/rice/Hash.ipp +52 -60
  20. data/rice/Makefile.am +0 -1
  21. data/rice/Makefile.in +278 -152
  22. data/rice/Module_impl.ipp +1 -1
  23. data/rice/VM.cpp +1 -11
  24. data/rice/config.hpp +3 -0
  25. data/rice/config.hpp.in +3 -0
  26. data/rice/detail/Auto_Function_Wrapper.hpp +69 -0
  27. data/rice/detail/Auto_Function_Wrapper.ipp +815 -512
  28. data/rice/detail/Auto_Member_Function_Wrapper.hpp +69 -0
  29. data/rice/detail/Auto_Member_Function_Wrapper.ipp +543 -272
  30. data/rice/detail/object_call.hpp +1 -0
  31. data/rice/detail/ruby.hpp +0 -9
  32. data/rice/detail/ruby_version_code.hpp +1 -1
  33. data/rice/detail/st.hpp +0 -38
  34. data/rice/protect.hpp +1 -0
  35. data/rice/protect.ipp +1 -0
  36. data/rice/to_from_ruby.ipp +1 -1
  37. data/ruby.ac +2 -2
  38. data/ruby/Makefile.in +221 -134
  39. data/ruby/lib/Makefile.in +133 -44
  40. data/ruby/lib/mkmf-rice.rb.in +1 -4
  41. data/ruby/lib/version.rb +1 -1
  42. data/sample/Makefile.in +96 -31
  43. data/test/Makefile.am +0 -1
  44. data/test/Makefile.in +617 -219
  45. data/test/ext/Makefile.in +96 -31
  46. data/test/test_Class.cpp +2 -2
  47. data/test/test_Data_Object.cpp +11 -11
  48. data/test/test_Hash.cpp +7 -4
  49. data/test/test_Module.cpp +17 -1
  50. data/test/test_To_From_Ruby.cpp +44 -0
  51. data/test/test_rice.rb +2 -2
  52. metadata +29 -43
  53. data/rice/Allocation_Strategies.hpp +0 -37
  54. data/test/test_Allocation_Strategies.cpp +0 -77
data/configure.ac CHANGED
@@ -2,7 +2,7 @@ AC_INIT(rice, 1.1)
2
2
  AC_CONFIG_SRCDIR(rice)
3
3
  AM_INIT_AUTOMAKE
4
4
 
5
- AM_CONFIG_HEADER(rice/config.hpp)
5
+ AC_CONFIG_HEADERS(rice/config.hpp)
6
6
 
7
7
  AC_LANG(C++)
8
8
  AC_PROG_CXX
data/depcomp CHANGED
@@ -1,10 +1,9 @@
1
1
  #! /bin/sh
2
2
  # depcomp - compile a program generating dependencies as side-effects
3
3
 
4
- scriptversion=2006-10-15.18
4
+ scriptversion=2012-10-18.11; # UTC
5
5
 
6
- # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
7
- # Foundation, Inc.
6
+ # Copyright (C) 1999-2013 Free Software Foundation, Inc.
8
7
 
9
8
  # This program is free software; you can redistribute it and/or modify
10
9
  # it under the terms of the GNU General Public License as published by
@@ -17,9 +16,7 @@ scriptversion=2006-10-15.18
17
16
  # GNU General Public License for more details.
18
17
 
19
18
  # You should have received a copy of the GNU General Public License
20
- # along with this program; if not, write to the Free Software
21
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22
- # 02110-1301, USA.
19
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
23
20
 
24
21
  # As a special exception to the GNU General Public License, if you
25
22
  # distribute this file as part of a program that contains a
@@ -30,9 +27,9 @@ scriptversion=2006-10-15.18
30
27
 
31
28
  case $1 in
32
29
  '')
33
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
34
- exit 1;
35
- ;;
30
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
31
+ exit 1;
32
+ ;;
36
33
  -h | --h*)
37
34
  cat <<\EOF
38
35
  Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -42,11 +39,11 @@ as side-effects.
42
39
 
43
40
  Environment variables:
44
41
  depmode Dependency tracking mode.
45
- source Source file read by `PROGRAMS ARGS'.
46
- object Object file output by `PROGRAMS ARGS'.
42
+ source Source file read by 'PROGRAMS ARGS'.
43
+ object Object file output by 'PROGRAMS ARGS'.
47
44
  DEPDIR directory where to store dependencies.
48
45
  depfile Dependency file to output.
49
- tmpdepfile Temporary file to use when outputing dependencies.
46
+ tmpdepfile Temporary file to use when outputting dependencies.
50
47
  libtool Whether libtool is used (yes/no).
51
48
 
52
49
  Report bugs to <bug-automake@gnu.org>.
@@ -59,6 +56,66 @@ EOF
59
56
  ;;
60
57
  esac
61
58
 
59
+ # Get the directory component of the given path, and save it in the
60
+ # global variables '$dir'. Note that this directory component will
61
+ # be either empty or ending with a '/' character. This is deliberate.
62
+ set_dir_from ()
63
+ {
64
+ case $1 in
65
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
66
+ *) dir=;;
67
+ esac
68
+ }
69
+
70
+ # Get the suffix-stripped basename of the given path, and save it the
71
+ # global variable '$base'.
72
+ set_base_from ()
73
+ {
74
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
75
+ }
76
+
77
+ # If no dependency file was actually created by the compiler invocation,
78
+ # we still have to create a dummy depfile, to avoid errors with the
79
+ # Makefile "include basename.Plo" scheme.
80
+ make_dummy_depfile ()
81
+ {
82
+ echo "#dummy" > "$depfile"
83
+ }
84
+
85
+ # Factor out some common post-processing of the generated depfile.
86
+ # Requires the auxiliary global variable '$tmpdepfile' to be set.
87
+ aix_post_process_depfile ()
88
+ {
89
+ # If the compiler actually managed to produce a dependency file,
90
+ # post-process it.
91
+ if test -f "$tmpdepfile"; then
92
+ # Each line is of the form 'foo.o: dependency.h'.
93
+ # Do two passes, one to just change these to
94
+ # $object: dependency.h
95
+ # and one to simply output
96
+ # dependency.h:
97
+ # which is needed to avoid the deleted-header problem.
98
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
99
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
100
+ } > "$depfile"
101
+ rm -f "$tmpdepfile"
102
+ else
103
+ make_dummy_depfile
104
+ fi
105
+ }
106
+
107
+ # A tabulation character.
108
+ tab=' '
109
+ # A newline character.
110
+ nl='
111
+ '
112
+ # Character ranges might be problematic outside the C locale.
113
+ # These definitions help.
114
+ upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
115
+ lower=abcdefghijklmnopqrstuvwxyz
116
+ digits=0123456789
117
+ alpha=${upper}${lower}
118
+
62
119
  if test -z "$depmode" || test -z "$source" || test -z "$object"; then
63
120
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
64
121
  exit 1
@@ -71,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
71
128
 
72
129
  rm -f "$tmpdepfile"
73
130
 
131
+ # Avoid interferences from the environment.
132
+ gccflag= dashmflag=
133
+
74
134
  # Some modes work just like other modes, but use different flags. We
75
135
  # parameterize here, but still list the modes in the big case below,
76
136
  # to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -82,9 +142,32 @@ if test "$depmode" = hp; then
82
142
  fi
83
143
 
84
144
  if test "$depmode" = dashXmstdout; then
85
- # This is just like dashmstdout with a different argument.
86
- dashmflag=-xM
87
- depmode=dashmstdout
145
+ # This is just like dashmstdout with a different argument.
146
+ dashmflag=-xM
147
+ depmode=dashmstdout
148
+ fi
149
+
150
+ cygpath_u="cygpath -u -f -"
151
+ if test "$depmode" = msvcmsys; then
152
+ # This is just like msvisualcpp but w/o cygpath translation.
153
+ # Just convert the backslash-escaped backslashes to single forward
154
+ # slashes to satisfy depend.m4
155
+ cygpath_u='sed s,\\\\,/,g'
156
+ depmode=msvisualcpp
157
+ fi
158
+
159
+ if test "$depmode" = msvc7msys; then
160
+ # This is just like msvc7 but w/o cygpath translation.
161
+ # Just convert the backslash-escaped backslashes to single forward
162
+ # slashes to satisfy depend.m4
163
+ cygpath_u='sed s,\\\\,/,g'
164
+ depmode=msvc7
165
+ fi
166
+
167
+ if test "$depmode" = xlc; then
168
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
169
+ gccflag=-qmakedep=gcc,-MF
170
+ depmode=gcc
88
171
  fi
89
172
 
90
173
  case "$depmode" in
@@ -107,8 +190,7 @@ gcc3)
107
190
  done
108
191
  "$@"
109
192
  stat=$?
110
- if test $stat -eq 0; then :
111
- else
193
+ if test $stat -ne 0; then
112
194
  rm -f "$tmpdepfile"
113
195
  exit $stat
114
196
  fi
@@ -116,13 +198,17 @@ gcc3)
116
198
  ;;
117
199
 
118
200
  gcc)
201
+ ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
202
+ ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
203
+ ## (see the conditional assignment to $gccflag above).
119
204
  ## There are various ways to get dependency output from gcc. Here's
120
205
  ## why we pick this rather obscure method:
121
206
  ## - Don't want to use -MD because we'd like the dependencies to end
122
207
  ## up in a subdir. Having to rename by hand is ugly.
123
208
  ## (We might end up doing this anyway to support other compilers.)
124
209
  ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
125
- ## -MM, not -M (despite what the docs say).
210
+ ## -MM, not -M (despite what the docs say). Also, it might not be
211
+ ## supported by the other compilers which use the 'gcc' depmode.
126
212
  ## - Using -M directly means running the compiler twice (even worse
127
213
  ## than renaming).
128
214
  if test -z "$gccflag"; then
@@ -130,31 +216,31 @@ gcc)
130
216
  fi
131
217
  "$@" -Wp,"$gccflag$tmpdepfile"
132
218
  stat=$?
133
- if test $stat -eq 0; then :
134
- else
219
+ if test $stat -ne 0; then
135
220
  rm -f "$tmpdepfile"
136
221
  exit $stat
137
222
  fi
138
223
  rm -f "$depfile"
139
224
  echo "$object : \\" > "$depfile"
140
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
141
- ## The second -e expression handles DOS-style file names with drive letters.
225
+ # The second -e expression handles DOS-style file names with drive
226
+ # letters.
142
227
  sed -e 's/^[^:]*: / /' \
143
228
  -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
144
- ## This next piece of magic avoids the `deleted header file' problem.
229
+ ## This next piece of magic avoids the "deleted header file" problem.
145
230
  ## The problem is that when a header file which appears in a .P file
146
231
  ## is deleted, the dependency causes make to die (because there is
147
232
  ## typically no way to rebuild the header). We avoid this by adding
148
233
  ## dummy dependencies for each header file. Too bad gcc doesn't do
149
234
  ## this for us directly.
150
- tr ' ' '
151
- ' < "$tmpdepfile" |
152
- ## Some versions of gcc put a space before the `:'. On the theory
235
+ ## Some versions of gcc put a space before the ':'. On the theory
153
236
  ## that the space means something, we add a space to the output as
154
- ## well.
237
+ ## well. hp depmode also adds that space, but also prefixes the VPATH
238
+ ## to the object. Take care to not repeat it in the output.
155
239
  ## Some versions of the HPUX 10.20 sed can't process this invocation
156
240
  ## correctly. Breaking it into two sed invocations is a workaround.
157
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
241
+ tr ' ' "$nl" < "$tmpdepfile" \
242
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
243
+ | sed -e 's/$/ :/' >> "$depfile"
158
244
  rm -f "$tmpdepfile"
159
245
  ;;
160
246
 
@@ -172,8 +258,7 @@ sgi)
172
258
  "$@" -MDupdate "$tmpdepfile"
173
259
  fi
174
260
  stat=$?
175
- if test $stat -eq 0; then :
176
- else
261
+ if test $stat -ne 0; then
177
262
  rm -f "$tmpdepfile"
178
263
  exit $stat
179
264
  fi
@@ -181,99 +266,156 @@ sgi)
181
266
 
182
267
  if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
183
268
  echo "$object : \\" > "$depfile"
184
-
185
269
  # Clip off the initial element (the dependent). Don't try to be
186
270
  # clever and replace this with sed code, as IRIX sed won't handle
187
271
  # lines with more than a fixed number of characters (4096 in
188
272
  # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
189
- # the IRIX cc adds comments like `#:fec' to the end of the
273
+ # the IRIX cc adds comments like '#:fec' to the end of the
190
274
  # dependency line.
191
- tr ' ' '
192
- ' < "$tmpdepfile" \
193
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
194
- tr '
195
- ' ' ' >> $depfile
196
- echo >> $depfile
197
-
275
+ tr ' ' "$nl" < "$tmpdepfile" \
276
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277
+ | tr "$nl" ' ' >> "$depfile"
278
+ echo >> "$depfile"
198
279
  # The second pass generates a dummy entry for each header file.
199
- tr ' ' '
200
- ' < "$tmpdepfile" \
201
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
202
- >> $depfile
280
+ tr ' ' "$nl" < "$tmpdepfile" \
281
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282
+ >> "$depfile"
203
283
  else
204
- # The sourcefile does not contain any dependencies, so just
205
- # store a dummy comment line, to avoid errors with the Makefile
206
- # "include basename.Plo" scheme.
207
- echo "#dummy" > "$depfile"
284
+ make_dummy_depfile
208
285
  fi
209
286
  rm -f "$tmpdepfile"
210
287
  ;;
211
288
 
289
+ xlc)
290
+ # This case exists only to let depend.m4 do its work. It works by
291
+ # looking at the text of this script. This case will never be run,
292
+ # since it is checked for above.
293
+ exit 1
294
+ ;;
295
+
212
296
  aix)
213
297
  # The C for AIX Compiler uses -M and outputs the dependencies
214
298
  # in a .u file. In older versions, this file always lives in the
215
- # current directory. Also, the AIX compiler puts `$object:' at the
299
+ # current directory. Also, the AIX compiler puts '$object:' at the
216
300
  # start of each line; $object doesn't have directory information.
217
301
  # Version 6 uses the directory in both cases.
218
- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
219
- tmpdepfile="$stripped.u"
302
+ set_dir_from "$object"
303
+ set_base_from "$object"
220
304
  if test "$libtool" = yes; then
305
+ tmpdepfile1=$dir$base.u
306
+ tmpdepfile2=$base.u
307
+ tmpdepfile3=$dir.libs/$base.u
221
308
  "$@" -Wc,-M
222
309
  else
310
+ tmpdepfile1=$dir$base.u
311
+ tmpdepfile2=$dir$base.u
312
+ tmpdepfile3=$dir$base.u
223
313
  "$@" -M
224
314
  fi
225
315
  stat=$?
226
-
227
- if test -f "$tmpdepfile"; then :
228
- else
229
- stripped=`echo "$stripped" | sed 's,^.*/,,'`
230
- tmpdepfile="$stripped.u"
316
+ if test $stat -ne 0; then
317
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
318
+ exit $stat
231
319
  fi
232
320
 
233
- if test $stat -eq 0; then :
234
- else
321
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
322
+ do
323
+ test -f "$tmpdepfile" && break
324
+ done
325
+ aix_post_process_depfile
326
+ ;;
327
+
328
+ tcc)
329
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
330
+ # FIXME: That version still under development at the moment of writing.
331
+ # Make that this statement remains true also for stable, released
332
+ # versions.
333
+ # It will wrap lines (doesn't matter whether long or short) with a
334
+ # trailing '\', as in:
335
+ #
336
+ # foo.o : \
337
+ # foo.c \
338
+ # foo.h \
339
+ #
340
+ # It will put a trailing '\' even on the last line, and will use leading
341
+ # spaces rather than leading tabs (at least since its commit 0394caf7
342
+ # "Emit spaces for -MD").
343
+ "$@" -MD -MF "$tmpdepfile"
344
+ stat=$?
345
+ if test $stat -ne 0; then
235
346
  rm -f "$tmpdepfile"
236
347
  exit $stat
237
348
  fi
238
-
239
- if test -f "$tmpdepfile"; then
240
- outname="$stripped.o"
241
- # Each line is of the form `foo.o: dependent.h'.
242
- # Do two passes, one to just change these to
243
- # `$object: dependent.h' and one to simply `dependent.h:'.
244
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
245
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
246
- else
247
- # The sourcefile does not contain any dependencies, so just
248
- # store a dummy comment line, to avoid errors with the Makefile
249
- # "include basename.Plo" scheme.
250
- echo "#dummy" > "$depfile"
251
- fi
349
+ rm -f "$depfile"
350
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
351
+ # We have to change lines of the first kind to '$object: \'.
352
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
353
+ # And for each line of the second kind, we have to emit a 'dep.h:'
354
+ # dummy dependency, to avoid the deleted-header problem.
355
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
252
356
  rm -f "$tmpdepfile"
253
357
  ;;
254
358
 
255
- icc)
256
- # Intel's C compiler understands `-MD -MF file'. However on
257
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
258
- # ICC 7.0 will fill foo.d with something like
259
- # foo.o: sub/foo.c
260
- # foo.o: sub/foo.h
261
- # which is wrong. We want:
262
- # sub/foo.o: sub/foo.c
263
- # sub/foo.o: sub/foo.h
264
- # sub/foo.c:
265
- # sub/foo.h:
266
- # ICC 7.1 will output
359
+ ## The order of this option in the case statement is important, since the
360
+ ## shell code in configure will try each of these formats in the order
361
+ ## listed in this file. A plain '-MD' option would be understood by many
362
+ ## compilers, so we must ensure this comes after the gcc and icc options.
363
+ pgcc)
364
+ # Portland's C compiler understands '-MD'.
365
+ # Will always output deps to 'file.d' where file is the root name of the
366
+ # source file under compilation, even if file resides in a subdirectory.
367
+ # The object file name does not affect the name of the '.d' file.
368
+ # pgcc 10.2 will output
267
369
  # foo.o: sub/foo.c sub/foo.h
268
- # and will wrap long lines using \ :
370
+ # and will wrap long lines using '\' :
269
371
  # foo.o: sub/foo.c ... \
270
372
  # sub/foo.h ... \
271
373
  # ...
374
+ set_dir_from "$object"
375
+ # Use the source, not the object, to determine the base name, since
376
+ # that's sadly what pgcc will do too.
377
+ set_base_from "$source"
378
+ tmpdepfile=$base.d
379
+
380
+ # For projects that build the same source file twice into different object
381
+ # files, the pgcc approach of using the *source* file root name can cause
382
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
383
+ # the same $tmpdepfile.
384
+ lockdir=$base.d-lock
385
+ trap "
386
+ echo '$0: caught signal, cleaning up...' >&2
387
+ rmdir '$lockdir'
388
+ exit 1
389
+ " 1 2 13 15
390
+ numtries=100
391
+ i=$numtries
392
+ while test $i -gt 0; do
393
+ # mkdir is a portable test-and-set.
394
+ if mkdir "$lockdir" 2>/dev/null; then
395
+ # This process acquired the lock.
396
+ "$@" -MD
397
+ stat=$?
398
+ # Release the lock.
399
+ rmdir "$lockdir"
400
+ break
401
+ else
402
+ # If the lock is being held by a different process, wait
403
+ # until the winning process is done or we timeout.
404
+ while test -d "$lockdir" && test $i -gt 0; do
405
+ sleep 1
406
+ i=`expr $i - 1`
407
+ done
408
+ fi
409
+ i=`expr $i - 1`
410
+ done
411
+ trap - 1 2 13 15
412
+ if test $i -le 0; then
413
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
414
+ echo "$0: check lockdir '$lockdir'" >&2
415
+ exit 1
416
+ fi
272
417
 
273
- "$@" -MD -MF "$tmpdepfile"
274
- stat=$?
275
- if test $stat -eq 0; then :
276
- else
418
+ if test $stat -ne 0; then
277
419
  rm -f "$tmpdepfile"
278
420
  exit $stat
279
421
  fi
@@ -285,8 +427,8 @@ icc)
285
427
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
286
428
  # Some versions of the HPUX 10.20 sed can't process this invocation
287
429
  # correctly. Breaking it into two sed invocations is a workaround.
288
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
289
- sed -e 's/$/ :/' >> "$depfile"
430
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431
+ | sed -e 's/$/ :/' >> "$depfile"
290
432
  rm -f "$tmpdepfile"
291
433
  ;;
292
434
 
@@ -297,9 +439,8 @@ hp2)
297
439
  # 'foo.d', which lands next to the object file, wherever that
298
440
  # happens to be.
299
441
  # Much of this is similar to the tru64 case; see comments there.
300
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
301
- test "x$dir" = "x$object" && dir=
302
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
442
+ set_dir_from "$object"
443
+ set_base_from "$object"
303
444
  if test "$libtool" = yes; then
304
445
  tmpdepfile1=$dir$base.d
305
446
  tmpdepfile2=$dir.libs/$base.d
@@ -310,8 +451,7 @@ hp2)
310
451
  "$@" +Maked
311
452
  fi
312
453
  stat=$?
313
- if test $stat -eq 0; then :
314
- else
454
+ if test $stat -ne 0; then
315
455
  rm -f "$tmpdepfile1" "$tmpdepfile2"
316
456
  exit $stat
317
457
  fi
@@ -321,72 +461,106 @@ hp2)
321
461
  test -f "$tmpdepfile" && break
322
462
  done
323
463
  if test -f "$tmpdepfile"; then
324
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
325
- # Add `dependent.h:' lines.
326
- sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
464
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
465
+ # Add 'dependent.h:' lines.
466
+ sed -ne '2,${
467
+ s/^ *//
468
+ s/ \\*$//
469
+ s/$/:/
470
+ p
471
+ }' "$tmpdepfile" >> "$depfile"
327
472
  else
328
- echo "#dummy" > "$depfile"
473
+ make_dummy_depfile
329
474
  fi
330
475
  rm -f "$tmpdepfile" "$tmpdepfile2"
331
476
  ;;
332
477
 
333
478
  tru64)
334
- # The Tru64 compiler uses -MD to generate dependencies as a side
335
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
336
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
337
- # dependencies in `foo.d' instead, so we check for that too.
338
- # Subdirectories are respected.
339
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
340
- test "x$dir" = "x$object" && dir=
341
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
342
-
343
- if test "$libtool" = yes; then
344
- # With Tru64 cc, shared objects can also be used to make a
345
- # static library. This mechanism is used in libtool 1.4 series to
346
- # handle both shared and static libraries in a single compilation.
347
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
348
- #
349
- # With libtool 1.5 this exception was removed, and libtool now
350
- # generates 2 separate objects for the 2 libraries. These two
351
- # compilations output dependencies in $dir.libs/$base.o.d and
352
- # in $dir$base.o.d. We have to check for both files, because
353
- # one of the two compilations can be disabled. We should prefer
354
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
355
- # automatically cleaned when .libs/ is deleted, while ignoring
356
- # the former would cause a distcleancheck panic.
357
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
358
- tmpdepfile2=$dir$base.o.d # libtool 1.5
359
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
360
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
361
- "$@" -Wc,-MD
362
- else
363
- tmpdepfile1=$dir$base.o.d
364
- tmpdepfile2=$dir$base.d
365
- tmpdepfile3=$dir$base.d
366
- tmpdepfile4=$dir$base.d
367
- "$@" -MD
368
- fi
369
-
370
- stat=$?
371
- if test $stat -eq 0; then :
372
- else
373
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
374
- exit $stat
375
- fi
376
-
377
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
378
- do
379
- test -f "$tmpdepfile" && break
380
- done
381
- if test -f "$tmpdepfile"; then
382
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
383
- # That's a tab and a space in the [].
384
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
385
- else
386
- echo "#dummy" > "$depfile"
387
- fi
388
- rm -f "$tmpdepfile"
389
- ;;
479
+ # The Tru64 compiler uses -MD to generate dependencies as a side
480
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
481
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
482
+ # dependencies in 'foo.d' instead, so we check for that too.
483
+ # Subdirectories are respected.
484
+ set_dir_from "$object"
485
+ set_base_from "$object"
486
+
487
+ if test "$libtool" = yes; then
488
+ # Libtool generates 2 separate objects for the 2 libraries. These
489
+ # two compilations output dependencies in $dir.libs/$base.o.d and
490
+ # in $dir$base.o.d. We have to check for both files, because
491
+ # one of the two compilations can be disabled. We should prefer
492
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
493
+ # automatically cleaned when .libs/ is deleted, while ignoring
494
+ # the former would cause a distcleancheck panic.
495
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
496
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
497
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
498
+ "$@" -Wc,-MD
499
+ else
500
+ tmpdepfile1=$dir$base.d
501
+ tmpdepfile2=$dir$base.d
502
+ tmpdepfile3=$dir$base.d
503
+ "$@" -MD
504
+ fi
505
+
506
+ stat=$?
507
+ if test $stat -ne 0; then
508
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
509
+ exit $stat
510
+ fi
511
+
512
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
513
+ do
514
+ test -f "$tmpdepfile" && break
515
+ done
516
+ # Same post-processing that is required for AIX mode.
517
+ aix_post_process_depfile
518
+ ;;
519
+
520
+ msvc7)
521
+ if test "$libtool" = yes; then
522
+ showIncludes=-Wc,-showIncludes
523
+ else
524
+ showIncludes=-showIncludes
525
+ fi
526
+ "$@" $showIncludes > "$tmpdepfile"
527
+ stat=$?
528
+ grep -v '^Note: including file: ' "$tmpdepfile"
529
+ if test $stat -ne 0; then
530
+ rm -f "$tmpdepfile"
531
+ exit $stat
532
+ fi
533
+ rm -f "$depfile"
534
+ echo "$object : \\" > "$depfile"
535
+ # The first sed program below extracts the file names and escapes
536
+ # backslashes for cygpath. The second sed program outputs the file
537
+ # name when reading, but also accumulates all include files in the
538
+ # hold buffer in order to output them again at the end. This only
539
+ # works with sed implementations that can handle large buffers.
540
+ sed < "$tmpdepfile" -n '
541
+ /^Note: including file: *\(.*\)/ {
542
+ s//\1/
543
+ s/\\/\\\\/g
544
+ p
545
+ }' | $cygpath_u | sort -u | sed -n '
546
+ s/ /\\ /g
547
+ s/\(.*\)/'"$tab"'\1 \\/p
548
+ s/.\(.*\) \\/\1:/
549
+ H
550
+ $ {
551
+ s/.*/'"$tab"'/
552
+ G
553
+ p
554
+ }' >> "$depfile"
555
+ rm -f "$tmpdepfile"
556
+ ;;
557
+
558
+ msvc7msys)
559
+ # This case exists only to let depend.m4 do its work. It works by
560
+ # looking at the text of this script. This case will never be run,
561
+ # since it is checked for above.
562
+ exit 1
563
+ ;;
390
564
 
391
565
  #nosideeffect)
392
566
  # This comment above is used by automake to tell side-effect
@@ -399,13 +573,13 @@ dashmstdout)
399
573
 
400
574
  # Remove the call to Libtool.
401
575
  if test "$libtool" = yes; then
402
- while test $1 != '--mode=compile'; do
576
+ while test "X$1" != 'X--mode=compile'; do
403
577
  shift
404
578
  done
405
579
  shift
406
580
  fi
407
581
 
408
- # Remove `-o $object'.
582
+ # Remove '-o $object'.
409
583
  IFS=" "
410
584
  for arg
411
585
  do
@@ -425,18 +599,18 @@ dashmstdout)
425
599
  done
426
600
 
427
601
  test -z "$dashmflag" && dashmflag=-M
428
- # Require at least two characters before searching for `:'
602
+ # Require at least two characters before searching for ':'
429
603
  # in the target name. This is to cope with DOS-style filenames:
430
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
604
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
431
605
  "$@" $dashmflag |
432
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
606
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
433
607
  rm -f "$depfile"
434
608
  cat < "$tmpdepfile" > "$depfile"
435
- tr ' ' '
436
- ' < "$tmpdepfile" | \
437
- ## Some versions of the HPUX 10.20 sed can't process this invocation
438
- ## correctly. Breaking it into two sed invocations is a workaround.
439
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
609
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
610
+ # correctly. Breaking it into two sed invocations is a workaround.
611
+ tr ' ' "$nl" < "$tmpdepfile" \
612
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
613
+ | sed -e 's/$/ :/' >> "$depfile"
440
614
  rm -f "$tmpdepfile"
441
615
  ;;
442
616
 
@@ -450,41 +624,51 @@ makedepend)
450
624
  "$@" || exit $?
451
625
  # Remove any Libtool call
452
626
  if test "$libtool" = yes; then
453
- while test $1 != '--mode=compile'; do
627
+ while test "X$1" != 'X--mode=compile'; do
454
628
  shift
455
629
  done
456
630
  shift
457
631
  fi
458
632
  # X makedepend
459
633
  shift
460
- cleared=no
461
- for arg in "$@"; do
634
+ cleared=no eat=no
635
+ for arg
636
+ do
462
637
  case $cleared in
463
638
  no)
464
639
  set ""; shift
465
640
  cleared=yes ;;
466
641
  esac
642
+ if test $eat = yes; then
643
+ eat=no
644
+ continue
645
+ fi
467
646
  case "$arg" in
468
647
  -D*|-I*)
469
648
  set fnord "$@" "$arg"; shift ;;
470
649
  # Strip any option that makedepend may not understand. Remove
471
650
  # the object too, otherwise makedepend will parse it as a source file.
651
+ -arch)
652
+ eat=yes ;;
472
653
  -*|$object)
473
654
  ;;
474
655
  *)
475
656
  set fnord "$@" "$arg"; shift ;;
476
657
  esac
477
658
  done
478
- obj_suffix="`echo $object | sed 's/^.*\././'`"
659
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
479
660
  touch "$tmpdepfile"
480
661
  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
481
662
  rm -f "$depfile"
482
- cat < "$tmpdepfile" > "$depfile"
483
- sed '1,2d' "$tmpdepfile" | tr ' ' '
484
- ' | \
485
- ## Some versions of the HPUX 10.20 sed can't process this invocation
486
- ## correctly. Breaking it into two sed invocations is a workaround.
487
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
663
+ # makedepend may prepend the VPATH from the source file name to the object.
664
+ # No need to regex-escape $object, excess matching of '.' is harmless.
665
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
666
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
667
+ # correctly. Breaking it into two sed invocations is a workaround.
668
+ sed '1,2d' "$tmpdepfile" \
669
+ | tr ' ' "$nl" \
670
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
671
+ | sed -e 's/$/ :/' >> "$depfile"
488
672
  rm -f "$tmpdepfile" "$tmpdepfile".bak
489
673
  ;;
490
674
 
@@ -495,13 +679,13 @@ cpp)
495
679
 
496
680
  # Remove the call to Libtool.
497
681
  if test "$libtool" = yes; then
498
- while test $1 != '--mode=compile'; do
682
+ while test "X$1" != 'X--mode=compile'; do
499
683
  shift
500
684
  done
501
685
  shift
502
686
  fi
503
687
 
504
- # Remove `-o $object'.
688
+ # Remove '-o $object'.
505
689
  IFS=" "
506
690
  for arg
507
691
  do
@@ -520,10 +704,10 @@ cpp)
520
704
  esac
521
705
  done
522
706
 
523
- "$@" -E |
524
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
525
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
526
- sed '$ s: \\$::' > "$tmpdepfile"
707
+ "$@" -E \
708
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
709
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
710
+ | sed '$ s: \\$::' > "$tmpdepfile"
527
711
  rm -f "$depfile"
528
712
  echo "$object : \\" > "$depfile"
529
713
  cat < "$tmpdepfile" >> "$depfile"
@@ -533,35 +717,56 @@ cpp)
533
717
 
534
718
  msvisualcpp)
535
719
  # Important note: in order to support this mode, a compiler *must*
536
- # always write the preprocessed file to stdout, regardless of -o,
537
- # because we must use -o when running libtool.
720
+ # always write the preprocessed file to stdout.
538
721
  "$@" || exit $?
722
+
723
+ # Remove the call to Libtool.
724
+ if test "$libtool" = yes; then
725
+ while test "X$1" != 'X--mode=compile'; do
726
+ shift
727
+ done
728
+ shift
729
+ fi
730
+
539
731
  IFS=" "
540
732
  for arg
541
733
  do
542
734
  case "$arg" in
735
+ -o)
736
+ shift
737
+ ;;
738
+ $object)
739
+ shift
740
+ ;;
543
741
  "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
544
- set fnord "$@"
545
- shift
546
- shift
547
- ;;
742
+ set fnord "$@"
743
+ shift
744
+ shift
745
+ ;;
548
746
  *)
549
- set fnord "$@" "$arg"
550
- shift
551
- shift
552
- ;;
747
+ set fnord "$@" "$arg"
748
+ shift
749
+ shift
750
+ ;;
553
751
  esac
554
752
  done
555
- "$@" -E |
556
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
753
+ "$@" -E 2>/dev/null |
754
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
557
755
  rm -f "$depfile"
558
756
  echo "$object : \\" > "$depfile"
559
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
560
- echo " " >> "$depfile"
561
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
757
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
758
+ echo "$tab" >> "$depfile"
759
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
562
760
  rm -f "$tmpdepfile"
563
761
  ;;
564
762
 
763
+ msvcmsys)
764
+ # This case exists only to let depend.m4 do its work. It works by
765
+ # looking at the text of this script. This case will never be run,
766
+ # since it is checked for above.
767
+ exit 1
768
+ ;;
769
+
565
770
  none)
566
771
  exec "$@"
567
772
  ;;
@@ -580,5 +785,6 @@ exit 0
580
785
  # eval: (add-hook 'write-file-hooks 'time-stamp)
581
786
  # time-stamp-start: "scriptversion="
582
787
  # time-stamp-format: "%:y-%02m-%02d.%02H"
583
- # time-stamp-end: "$"
788
+ # time-stamp-time-zone: "UTC"
789
+ # time-stamp-end: "; # UTC"
584
790
  # End: