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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Gemfile +1 -0
- data/History.md +10 -0
- data/README.md +19 -6
- data/Rakefile +1 -1
- data/ext/extconf.rb +17 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/AUTHORS +18 -6
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/COPYING +0 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/ChangeLog +58 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/INSTALL +0 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/Makefile.am +6 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/Makefile.in +248 -174
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/NEWS +2 -2
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/PORTING +0 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/README +2 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/TODO +0 -0
- data/ext/libusbx-1.0.17/Xcode/common.xcconfig +40 -0
- data/ext/libusbx-1.0.17/Xcode/config.h +28 -0
- data/ext/libusbx-1.0.17/Xcode/debug.xcconfig +29 -0
- data/ext/libusbx-1.0.17/Xcode/libusbx.xcconfig +21 -0
- data/ext/libusbx-1.0.17/Xcode/libusbx.xcodeproj/project.pbxproj +864 -0
- data/ext/libusbx-1.0.17/Xcode/libusbx_debug.xcconfig +21 -0
- data/ext/libusbx-1.0.17/Xcode/libusbx_release.xcconfig +21 -0
- data/ext/libusbx-1.0.17/Xcode/release.xcconfig +29 -0
- data/ext/libusbx-1.0.17/aclocal.m4 +1112 -0
- data/ext/libusbx-1.0.17/android/README +114 -0
- data/ext/libusbx-1.0.17/android/config.h +90 -0
- data/ext/libusbx-1.0.17/android/jni/Android.mk +23 -0
- data/ext/libusbx-1.0.17/android/jni/Application.mk +19 -0
- data/ext/libusbx-1.0.17/android/jni/examples.mk +134 -0
- data/ext/libusbx-1.0.17/android/jni/libusb.mk +54 -0
- data/ext/libusbx-1.0.17/android/jni/tests.mk +56 -0
- data/ext/libusbx-1.0.17/compile +347 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/config.guess +164 -130
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/config.h.in +37 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/config.sub +174 -89
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/configure +723 -302
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/configure.ac +71 -20
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/depcomp +345 -185
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/doc/Makefile.am +0 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/doc/Makefile.in +95 -32
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/doc/doxygen.cfg.in +1 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/Makefile.am +5 -4
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/Makefile.in +208 -104
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/dpfp.c +1 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/dpfp_threaded.c +1 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/ezusb.c +188 -8
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/ezusb.h +18 -5
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/fxload.c +90 -64
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/getopt/getopt.c +0 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/getopt/getopt.h +0 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/getopt/getopt1.c +0 -0
- data/ext/libusbx-1.0.17/examples/hotplugtest.c +97 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/listdevs.c +12 -4
- data/ext/libusbx-1.0.17/examples/sam3u_benchmark.c +193 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/examples/xusb.c +106 -49
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/install-sh +21 -14
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb-1.0.pc.in +1 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/Makefile.am +29 -10
- data/ext/libusbx-1.0.17/libusb/Makefile.in +914 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/core.c +378 -87
- data/ext/libusbx-1.0.17/libusb/descriptor.c +1199 -0
- data/ext/libusbx-1.0.17/libusb/hotplug.c +322 -0
- data/ext/libusbx-1.0.17/libusb/hotplug.h +82 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/io.c +182 -62
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/libusb-1.0.def +32 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/libusb-1.0.rc +2 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/libusb.h +481 -32
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/libusbi.h +135 -38
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/darwin_usb.c +591 -496
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/darwin_usb.h +39 -46
- data/ext/libusbx-1.0.17/libusb/os/linux_netlink.c +345 -0
- data/ext/libusbx-1.0.17/libusb/os/linux_udev.c +306 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/linux_usbfs.c +653 -617
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/linux_usbfs.h +32 -0
- data/ext/{libusbx-1.0.14/libusb/os/openbsd_usb.c → libusbx-1.0.17/libusb/os/netbsd_usb.c} +70 -63
- data/ext/libusbx-1.0.17/libusb/os/openbsd_usb.c +823 -0
- data/ext/libusbx-1.0.17/libusb/os/poll_posix.c +51 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/poll_posix.h +2 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/poll_windows.c +85 -106
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/poll_windows.h +14 -3
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/threads_posix.c +3 -1
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/threads_posix.h +0 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/threads_windows.c +6 -5
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/threads_windows.h +0 -0
- data/ext/libusbx-1.0.17/libusb/os/wince_usb.c +1026 -0
- data/ext/libusbx-1.0.17/libusb/os/wince_usb.h +131 -0
- data/ext/libusbx-1.0.17/libusb/os/windows_common.h +108 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/windows_usb.c +92 -57
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/os/windows_usb.h +2 -63
- data/ext/libusbx-1.0.17/libusb/strerror.c +184 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/sync.c +24 -38
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/libusb/version.h +1 -1
- data/ext/libusbx-1.0.17/libusb/version_nano.h +1 -0
- data/ext/{libusbx-1.0.14 → libusbx-1.0.17}/ltmain.sh +60 -41
- data/ext/{libusbx-1.0.14/aclocal.m4 → libusbx-1.0.17/m4/libtool.m4} +229 -1723
- data/ext/libusbx-1.0.17/m4/ltoptions.m4 +384 -0
- data/ext/libusbx-1.0.17/m4/ltsugar.m4 +123 -0
- data/ext/libusbx-1.0.17/m4/ltversion.m4 +23 -0
- data/ext/libusbx-1.0.17/m4/lt~obsolete.m4 +98 -0
- data/ext/libusbx-1.0.17/missing +215 -0
- data/ext/libusbx-1.0.17/tests/Makefile.am +6 -0
- data/ext/libusbx-1.0.17/tests/Makefile.in +583 -0
- data/ext/libusbx-1.0.17/tests/libusbx_testlib.h +107 -0
- data/ext/libusbx-1.0.17/tests/stress.c +160 -0
- data/ext/libusbx-1.0.17/tests/testlib.c +276 -0
- data/lib/libusb.rb +4 -0
- data/lib/libusb/call.rb +43 -1
- data/lib/libusb/constants.rb +5 -0
- data/lib/libusb/context.rb +100 -0
- data/lib/libusb/dev_handle.rb +27 -0
- data/lib/libusb/device.rb +10 -4
- data/lib/libusb/version_gem.rb +1 -1
- data/test/test_libusb_capability.rb +2 -2
- data/test/test_libusb_compat.rb +2 -2
- data/test/test_libusb_compat_mass_storage.rb +2 -2
- data/test/test_libusb_descriptors.rb +4 -2
- data/test/test_libusb_event_machine.rb +2 -2
- data/test/test_libusb_gc.rb +2 -2
- data/test/test_libusb_hotplug.rb +115 -0
- data/test/test_libusb_iso_transfer.rb +3 -3
- data/test/test_libusb_mass_storage.rb +6 -16
- data/test/test_libusb_mass_storage2.rb +26 -3
- data/test/test_libusb_structs.rb +2 -2
- data/test/test_libusb_threads.rb +2 -2
- data/test/test_libusb_version.rb +2 -2
- metadata +127 -68
- metadata.gz.sig +0 -0
- data/ext/libusbx-1.0.14/THANKS +0 -7
- data/ext/libusbx-1.0.14/compile +0 -143
- data/ext/libusbx-1.0.14/libusb/Makefile.in +0 -721
- data/ext/libusbx-1.0.14/libusb/descriptor.c +0 -731
- data/ext/libusbx-1.0.14/libusb/version_nano.h +0 -1
- 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="
|
62
|
+
backend="openbsd"
|
63
63
|
threads="posix"
|
64
64
|
;;
|
65
65
|
*-netbsd*)
|
66
|
-
AC_MSG_RESULT([NetBSD
|
67
|
-
backend="
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
108
|
-
AC_DEFINE(OS_OPENBSD, 1, [OpenBSD
|
127
|
+
openbsd)
|
128
|
+
AC_DEFINE(OS_OPENBSD, 1, [OpenBSD backend])
|
109
129
|
AC_SUBST(OS_OPENBSD)
|
110
130
|
THREAD_CFLAGS="-pthread"
|
111
|
-
|
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
|
-
|
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(
|
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" =
|
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
|
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
|
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
|
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=
|
4
|
+
scriptversion=2012-10-18.11; # UTC
|
5
5
|
|
6
|
-
# Copyright (C) 1999
|
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
|
-
|
32
|
-
|
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
|
44
|
-
object Object file output by
|
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
|
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
|
-
|
84
|
-
|
85
|
-
|
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
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
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 -
|
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 -
|
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
|
-
|
148
|
-
|
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
|
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
|
-
|
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
|
-
|
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 -
|
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
|
273
|
+
# the IRIX cc adds comments like '#:fec' to the end of the
|
197
274
|
# dependency line.
|
198
|
-
tr ' '
|
199
|
-
'
|
200
|
-
|
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
|
-
'
|
208
|
-
|
209
|
-
>> "$depfile"
|
280
|
+
tr ' ' "$nl" < "$tmpdepfile" \
|
281
|
+
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
282
|
+
>> "$depfile"
|
210
283
|
else
|
211
|
-
|
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
|
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
|
-
|
226
|
-
|
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
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
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
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
#
|
273
|
-
#
|
274
|
-
#
|
275
|
-
#
|
276
|
-
#
|
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
|
-
|
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
|
-
|
313
|
-
|
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 -
|
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,^.*\.[
|
337
|
-
# Add
|
464
|
+
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
465
|
+
# Add 'dependent.h:' lines.
|
338
466
|
sed -ne '2,${
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
467
|
+
s/^ *//
|
468
|
+
s/ \\*$//
|
469
|
+
s/$/:/
|
470
|
+
p
|
471
|
+
}' "$tmpdepfile" >> "$depfile"
|
344
472
|
else
|
345
|
-
|
473
|
+
make_dummy_depfile
|
346
474
|
fi
|
347
475
|
rm -f "$tmpdepfile" "$tmpdepfile2"
|
348
476
|
;;
|
349
477
|
|
350
478
|
tru64)
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
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
|
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
|
604
|
+
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
448
605
|
"$@" $dashmflag |
|
449
|
-
sed
|
606
|
+
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
450
607
|
rm -f "$depfile"
|
451
608
|
cat < "$tmpdepfile" > "$depfile"
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
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
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
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
|
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
|
-
|
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
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
742
|
+
set fnord "$@"
|
743
|
+
shift
|
744
|
+
shift
|
745
|
+
;;
|
586
746
|
*)
|
587
|
-
|
588
|
-
|
589
|
-
|
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::
|
598
|
-
echo "
|
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
|
;;
|