libusb 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +2 -0
  3. data.tar.gz.sig +0 -0
  4. data/.travis.yml +3 -3
  5. data/History.md +8 -0
  6. data/README.md +1 -0
  7. data/Rakefile +14 -14
  8. data/ext/{libusb-1.0.18 → libusb-1.0.19}/AUTHORS +6 -0
  9. data/ext/{libusb-1.0.18 → libusb-1.0.19}/COPYING +0 -0
  10. data/ext/{libusb-1.0.18 → libusb-1.0.19}/ChangeLog +9 -2
  11. data/ext/{libusb-1.0.18 → libusb-1.0.19}/INSTALL +0 -0
  12. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Makefile.am +0 -0
  13. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Makefile.in +188 -156
  14. data/ext/{libusb-1.0.18 → libusb-1.0.19}/NEWS +0 -0
  15. data/ext/{libusb-1.0.18 → libusb-1.0.19}/PORTING +0 -0
  16. data/ext/{libusb-1.0.18 → libusb-1.0.19}/README +0 -0
  17. data/ext/{libusb-1.0.18 → libusb-1.0.19}/TODO +0 -0
  18. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Xcode/common.xcconfig +10 -1
  19. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Xcode/config.h +0 -0
  20. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Xcode/debug.xcconfig +0 -0
  21. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Xcode/libusb.xcconfig +1 -1
  22. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Xcode/libusb.xcodeproj/project.pbxproj +0 -0
  23. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Xcode/libusb_debug.xcconfig +0 -0
  24. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Xcode/libusb_release.xcconfig +0 -0
  25. data/ext/{libusb-1.0.18 → libusb-1.0.19}/Xcode/release.xcconfig +1 -0
  26. data/ext/libusb-1.0.19/aclocal.m4 +1190 -0
  27. data/ext/{libusb-1.0.18 → libusb-1.0.19}/android/README +0 -0
  28. data/ext/{libusb-1.0.18 → libusb-1.0.19}/android/config.h +0 -0
  29. data/ext/{libusb-1.0.18 → libusb-1.0.19}/android/jni/Android.mk +0 -0
  30. data/ext/{libusb-1.0.18 → libusb-1.0.19}/android/jni/Application.mk +0 -0
  31. data/ext/{libusb-1.0.18 → libusb-1.0.19}/android/jni/examples.mk +0 -0
  32. data/ext/{libusb-1.0.18 → libusb-1.0.19}/android/jni/libusb.mk +0 -0
  33. data/ext/{libusb-1.0.18 → libusb-1.0.19}/android/jni/tests.mk +0 -0
  34. data/ext/{libusb-1.0.18 → libusb-1.0.19}/compile +7 -3
  35. data/ext/{libusb-1.0.18 → libusb-1.0.19}/config.guess +116 -78
  36. data/ext/{libusb-1.0.18 → libusb-1.0.19}/config.h.in +0 -3
  37. data/ext/{libusb-1.0.18 → libusb-1.0.19}/config.sub +66 -46
  38. data/ext/{libusb-1.0.18 → libusb-1.0.19}/configure +265 -208
  39. data/ext/{libusb-1.0.18 → libusb-1.0.19}/configure.ac +0 -0
  40. data/ext/{libusb-1.0.18 → libusb-1.0.19}/depcomp +269 -186
  41. data/ext/{libusb-1.0.18 → libusb-1.0.19}/doc/Makefile.am +0 -0
  42. data/ext/{libusb-1.0.18 → libusb-1.0.19}/doc/Makefile.in +72 -35
  43. data/ext/{libusb-1.0.18 → libusb-1.0.19}/doc/doxygen.cfg.in +1 -1
  44. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/Makefile.am +0 -0
  45. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/Makefile.in +134 -70
  46. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/dpfp.c +0 -0
  47. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/dpfp_threaded.c +0 -0
  48. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/ezusb.c +9 -5
  49. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/ezusb.h +0 -0
  50. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/fxload.c +1 -1
  51. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/getopt/getopt.c +0 -0
  52. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/getopt/getopt.h +0 -0
  53. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/getopt/getopt1.c +0 -0
  54. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/hotplugtest.c +0 -0
  55. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/listdevs.c +0 -0
  56. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/sam3u_benchmark.c +0 -0
  57. data/ext/{libusb-1.0.18 → libusb-1.0.19}/examples/xusb.c +22 -2
  58. data/ext/{libusb-1.0.18 → libusb-1.0.19}/install-sh +7 -7
  59. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb-1.0.pc.in +0 -0
  60. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/Makefile.am +0 -0
  61. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/Makefile.in +133 -93
  62. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/core.c +86 -15
  63. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/descriptor.c +0 -0
  64. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/hotplug.c +6 -1
  65. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/hotplug.h +0 -0
  66. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/io.c +54 -17
  67. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/libusb-1.0.def +8 -0
  68. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/libusb-1.0.rc +0 -0
  69. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/libusb.h +42 -2
  70. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/libusbi.h +10 -1
  71. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/darwin_usb.c +156 -53
  72. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/darwin_usb.h +1 -1
  73. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/linux_netlink.c +26 -2
  74. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/linux_udev.c +2 -1
  75. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/linux_usbfs.c +93 -6
  76. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/linux_usbfs.h +12 -1
  77. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/netbsd_usb.c +6 -0
  78. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/openbsd_usb.c +6 -0
  79. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/poll_posix.c +0 -0
  80. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/poll_posix.h +0 -0
  81. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/poll_windows.c +0 -0
  82. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/poll_windows.h +12 -6
  83. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/threads_posix.c +0 -0
  84. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/threads_posix.h +0 -0
  85. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/threads_windows.c +0 -0
  86. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/threads_windows.h +0 -0
  87. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/wince_usb.c +8 -1
  88. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/wince_usb.h +0 -0
  89. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/windows_common.h +0 -0
  90. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/windows_usb.c +175 -42
  91. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/os/windows_usb.h +35 -0
  92. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/strerror.c +17 -2
  93. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/sync.c +0 -0
  94. data/ext/{libusb-1.0.18 → libusb-1.0.19}/libusb/version.h +1 -1
  95. data/ext/libusb-1.0.19/libusb/version_nano.h +1 -0
  96. data/ext/{libusb-1.0.18 → libusb-1.0.19}/ltmain.sh +3 -3
  97. data/ext/{libusb-1.0.18/aclocal.m4 → libusb-1.0.19/m4/libtool.m4} +36 -1734
  98. data/ext/libusb-1.0.19/m4/ltoptions.m4 +384 -0
  99. data/ext/libusb-1.0.19/m4/ltsugar.m4 +123 -0
  100. data/ext/libusb-1.0.19/m4/ltversion.m4 +23 -0
  101. data/ext/libusb-1.0.19/m4/lt~obsolete.m4 +98 -0
  102. data/ext/libusb-1.0.19/missing +215 -0
  103. data/ext/{libusb-1.0.18 → libusb-1.0.19}/tests/Makefile.am +0 -0
  104. data/ext/{libusb-1.0.18 → libusb-1.0.19}/tests/Makefile.in +128 -70
  105. data/ext/{libusb-1.0.18 → libusb-1.0.19}/tests/libusb_testlib.h +0 -0
  106. data/ext/{libusb-1.0.18 → libusb-1.0.19}/tests/stress.c +0 -0
  107. data/ext/{libusb-1.0.18 → libusb-1.0.19}/tests/testlib.c +0 -0
  108. data/lib/libusb.rb +3 -1
  109. data/lib/libusb/bos.rb +306 -0
  110. data/lib/libusb/call.rb +84 -0
  111. data/lib/libusb/constants.rb +4 -0
  112. data/lib/libusb/dev_handle.rb +77 -0
  113. data/lib/libusb/endpoint.rb +20 -0
  114. data/lib/libusb/ss_companion.rb +69 -0
  115. data/lib/libusb/transfer.rb +34 -0
  116. data/lib/libusb/version_gem.rb +1 -1
  117. data/libusb.gemspec +1 -0
  118. data/test/test_libusb_bos.rb +118 -0
  119. data/test/test_libusb_bulk_stream_transfer.rb +50 -0
  120. data/test/test_libusb_descriptors.rb +29 -0
  121. data/test/test_libusb_hotplug.rb +1 -1
  122. data/test/test_libusb_threads.rb +1 -1
  123. metadata +146 -124
  124. metadata.gz.sig +0 -0
  125. data/ext/libusb-1.0.18/libusb/version_nano.h +0 -1
  126. data/ext/libusb-1.0.18/missing +0 -331
File without changes
@@ -1,10 +1,9 @@
1
1
  #! /bin/sh
2
2
  # depcomp - compile a program generating dependencies as side-effects
3
3
 
4
- scriptversion=2012-03-27.16; # UTC
4
+ scriptversion=2013-05-30.07; # UTC
5
5
 
6
- # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
7
- # 2011, 2012 Free Software 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
@@ -28,9 +27,9 @@ scriptversion=2012-03-27.16; # UTC
28
27
 
29
28
  case $1 in
30
29
  '')
31
- echo "$0: No command. Try '$0 --help' for more information." 1>&2
32
- exit 1;
33
- ;;
30
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
31
+ exit 1;
32
+ ;;
34
33
  -h | --h*)
35
34
  cat <<\EOF
36
35
  Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -57,11 +56,65 @@ EOF
57
56
  ;;
58
57
  esac
59
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
+
60
107
  # A tabulation character.
61
108
  tab=' '
62
109
  # A newline character.
63
110
  nl='
64
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}
65
118
 
66
119
  if test -z "$depmode" || test -z "$source" || test -z "$object"; then
67
120
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
@@ -75,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
75
128
 
76
129
  rm -f "$tmpdepfile"
77
130
 
131
+ # Avoid interferences from the environment.
132
+ gccflag= dashmflag=
133
+
78
134
  # Some modes work just like other modes, but use different flags. We
79
135
  # parameterize here, but still list the modes in the big case below,
80
136
  # to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -86,32 +142,32 @@ if test "$depmode" = hp; then
86
142
  fi
87
143
 
88
144
  if test "$depmode" = dashXmstdout; then
89
- # This is just like dashmstdout with a different argument.
90
- dashmflag=-xM
91
- depmode=dashmstdout
145
+ # This is just like dashmstdout with a different argument.
146
+ dashmflag=-xM
147
+ depmode=dashmstdout
92
148
  fi
93
149
 
94
150
  cygpath_u="cygpath -u -f -"
95
151
  if test "$depmode" = msvcmsys; then
96
- # This is just like msvisualcpp but w/o cygpath translation.
97
- # Just convert the backslash-escaped backslashes to single forward
98
- # slashes to satisfy depend.m4
99
- cygpath_u='sed s,\\\\,/,g'
100
- depmode=msvisualcpp
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
101
157
  fi
102
158
 
103
159
  if test "$depmode" = msvc7msys; then
104
- # This is just like msvc7 but w/o cygpath translation.
105
- # Just convert the backslash-escaped backslashes to single forward
106
- # slashes to satisfy depend.m4
107
- cygpath_u='sed s,\\\\,/,g'
108
- depmode=msvc7
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
109
165
  fi
110
166
 
111
167
  if test "$depmode" = xlc; then
112
- # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
113
- gccflag=-qmakedep=gcc,-MF
114
- depmode=gcc
168
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
169
+ gccflag=-qmakedep=gcc,-MF
170
+ depmode=gcc
115
171
  fi
116
172
 
117
173
  case "$depmode" in
@@ -134,8 +190,7 @@ gcc3)
134
190
  done
135
191
  "$@"
136
192
  stat=$?
137
- if test $stat -eq 0; then :
138
- else
193
+ if test $stat -ne 0; then
139
194
  rm -f "$tmpdepfile"
140
195
  exit $stat
141
196
  fi
@@ -143,13 +198,17 @@ gcc3)
143
198
  ;;
144
199
 
145
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).
146
204
  ## There are various ways to get dependency output from gcc. Here's
147
205
  ## why we pick this rather obscure method:
148
206
  ## - Don't want to use -MD because we'd like the dependencies to end
149
207
  ## up in a subdir. Having to rename by hand is ugly.
150
208
  ## (We might end up doing this anyway to support other compilers.)
151
209
  ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
152
- ## -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.
153
212
  ## - Using -M directly means running the compiler twice (even worse
154
213
  ## than renaming).
155
214
  if test -z "$gccflag"; then
@@ -157,15 +216,14 @@ gcc)
157
216
  fi
158
217
  "$@" -Wp,"$gccflag$tmpdepfile"
159
218
  stat=$?
160
- if test $stat -eq 0; then :
161
- else
219
+ if test $stat -ne 0; then
162
220
  rm -f "$tmpdepfile"
163
221
  exit $stat
164
222
  fi
165
223
  rm -f "$depfile"
166
224
  echo "$object : \\" > "$depfile"
167
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
168
- ## 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.
169
227
  sed -e 's/^[^:]*: / /' \
170
228
  -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
171
229
  ## This next piece of magic avoids the "deleted header file" problem.
@@ -174,15 +232,15 @@ gcc)
174
232
  ## typically no way to rebuild the header). We avoid this by adding
175
233
  ## dummy dependencies for each header file. Too bad gcc doesn't do
176
234
  ## this for us directly.
177
- tr ' ' "$nl" < "$tmpdepfile" |
178
235
  ## Some versions of gcc put a space before the ':'. On the theory
179
236
  ## that the space means something, we add a space to the output as
180
237
  ## well. hp depmode also adds that space, but also prefixes the VPATH
181
238
  ## to the object. Take care to not repeat it in the output.
182
239
  ## Some versions of the HPUX 10.20 sed can't process this invocation
183
240
  ## correctly. Breaking it into two sed invocations is a workaround.
184
- sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
185
- | sed -e 's/$/ :/' >> "$depfile"
241
+ tr ' ' "$nl" < "$tmpdepfile" \
242
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
243
+ | sed -e 's/$/ :/' >> "$depfile"
186
244
  rm -f "$tmpdepfile"
187
245
  ;;
188
246
 
@@ -200,8 +258,7 @@ sgi)
200
258
  "$@" -MDupdate "$tmpdepfile"
201
259
  fi
202
260
  stat=$?
203
- if test $stat -eq 0; then :
204
- else
261
+ if test $stat -ne 0; then
205
262
  rm -f "$tmpdepfile"
206
263
  exit $stat
207
264
  fi
@@ -209,7 +266,6 @@ sgi)
209
266
 
210
267
  if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
211
268
  echo "$object : \\" > "$depfile"
212
-
213
269
  # Clip off the initial element (the dependent). Don't try to be
214
270
  # clever and replace this with sed code, as IRIX sed won't handle
215
271
  # lines with more than a fixed number of characters (4096 in
@@ -217,19 +273,15 @@ sgi)
217
273
  # the IRIX cc adds comments like '#:fec' to the end of the
218
274
  # dependency line.
219
275
  tr ' ' "$nl" < "$tmpdepfile" \
220
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
221
- tr "$nl" ' ' >> "$depfile"
276
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277
+ | tr "$nl" ' ' >> "$depfile"
222
278
  echo >> "$depfile"
223
-
224
279
  # The second pass generates a dummy entry for each header file.
225
280
  tr ' ' "$nl" < "$tmpdepfile" \
226
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
227
- >> "$depfile"
281
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282
+ >> "$depfile"
228
283
  else
229
- # The sourcefile does not contain any dependencies, so just
230
- # store a dummy comment line, to avoid errors with the Makefile
231
- # "include basename.Plo" scheme.
232
- echo "#dummy" > "$depfile"
284
+ make_dummy_depfile
233
285
  fi
234
286
  rm -f "$tmpdepfile"
235
287
  ;;
@@ -247,9 +299,8 @@ aix)
247
299
  # current directory. Also, the AIX compiler puts '$object:' at the
248
300
  # start of each line; $object doesn't have directory information.
249
301
  # Version 6 uses the directory in both cases.
250
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
251
- test "x$dir" = "x$object" && dir=
252
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
302
+ set_dir_from "$object"
303
+ set_base_from "$object"
253
304
  if test "$libtool" = yes; then
254
305
  tmpdepfile1=$dir$base.u
255
306
  tmpdepfile2=$base.u
@@ -262,9 +313,7 @@ aix)
262
313
  "$@" -M
263
314
  fi
264
315
  stat=$?
265
-
266
- if test $stat -eq 0; then :
267
- else
316
+ if test $stat -ne 0; then
268
317
  rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
269
318
  exit $stat
270
319
  fi
@@ -273,65 +322,113 @@ aix)
273
322
  do
274
323
  test -f "$tmpdepfile" && break
275
324
  done
276
- if test -f "$tmpdepfile"; then
277
- # Each line is of the form 'foo.o: dependent.h'.
278
- # Do two passes, one to just change these to
279
- # '$object: dependent.h' and one to simply 'dependent.h:'.
280
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
281
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
282
- else
283
- # The sourcefile does not contain any dependencies, so just
284
- # store a dummy comment line, to avoid errors with the Makefile
285
- # "include basename.Plo" scheme.
286
- echo "#dummy" > "$depfile"
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
346
+ rm -f "$tmpdepfile"
347
+ exit $stat
287
348
  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"
288
356
  rm -f "$tmpdepfile"
289
357
  ;;
290
358
 
291
- icc)
292
- # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
293
- # However on
294
- # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
295
- # ICC 7.0 will fill foo.d with something like
296
- # foo.o: sub/foo.c
297
- # foo.o: sub/foo.h
298
- # which is wrong. We want
299
- # sub/foo.o: sub/foo.c
300
- # sub/foo.o: sub/foo.h
301
- # sub/foo.c:
302
- # sub/foo.h:
303
- # 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
304
369
  # foo.o: sub/foo.c sub/foo.h
305
- # and will wrap long lines using '\':
370
+ # and will wrap long lines using '\' :
306
371
  # foo.o: sub/foo.c ... \
307
372
  # sub/foo.h ... \
308
373
  # ...
309
- # tcc 0.9.26 (FIXME still under development at the moment of writing)
310
- # will emit a similar output, but also prepend the continuation lines
311
- # with horizontal tabulation characters.
312
- "$@" -MD -MF "$tmpdepfile"
313
- stat=$?
314
- if test $stat -eq 0; then :
315
- else
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
417
+
418
+ if test $stat -ne 0; then
316
419
  rm -f "$tmpdepfile"
317
420
  exit $stat
318
421
  fi
319
422
  rm -f "$depfile"
320
- # Each line is of the form 'foo.o: dependent.h',
321
- # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
423
+ # Each line is of the form `foo.o: dependent.h',
424
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
322
425
  # Do two passes, one to just change these to
323
- # '$object: dependent.h' and one to simply 'dependent.h:'.
324
- sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
325
- < "$tmpdepfile" > "$depfile"
326
- sed '
327
- s/[ '"$tab"'][ '"$tab"']*/ /g
328
- s/^ *//
329
- s/ *\\*$//
330
- s/^[^:]*: *//
331
- /^$/d
332
- /:$/d
333
- s/$/ :/
334
- ' < "$tmpdepfile" >> "$depfile"
426
+ # `$object: dependent.h' and one to simply `dependent.h:'.
427
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
428
+ # Some versions of the HPUX 10.20 sed can't process this invocation
429
+ # correctly. Breaking it into two sed invocations is a workaround.
430
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431
+ | sed -e 's/$/ :/' >> "$depfile"
335
432
  rm -f "$tmpdepfile"
336
433
  ;;
337
434
 
@@ -342,9 +439,8 @@ hp2)
342
439
  # 'foo.d', which lands next to the object file, wherever that
343
440
  # happens to be.
344
441
  # Much of this is similar to the tru64 case; see comments there.
345
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
346
- test "x$dir" = "x$object" && dir=
347
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
442
+ set_dir_from "$object"
443
+ set_base_from "$object"
348
444
  if test "$libtool" = yes; then
349
445
  tmpdepfile1=$dir$base.d
350
446
  tmpdepfile2=$dir.libs/$base.d
@@ -355,8 +451,7 @@ hp2)
355
451
  "$@" +Maked
356
452
  fi
357
453
  stat=$?
358
- if test $stat -eq 0; then :
359
- else
454
+ if test $stat -ne 0; then
360
455
  rm -f "$tmpdepfile1" "$tmpdepfile2"
361
456
  exit $stat
362
457
  fi
@@ -366,76 +461,61 @@ hp2)
366
461
  test -f "$tmpdepfile" && break
367
462
  done
368
463
  if test -f "$tmpdepfile"; then
369
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
464
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
370
465
  # Add 'dependent.h:' lines.
371
466
  sed -ne '2,${
372
- s/^ *//
373
- s/ \\*$//
374
- s/$/:/
375
- p
376
- }' "$tmpdepfile" >> "$depfile"
467
+ s/^ *//
468
+ s/ \\*$//
469
+ s/$/:/
470
+ p
471
+ }' "$tmpdepfile" >> "$depfile"
377
472
  else
378
- echo "#dummy" > "$depfile"
473
+ make_dummy_depfile
379
474
  fi
380
475
  rm -f "$tmpdepfile" "$tmpdepfile2"
381
476
  ;;
382
477
 
383
478
  tru64)
384
- # The Tru64 compiler uses -MD to generate dependencies as a side
385
- # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
386
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
387
- # dependencies in 'foo.d' instead, so we check for that too.
388
- # Subdirectories are respected.
389
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
390
- test "x$dir" = "x$object" && dir=
391
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
392
-
393
- if test "$libtool" = yes; then
394
- # With Tru64 cc, shared objects can also be used to make a
395
- # static library. This mechanism is used in libtool 1.4 series to
396
- # handle both shared and static libraries in a single compilation.
397
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
398
- #
399
- # With libtool 1.5 this exception was removed, and libtool now
400
- # generates 2 separate objects for the 2 libraries. These two
401
- # compilations output dependencies in $dir.libs/$base.o.d and
402
- # in $dir$base.o.d. We have to check for both files, because
403
- # one of the two compilations can be disabled. We should prefer
404
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
405
- # automatically cleaned when .libs/ is deleted, while ignoring
406
- # the former would cause a distcleancheck panic.
407
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
408
- tmpdepfile2=$dir$base.o.d # libtool 1.5
409
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
410
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
411
- "$@" -Wc,-MD
412
- else
413
- tmpdepfile1=$dir$base.o.d
414
- tmpdepfile2=$dir$base.d
415
- tmpdepfile3=$dir$base.d
416
- tmpdepfile4=$dir$base.d
417
- "$@" -MD
418
- fi
419
-
420
- stat=$?
421
- if test $stat -eq 0; then :
422
- else
423
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
424
- exit $stat
425
- fi
426
-
427
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
428
- do
429
- test -f "$tmpdepfile" && break
430
- done
431
- if test -f "$tmpdepfile"; then
432
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
433
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
434
- else
435
- echo "#dummy" > "$depfile"
436
- fi
437
- rm -f "$tmpdepfile"
438
- ;;
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
+ ;;
439
519
 
440
520
  msvc7)
441
521
  if test "$libtool" = yes; then
@@ -446,8 +526,7 @@ msvc7)
446
526
  "$@" $showIncludes > "$tmpdepfile"
447
527
  stat=$?
448
528
  grep -v '^Note: including file: ' "$tmpdepfile"
449
- if test "$stat" = 0; then :
450
- else
529
+ if test $stat -ne 0; then
451
530
  rm -f "$tmpdepfile"
452
531
  exit $stat
453
532
  fi
@@ -473,6 +552,7 @@ $ {
473
552
  G
474
553
  p
475
554
  }' >> "$depfile"
555
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
476
556
  rm -f "$tmpdepfile"
477
557
  ;;
478
558
 
@@ -524,13 +604,14 @@ dashmstdout)
524
604
  # in the target name. This is to cope with DOS-style filenames:
525
605
  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
526
606
  "$@" $dashmflag |
527
- sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
607
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
528
608
  rm -f "$depfile"
529
609
  cat < "$tmpdepfile" > "$depfile"
530
- tr ' ' "$nl" < "$tmpdepfile" | \
531
- ## Some versions of the HPUX 10.20 sed can't process this invocation
532
- ## correctly. Breaking it into two sed invocations is a workaround.
533
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
610
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
611
+ # correctly. Breaking it into two sed invocations is a workaround.
612
+ tr ' ' "$nl" < "$tmpdepfile" \
613
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
614
+ | sed -e 's/$/ :/' >> "$depfile"
534
615
  rm -f "$tmpdepfile"
535
616
  ;;
536
617
 
@@ -583,10 +664,12 @@ makedepend)
583
664
  # makedepend may prepend the VPATH from the source file name to the object.
584
665
  # No need to regex-escape $object, excess matching of '.' is harmless.
585
666
  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
586
- sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
587
- ## Some versions of the HPUX 10.20 sed can't process this invocation
588
- ## correctly. Breaking it into two sed invocations is a workaround.
589
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
667
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
668
+ # correctly. Breaking it into two sed invocations is a workaround.
669
+ sed '1,2d' "$tmpdepfile" \
670
+ | tr ' ' "$nl" \
671
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
672
+ | sed -e 's/$/ :/' >> "$depfile"
590
673
  rm -f "$tmpdepfile" "$tmpdepfile".bak
591
674
  ;;
592
675
 
@@ -622,10 +705,10 @@ cpp)
622
705
  esac
623
706
  done
624
707
 
625
- "$@" -E |
626
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
627
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
628
- sed '$ s: \\$::' > "$tmpdepfile"
708
+ "$@" -E \
709
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
710
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
711
+ | sed '$ s: \\$::' > "$tmpdepfile"
629
712
  rm -f "$depfile"
630
713
  echo "$object : \\" > "$depfile"
631
714
  cat < "$tmpdepfile" >> "$depfile"
@@ -657,15 +740,15 @@ msvisualcpp)
657
740
  shift
658
741
  ;;
659
742
  "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
660
- set fnord "$@"
661
- shift
662
- shift
663
- ;;
743
+ set fnord "$@"
744
+ shift
745
+ shift
746
+ ;;
664
747
  *)
665
- set fnord "$@" "$arg"
666
- shift
667
- shift
668
- ;;
748
+ set fnord "$@" "$arg"
749
+ shift
750
+ shift
751
+ ;;
669
752
  esac
670
753
  done
671
754
  "$@" -E 2>/dev/null |