rice 1.4.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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: