melisa 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -4
  3. data/ext/extconf.rb +33 -0
  4. data/ext/marisa-0.2.4/AUTHORS +1 -0
  5. data/ext/marisa-0.2.4/COPYING +32 -0
  6. data/ext/marisa-0.2.4/ChangeLog +0 -0
  7. data/ext/marisa-0.2.4/INSTALL +237 -0
  8. data/ext/marisa-0.2.4/Makefile.am +24 -0
  9. data/ext/marisa-0.2.4/Makefile.in +803 -0
  10. data/ext/marisa-0.2.4/NEWS +0 -0
  11. data/ext/marisa-0.2.4/README +63 -0
  12. data/ext/marisa-0.2.4/aclocal.m4 +976 -0
  13. data/ext/marisa-0.2.4/bindings/Makefile +16 -0
  14. data/ext/{marisa → marisa-0.2.4}/bindings/marisa-swig.cxx +0 -0
  15. data/ext/{marisa → marisa-0.2.4}/bindings/marisa-swig.h +0 -0
  16. data/ext/marisa-0.2.4/bindings/marisa-swig.i +28 -0
  17. data/ext/marisa-0.2.4/bindings/perl/Makefile.PL +7 -0
  18. data/ext/{marisa → marisa-0.2.4}/bindings/perl/marisa-swig.cxx +0 -0
  19. data/ext/{marisa → marisa-0.2.4}/bindings/perl/marisa-swig.h +0 -0
  20. data/ext/{marisa → marisa-0.2.4}/bindings/perl/marisa-swig_wrap.cxx +0 -0
  21. data/ext/marisa-0.2.4/bindings/perl/marisa.pm +297 -0
  22. data/ext/marisa-0.2.4/bindings/perl/sample.dic +0 -0
  23. data/ext/marisa-0.2.4/bindings/perl/sample.pl +62 -0
  24. data/ext/{marisa → marisa-0.2.4}/bindings/python/marisa-swig.cxx +0 -0
  25. data/ext/{marisa → marisa-0.2.4}/bindings/python/marisa-swig.h +0 -0
  26. data/ext/{marisa → marisa-0.2.4}/bindings/python/marisa-swig_wrap.cxx +0 -0
  27. data/ext/marisa-0.2.4/bindings/python/marisa.py +206 -0
  28. data/ext/marisa-0.2.4/bindings/python/sample.dic +0 -0
  29. data/ext/marisa-0.2.4/bindings/python/sample.py +57 -0
  30. data/ext/marisa-0.2.4/bindings/python/setup.py +9 -0
  31. data/ext/marisa-0.2.4/config.guess +1530 -0
  32. data/ext/marisa-0.2.4/config.sub +1773 -0
  33. data/ext/marisa-0.2.4/configure +17636 -0
  34. data/ext/marisa-0.2.4/configure.ac +172 -0
  35. data/ext/marisa-0.2.4/depcomp +688 -0
  36. data/ext/marisa-0.2.4/docs/readme.en.html +740 -0
  37. data/ext/marisa-0.2.4/docs/readme.ja.html +750 -0
  38. data/ext/marisa-0.2.4/docs/style.css +245 -0
  39. data/ext/marisa-0.2.4/install-sh +520 -0
  40. data/ext/marisa-0.2.4/lib/Makefile.am +57 -0
  41. data/ext/marisa-0.2.4/lib/Makefile.in +701 -0
  42. data/ext/{marisa → marisa-0.2.4}/lib/marisa.h +0 -0
  43. data/ext/{marisa → marisa-0.2.4}/lib/marisa/agent.cc +2 -2
  44. data/ext/{marisa → marisa-0.2.4}/lib/marisa/agent.h +2 -2
  45. data/ext/{marisa → marisa-0.2.4}/lib/marisa/base.h +3 -3
  46. data/ext/{marisa → marisa-0.2.4}/lib/marisa/exception.h +1 -1
  47. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/algorithm.h +1 -1
  48. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/algorithm/sort.h +1 -1
  49. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/intrin.h +1 -1
  50. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/io.h +3 -3
  51. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/io/mapper.cc +1 -1
  52. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/io/mapper.h +1 -1
  53. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/io/reader.cc +1 -1
  54. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/io/reader.h +1 -1
  55. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/io/writer.cc +1 -1
  56. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/io/writer.h +1 -1
  57. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie.h +2 -2
  58. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/cache.h +1 -1
  59. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/config.h +1 -1
  60. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/entry.h +1 -1
  61. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/header.h +1 -1
  62. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/history.h +1 -1
  63. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/key.h +1 -1
  64. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/louds-trie.cc +5 -5
  65. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/louds-trie.h +7 -7
  66. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/range.h +1 -1
  67. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/state.h +2 -2
  68. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/tail.cc +3 -3
  69. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/trie/tail.h +3 -3
  70. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/vector.h +3 -3
  71. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/vector/bit-vector.cc +2 -2
  72. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/vector/bit-vector.h +2 -2
  73. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/vector/flat-vector.h +1 -1
  74. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/vector/pop-count.h +1 -1
  75. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/vector/rank-index.h +1 -1
  76. data/ext/{marisa → marisa-0.2.4}/lib/marisa/grimoire/vector/vector.h +1 -1
  77. data/ext/{marisa → marisa-0.2.4}/lib/marisa/iostream.h +0 -0
  78. data/ext/{marisa → marisa-0.2.4}/lib/marisa/key.h +1 -1
  79. data/ext/{marisa → marisa-0.2.4}/lib/marisa/keyset.cc +1 -1
  80. data/ext/{marisa → marisa-0.2.4}/lib/marisa/keyset.h +1 -1
  81. data/ext/{marisa → marisa-0.2.4}/lib/marisa/query.h +1 -1
  82. data/ext/{marisa → marisa-0.2.4}/lib/marisa/scoped-array.h +1 -1
  83. data/ext/{marisa → marisa-0.2.4}/lib/marisa/scoped-ptr.h +1 -1
  84. data/ext/{marisa → marisa-0.2.4}/lib/marisa/stdio.h +0 -0
  85. data/ext/{marisa → marisa-0.2.4}/lib/marisa/trie.cc +4 -4
  86. data/ext/{marisa → marisa-0.2.4}/lib/marisa/trie.h +2 -2
  87. data/ext/marisa-0.2.4/ltmain.sh +9661 -0
  88. data/ext/marisa-0.2.4/m4/libtool.m4 +8001 -0
  89. data/ext/marisa-0.2.4/m4/ltoptions.m4 +384 -0
  90. data/ext/marisa-0.2.4/m4/ltsugar.m4 +123 -0
  91. data/ext/marisa-0.2.4/m4/ltversion.m4 +23 -0
  92. data/ext/marisa-0.2.4/m4/lt~obsolete.m4 +98 -0
  93. data/ext/marisa-0.2.4/marisa.pc.in +11 -0
  94. data/ext/marisa-0.2.4/missing +331 -0
  95. data/ext/marisa-0.2.4/mkmf.log +288 -0
  96. data/ext/marisa-0.2.4/pkg/bin/marisa-benchmark +0 -0
  97. data/ext/marisa-0.2.4/pkg/bin/marisa-build +0 -0
  98. data/ext/marisa-0.2.4/pkg/bin/marisa-common-prefix-search +0 -0
  99. data/ext/marisa-0.2.4/pkg/bin/marisa-dump +0 -0
  100. data/ext/marisa-0.2.4/pkg/bin/marisa-lookup +0 -0
  101. data/ext/marisa-0.2.4/pkg/bin/marisa-predictive-search +0 -0
  102. data/ext/marisa-0.2.4/pkg/bin/marisa-reverse-lookup +0 -0
  103. data/ext/marisa-0.2.4/pkg/include/marisa.h +14 -0
  104. data/ext/marisa-0.2.4/pkg/include/marisa/agent.h +73 -0
  105. data/ext/marisa-0.2.4/pkg/include/marisa/base.h +193 -0
  106. data/ext/marisa-0.2.4/pkg/include/marisa/exception.h +82 -0
  107. data/ext/marisa-0.2.4/pkg/include/marisa/iostream.h +18 -0
  108. data/ext/marisa-0.2.4/pkg/include/marisa/key.h +85 -0
  109. data/ext/marisa-0.2.4/pkg/include/marisa/keyset.h +80 -0
  110. data/ext/marisa-0.2.4/pkg/include/marisa/query.h +71 -0
  111. data/ext/marisa-0.2.4/pkg/include/marisa/scoped-array.h +48 -0
  112. data/ext/marisa-0.2.4/pkg/include/marisa/scoped-ptr.h +52 -0
  113. data/ext/marisa-0.2.4/pkg/include/marisa/stdio.h +15 -0
  114. data/ext/marisa-0.2.4/pkg/include/marisa/trie.h +64 -0
  115. data/ext/marisa-0.2.4/pkg/lib/libmarisa.0.dylib +0 -0
  116. data/ext/marisa-0.2.4/pkg/lib/libmarisa.a +0 -0
  117. data/ext/marisa-0.2.4/pkg/lib/libmarisa.dylib +0 -0
  118. data/ext/marisa-0.2.4/pkg/lib/libmarisa.la +41 -0
  119. data/ext/marisa-0.2.4/pkg/lib/pkgconfig/marisa.pc +11 -0
  120. data/ext/marisa-0.2.4/tests/Makefile.am +27 -0
  121. data/ext/marisa-0.2.4/tests/Makefile.in +624 -0
  122. data/ext/{marisa → marisa-0.2.4}/tests/base-test.cc +0 -0
  123. data/ext/{marisa → marisa-0.2.4}/tests/io-test.cc +0 -0
  124. data/ext/{marisa → marisa-0.2.4}/tests/marisa-assert.h +0 -0
  125. data/ext/{marisa → marisa-0.2.4}/tests/marisa-test.cc +0 -0
  126. data/ext/{marisa → marisa-0.2.4}/tests/trie-test.cc +0 -0
  127. data/ext/{marisa → marisa-0.2.4}/tests/vector-test.cc +0 -0
  128. data/ext/marisa-0.2.4/tools/Makefile.am +39 -0
  129. data/ext/marisa-0.2.4/tools/Makefile.in +616 -0
  130. data/ext/{marisa → marisa-0.2.4}/tools/cmdopt.cc +0 -0
  131. data/ext/{marisa → marisa-0.2.4}/tools/cmdopt.h +0 -0
  132. data/ext/{marisa → marisa-0.2.4}/tools/marisa-benchmark.cc +0 -0
  133. data/ext/{marisa → marisa-0.2.4}/tools/marisa-build.cc +0 -0
  134. data/ext/{marisa → marisa-0.2.4}/tools/marisa-common-prefix-search.cc +0 -0
  135. data/ext/{marisa → marisa-0.2.4}/tools/marisa-dump.cc +0 -0
  136. data/ext/{marisa → marisa-0.2.4}/tools/marisa-lookup.cc +0 -0
  137. data/ext/{marisa → marisa-0.2.4}/tools/marisa-predictive-search.cc +0 -0
  138. data/ext/{marisa → marisa-0.2.4}/tools/marisa-reverse-lookup.cc +0 -0
  139. data/ext/marisa-0.2.4/vs2008/base-test/base-test.vcproj +200 -0
  140. data/ext/marisa-0.2.4/vs2008/io-test/io-test.vcproj +199 -0
  141. data/ext/marisa-0.2.4/vs2008/libmarisa/libmarisa.vcproj +347 -0
  142. data/ext/marisa-0.2.4/vs2008/marisa-benchmark/marisa-benchmark.vcproj +203 -0
  143. data/ext/marisa-0.2.4/vs2008/marisa-build/marisa-build.vcproj +203 -0
  144. data/ext/marisa-0.2.4/vs2008/marisa-common-prefix-search/marisa-common-prefix-search.vcproj +203 -0
  145. data/ext/marisa-0.2.4/vs2008/marisa-dump/marisa-dump.vcproj +203 -0
  146. data/ext/marisa-0.2.4/vs2008/marisa-lookup/marisa-lookup.vcproj +203 -0
  147. data/ext/marisa-0.2.4/vs2008/marisa-predictive-search/marisa-predictive-search.vcproj +203 -0
  148. data/ext/marisa-0.2.4/vs2008/marisa-reverse-lookup/marisa-reverse-lookup.vcproj +203 -0
  149. data/ext/marisa-0.2.4/vs2008/marisa-test/marisa-test.vcproj +199 -0
  150. data/ext/marisa-0.2.4/vs2008/trie-test/trie-test.vcproj +199 -0
  151. data/ext/marisa-0.2.4/vs2008/vector-test/vector-test.vcproj +199 -0
  152. data/ext/marisa-0.2.4/vs2008/vs2008.sln +123 -0
  153. data/ext/marisa-0.2.4/vs2008/vs2008.suo +0 -0
  154. data/ext/{marisa/bindings/ruby/marisa-swig.cxx → marisa-swig.cxx} +0 -0
  155. data/ext/{marisa/bindings/ruby/marisa-swig.h → marisa-swig.h} +0 -0
  156. data/ext/{marisa/bindings/ruby/marisa-swig_wrap.cxx → marisa-swig_wrap.cxx} +0 -0
  157. data/lib/melisa/bytes_trie.rb +5 -0
  158. data/lib/melisa/trie.rb +2 -0
  159. data/lib/melisa/version.rb +1 -1
  160. data/melisa.gemspec +7 -9
  161. data/spec/bytes_trie_spec.rb +6 -1
  162. data/spec/int_trie_spec.rb +5 -0
  163. data/spec/search_spec.rb +6 -7
  164. data/spec/trie_spec.rb +4 -4
  165. metadata +178 -121
  166. data/ext/marisa/bindings/ruby/extconf.rb +0 -5
@@ -0,0 +1,172 @@
1
+ # -*- Autoconf -*-
2
+ # Process this file with autoconf to produce a configure script.
3
+
4
+ AC_PREREQ([2.67])
5
+ AC_INIT([marisa], [0.2.4], [syata@acm.org])
6
+ AC_CONFIG_SRCDIR([lib/marisa.h])
7
+ AM_INIT_AUTOMAKE
8
+
9
+ # Checks for programs.
10
+ LT_INIT
11
+ AC_PROG_CXX
12
+ AC_PROG_INSTALL
13
+
14
+ AC_CONFIG_MACRO_DIR([m4])
15
+
16
+ # Checks for SSE availability.
17
+ AC_MSG_CHECKING([whether to use SSE2])
18
+ AC_ARG_ENABLE([sse2],
19
+ [AS_HELP_STRING([--enable-sse2],
20
+ [use SSE2 [default=no]])],
21
+ [],
22
+ [enable_sse2="no"])
23
+ AS_IF([test "x${enable_sse2}" != "xno"], [
24
+ enable_sse2="yes"
25
+ ])
26
+ AC_MSG_RESULT([${enable_sse2}])
27
+
28
+ AC_MSG_CHECKING([whether to use SSE3])
29
+ AC_ARG_ENABLE([sse3],
30
+ [AS_HELP_STRING([--enable-sse3],
31
+ [use SSE3 [default=no]])],
32
+ [],
33
+ [enable_sse3="no"])
34
+ AS_IF([test "x${enable_sse3}" != "xno"], [
35
+ enable_sse3="yes"
36
+ ])
37
+ AC_MSG_RESULT([${enable_sse3}])
38
+
39
+ AC_MSG_CHECKING([whether to use SSSE3])
40
+ AC_ARG_ENABLE([ssse3],
41
+ [AS_HELP_STRING([--enable-ssse3],
42
+ [use SSSE3 [default=no]])],
43
+ [],
44
+ [enable_ssse3="no"])
45
+ AS_IF([test "x${enable_ssse3}" != "xno"], [
46
+ enable_ssse3="yes"
47
+ ])
48
+ AC_MSG_RESULT([${enable_ssse3}])
49
+
50
+ AC_MSG_CHECKING([whether to use SSE4.1])
51
+ AC_ARG_ENABLE([sse4.1],
52
+ [AS_HELP_STRING([--enable-sse4.1],
53
+ [use SSE4.1 [default=no]])],
54
+ [],
55
+ [enable_sse4_1="no"])
56
+ AS_IF([test "x${enable_sse4_1}" != "xno"], [
57
+ enable_sse4_1="yes"
58
+ ])
59
+ AC_MSG_RESULT([${enable_sse4_1}])
60
+
61
+ AC_MSG_CHECKING([whether to use SSE4.2])
62
+ AC_ARG_ENABLE([sse4.2],
63
+ [AS_HELP_STRING([--enable-sse4.2],
64
+ [use SSE4.2 [default=no]])],
65
+ [],
66
+ [enable_sse4_2="no"])
67
+ AS_IF([test "x${enable_sse4_2}" != "xno"], [
68
+ enable_sse4_2="yes"
69
+ ])
70
+ AC_MSG_RESULT([${enable_sse4_2}])
71
+
72
+ AC_MSG_CHECKING([whether to use SSE4])
73
+ AC_ARG_ENABLE([sse4],
74
+ [AS_HELP_STRING([--enable-sse4],
75
+ [use SSE4 [default=no]])],
76
+ [],
77
+ [enable_sse4="no"])
78
+ AS_IF([test "x${enable_sse4}" != "xno"], [
79
+ enable_sse4="yes"
80
+ ])
81
+ AC_MSG_RESULT([${enable_sse4}])
82
+
83
+ AC_MSG_CHECKING([whether to use SSE4a])
84
+ AC_ARG_ENABLE([sse4a],
85
+ [AS_HELP_STRING([--enable-sse4a],
86
+ [use SSE4a [default=no]])],
87
+ [],
88
+ [enable_sse4a="no"])
89
+ AS_IF([test "x${enable_sse4a}" != "xno"], [
90
+ enable_sse4a="yes"
91
+ ])
92
+ AC_MSG_RESULT([${enable_sse4a}])
93
+
94
+ AC_MSG_CHECKING([whether to use popcnt])
95
+ AC_ARG_ENABLE([popcnt],
96
+ [AS_HELP_STRING([--enable-popcnt],
97
+ [use POPCNT [default=no]])],
98
+ [],
99
+ [enable_popcnt="no"])
100
+ AS_IF([test "x${enable_popcnt}" != "xno"], [
101
+ enable_popcnt="yes"
102
+ ])
103
+ AC_MSG_RESULT([${enable_popcnt}])
104
+
105
+ AS_IF([test "x${enable_popcnt}" != "xno"], [
106
+ enable_sse3="yes"
107
+ ])
108
+ AS_IF([test "x${enable_sse4a}" != "xno"], [
109
+ enable_popcnt="yes"
110
+ enable_sse3="yes"
111
+ ])
112
+ AS_IF([test "x${enable_sse4}" != "xno"], [
113
+ enable_popcnt="yes"
114
+ enable_sse4_2="yes"
115
+ ])
116
+ AS_IF([test "x${enable_sse4_2}" != "xno"], [
117
+ enable_popcnt="yes"
118
+ enable_sse4_1="yes"
119
+ ])
120
+ AS_IF([test "x${enable_sse4_1}" != "xno"], [
121
+ enable_ssse3="yes"
122
+ ])
123
+ AS_IF([test "x${enable_ssse3}" != "xno"], [
124
+ enable_sse3="yes"
125
+ ])
126
+ AS_IF([test "x${enable_sse3}" != "xno"], [
127
+ enable_sse2="yes"
128
+ ])
129
+
130
+ AS_IF([test "x${enable_popcnt}" != "xno"], [
131
+ CXXFLAGS="$CXXFLAGS -DMARISA_USE_POPCNT -mpopcnt"
132
+ ])
133
+ if test "x${enable_sse4a}" != "xno"; then
134
+ CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4A -msse4a"
135
+ elif test "x${enable_sse4}" != "xno"; then
136
+ CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4 -msse4"
137
+ elif test "x${enable_sse4_2}" != "xno"; then
138
+ CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4_2 -msse4.2"
139
+ elif test "x${enable_sse4_1}" != "xno"; then
140
+ CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE4_1 -msse4.1"
141
+ elif test "x${enable_ssse3}" != "xno"; then
142
+ CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSSE3 -mssse3"
143
+ elif test "x${enable_sse3}" != "xno"; then
144
+ CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE3 -msse3"
145
+ elif test "x${enable_sse2}" != "xno"; then
146
+ CXXFLAGS="$CXXFLAGS -DMARISA_USE_SSE2 -msse2"
147
+ fi
148
+
149
+ AC_CONFIG_FILES([Makefile
150
+ marisa.pc
151
+ lib/Makefile
152
+ tests/Makefile
153
+ tools/Makefile])
154
+ AC_OUTPUT
155
+
156
+ AS_ECHO([])
157
+ AS_ECHO(["${PACKAGE_NAME} ${PACKAGE_VERSION} configuration:"])
158
+ AS_ECHO(["-------------------------------"])
159
+ AS_ECHO([" HOST: ${host}"])
160
+ AS_ECHO([" CXX: ${CXX}"])
161
+ AS_ECHO([" CXXFLAGS: ${CXXFLAGS}"])
162
+ AS_ECHO([" LDFLAGS: ${LDFLAGS}"])
163
+ AS_ECHO([" PREFIX: ${prefix}"])
164
+ AS_ECHO([])
165
+ AS_ECHO([" SSE2: ${enable_sse2}"])
166
+ AS_ECHO([" SSE3: ${enable_sse3}"])
167
+ AS_ECHO([" SSSE3: ${enable_ssse3}"])
168
+ AS_ECHO([" SSE4.1: ${enable_sse4_1}"])
169
+ AS_ECHO([" SSE4.2: ${enable_sse4_2}"])
170
+ AS_ECHO([" SSE4a: ${enable_sse4a}"])
171
+ AS_ECHO([" POPCNT: ${enable_popcnt}"])
172
+ AS_ECHO([])
@@ -0,0 +1,688 @@
1
+ #! /bin/sh
2
+ # depcomp - compile a program generating dependencies as side-effects
3
+
4
+ scriptversion=2011-12-04.11; # UTC
5
+
6
+ # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
7
+ # 2011 Free Software Foundation, Inc.
8
+
9
+ # This program is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation; either version 2, or (at your option)
12
+ # any later version.
13
+
14
+ # This program is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
21
+
22
+ # As a special exception to the GNU General Public License, if you
23
+ # distribute this file as part of a program that contains a
24
+ # configuration script generated by Autoconf, you may include it under
25
+ # the same distribution terms that you use for the rest of that program.
26
+
27
+ # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28
+
29
+ case $1 in
30
+ '')
31
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
32
+ exit 1;
33
+ ;;
34
+ -h | --h*)
35
+ cat <<\EOF
36
+ Usage: depcomp [--help] [--version] PROGRAM [ARGS]
37
+
38
+ Run PROGRAMS ARGS to compile a file, generating dependencies
39
+ as side-effects.
40
+
41
+ Environment variables:
42
+ depmode Dependency tracking mode.
43
+ source Source file read by `PROGRAMS ARGS'.
44
+ object Object file output by `PROGRAMS ARGS'.
45
+ DEPDIR directory where to store dependencies.
46
+ depfile Dependency file to output.
47
+ tmpdepfile Temporary file to use when outputting dependencies.
48
+ libtool Whether libtool is used (yes/no).
49
+
50
+ Report bugs to <bug-automake@gnu.org>.
51
+ EOF
52
+ exit $?
53
+ ;;
54
+ -v | --v*)
55
+ echo "depcomp $scriptversion"
56
+ exit $?
57
+ ;;
58
+ esac
59
+
60
+ if test -z "$depmode" || test -z "$source" || test -z "$object"; then
61
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
62
+ exit 1
63
+ fi
64
+
65
+ # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66
+ depfile=${depfile-`echo "$object" |
67
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68
+ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69
+
70
+ rm -f "$tmpdepfile"
71
+
72
+ # Some modes work just like other modes, but use different flags. We
73
+ # parameterize here, but still list the modes in the big case below,
74
+ # to make depend.m4 easier to write. Note that we *cannot* use a case
75
+ # here, because this file can only contain one case statement.
76
+ if test "$depmode" = hp; then
77
+ # HP compiler uses -M and no extra arg.
78
+ gccflag=-M
79
+ depmode=gcc
80
+ fi
81
+
82
+ if test "$depmode" = dashXmstdout; then
83
+ # This is just like dashmstdout with a different argument.
84
+ dashmflag=-xM
85
+ depmode=dashmstdout
86
+ fi
87
+
88
+ cygpath_u="cygpath -u -f -"
89
+ 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
95
+ fi
96
+
97
+ if test "$depmode" = msvc7msys; then
98
+ # This is just like msvc7 but w/o cygpath translation.
99
+ # Just convert the backslash-escaped backslashes to single forward
100
+ # slashes to satisfy depend.m4
101
+ cygpath_u='sed s,\\\\,/,g'
102
+ depmode=msvc7
103
+ fi
104
+
105
+ case "$depmode" in
106
+ gcc3)
107
+ ## gcc 3 implements dependency tracking that does exactly what
108
+ ## we want. Yay! Note: for some reason libtool 1.4 doesn't like
109
+ ## it if -MD -MP comes after the -MF stuff. Hmm.
110
+ ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
111
+ ## the command line argument order; so add the flags where they
112
+ ## appear in depend2.am. Note that the slowdown incurred here
113
+ ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
114
+ for arg
115
+ do
116
+ case $arg in
117
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
118
+ *) set fnord "$@" "$arg" ;;
119
+ esac
120
+ shift # fnord
121
+ shift # $arg
122
+ done
123
+ "$@"
124
+ stat=$?
125
+ if test $stat -eq 0; then :
126
+ else
127
+ rm -f "$tmpdepfile"
128
+ exit $stat
129
+ fi
130
+ mv "$tmpdepfile" "$depfile"
131
+ ;;
132
+
133
+ gcc)
134
+ ## There are various ways to get dependency output from gcc. Here's
135
+ ## why we pick this rather obscure method:
136
+ ## - Don't want to use -MD because we'd like the dependencies to end
137
+ ## up in a subdir. Having to rename by hand is ugly.
138
+ ## (We might end up doing this anyway to support other compilers.)
139
+ ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
140
+ ## -MM, not -M (despite what the docs say).
141
+ ## - Using -M directly means running the compiler twice (even worse
142
+ ## than renaming).
143
+ if test -z "$gccflag"; then
144
+ gccflag=-MD,
145
+ fi
146
+ "$@" -Wp,"$gccflag$tmpdepfile"
147
+ stat=$?
148
+ if test $stat -eq 0; then :
149
+ else
150
+ rm -f "$tmpdepfile"
151
+ exit $stat
152
+ fi
153
+ rm -f "$depfile"
154
+ echo "$object : \\" > "$depfile"
155
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
156
+ ## The second -e expression handles DOS-style file names with drive letters.
157
+ sed -e 's/^[^:]*: / /' \
158
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
159
+ ## This next piece of magic avoids the `deleted header file' problem.
160
+ ## The problem is that when a header file which appears in a .P file
161
+ ## is deleted, the dependency causes make to die (because there is
162
+ ## typically no way to rebuild the header). We avoid this by adding
163
+ ## dummy dependencies for each header file. Too bad gcc doesn't do
164
+ ## this for us directly.
165
+ tr ' ' '
166
+ ' < "$tmpdepfile" |
167
+ ## Some versions of gcc put a space before the `:'. On the theory
168
+ ## that the space means something, we add a space to the output as
169
+ ## well. hp depmode also adds that space, but also prefixes the VPATH
170
+ ## to the object. Take care to not repeat it in the output.
171
+ ## Some versions of the HPUX 10.20 sed can't process this invocation
172
+ ## correctly. Breaking it into two sed invocations is a workaround.
173
+ sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
174
+ | sed -e 's/$/ :/' >> "$depfile"
175
+ rm -f "$tmpdepfile"
176
+ ;;
177
+
178
+ hp)
179
+ # This case exists only to let depend.m4 do its work. It works by
180
+ # looking at the text of this script. This case will never be run,
181
+ # since it is checked for above.
182
+ exit 1
183
+ ;;
184
+
185
+ sgi)
186
+ if test "$libtool" = yes; then
187
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
188
+ else
189
+ "$@" -MDupdate "$tmpdepfile"
190
+ fi
191
+ stat=$?
192
+ if test $stat -eq 0; then :
193
+ else
194
+ rm -f "$tmpdepfile"
195
+ exit $stat
196
+ fi
197
+ rm -f "$depfile"
198
+
199
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
200
+ echo "$object : \\" > "$depfile"
201
+
202
+ # Clip off the initial element (the dependent). Don't try to be
203
+ # clever and replace this with sed code, as IRIX sed won't handle
204
+ # lines with more than a fixed number of characters (4096 in
205
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
206
+ # the IRIX cc adds comments like `#:fec' to the end of the
207
+ # dependency line.
208
+ tr ' ' '
209
+ ' < "$tmpdepfile" \
210
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
211
+ tr '
212
+ ' ' ' >> "$depfile"
213
+ echo >> "$depfile"
214
+
215
+ # The second pass generates a dummy entry for each header file.
216
+ tr ' ' '
217
+ ' < "$tmpdepfile" \
218
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
219
+ >> "$depfile"
220
+ else
221
+ # The sourcefile does not contain any dependencies, so just
222
+ # store a dummy comment line, to avoid errors with the Makefile
223
+ # "include basename.Plo" scheme.
224
+ echo "#dummy" > "$depfile"
225
+ fi
226
+ rm -f "$tmpdepfile"
227
+ ;;
228
+
229
+ aix)
230
+ # The C for AIX Compiler uses -M and outputs the dependencies
231
+ # in a .u file. In older versions, this file always lives in the
232
+ # current directory. Also, the AIX compiler puts `$object:' at the
233
+ # start of each line; $object doesn't have directory information.
234
+ # Version 6 uses the directory in both cases.
235
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
236
+ test "x$dir" = "x$object" && dir=
237
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
238
+ if test "$libtool" = yes; then
239
+ tmpdepfile1=$dir$base.u
240
+ tmpdepfile2=$base.u
241
+ tmpdepfile3=$dir.libs/$base.u
242
+ "$@" -Wc,-M
243
+ else
244
+ tmpdepfile1=$dir$base.u
245
+ tmpdepfile2=$dir$base.u
246
+ tmpdepfile3=$dir$base.u
247
+ "$@" -M
248
+ fi
249
+ stat=$?
250
+
251
+ if test $stat -eq 0; then :
252
+ else
253
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
254
+ exit $stat
255
+ fi
256
+
257
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
258
+ do
259
+ test -f "$tmpdepfile" && break
260
+ done
261
+ if test -f "$tmpdepfile"; then
262
+ # Each line is of the form `foo.o: dependent.h'.
263
+ # Do two passes, one to just change these to
264
+ # `$object: dependent.h' and one to simply `dependent.h:'.
265
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
266
+ # That's a tab and a space in the [].
267
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
268
+ else
269
+ # The sourcefile does not contain any dependencies, so just
270
+ # store a dummy comment line, to avoid errors with the Makefile
271
+ # "include basename.Plo" scheme.
272
+ echo "#dummy" > "$depfile"
273
+ fi
274
+ rm -f "$tmpdepfile"
275
+ ;;
276
+
277
+ icc)
278
+ # Intel's C compiler understands `-MD -MF file'. However on
279
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
280
+ # ICC 7.0 will fill foo.d with something like
281
+ # foo.o: sub/foo.c
282
+ # foo.o: sub/foo.h
283
+ # which is wrong. We want:
284
+ # sub/foo.o: sub/foo.c
285
+ # sub/foo.o: sub/foo.h
286
+ # sub/foo.c:
287
+ # sub/foo.h:
288
+ # ICC 7.1 will output
289
+ # foo.o: sub/foo.c sub/foo.h
290
+ # and will wrap long lines using \ :
291
+ # foo.o: sub/foo.c ... \
292
+ # sub/foo.h ... \
293
+ # ...
294
+
295
+ "$@" -MD -MF "$tmpdepfile"
296
+ stat=$?
297
+ if test $stat -eq 0; then :
298
+ else
299
+ rm -f "$tmpdepfile"
300
+ exit $stat
301
+ fi
302
+ rm -f "$depfile"
303
+ # Each line is of the form `foo.o: dependent.h',
304
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
305
+ # Do two passes, one to just change these to
306
+ # `$object: dependent.h' and one to simply `dependent.h:'.
307
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
308
+ # Some versions of the HPUX 10.20 sed can't process this invocation
309
+ # correctly. Breaking it into two sed invocations is a workaround.
310
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
311
+ sed -e 's/$/ :/' >> "$depfile"
312
+ rm -f "$tmpdepfile"
313
+ ;;
314
+
315
+ hp2)
316
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
317
+ # compilers, which have integrated preprocessors. The correct option
318
+ # to use with these is +Maked; it writes dependencies to a file named
319
+ # 'foo.d', which lands next to the object file, wherever that
320
+ # happens to be.
321
+ # Much of this is similar to the tru64 case; see comments there.
322
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
323
+ test "x$dir" = "x$object" && dir=
324
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
325
+ if test "$libtool" = yes; then
326
+ tmpdepfile1=$dir$base.d
327
+ tmpdepfile2=$dir.libs/$base.d
328
+ "$@" -Wc,+Maked
329
+ else
330
+ tmpdepfile1=$dir$base.d
331
+ tmpdepfile2=$dir$base.d
332
+ "$@" +Maked
333
+ fi
334
+ stat=$?
335
+ if test $stat -eq 0; then :
336
+ else
337
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
338
+ exit $stat
339
+ fi
340
+
341
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
342
+ do
343
+ test -f "$tmpdepfile" && break
344
+ done
345
+ if test -f "$tmpdepfile"; then
346
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
347
+ # Add `dependent.h:' lines.
348
+ sed -ne '2,${
349
+ s/^ *//
350
+ s/ \\*$//
351
+ s/$/:/
352
+ p
353
+ }' "$tmpdepfile" >> "$depfile"
354
+ else
355
+ echo "#dummy" > "$depfile"
356
+ fi
357
+ rm -f "$tmpdepfile" "$tmpdepfile2"
358
+ ;;
359
+
360
+ tru64)
361
+ # The Tru64 compiler uses -MD to generate dependencies as a side
362
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
363
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
364
+ # dependencies in `foo.d' instead, so we check for that too.
365
+ # Subdirectories are respected.
366
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
367
+ test "x$dir" = "x$object" && dir=
368
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
369
+
370
+ if test "$libtool" = yes; then
371
+ # With Tru64 cc, shared objects can also be used to make a
372
+ # static library. This mechanism is used in libtool 1.4 series to
373
+ # handle both shared and static libraries in a single compilation.
374
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
375
+ #
376
+ # With libtool 1.5 this exception was removed, and libtool now
377
+ # generates 2 separate objects for the 2 libraries. These two
378
+ # compilations output dependencies in $dir.libs/$base.o.d and
379
+ # in $dir$base.o.d. We have to check for both files, because
380
+ # one of the two compilations can be disabled. We should prefer
381
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
382
+ # automatically cleaned when .libs/ is deleted, while ignoring
383
+ # the former would cause a distcleancheck panic.
384
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
385
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
386
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
387
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
388
+ "$@" -Wc,-MD
389
+ else
390
+ tmpdepfile1=$dir$base.o.d
391
+ tmpdepfile2=$dir$base.d
392
+ tmpdepfile3=$dir$base.d
393
+ tmpdepfile4=$dir$base.d
394
+ "$@" -MD
395
+ fi
396
+
397
+ stat=$?
398
+ if test $stat -eq 0; then :
399
+ else
400
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
401
+ exit $stat
402
+ fi
403
+
404
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
405
+ do
406
+ test -f "$tmpdepfile" && break
407
+ done
408
+ if test -f "$tmpdepfile"; then
409
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
410
+ # That's a tab and a space in the [].
411
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
412
+ else
413
+ echo "#dummy" > "$depfile"
414
+ fi
415
+ rm -f "$tmpdepfile"
416
+ ;;
417
+
418
+ msvc7)
419
+ if test "$libtool" = yes; then
420
+ showIncludes=-Wc,-showIncludes
421
+ else
422
+ showIncludes=-showIncludes
423
+ fi
424
+ "$@" $showIncludes > "$tmpdepfile"
425
+ stat=$?
426
+ grep -v '^Note: including file: ' "$tmpdepfile"
427
+ if test "$stat" = 0; then :
428
+ else
429
+ rm -f "$tmpdepfile"
430
+ exit $stat
431
+ fi
432
+ rm -f "$depfile"
433
+ echo "$object : \\" > "$depfile"
434
+ # The first sed program below extracts the file names and escapes
435
+ # backslashes for cygpath. The second sed program outputs the file
436
+ # name when reading, but also accumulates all include files in the
437
+ # hold buffer in order to output them again at the end. This only
438
+ # works with sed implementations that can handle large buffers.
439
+ sed < "$tmpdepfile" -n '
440
+ /^Note: including file: *\(.*\)/ {
441
+ s//\1/
442
+ s/\\/\\\\/g
443
+ p
444
+ }' | $cygpath_u | sort -u | sed -n '
445
+ s/ /\\ /g
446
+ s/\(.*\)/ \1 \\/p
447
+ s/.\(.*\) \\/\1:/
448
+ H
449
+ $ {
450
+ s/.*/ /
451
+ G
452
+ p
453
+ }' >> "$depfile"
454
+ rm -f "$tmpdepfile"
455
+ ;;
456
+
457
+ msvc7msys)
458
+ # This case exists only to let depend.m4 do its work. It works by
459
+ # looking at the text of this script. This case will never be run,
460
+ # since it is checked for above.
461
+ exit 1
462
+ ;;
463
+
464
+ #nosideeffect)
465
+ # This comment above is used by automake to tell side-effect
466
+ # dependency tracking mechanisms from slower ones.
467
+
468
+ dashmstdout)
469
+ # Important note: in order to support this mode, a compiler *must*
470
+ # always write the preprocessed file to stdout, regardless of -o.
471
+ "$@" || exit $?
472
+
473
+ # Remove the call to Libtool.
474
+ if test "$libtool" = yes; then
475
+ while test "X$1" != 'X--mode=compile'; do
476
+ shift
477
+ done
478
+ shift
479
+ fi
480
+
481
+ # Remove `-o $object'.
482
+ IFS=" "
483
+ for arg
484
+ do
485
+ case $arg in
486
+ -o)
487
+ shift
488
+ ;;
489
+ $object)
490
+ shift
491
+ ;;
492
+ *)
493
+ set fnord "$@" "$arg"
494
+ shift # fnord
495
+ shift # $arg
496
+ ;;
497
+ esac
498
+ done
499
+
500
+ test -z "$dashmflag" && dashmflag=-M
501
+ # Require at least two characters before searching for `:'
502
+ # in the target name. This is to cope with DOS-style filenames:
503
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
504
+ "$@" $dashmflag |
505
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
506
+ rm -f "$depfile"
507
+ cat < "$tmpdepfile" > "$depfile"
508
+ tr ' ' '
509
+ ' < "$tmpdepfile" | \
510
+ ## Some versions of the HPUX 10.20 sed can't process this invocation
511
+ ## correctly. Breaking it into two sed invocations is a workaround.
512
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
513
+ rm -f "$tmpdepfile"
514
+ ;;
515
+
516
+ dashXmstdout)
517
+ # This case only exists to satisfy depend.m4. It is never actually
518
+ # run, as this mode is specially recognized in the preamble.
519
+ exit 1
520
+ ;;
521
+
522
+ makedepend)
523
+ "$@" || exit $?
524
+ # Remove any Libtool call
525
+ if test "$libtool" = yes; then
526
+ while test "X$1" != 'X--mode=compile'; do
527
+ shift
528
+ done
529
+ shift
530
+ fi
531
+ # X makedepend
532
+ shift
533
+ cleared=no eat=no
534
+ for arg
535
+ do
536
+ case $cleared in
537
+ no)
538
+ set ""; shift
539
+ cleared=yes ;;
540
+ esac
541
+ if test $eat = yes; then
542
+ eat=no
543
+ continue
544
+ fi
545
+ case "$arg" in
546
+ -D*|-I*)
547
+ set fnord "$@" "$arg"; shift ;;
548
+ # Strip any option that makedepend may not understand. Remove
549
+ # the object too, otherwise makedepend will parse it as a source file.
550
+ -arch)
551
+ eat=yes ;;
552
+ -*|$object)
553
+ ;;
554
+ *)
555
+ set fnord "$@" "$arg"; shift ;;
556
+ esac
557
+ done
558
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
559
+ touch "$tmpdepfile"
560
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
561
+ rm -f "$depfile"
562
+ # makedepend may prepend the VPATH from the source file name to the object.
563
+ # No need to regex-escape $object, excess matching of '.' is harmless.
564
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
565
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
566
+ ' | \
567
+ ## Some versions of the HPUX 10.20 sed can't process this invocation
568
+ ## correctly. Breaking it into two sed invocations is a workaround.
569
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
570
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
571
+ ;;
572
+
573
+ cpp)
574
+ # Important note: in order to support this mode, a compiler *must*
575
+ # always write the preprocessed file to stdout.
576
+ "$@" || exit $?
577
+
578
+ # Remove the call to Libtool.
579
+ if test "$libtool" = yes; then
580
+ while test "X$1" != 'X--mode=compile'; do
581
+ shift
582
+ done
583
+ shift
584
+ fi
585
+
586
+ # Remove `-o $object'.
587
+ IFS=" "
588
+ for arg
589
+ do
590
+ case $arg in
591
+ -o)
592
+ shift
593
+ ;;
594
+ $object)
595
+ shift
596
+ ;;
597
+ *)
598
+ set fnord "$@" "$arg"
599
+ shift # fnord
600
+ shift # $arg
601
+ ;;
602
+ esac
603
+ done
604
+
605
+ "$@" -E |
606
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
607
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
608
+ sed '$ s: \\$::' > "$tmpdepfile"
609
+ rm -f "$depfile"
610
+ echo "$object : \\" > "$depfile"
611
+ cat < "$tmpdepfile" >> "$depfile"
612
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
613
+ rm -f "$tmpdepfile"
614
+ ;;
615
+
616
+ msvisualcpp)
617
+ # Important note: in order to support this mode, a compiler *must*
618
+ # always write the preprocessed file to stdout.
619
+ "$@" || exit $?
620
+
621
+ # Remove the call to Libtool.
622
+ if test "$libtool" = yes; then
623
+ while test "X$1" != 'X--mode=compile'; do
624
+ shift
625
+ done
626
+ shift
627
+ fi
628
+
629
+ IFS=" "
630
+ for arg
631
+ do
632
+ case "$arg" in
633
+ -o)
634
+ shift
635
+ ;;
636
+ $object)
637
+ shift
638
+ ;;
639
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
640
+ set fnord "$@"
641
+ shift
642
+ shift
643
+ ;;
644
+ *)
645
+ set fnord "$@" "$arg"
646
+ shift
647
+ shift
648
+ ;;
649
+ esac
650
+ done
651
+ "$@" -E 2>/dev/null |
652
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
653
+ rm -f "$depfile"
654
+ echo "$object : \\" > "$depfile"
655
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
656
+ echo " " >> "$depfile"
657
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
658
+ rm -f "$tmpdepfile"
659
+ ;;
660
+
661
+ msvcmsys)
662
+ # This case exists only to let depend.m4 do its work. It works by
663
+ # looking at the text of this script. This case will never be run,
664
+ # since it is checked for above.
665
+ exit 1
666
+ ;;
667
+
668
+ none)
669
+ exec "$@"
670
+ ;;
671
+
672
+ *)
673
+ echo "Unknown depmode $depmode" 1>&2
674
+ exit 1
675
+ ;;
676
+ esac
677
+
678
+ exit 0
679
+
680
+ # Local Variables:
681
+ # mode: shell-script
682
+ # sh-indentation: 2
683
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
684
+ # time-stamp-start: "scriptversion="
685
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
686
+ # time-stamp-time-zone: "UTC"
687
+ # time-stamp-end: "; # UTC"
688
+ # End: