libusb 0.4.1 → 0.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 (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 |