rice2 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +23 -0
  3. data/Doxyfile +2268 -0
  4. data/Makefile.am +26 -0
  5. data/Makefile.in +929 -0
  6. data/README.md +1054 -0
  7. data/README.mingw +8 -0
  8. data/Rakefile +24 -0
  9. data/aclocal.m4 +1090 -0
  10. data/bootstrap +8 -0
  11. data/config.guess +1667 -0
  12. data/config.sub +1793 -0
  13. data/configure +8209 -0
  14. data/configure.ac +55 -0
  15. data/depcomp +791 -0
  16. data/doxygen.ac +314 -0
  17. data/doxygen.am +186 -0
  18. data/extconf.rb +66 -0
  19. data/install-sh +529 -0
  20. data/missing +215 -0
  21. data/post-autoconf.rb +22 -0
  22. data/post-automake.rb +28 -0
  23. data/rice/Address_Registration_Guard.cpp +22 -0
  24. data/rice/Address_Registration_Guard.hpp +7 -0
  25. data/rice/Address_Registration_Guard.ipp +37 -0
  26. data/rice/Address_Registration_Guard_defn.hpp +75 -0
  27. data/rice/Arg.hpp +8 -0
  28. data/rice/Arg_impl.hpp +129 -0
  29. data/rice/Arg_operators.cpp +21 -0
  30. data/rice/Arg_operators.hpp +19 -0
  31. data/rice/Array.hpp +214 -0
  32. data/rice/Array.ipp +256 -0
  33. data/rice/Builtin_Object.hpp +8 -0
  34. data/rice/Builtin_Object.ipp +50 -0
  35. data/rice/Builtin_Object_defn.hpp +50 -0
  36. data/rice/Class.cpp +57 -0
  37. data/rice/Class.hpp +8 -0
  38. data/rice/Class.ipp +6 -0
  39. data/rice/Class_defn.hpp +83 -0
  40. data/rice/Constructor.hpp +47 -0
  41. data/rice/Data_Object.hpp +8 -0
  42. data/rice/Data_Object.ipp +133 -0
  43. data/rice/Data_Object_defn.hpp +138 -0
  44. data/rice/Data_Type.cpp +54 -0
  45. data/rice/Data_Type.hpp +8 -0
  46. data/rice/Data_Type.ipp +365 -0
  47. data/rice/Data_Type_defn.hpp +261 -0
  48. data/rice/Data_Type_fwd.hpp +12 -0
  49. data/rice/Director.cpp +13 -0
  50. data/rice/Director.hpp +39 -0
  51. data/rice/Enum.hpp +117 -0
  52. data/rice/Enum.ipp +246 -0
  53. data/rice/Exception.cpp +59 -0
  54. data/rice/Exception.hpp +13 -0
  55. data/rice/Exception_Base.hpp +8 -0
  56. data/rice/Exception_Base.ipp +13 -0
  57. data/rice/Exception_Base_defn.hpp +27 -0
  58. data/rice/Exception_defn.hpp +69 -0
  59. data/rice/Hash.hpp +227 -0
  60. data/rice/Hash.ipp +329 -0
  61. data/rice/Identifier.cpp +8 -0
  62. data/rice/Identifier.hpp +50 -0
  63. data/rice/Identifier.ipp +33 -0
  64. data/rice/Jump_Tag.hpp +24 -0
  65. data/rice/Makefile.am +122 -0
  66. data/rice/Makefile.in +885 -0
  67. data/rice/Module.cpp +84 -0
  68. data/rice/Module.hpp +8 -0
  69. data/rice/Module.ipp +6 -0
  70. data/rice/Module_defn.hpp +88 -0
  71. data/rice/Module_impl.hpp +281 -0
  72. data/rice/Module_impl.ipp +345 -0
  73. data/rice/Object.cpp +169 -0
  74. data/rice/Object.hpp +8 -0
  75. data/rice/Object.ipp +33 -0
  76. data/rice/Object_defn.hpp +214 -0
  77. data/rice/Require_Guard.hpp +21 -0
  78. data/rice/String.cpp +94 -0
  79. data/rice/String.hpp +91 -0
  80. data/rice/Struct.cpp +117 -0
  81. data/rice/Struct.hpp +162 -0
  82. data/rice/Struct.ipp +26 -0
  83. data/rice/Symbol.cpp +25 -0
  84. data/rice/Symbol.hpp +66 -0
  85. data/rice/Symbol.ipp +44 -0
  86. data/rice/config.hpp +47 -0
  87. data/rice/config.hpp.in +46 -0
  88. data/rice/detail/Arguments.hpp +118 -0
  89. data/rice/detail/Auto_Function_Wrapper.hpp +898 -0
  90. data/rice/detail/Auto_Function_Wrapper.ipp +3694 -0
  91. data/rice/detail/Auto_Member_Function_Wrapper.hpp +897 -0
  92. data/rice/detail/Auto_Member_Function_Wrapper.ipp +2774 -0
  93. data/rice/detail/Caster.hpp +103 -0
  94. data/rice/detail/Exception_Handler.hpp +8 -0
  95. data/rice/detail/Exception_Handler.ipp +68 -0
  96. data/rice/detail/Exception_Handler_defn.hpp +96 -0
  97. data/rice/detail/Iterator.hpp +93 -0
  98. data/rice/detail/Not_Copyable.hpp +25 -0
  99. data/rice/detail/Wrapped_Function.hpp +33 -0
  100. data/rice/detail/cfp.hpp +24 -0
  101. data/rice/detail/cfp.ipp +51 -0
  102. data/rice/detail/check_ruby_type.cpp +27 -0
  103. data/rice/detail/check_ruby_type.hpp +23 -0
  104. data/rice/detail/creation_funcs.hpp +37 -0
  105. data/rice/detail/creation_funcs.ipp +36 -0
  106. data/rice/detail/default_allocation_func.hpp +23 -0
  107. data/rice/detail/default_allocation_func.ipp +11 -0
  108. data/rice/detail/define_method_and_auto_wrap.hpp +31 -0
  109. data/rice/detail/define_method_and_auto_wrap.ipp +30 -0
  110. data/rice/detail/demangle.cpp +56 -0
  111. data/rice/detail/demangle.hpp +19 -0
  112. data/rice/detail/env.hpp +11 -0
  113. data/rice/detail/from_ruby.hpp +43 -0
  114. data/rice/detail/from_ruby.ipp +60 -0
  115. data/rice/detail/method_data.cpp +92 -0
  116. data/rice/detail/method_data.hpp +21 -0
  117. data/rice/detail/node.hpp +13 -0
  118. data/rice/detail/protect.cpp +29 -0
  119. data/rice/detail/protect.hpp +34 -0
  120. data/rice/detail/ruby.hpp +74 -0
  121. data/rice/detail/ruby_version_code.hpp +6 -0
  122. data/rice/detail/ruby_version_code.hpp.in +6 -0
  123. data/rice/detail/st.hpp +22 -0
  124. data/rice/detail/to_ruby.hpp +22 -0
  125. data/rice/detail/to_ruby.ipp +36 -0
  126. data/rice/detail/traits.hpp +43 -0
  127. data/rice/detail/win32.hpp +16 -0
  128. data/rice/detail/wrap_function.hpp +66 -0
  129. data/rice/global_function.hpp +33 -0
  130. data/rice/global_function.ipp +22 -0
  131. data/rice/protect.hpp +38 -0
  132. data/rice/protect.ipp +1134 -0
  133. data/rice/ruby_mark.hpp +13 -0
  134. data/rice/ruby_try_catch.hpp +86 -0
  135. data/rice/rubypp.rb +97 -0
  136. data/rice/to_from_ruby.hpp +8 -0
  137. data/rice/to_from_ruby.ipp +418 -0
  138. data/rice/to_from_ruby_defn.hpp +70 -0
  139. data/ruby.ac +135 -0
  140. data/ruby/Makefile.am +1 -0
  141. data/ruby/Makefile.in +628 -0
  142. data/ruby/lib/Makefile.am +3 -0
  143. data/ruby/lib/Makefile.in +506 -0
  144. data/ruby/lib/mkmf-rice.rb.in +217 -0
  145. data/ruby/lib/version.rb +3 -0
  146. data/sample/Makefile.am +47 -0
  147. data/sample/Makefile.in +489 -0
  148. data/sample/enum/extconf.rb +3 -0
  149. data/sample/enum/sample_enum.cpp +54 -0
  150. data/sample/enum/test.rb +8 -0
  151. data/sample/inheritance/animals.cpp +98 -0
  152. data/sample/inheritance/extconf.rb +3 -0
  153. data/sample/inheritance/test.rb +7 -0
  154. data/sample/map/extconf.rb +3 -0
  155. data/sample/map/map.cpp +81 -0
  156. data/sample/map/test.rb +7 -0
  157. data/test/Makefile.am +72 -0
  158. data/test/Makefile.in +1213 -0
  159. data/test/ext/Makefile.am +41 -0
  160. data/test/ext/Makefile.in +483 -0
  161. data/test/ext/t1/Foo.hpp +10 -0
  162. data/test/ext/t1/extconf.rb +2 -0
  163. data/test/ext/t1/t1.cpp +15 -0
  164. data/test/ext/t2/extconf.rb +2 -0
  165. data/test/ext/t2/t2.cpp +11 -0
  166. data/test/test_Address_Registration_Guard.cpp +43 -0
  167. data/test/test_Array.cpp +248 -0
  168. data/test/test_Builtin_Object.cpp +71 -0
  169. data/test/test_Class.cpp +496 -0
  170. data/test/test_Constructor.cpp +128 -0
  171. data/test/test_Data_Object.cpp +275 -0
  172. data/test/test_Data_Type.cpp +348 -0
  173. data/test/test_Director.cpp +308 -0
  174. data/test/test_Enum.cpp +215 -0
  175. data/test/test_Exception.cpp +47 -0
  176. data/test/test_Hash.cpp +212 -0
  177. data/test/test_Identifier.cpp +70 -0
  178. data/test/test_Jump_Tag.cpp +17 -0
  179. data/test/test_Memory_Management.cpp +50 -0
  180. data/test/test_Module.cpp +497 -0
  181. data/test/test_Object.cpp +159 -0
  182. data/test/test_String.cpp +107 -0
  183. data/test/test_Struct.cpp +205 -0
  184. data/test/test_Symbol.cpp +63 -0
  185. data/test/test_To_From_Ruby.cpp +428 -0
  186. data/test/test_global_functions.cpp +114 -0
  187. data/test/test_rice.rb +41 -0
  188. data/test/unittest.cpp +136 -0
  189. data/test/unittest.hpp +294 -0
  190. metadata +297 -0
@@ -0,0 +1,55 @@
1
+ AC_INIT(rice, 1.1)
2
+ AC_CONFIG_SRCDIR(rice)
3
+ AM_INIT_AUTOMAKE([subdir-objects])
4
+
5
+ AC_CONFIG_HEADERS(rice/config.hpp)
6
+
7
+ AC_LANG(C++)
8
+ AC_PROG_CXX
9
+ AC_PROG_RANLIB
10
+
11
+ RICE_CPPFLAGS="$CPPFLAGS"
12
+ AC_SUBST(RICE_CPPFLAGS)
13
+
14
+ RICE_LDFLAGS="$LDFLAGS"
15
+ AC_SUBST(RICE_LDFLAGS)
16
+
17
+ AC_MINGW32
18
+ if test x"${MINGW32}"x = xyesx; then
19
+ RICE_USING_MINGW32="true"
20
+ else
21
+ RICE_USING_MINGW32="false"
22
+ fi
23
+
24
+ m4_include(ax_cxx_compile_stdcxx.m4)
25
+ AX_CXX_COMPILE_STDCXX(14, noext, mandatory)
26
+
27
+ AC_SUBST(RICE_USING_MINGW32)
28
+
29
+ m4_include(ruby.ac)
30
+ RB_INIT_RUBY
31
+
32
+ m4_include(doxygen.ac)
33
+ DX_HTML_FEATURE(ON)
34
+ DX_CHM_FEATURE(OFF)
35
+ DX_CHI_FEATURE(OFF)
36
+ DX_MAN_FEATURE(OFF)
37
+ DX_RTF_FEATURE(OFF)
38
+ DX_XML_FEATURE(OFF)
39
+ DX_PDF_FEATURE(OFF)
40
+ DX_PS_FEATURE(OFF)
41
+ DX_INIT_DOXYGEN(rice, Doxyfile, doc)
42
+
43
+ RICE_SAMPLES="enum map inheritance"
44
+ AC_SUBST(RICE_SAMPLES)
45
+
46
+ RICE_ROOT=`pwd`
47
+ AC_SUBST(RICE_ROOT)
48
+
49
+ AC_CONFIG_FILES(Makefile rice/Makefile test/Makefile sample/Makefile
50
+ ruby/Makefile ruby/lib/Makefile test/ext/Makefile
51
+ ruby/lib/mkmf-rice.rb rice/detail/ruby_version_code.hpp)
52
+ AC_OUTPUT
53
+
54
+ dnl Work around a bug in older versions of Rubygems
55
+ chmod +x install-sh
data/depcomp ADDED
@@ -0,0 +1,791 @@
1
+ #! /bin/sh
2
+ # depcomp - compile a program generating dependencies as side-effects
3
+
4
+ scriptversion=2018-03-07.03; # UTC
5
+
6
+ # Copyright (C) 1999-2020 Free Software Foundation, Inc.
7
+
8
+ # This program is free software; you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation; either version 2, or (at your option)
11
+ # any later version.
12
+
13
+ # This program is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
20
+
21
+ # As a special exception to the GNU General Public License, if you
22
+ # distribute this file as part of a program that contains a
23
+ # configuration script generated by Autoconf, you may include it under
24
+ # the same distribution terms that you use for the rest of that program.
25
+
26
+ # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
27
+
28
+ case $1 in
29
+ '')
30
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
31
+ exit 1;
32
+ ;;
33
+ -h | --h*)
34
+ cat <<\EOF
35
+ Usage: depcomp [--help] [--version] PROGRAM [ARGS]
36
+
37
+ Run PROGRAMS ARGS to compile a file, generating dependencies
38
+ as side-effects.
39
+
40
+ Environment variables:
41
+ depmode Dependency tracking mode.
42
+ source Source file read by 'PROGRAMS ARGS'.
43
+ object Object file output by 'PROGRAMS ARGS'.
44
+ DEPDIR directory where to store dependencies.
45
+ depfile Dependency file to output.
46
+ tmpdepfile Temporary file to use when outputting dependencies.
47
+ libtool Whether libtool is used (yes/no).
48
+
49
+ Report bugs to <bug-automake@gnu.org>.
50
+ EOF
51
+ exit $?
52
+ ;;
53
+ -v | --v*)
54
+ echo "depcomp $scriptversion"
55
+ exit $?
56
+ ;;
57
+ esac
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
+
119
+ if test -z "$depmode" || test -z "$source" || test -z "$object"; then
120
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
121
+ exit 1
122
+ fi
123
+
124
+ # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
125
+ depfile=${depfile-`echo "$object" |
126
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
127
+ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
128
+
129
+ rm -f "$tmpdepfile"
130
+
131
+ # Avoid interferences from the environment.
132
+ gccflag= dashmflag=
133
+
134
+ # Some modes work just like other modes, but use different flags. We
135
+ # parameterize here, but still list the modes in the big case below,
136
+ # to make depend.m4 easier to write. Note that we *cannot* use a case
137
+ # here, because this file can only contain one case statement.
138
+ if test "$depmode" = hp; then
139
+ # HP compiler uses -M and no extra arg.
140
+ gccflag=-M
141
+ depmode=gcc
142
+ fi
143
+
144
+ if test "$depmode" = dashXmstdout; then
145
+ # This is just like dashmstdout with a different argument.
146
+ dashmflag=-xM
147
+ depmode=dashmstdout
148
+ fi
149
+
150
+ cygpath_u="cygpath -u -f -"
151
+ if test "$depmode" = msvcmsys; then
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
171
+ fi
172
+
173
+ case "$depmode" in
174
+ gcc3)
175
+ ## gcc 3 implements dependency tracking that does exactly what
176
+ ## we want. Yay! Note: for some reason libtool 1.4 doesn't like
177
+ ## it if -MD -MP comes after the -MF stuff. Hmm.
178
+ ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
179
+ ## the command line argument order; so add the flags where they
180
+ ## appear in depend2.am. Note that the slowdown incurred here
181
+ ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
182
+ for arg
183
+ do
184
+ case $arg in
185
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
186
+ *) set fnord "$@" "$arg" ;;
187
+ esac
188
+ shift # fnord
189
+ shift # $arg
190
+ done
191
+ "$@"
192
+ stat=$?
193
+ if test $stat -ne 0; then
194
+ rm -f "$tmpdepfile"
195
+ exit $stat
196
+ fi
197
+ mv "$tmpdepfile" "$depfile"
198
+ ;;
199
+
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).
204
+ ## There are various ways to get dependency output from gcc. Here's
205
+ ## why we pick this rather obscure method:
206
+ ## - Don't want to use -MD because we'd like the dependencies to end
207
+ ## up in a subdir. Having to rename by hand is ugly.
208
+ ## (We might end up doing this anyway to support other compilers.)
209
+ ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
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.
212
+ ## - Using -M directly means running the compiler twice (even worse
213
+ ## than renaming).
214
+ if test -z "$gccflag"; then
215
+ gccflag=-MD,
216
+ fi
217
+ "$@" -Wp,"$gccflag$tmpdepfile"
218
+ stat=$?
219
+ if test $stat -ne 0; then
220
+ rm -f "$tmpdepfile"
221
+ exit $stat
222
+ fi
223
+ rm -f "$depfile"
224
+ echo "$object : \\" > "$depfile"
225
+ # The second -e expression handles DOS-style file names with drive
226
+ # letters.
227
+ sed -e 's/^[^:]*: / /' \
228
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
229
+ ## This next piece of magic avoids the "deleted header file" problem.
230
+ ## The problem is that when a header file which appears in a .P file
231
+ ## is deleted, the dependency causes make to die (because there is
232
+ ## typically no way to rebuild the header). We avoid this by adding
233
+ ## dummy dependencies for each header file. Too bad gcc doesn't do
234
+ ## this for us directly.
235
+ ## Some versions of gcc put a space before the ':'. On the theory
236
+ ## that the space means something, we add a space to the output as
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.
239
+ ## Some versions of the HPUX 10.20 sed can't process this invocation
240
+ ## correctly. Breaking it into two sed invocations is a workaround.
241
+ tr ' ' "$nl" < "$tmpdepfile" \
242
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
243
+ | sed -e 's/$/ :/' >> "$depfile"
244
+ rm -f "$tmpdepfile"
245
+ ;;
246
+
247
+ hp)
248
+ # This case exists only to let depend.m4 do its work. It works by
249
+ # looking at the text of this script. This case will never be run,
250
+ # since it is checked for above.
251
+ exit 1
252
+ ;;
253
+
254
+ sgi)
255
+ if test "$libtool" = yes; then
256
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
257
+ else
258
+ "$@" -MDupdate "$tmpdepfile"
259
+ fi
260
+ stat=$?
261
+ if test $stat -ne 0; then
262
+ rm -f "$tmpdepfile"
263
+ exit $stat
264
+ fi
265
+ rm -f "$depfile"
266
+
267
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
268
+ echo "$object : \\" > "$depfile"
269
+ # Clip off the initial element (the dependent). Don't try to be
270
+ # clever and replace this with sed code, as IRIX sed won't handle
271
+ # lines with more than a fixed number of characters (4096 in
272
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
273
+ # the IRIX cc adds comments like '#:fec' to the end of the
274
+ # dependency line.
275
+ tr ' ' "$nl" < "$tmpdepfile" \
276
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277
+ | tr "$nl" ' ' >> "$depfile"
278
+ echo >> "$depfile"
279
+ # The second pass generates a dummy entry for each header file.
280
+ tr ' ' "$nl" < "$tmpdepfile" \
281
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282
+ >> "$depfile"
283
+ else
284
+ make_dummy_depfile
285
+ fi
286
+ rm -f "$tmpdepfile"
287
+ ;;
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
+
296
+ aix)
297
+ # The C for AIX Compiler uses -M and outputs the dependencies
298
+ # in a .u file. In older versions, this file always lives in the
299
+ # current directory. Also, the AIX compiler puts '$object:' at the
300
+ # start of each line; $object doesn't have directory information.
301
+ # Version 6 uses the directory in both cases.
302
+ set_dir_from "$object"
303
+ set_base_from "$object"
304
+ if test "$libtool" = yes; then
305
+ tmpdepfile1=$dir$base.u
306
+ tmpdepfile2=$base.u
307
+ tmpdepfile3=$dir.libs/$base.u
308
+ "$@" -Wc,-M
309
+ else
310
+ tmpdepfile1=$dir$base.u
311
+ tmpdepfile2=$dir$base.u
312
+ tmpdepfile3=$dir$base.u
313
+ "$@" -M
314
+ fi
315
+ stat=$?
316
+ if test $stat -ne 0; then
317
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
318
+ exit $stat
319
+ fi
320
+
321
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
322
+ do
323
+ test -f "$tmpdepfile" && break
324
+ done
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
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"
356
+ rm -f "$tmpdepfile"
357
+ ;;
358
+
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
369
+ # foo.o: sub/foo.c sub/foo.h
370
+ # and will wrap long lines using '\' :
371
+ # foo.o: sub/foo.c ... \
372
+ # sub/foo.h ... \
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
417
+
418
+ if test $stat -ne 0; then
419
+ rm -f "$tmpdepfile"
420
+ exit $stat
421
+ fi
422
+ rm -f "$depfile"
423
+ # Each line is of the form `foo.o: dependent.h',
424
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
425
+ # Do two passes, one to just change these to
426
+ # `$object: dependent.h' and one to simply `dependent.h:'.
427
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
428
+ # Some versions of the HPUX 10.20 sed can't process this invocation
429
+ # correctly. Breaking it into two sed invocations is a workaround.
430
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431
+ | sed -e 's/$/ :/' >> "$depfile"
432
+ rm -f "$tmpdepfile"
433
+ ;;
434
+
435
+ hp2)
436
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
437
+ # compilers, which have integrated preprocessors. The correct option
438
+ # to use with these is +Maked; it writes dependencies to a file named
439
+ # 'foo.d', which lands next to the object file, wherever that
440
+ # happens to be.
441
+ # Much of this is similar to the tru64 case; see comments there.
442
+ set_dir_from "$object"
443
+ set_base_from "$object"
444
+ if test "$libtool" = yes; then
445
+ tmpdepfile1=$dir$base.d
446
+ tmpdepfile2=$dir.libs/$base.d
447
+ "$@" -Wc,+Maked
448
+ else
449
+ tmpdepfile1=$dir$base.d
450
+ tmpdepfile2=$dir$base.d
451
+ "$@" +Maked
452
+ fi
453
+ stat=$?
454
+ if test $stat -ne 0; then
455
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
456
+ exit $stat
457
+ fi
458
+
459
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
460
+ do
461
+ test -f "$tmpdepfile" && break
462
+ done
463
+ if test -f "$tmpdepfile"; then
464
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
465
+ # Add 'dependent.h:' lines.
466
+ sed -ne '2,${
467
+ s/^ *//
468
+ s/ \\*$//
469
+ s/$/:/
470
+ p
471
+ }' "$tmpdepfile" >> "$depfile"
472
+ else
473
+ make_dummy_depfile
474
+ fi
475
+ rm -f "$tmpdepfile" "$tmpdepfile2"
476
+ ;;
477
+
478
+ tru64)
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
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
556
+ rm -f "$tmpdepfile"
557
+ ;;
558
+
559
+ msvc7msys)
560
+ # This case exists only to let depend.m4 do its work. It works by
561
+ # looking at the text of this script. This case will never be run,
562
+ # since it is checked for above.
563
+ exit 1
564
+ ;;
565
+
566
+ #nosideeffect)
567
+ # This comment above is used by automake to tell side-effect
568
+ # dependency tracking mechanisms from slower ones.
569
+
570
+ dashmstdout)
571
+ # Important note: in order to support this mode, a compiler *must*
572
+ # always write the preprocessed file to stdout, regardless of -o.
573
+ "$@" || exit $?
574
+
575
+ # Remove the call to Libtool.
576
+ if test "$libtool" = yes; then
577
+ while test "X$1" != 'X--mode=compile'; do
578
+ shift
579
+ done
580
+ shift
581
+ fi
582
+
583
+ # Remove '-o $object'.
584
+ IFS=" "
585
+ for arg
586
+ do
587
+ case $arg in
588
+ -o)
589
+ shift
590
+ ;;
591
+ $object)
592
+ shift
593
+ ;;
594
+ *)
595
+ set fnord "$@" "$arg"
596
+ shift # fnord
597
+ shift # $arg
598
+ ;;
599
+ esac
600
+ done
601
+
602
+ test -z "$dashmflag" && dashmflag=-M
603
+ # Require at least two characters before searching for ':'
604
+ # in the target name. This is to cope with DOS-style filenames:
605
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
606
+ "$@" $dashmflag |
607
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
608
+ rm -f "$depfile"
609
+ cat < "$tmpdepfile" > "$depfile"
610
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
611
+ # correctly. Breaking it into two sed invocations is a workaround.
612
+ tr ' ' "$nl" < "$tmpdepfile" \
613
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
614
+ | sed -e 's/$/ :/' >> "$depfile"
615
+ rm -f "$tmpdepfile"
616
+ ;;
617
+
618
+ dashXmstdout)
619
+ # This case only exists to satisfy depend.m4. It is never actually
620
+ # run, as this mode is specially recognized in the preamble.
621
+ exit 1
622
+ ;;
623
+
624
+ makedepend)
625
+ "$@" || exit $?
626
+ # Remove any Libtool call
627
+ if test "$libtool" = yes; then
628
+ while test "X$1" != 'X--mode=compile'; do
629
+ shift
630
+ done
631
+ shift
632
+ fi
633
+ # X makedepend
634
+ shift
635
+ cleared=no eat=no
636
+ for arg
637
+ do
638
+ case $cleared in
639
+ no)
640
+ set ""; shift
641
+ cleared=yes ;;
642
+ esac
643
+ if test $eat = yes; then
644
+ eat=no
645
+ continue
646
+ fi
647
+ case "$arg" in
648
+ -D*|-I*)
649
+ set fnord "$@" "$arg"; shift ;;
650
+ # Strip any option that makedepend may not understand. Remove
651
+ # the object too, otherwise makedepend will parse it as a source file.
652
+ -arch)
653
+ eat=yes ;;
654
+ -*|$object)
655
+ ;;
656
+ *)
657
+ set fnord "$@" "$arg"; shift ;;
658
+ esac
659
+ done
660
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
661
+ touch "$tmpdepfile"
662
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
663
+ rm -f "$depfile"
664
+ # makedepend may prepend the VPATH from the source file name to the object.
665
+ # No need to regex-escape $object, excess matching of '.' is harmless.
666
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
667
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
668
+ # correctly. Breaking it into two sed invocations is a workaround.
669
+ sed '1,2d' "$tmpdepfile" \
670
+ | tr ' ' "$nl" \
671
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
672
+ | sed -e 's/$/ :/' >> "$depfile"
673
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
674
+ ;;
675
+
676
+ cpp)
677
+ # Important note: in order to support this mode, a compiler *must*
678
+ # always write the preprocessed file to stdout.
679
+ "$@" || exit $?
680
+
681
+ # Remove the call to Libtool.
682
+ if test "$libtool" = yes; then
683
+ while test "X$1" != 'X--mode=compile'; do
684
+ shift
685
+ done
686
+ shift
687
+ fi
688
+
689
+ # Remove '-o $object'.
690
+ IFS=" "
691
+ for arg
692
+ do
693
+ case $arg in
694
+ -o)
695
+ shift
696
+ ;;
697
+ $object)
698
+ shift
699
+ ;;
700
+ *)
701
+ set fnord "$@" "$arg"
702
+ shift # fnord
703
+ shift # $arg
704
+ ;;
705
+ esac
706
+ done
707
+
708
+ "$@" -E \
709
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
710
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
711
+ | sed '$ s: \\$::' > "$tmpdepfile"
712
+ rm -f "$depfile"
713
+ echo "$object : \\" > "$depfile"
714
+ cat < "$tmpdepfile" >> "$depfile"
715
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
716
+ rm -f "$tmpdepfile"
717
+ ;;
718
+
719
+ msvisualcpp)
720
+ # Important note: in order to support this mode, a compiler *must*
721
+ # always write the preprocessed file to stdout.
722
+ "$@" || exit $?
723
+
724
+ # Remove the call to Libtool.
725
+ if test "$libtool" = yes; then
726
+ while test "X$1" != 'X--mode=compile'; do
727
+ shift
728
+ done
729
+ shift
730
+ fi
731
+
732
+ IFS=" "
733
+ for arg
734
+ do
735
+ case "$arg" in
736
+ -o)
737
+ shift
738
+ ;;
739
+ $object)
740
+ shift
741
+ ;;
742
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
743
+ set fnord "$@"
744
+ shift
745
+ shift
746
+ ;;
747
+ *)
748
+ set fnord "$@" "$arg"
749
+ shift
750
+ shift
751
+ ;;
752
+ esac
753
+ done
754
+ "$@" -E 2>/dev/null |
755
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
756
+ rm -f "$depfile"
757
+ echo "$object : \\" > "$depfile"
758
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
759
+ echo "$tab" >> "$depfile"
760
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
761
+ rm -f "$tmpdepfile"
762
+ ;;
763
+
764
+ msvcmsys)
765
+ # This case exists only to let depend.m4 do its work. It works by
766
+ # looking at the text of this script. This case will never be run,
767
+ # since it is checked for above.
768
+ exit 1
769
+ ;;
770
+
771
+ none)
772
+ exec "$@"
773
+ ;;
774
+
775
+ *)
776
+ echo "Unknown depmode $depmode" 1>&2
777
+ exit 1
778
+ ;;
779
+ esac
780
+
781
+ exit 0
782
+
783
+ # Local Variables:
784
+ # mode: shell-script
785
+ # sh-indentation: 2
786
+ # eval: (add-hook 'before-save-hook 'time-stamp)
787
+ # time-stamp-start: "scriptversion="
788
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
789
+ # time-stamp-time-zone: "UTC0"
790
+ # time-stamp-end: "; # UTC"
791
+ # End: