libusb 0.3.4 → 0.4.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 (136) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Gemfile +1 -0
  5. data/History.md +10 -0
  6. data/README.md +19 -6
  7. data/Rakefile +1 -1
  8. data/ext/extconf.rb +17 -1
  9. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/AUTHORS +18 -6
  10. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/COPYING +0 -0
  11. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/ChangeLog +58 -1
  12. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/INSTALL +0 -0
  13. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/Makefile.am +6 -1
  14. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/Makefile.in +248 -174
  15. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/NEWS +2 -2
  16. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/PORTING +0 -0
  17. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/README +2 -1
  18. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/TODO +0 -0
  19. data/ext/libusbx-1.0.17/Xcode/common.xcconfig +40 -0
  20. data/ext/libusbx-1.0.17/Xcode/config.h +28 -0
  21. data/ext/libusbx-1.0.17/Xcode/debug.xcconfig +29 -0
  22. data/ext/libusbx-1.0.17/Xcode/libusbx.xcconfig +21 -0
  23. data/ext/libusbx-1.0.17/Xcode/libusbx.xcodeproj/project.pbxproj +864 -0
  24. data/ext/libusbx-1.0.17/Xcode/libusbx_debug.xcconfig +21 -0
  25. data/ext/libusbx-1.0.17/Xcode/libusbx_release.xcconfig +21 -0
  26. data/ext/libusbx-1.0.17/Xcode/release.xcconfig +29 -0
  27. data/ext/libusbx-1.0.17/aclocal.m4 +1112 -0
  28. data/ext/libusbx-1.0.17/android/README +114 -0
  29. data/ext/libusbx-1.0.17/android/config.h +90 -0
  30. data/ext/libusbx-1.0.17/android/jni/Android.mk +23 -0
  31. data/ext/libusbx-1.0.17/android/jni/Application.mk +19 -0
  32. data/ext/libusbx-1.0.17/android/jni/examples.mk +134 -0
  33. data/ext/libusbx-1.0.17/android/jni/libusb.mk +54 -0
  34. data/ext/libusbx-1.0.17/android/jni/tests.mk +56 -0
  35. data/ext/libusbx-1.0.17/compile +347 -0
  36. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/config.guess +164 -130
  37. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/config.h.in +37 -1
  38. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/config.sub +174 -89
  39. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/configure +723 -302
  40. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/configure.ac +71 -20
  41. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/depcomp +345 -185
  42. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/doc/Makefile.am +0 -0
  43. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/doc/Makefile.in +95 -32
  44. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/doc/doxygen.cfg.in +1 -1
  45. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/Makefile.am +5 -4
  46. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/Makefile.in +208 -104
  47. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/dpfp.c +1 -1
  48. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/dpfp_threaded.c +1 -1
  49. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/ezusb.c +188 -8
  50. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/ezusb.h +18 -5
  51. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/fxload.c +90 -64
  52. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/getopt/getopt.c +0 -0
  53. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/getopt/getopt.h +0 -0
  54. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/getopt/getopt1.c +0 -0
  55. data/ext/libusbx-1.0.17/examples/hotplugtest.c +97 -0
  56. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/listdevs.c +12 -4
  57. data/ext/libusbx-1.0.17/examples/sam3u_benchmark.c +193 -0
  58. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/xusb.c +106 -49
  59. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/install-sh +21 -14
  60. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb-1.0.pc.in +1 -1
  61. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/Makefile.am +29 -10
  62. data/ext/libusbx-1.0.17/libusb/Makefile.in +914 -0
  63. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/core.c +378 -87
  64. data/ext/libusbx-1.0.17/libusb/descriptor.c +1199 -0
  65. data/ext/libusbx-1.0.17/libusb/hotplug.c +322 -0
  66. data/ext/libusbx-1.0.17/libusb/hotplug.h +82 -0
  67. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/io.c +182 -62
  68. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/libusb-1.0.def +32 -0
  69. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/libusb-1.0.rc +2 -0
  70. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/libusb.h +481 -32
  71. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/libusbi.h +135 -38
  72. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/darwin_usb.c +591 -496
  73. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/darwin_usb.h +39 -46
  74. data/ext/libusbx-1.0.17/libusb/os/linux_netlink.c +345 -0
  75. data/ext/libusbx-1.0.17/libusb/os/linux_udev.c +306 -0
  76. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/linux_usbfs.c +653 -617
  77. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/linux_usbfs.h +32 -0
  78. data/ext/{libusbx-1.0.14/libusb/os/openbsd_usb.c → libusbx-1.0.17/libusb/os/netbsd_usb.c} +70 -63
  79. data/ext/libusbx-1.0.17/libusb/os/openbsd_usb.c +823 -0
  80. data/ext/libusbx-1.0.17/libusb/os/poll_posix.c +51 -0
  81. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/poll_posix.h +2 -1
  82. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/poll_windows.c +85 -106
  83. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/poll_windows.h +14 -3
  84. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/threads_posix.c +3 -1
  85. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/threads_posix.h +0 -0
  86. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/threads_windows.c +6 -5
  87. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/threads_windows.h +0 -0
  88. data/ext/libusbx-1.0.17/libusb/os/wince_usb.c +1026 -0
  89. data/ext/libusbx-1.0.17/libusb/os/wince_usb.h +131 -0
  90. data/ext/libusbx-1.0.17/libusb/os/windows_common.h +108 -0
  91. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/windows_usb.c +92 -57
  92. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/windows_usb.h +2 -63
  93. data/ext/libusbx-1.0.17/libusb/strerror.c +184 -0
  94. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/sync.c +24 -38
  95. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/version.h +1 -1
  96. data/ext/libusbx-1.0.17/libusb/version_nano.h +1 -0
  97. data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/ltmain.sh +60 -41
  98. data/ext/{libusbx-1.0.14/aclocal.m4 → libusbx-1.0.17/m4/libtool.m4} +229 -1723
  99. data/ext/libusbx-1.0.17/m4/ltoptions.m4 +384 -0
  100. data/ext/libusbx-1.0.17/m4/ltsugar.m4 +123 -0
  101. data/ext/libusbx-1.0.17/m4/ltversion.m4 +23 -0
  102. data/ext/libusbx-1.0.17/m4/lt~obsolete.m4 +98 -0
  103. data/ext/libusbx-1.0.17/missing +215 -0
  104. data/ext/libusbx-1.0.17/tests/Makefile.am +6 -0
  105. data/ext/libusbx-1.0.17/tests/Makefile.in +583 -0
  106. data/ext/libusbx-1.0.17/tests/libusbx_testlib.h +107 -0
  107. data/ext/libusbx-1.0.17/tests/stress.c +160 -0
  108. data/ext/libusbx-1.0.17/tests/testlib.c +276 -0
  109. data/lib/libusb.rb +4 -0
  110. data/lib/libusb/call.rb +43 -1
  111. data/lib/libusb/constants.rb +5 -0
  112. data/lib/libusb/context.rb +100 -0
  113. data/lib/libusb/dev_handle.rb +27 -0
  114. data/lib/libusb/device.rb +10 -4
  115. data/lib/libusb/version_gem.rb +1 -1
  116. data/test/test_libusb_capability.rb +2 -2
  117. data/test/test_libusb_compat.rb +2 -2
  118. data/test/test_libusb_compat_mass_storage.rb +2 -2
  119. data/test/test_libusb_descriptors.rb +4 -2
  120. data/test/test_libusb_event_machine.rb +2 -2
  121. data/test/test_libusb_gc.rb +2 -2
  122. data/test/test_libusb_hotplug.rb +115 -0
  123. data/test/test_libusb_iso_transfer.rb +3 -3
  124. data/test/test_libusb_mass_storage.rb +6 -16
  125. data/test/test_libusb_mass_storage2.rb +26 -3
  126. data/test/test_libusb_structs.rb +2 -2
  127. data/test/test_libusb_threads.rb +2 -2
  128. data/test/test_libusb_version.rb +2 -2
  129. metadata +127 -68
  130. metadata.gz.sig +0 -0
  131. data/ext/libusbx-1.0.14/THANKS +0 -7
  132. data/ext/libusbx-1.0.14/compile +0 -143
  133. data/ext/libusbx-1.0.14/libusb/Makefile.in +0 -721
  134. data/ext/libusbx-1.0.14/libusb/descriptor.c +0 -731
  135. data/ext/libusbx-1.0.14/libusb/version_nano.h +0 -1
  136. data/ext/libusbx-1.0.14/missing +0 -376
@@ -59,12 +59,12 @@ case $host in
59
59
  ;;
60
60
  *-openbsd*)
61
61
  AC_MSG_RESULT([OpenBSD])
62
- backend="bsd"
62
+ backend="openbsd"
63
63
  threads="posix"
64
64
  ;;
65
65
  *-netbsd*)
66
- AC_MSG_RESULT([NetBSD (using OpenBSD backend)])
67
- backend="bsd"
66
+ AC_MSG_RESULT([NetBSD])
67
+ backend="netbsd"
68
68
  threads="posix"
69
69
  ;;
70
70
  *-mingw*)
@@ -87,16 +87,36 @@ case $backend in
87
87
  linux)
88
88
  AC_DEFINE(OS_LINUX, 1, [Linux backend])
89
89
  AC_SUBST(OS_LINUX)
90
- AC_CHECK_LIB(rt, clock_gettime, PC_LIBS_PRIVATE="-lrt")
90
+ AC_SEARCH_LIBS(clock_gettime, rt, [], [], -pthread)
91
+ AC_ARG_ENABLE([udev],
92
+ [AC_HELP_STRING([--enable-udev], [use udev for device enumeration and hotplug support (recommended) [default=yes]])],
93
+ [], [enable_udev="yes"])
94
+ if test "x$enable_udev" = "xyes" ; then
95
+ # system has udev. use it or fail!
96
+ AC_CHECK_HEADERS([libudev.h],[],[AC_ERROR(["udev support requested but libudev not installed"])])
97
+ AC_CHECK_LIB([udev], [udev_new], [], [AC_ERROR(["udev support requested but libudev not installed"])])
98
+ AC_DEFINE(USE_UDEV, 1, [Use udev for device enumeration/hotplug])
99
+ else
100
+ AC_CHECK_HEADERS([asm/types.h sys/socket.h], [], [])
101
+ AC_CHECK_HEADERS([linux/netlink.h linux/filter.h], [], [AC_ERROR(["Linux netlink headers not found"])], [
102
+ #ifdef HAVE_ASM_TYPES_H
103
+ #include <asm/types.h>
104
+ #endif
105
+ #ifdef HAVE_SYS_SOCKET_H
106
+ #include <sys/socket.h>
107
+ #endif
108
+ ])
109
+ fi
110
+ AC_SUBST(USE_UDEV)
91
111
  THREAD_CFLAGS="-pthread"
92
- PC_LIBS_PRIVATE="${PC_LIBS_PRIVATE} -pthread"
112
+ LIBS="${LIBS} -pthread"
93
113
  AC_CHECK_HEADERS([poll.h])
94
114
  AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument])
95
115
  ;;
96
116
  darwin)
97
117
  AC_DEFINE(OS_DARWIN, 1, [Darwin backend])
98
118
  AC_SUBST(OS_DARWIN)
99
- PC_LIBS_PRIVATE="-lobjc -Wl,-framework,IOKit -Wl,-framework,CoreFoundation"
119
+ LIBS="-lobjc -Wl,-framework,IOKit -Wl,-framework,CoreFoundation"
100
120
  LTLDFLAGS="${LTLDFLAGS} -Wl,-prebind"
101
121
  AC_CHECK_HEADERS([poll.h])
102
122
  AC_CHECK_TYPE([nfds_t],
@@ -104,33 +124,41 @@ darwin)
104
124
  [AC_DEFINE([POLL_NFDS_TYPE],[unsigned int],[type of second poll() argument])],
105
125
  [#include <poll.h>])
106
126
  ;;
107
- bsd)
108
- AC_DEFINE(OS_OPENBSD, 1, [OpenBSD/NetBSD backend])
127
+ openbsd)
128
+ AC_DEFINE(OS_OPENBSD, 1, [OpenBSD backend])
109
129
  AC_SUBST(OS_OPENBSD)
110
130
  THREAD_CFLAGS="-pthread"
111
- PC_LIBS_PRIVATE="-pthread"
131
+ LIBS="-pthread"
132
+ AC_CHECK_HEADERS([poll.h])
133
+ AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument])
134
+ ;;
135
+ netbsd)
136
+ AC_DEFINE(OS_NETBSD, 1, [NetBSD backend])
137
+ AC_SUBST(OS_NETBSD)
138
+ THREAD_CFLAGS="-pthread"
139
+ LIBS="-pthread"
112
140
  AC_CHECK_HEADERS([poll.h])
113
141
  AC_DEFINE([POLL_NFDS_TYPE],[nfds_t],[type of second poll() argument])
114
142
  ;;
115
143
  windows)
116
144
  AC_DEFINE(OS_WINDOWS, 1, [Windows backend])
117
145
  AC_SUBST(OS_WINDOWS)
118
- PC_LIBS_PRIVATE=""
146
+ LIBS=""
119
147
  LTLDFLAGS="${LTLDFLAGS} -avoid-version -Wl,--add-stdcall-alias"
120
148
  AC_DEFINE([POLL_NFDS_TYPE],[unsigned int],[type of second poll() argument])
121
149
  ;;
122
150
  esac
123
151
 
124
- AC_SUBST(THREAD_CFLAGS)
125
- AC_SUBST(PC_LIBS_PRIVATE)
126
- LIBS="${LIBS} ${PC_LIBS_PRIVATE}"
152
+ AC_SUBST(LIBS)
127
153
 
128
154
  AM_CONDITIONAL(OS_LINUX, test "x$backend" = xlinux)
129
155
  AM_CONDITIONAL(OS_DARWIN, test "x$backend" = xdarwin)
130
- AM_CONDITIONAL(OS_OPENBSD, test "x$backend" = xbsd)
156
+ AM_CONDITIONAL(OS_OPENBSD, test "x$backend" = xopenbsd)
157
+ AM_CONDITIONAL(OS_NETBSD, test "x$backend" = xnetbsd)
131
158
  AM_CONDITIONAL(OS_WINDOWS, test "x$backend" = xwindows)
132
159
  AM_CONDITIONAL(THREADS_POSIX, test "x$threads" = xposix)
133
- AM_CONDITIONAL(CREATE_IMPORT_LIB, test "x$create_import_lib" = "xyes")
160
+ AM_CONDITIONAL(CREATE_IMPORT_LIB, test "x$create_import_lib" = "xyes")
161
+ AM_CONDITIONAL(USE_UDEV, test "x$enable_udev" = xyes)
134
162
  if test "$threads" = posix; then
135
163
  AC_DEFINE(THREADS_POSIX, 1, [Use POSIX Threads])
136
164
  fi
@@ -139,7 +167,7 @@ fi
139
167
  AC_CHECK_HEADER([sys/timerfd.h], [timerfd_h=1], [timerfd_h=0])
140
168
  AC_ARG_ENABLE([timerfd],
141
169
  [AS_HELP_STRING([--enable-timerfd],
142
- [use timerfd for timing (default auto)])],
170
+ [use timerfd for timing [default=auto]])],
143
171
  [use_timerfd=$enableval], [use_timerfd='auto'])
144
172
 
145
173
  if test "x$use_timerfd" = "xyes" -a "x$timerfd_h" = "x0"; then
@@ -174,20 +202,42 @@ if test "x$log_enabled" != "xno"; then
174
202
  fi
175
203
 
176
204
  AC_ARG_ENABLE([debug-log], [AS_HELP_STRING([--enable-debug-log],
177
- [start with debug message logging enabled (default n)])],
205
+ [start with debug message logging enabled [default=no]])],
178
206
  [debug_log_enabled=$enableval],
179
207
  [debug_log_enabled='no'])
180
208
  if test "x$debug_log_enabled" != "xno"; then
181
209
  AC_DEFINE([ENABLE_DEBUG_LOGGING], 1, [Start with debug message logging enabled])
182
210
  fi
183
211
 
212
+ AC_ARG_ENABLE([system-log], [AS_HELP_STRING([--enable-system-log],
213
+ [output logging messages to system wide log, if supported by the OS [default=no]])],
214
+ [system_log_enabled=$enableval],
215
+ [system_log_enabled='no'])
216
+ if test "x$system_log_enabled" != "xno"; then
217
+ AC_DEFINE([USE_SYSTEM_LOGGING_FACILITY], 1, [Enable output to system log])
218
+ fi
219
+
220
+ # Check if syslog is available in standard C library
221
+ AC_CHECK_HEADERS(syslog.h)
222
+ AC_CHECK_FUNC([syslog], [have_syslog=yes], [have_syslog=no])
223
+ if test "x$have_syslog" != "xno"; then
224
+ AC_DEFINE([HAVE_SYSLOG_FUNC], 1, [syslog() function available])
225
+ fi
226
+
184
227
  # Examples build
185
228
  AC_ARG_ENABLE([examples-build], [AS_HELP_STRING([--enable-examples-build],
186
- [build example applications (default n)])],
229
+ [build example applications [default=no]])],
187
230
  [build_examples=$enableval],
188
231
  [build_examples='no'])
189
232
  AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$build_examples" != "xno"])
190
233
 
234
+ # Tests build
235
+ AC_ARG_ENABLE([tests-build], [AS_HELP_STRING([--enable-tests-build],
236
+ [build test applications [default=no]])],
237
+ [build_tests=$enableval],
238
+ [build_tests='no'])
239
+ AM_CONDITIONAL([BUILD_TESTS], [test "x$build_tests" != "xno"])
240
+
191
241
  # check for -fvisibility=hidden compiler support (GCC >= 3.4)
192
242
  saved_cflags="$CFLAGS"
193
243
  # -Werror required for cygwin
@@ -214,10 +264,10 @@ AM_CONDITIONAL([HAVE_SIGACTION], [test "x$have_sigaction" = "xyes"])
214
264
  # headers not available on all platforms but required on others
215
265
  AC_CHECK_HEADERS([sys/time.h])
216
266
  AC_CHECK_FUNCS(gettimeofday)
267
+ AC_CHECK_HEADERS([signal.h])
217
268
 
218
- AM_CFLAGS="${AM_CFLAGS} -std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration $nopointersign_cflags -Wshadow"
269
+ AM_CFLAGS="${AM_CFLAGS} -std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration $nopointersign_cflags -Wshadow ${THREAD_CFLAGS} ${VISIBILITY_CFLAGS}"
219
270
 
220
- AC_SUBST(VISIBILITY_CFLAGS)
221
271
  AC_SUBST(AM_CFLAGS)
222
272
  AC_SUBST(LTLDFLAGS)
223
273
 
@@ -225,6 +275,7 @@ AC_CONFIG_FILES([libusb-1.0.pc])
225
275
  AC_CONFIG_FILES([Makefile])
226
276
  AC_CONFIG_FILES([libusb/Makefile])
227
277
  AC_CONFIG_FILES([examples/Makefile])
278
+ AC_CONFIG_FILES([tests/Makefile])
228
279
  AC_CONFIG_FILES([doc/Makefile])
229
280
  AC_CONFIG_FILES([doc/doxygen.cfg])
230
281
  AC_OUTPUT
@@ -1,10 +1,9 @@
1
1
  #! /bin/sh
2
2
  # depcomp - compile a program generating dependencies as side-effects
3
3
 
4
- scriptversion=2009-04-28.21; # UTC
4
+ scriptversion=2012-10-18.11; # UTC
5
5
 
6
- # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7
- # 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=2009-04-28.21; # 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]
@@ -40,11 +39,11 @@ as side-effects.
40
39
 
41
40
  Environment variables:
42
41
  depmode Dependency tracking mode.
43
- source Source file read by `PROGRAMS ARGS'.
44
- object Object file output by `PROGRAMS ARGS'.
42
+ source Source file read by 'PROGRAMS ARGS'.
43
+ object Object file output by 'PROGRAMS ARGS'.
45
44
  DEPDIR directory where to store dependencies.
46
45
  depfile Dependency file to output.
47
- tmpdepfile Temporary file to use when outputing dependencies.
46
+ tmpdepfile Temporary file to use when outputting dependencies.
48
47
  libtool Whether libtool is used (yes/no).
49
48
 
50
49
  Report bugs to <bug-automake@gnu.org>.
@@ -57,6 +56,66 @@ 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
+
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
+
60
119
  if test -z "$depmode" || test -z "$source" || test -z "$object"; then
61
120
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
62
121
  exit 1
@@ -69,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69
128
 
70
129
  rm -f "$tmpdepfile"
71
130
 
131
+ # Avoid interferences from the environment.
132
+ gccflag= dashmflag=
133
+
72
134
  # Some modes work just like other modes, but use different flags. We
73
135
  # parameterize here, but still list the modes in the big case below,
74
136
  # to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -80,18 +142,32 @@ if test "$depmode" = hp; then
80
142
  fi
81
143
 
82
144
  if test "$depmode" = dashXmstdout; then
83
- # This is just like dashmstdout with a different argument.
84
- dashmflag=-xM
85
- depmode=dashmstdout
145
+ # This is just like dashmstdout with a different argument.
146
+ dashmflag=-xM
147
+ depmode=dashmstdout
86
148
  fi
87
149
 
88
150
  cygpath_u="cygpath -u -f -"
89
151
  if test "$depmode" = msvcmsys; then
90
- # This is just like msvisualcpp but w/o cygpath translation.
91
- # Just convert the backslash-escaped backslashes to single forward
92
- # slashes to satisfy depend.m4
93
- cygpath_u="sed s,\\\\\\\\,/,g"
94
- depmode=msvisualcpp
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
95
171
  fi
96
172
 
97
173
  case "$depmode" in
@@ -114,8 +190,7 @@ gcc3)
114
190
  done
115
191
  "$@"
116
192
  stat=$?
117
- if test $stat -eq 0; then :
118
- else
193
+ if test $stat -ne 0; then
119
194
  rm -f "$tmpdepfile"
120
195
  exit $stat
121
196
  fi
@@ -123,13 +198,17 @@ gcc3)
123
198
  ;;
124
199
 
125
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).
126
204
  ## There are various ways to get dependency output from gcc. Here's
127
205
  ## why we pick this rather obscure method:
128
206
  ## - Don't want to use -MD because we'd like the dependencies to end
129
207
  ## up in a subdir. Having to rename by hand is ugly.
130
208
  ## (We might end up doing this anyway to support other compilers.)
131
209
  ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
132
- ## -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.
133
212
  ## - Using -M directly means running the compiler twice (even worse
134
213
  ## than renaming).
135
214
  if test -z "$gccflag"; then
@@ -137,31 +216,31 @@ gcc)
137
216
  fi
138
217
  "$@" -Wp,"$gccflag$tmpdepfile"
139
218
  stat=$?
140
- if test $stat -eq 0; then :
141
- else
219
+ if test $stat -ne 0; then
142
220
  rm -f "$tmpdepfile"
143
221
  exit $stat
144
222
  fi
145
223
  rm -f "$depfile"
146
224
  echo "$object : \\" > "$depfile"
147
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
148
- ## 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.
149
227
  sed -e 's/^[^:]*: / /' \
150
228
  -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
151
- ## This next piece of magic avoids the `deleted header file' problem.
229
+ ## This next piece of magic avoids the "deleted header file" problem.
152
230
  ## The problem is that when a header file which appears in a .P file
153
231
  ## is deleted, the dependency causes make to die (because there is
154
232
  ## typically no way to rebuild the header). We avoid this by adding
155
233
  ## dummy dependencies for each header file. Too bad gcc doesn't do
156
234
  ## this for us directly.
157
- tr ' ' '
158
- ' < "$tmpdepfile" |
159
- ## 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
160
236
  ## that the space means something, we add a space to the output as
161
- ## 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.
162
239
  ## Some versions of the HPUX 10.20 sed can't process this invocation
163
240
  ## correctly. Breaking it into two sed invocations is a workaround.
164
- 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"
165
244
  rm -f "$tmpdepfile"
166
245
  ;;
167
246
 
@@ -179,8 +258,7 @@ sgi)
179
258
  "$@" -MDupdate "$tmpdepfile"
180
259
  fi
181
260
  stat=$?
182
- if test $stat -eq 0; then :
183
- else
261
+ if test $stat -ne 0; then
184
262
  rm -f "$tmpdepfile"
185
263
  exit $stat
186
264
  fi
@@ -188,43 +266,41 @@ sgi)
188
266
 
189
267
  if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
190
268
  echo "$object : \\" > "$depfile"
191
-
192
269
  # Clip off the initial element (the dependent). Don't try to be
193
270
  # clever and replace this with sed code, as IRIX sed won't handle
194
271
  # lines with more than a fixed number of characters (4096 in
195
272
  # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
196
- # the IRIX cc adds comments like `#:fec' to the end of the
273
+ # the IRIX cc adds comments like '#:fec' to the end of the
197
274
  # dependency line.
198
- tr ' ' '
199
- ' < "$tmpdepfile" \
200
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
201
- tr '
202
- ' ' ' >> "$depfile"
275
+ tr ' ' "$nl" < "$tmpdepfile" \
276
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277
+ | tr "$nl" ' ' >> "$depfile"
203
278
  echo >> "$depfile"
204
-
205
279
  # The second pass generates a dummy entry for each header file.
206
- tr ' ' '
207
- ' < "$tmpdepfile" \
208
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
209
- >> "$depfile"
280
+ tr ' ' "$nl" < "$tmpdepfile" \
281
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282
+ >> "$depfile"
210
283
  else
211
- # The sourcefile does not contain any dependencies, so just
212
- # store a dummy comment line, to avoid errors with the Makefile
213
- # "include basename.Plo" scheme.
214
- echo "#dummy" > "$depfile"
284
+ make_dummy_depfile
215
285
  fi
216
286
  rm -f "$tmpdepfile"
217
287
  ;;
218
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
+
219
296
  aix)
220
297
  # The C for AIX Compiler uses -M and outputs the dependencies
221
298
  # in a .u file. In older versions, this file always lives in the
222
- # current directory. Also, the AIX compiler puts `$object:' at the
299
+ # current directory. Also, the AIX compiler puts '$object:' at the
223
300
  # start of each line; $object doesn't have directory information.
224
301
  # Version 6 uses the directory in both cases.
225
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226
- test "x$dir" = "x$object" && dir=
227
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
302
+ set_dir_from "$object"
303
+ set_base_from "$object"
228
304
  if test "$libtool" = yes; then
229
305
  tmpdepfile1=$dir$base.u
230
306
  tmpdepfile2=$base.u
@@ -237,9 +313,7 @@ aix)
237
313
  "$@" -M
238
314
  fi
239
315
  stat=$?
240
-
241
- if test $stat -eq 0; then :
242
- else
316
+ if test $stat -ne 0; then
243
317
  rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
244
318
  exit $stat
245
319
  fi
@@ -248,44 +322,100 @@ aix)
248
322
  do
249
323
  test -f "$tmpdepfile" && break
250
324
  done
251
- if test -f "$tmpdepfile"; then
252
- # Each line is of the form `foo.o: dependent.h'.
253
- # Do two passes, one to just change these to
254
- # `$object: dependent.h' and one to simply `dependent.h:'.
255
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256
- # That's a tab and a space in the [].
257
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
258
- else
259
- # The sourcefile does not contain any dependencies, so just
260
- # store a dummy comment line, to avoid errors with the Makefile
261
- # "include basename.Plo" scheme.
262
- echo "#dummy" > "$depfile"
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
263
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"
264
356
  rm -f "$tmpdepfile"
265
357
  ;;
266
358
 
267
- icc)
268
- # Intel's C compiler understands `-MD -MF file'. However on
269
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
270
- # ICC 7.0 will fill foo.d with something like
271
- # foo.o: sub/foo.c
272
- # foo.o: sub/foo.h
273
- # which is wrong. We want:
274
- # sub/foo.o: sub/foo.c
275
- # sub/foo.o: sub/foo.h
276
- # sub/foo.c:
277
- # sub/foo.h:
278
- # ICC 7.1 will output
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
279
369
  # foo.o: sub/foo.c sub/foo.h
280
- # and will wrap long lines using \ :
370
+ # and will wrap long lines using '\' :
281
371
  # foo.o: sub/foo.c ... \
282
372
  # sub/foo.h ... \
283
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
284
417
 
285
- "$@" -MD -MF "$tmpdepfile"
286
- stat=$?
287
- if test $stat -eq 0; then :
288
- else
418
+ if test $stat -ne 0; then
289
419
  rm -f "$tmpdepfile"
290
420
  exit $stat
291
421
  fi
@@ -297,8 +427,8 @@ icc)
297
427
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
298
428
  # Some versions of the HPUX 10.20 sed can't process this invocation
299
429
  # correctly. Breaking it into two sed invocations is a workaround.
300
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
301
- sed -e 's/$/ :/' >> "$depfile"
430
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431
+ | sed -e 's/$/ :/' >> "$depfile"
302
432
  rm -f "$tmpdepfile"
303
433
  ;;
304
434
 
@@ -309,9 +439,8 @@ hp2)
309
439
  # 'foo.d', which lands next to the object file, wherever that
310
440
  # happens to be.
311
441
  # Much of this is similar to the tru64 case; see comments there.
312
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
313
- test "x$dir" = "x$object" && dir=
314
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
442
+ set_dir_from "$object"
443
+ set_base_from "$object"
315
444
  if test "$libtool" = yes; then
316
445
  tmpdepfile1=$dir$base.d
317
446
  tmpdepfile2=$dir.libs/$base.d
@@ -322,8 +451,7 @@ hp2)
322
451
  "$@" +Maked
323
452
  fi
324
453
  stat=$?
325
- if test $stat -eq 0; then :
326
- else
454
+ if test $stat -ne 0; then
327
455
  rm -f "$tmpdepfile1" "$tmpdepfile2"
328
456
  exit $stat
329
457
  fi
@@ -333,77 +461,106 @@ hp2)
333
461
  test -f "$tmpdepfile" && break
334
462
  done
335
463
  if test -f "$tmpdepfile"; then
336
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
337
- # Add `dependent.h:' lines.
464
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
465
+ # Add 'dependent.h:' lines.
338
466
  sed -ne '2,${
339
- s/^ *//
340
- s/ \\*$//
341
- s/$/:/
342
- p
343
- }' "$tmpdepfile" >> "$depfile"
467
+ s/^ *//
468
+ s/ \\*$//
469
+ s/$/:/
470
+ p
471
+ }' "$tmpdepfile" >> "$depfile"
344
472
  else
345
- echo "#dummy" > "$depfile"
473
+ make_dummy_depfile
346
474
  fi
347
475
  rm -f "$tmpdepfile" "$tmpdepfile2"
348
476
  ;;
349
477
 
350
478
  tru64)
351
- # The Tru64 compiler uses -MD to generate dependencies as a side
352
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
353
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
354
- # dependencies in `foo.d' instead, so we check for that too.
355
- # Subdirectories are respected.
356
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
357
- test "x$dir" = "x$object" && dir=
358
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
359
-
360
- if test "$libtool" = yes; then
361
- # With Tru64 cc, shared objects can also be used to make a
362
- # static library. This mechanism is used in libtool 1.4 series to
363
- # handle both shared and static libraries in a single compilation.
364
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
365
- #
366
- # With libtool 1.5 this exception was removed, and libtool now
367
- # generates 2 separate objects for the 2 libraries. These two
368
- # compilations output dependencies in $dir.libs/$base.o.d and
369
- # in $dir$base.o.d. We have to check for both files, because
370
- # one of the two compilations can be disabled. We should prefer
371
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
372
- # automatically cleaned when .libs/ is deleted, while ignoring
373
- # the former would cause a distcleancheck panic.
374
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
375
- tmpdepfile2=$dir$base.o.d # libtool 1.5
376
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
377
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
378
- "$@" -Wc,-MD
379
- else
380
- tmpdepfile1=$dir$base.o.d
381
- tmpdepfile2=$dir$base.d
382
- tmpdepfile3=$dir$base.d
383
- tmpdepfile4=$dir$base.d
384
- "$@" -MD
385
- fi
386
-
387
- stat=$?
388
- if test $stat -eq 0; then :
389
- else
390
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
391
- exit $stat
392
- fi
393
-
394
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
395
- do
396
- test -f "$tmpdepfile" && break
397
- done
398
- if test -f "$tmpdepfile"; then
399
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
400
- # That's a tab and a space in the [].
401
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
402
- else
403
- echo "#dummy" > "$depfile"
404
- fi
405
- rm -f "$tmpdepfile"
406
- ;;
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
+ ;;
407
564
 
408
565
  #nosideeffect)
409
566
  # This comment above is used by automake to tell side-effect
@@ -422,7 +579,7 @@ dashmstdout)
422
579
  shift
423
580
  fi
424
581
 
425
- # Remove `-o $object'.
582
+ # Remove '-o $object'.
426
583
  IFS=" "
427
584
  for arg
428
585
  do
@@ -442,18 +599,18 @@ dashmstdout)
442
599
  done
443
600
 
444
601
  test -z "$dashmflag" && dashmflag=-M
445
- # Require at least two characters before searching for `:'
602
+ # Require at least two characters before searching for ':'
446
603
  # in the target name. This is to cope with DOS-style filenames:
447
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
604
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
448
605
  "$@" $dashmflag |
449
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
606
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
450
607
  rm -f "$depfile"
451
608
  cat < "$tmpdepfile" > "$depfile"
452
- tr ' ' '
453
- ' < "$tmpdepfile" | \
454
- ## Some versions of the HPUX 10.20 sed can't process this invocation
455
- ## correctly. Breaking it into two sed invocations is a workaround.
456
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
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"
457
614
  rm -f "$tmpdepfile"
458
615
  ;;
459
616
 
@@ -503,12 +660,15 @@ makedepend)
503
660
  touch "$tmpdepfile"
504
661
  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
505
662
  rm -f "$depfile"
506
- cat < "$tmpdepfile" > "$depfile"
507
- sed '1,2d' "$tmpdepfile" | tr ' ' '
508
- ' | \
509
- ## Some versions of the HPUX 10.20 sed can't process this invocation
510
- ## correctly. Breaking it into two sed invocations is a workaround.
511
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
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"
512
672
  rm -f "$tmpdepfile" "$tmpdepfile".bak
513
673
  ;;
514
674
 
@@ -525,7 +685,7 @@ cpp)
525
685
  shift
526
686
  fi
527
687
 
528
- # Remove `-o $object'.
688
+ # Remove '-o $object'.
529
689
  IFS=" "
530
690
  for arg
531
691
  do
@@ -544,10 +704,10 @@ cpp)
544
704
  esac
545
705
  done
546
706
 
547
- "$@" -E |
548
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
549
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
550
- sed '$ s: \\$::' > "$tmpdepfile"
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"
551
711
  rm -f "$depfile"
552
712
  echo "$object : \\" > "$depfile"
553
713
  cat < "$tmpdepfile" >> "$depfile"
@@ -579,23 +739,23 @@ msvisualcpp)
579
739
  shift
580
740
  ;;
581
741
  "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
582
- set fnord "$@"
583
- shift
584
- shift
585
- ;;
742
+ set fnord "$@"
743
+ shift
744
+ shift
745
+ ;;
586
746
  *)
587
- set fnord "$@" "$arg"
588
- shift
589
- shift
590
- ;;
747
+ set fnord "$@" "$arg"
748
+ shift
749
+ shift
750
+ ;;
591
751
  esac
592
752
  done
593
753
  "$@" -E 2>/dev/null |
594
754
  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
595
755
  rm -f "$depfile"
596
756
  echo "$object : \\" > "$depfile"
597
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
598
- echo " " >> "$depfile"
757
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
758
+ echo "$tab" >> "$depfile"
599
759
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
600
760
  rm -f "$tmpdepfile"
601
761
  ;;