wurlinc-rice 1.4.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. data/COPYING +23 -0
  2. data/Doxyfile +1253 -0
  3. data/Makefile.am +26 -0
  4. data/README +1119 -0
  5. data/README.mingw +8 -0
  6. data/Rakefile +33 -0
  7. data/bootstrap +9 -0
  8. data/configure.ac +52 -0
  9. data/doxygen.ac +314 -0
  10. data/doxygen.am +186 -0
  11. data/extconf.rb +41 -0
  12. data/post-autoconf.rb +22 -0
  13. data/post-automake.rb +28 -0
  14. data/rice/Address_Registration_Guard.hpp +7 -0
  15. data/rice/Address_Registration_Guard.ipp +34 -0
  16. data/rice/Address_Registration_Guard_defn.hpp +65 -0
  17. data/rice/Allocation_Strategies.hpp +37 -0
  18. data/rice/Arg.hpp +8 -0
  19. data/rice/Arg_impl.hpp +127 -0
  20. data/rice/Arg_operators.cpp +21 -0
  21. data/rice/Arg_operators.hpp +19 -0
  22. data/rice/Array.hpp +220 -0
  23. data/rice/Array.ipp +263 -0
  24. data/rice/Builtin_Object.hpp +8 -0
  25. data/rice/Builtin_Object.ipp +50 -0
  26. data/rice/Builtin_Object_defn.hpp +51 -0
  27. data/rice/Class.cpp +57 -0
  28. data/rice/Class.hpp +8 -0
  29. data/rice/Class.ipp +6 -0
  30. data/rice/Class_defn.hpp +83 -0
  31. data/rice/Constructor.hpp +367 -0
  32. data/rice/Critical_Guard.hpp +40 -0
  33. data/rice/Critical_Guard.ipp +26 -0
  34. data/rice/Data_Object.hpp +8 -0
  35. data/rice/Data_Object.ipp +133 -0
  36. data/rice/Data_Object_defn.hpp +132 -0
  37. data/rice/Data_Type.cpp +54 -0
  38. data/rice/Data_Type.hpp +8 -0
  39. data/rice/Data_Type.ipp +365 -0
  40. data/rice/Data_Type_defn.hpp +261 -0
  41. data/rice/Data_Type_fwd.hpp +12 -0
  42. data/rice/Director.cpp +13 -0
  43. data/rice/Director.hpp +39 -0
  44. data/rice/Enum.hpp +117 -0
  45. data/rice/Enum.ipp +246 -0
  46. data/rice/Exception.cpp +59 -0
  47. data/rice/Exception.hpp +9 -0
  48. data/rice/Exception_Base.hpp +8 -0
  49. data/rice/Exception_Base.ipp +13 -0
  50. data/rice/Exception_Base_defn.hpp +27 -0
  51. data/rice/Exception_defn.hpp +69 -0
  52. data/rice/Hash.hpp +210 -0
  53. data/rice/Hash.ipp +338 -0
  54. data/rice/Identifier.cpp +8 -0
  55. data/rice/Identifier.hpp +50 -0
  56. data/rice/Identifier.ipp +33 -0
  57. data/rice/Jump_Tag.hpp +24 -0
  58. data/rice/Makefile.am +129 -0
  59. data/rice/Module.cpp +84 -0
  60. data/rice/Module.hpp +8 -0
  61. data/rice/Module.ipp +6 -0
  62. data/rice/Module_defn.hpp +88 -0
  63. data/rice/Module_impl.hpp +281 -0
  64. data/rice/Module_impl.ipp +348 -0
  65. data/rice/Object.cpp +160 -0
  66. data/rice/Object.hpp +8 -0
  67. data/rice/Object.ipp +19 -0
  68. data/rice/Object_defn.hpp +191 -0
  69. data/rice/Require_Guard.hpp +21 -0
  70. data/rice/String.cpp +94 -0
  71. data/rice/String.hpp +89 -0
  72. data/rice/Struct.cpp +117 -0
  73. data/rice/Struct.hpp +162 -0
  74. data/rice/Struct.ipp +26 -0
  75. data/rice/Symbol.cpp +25 -0
  76. data/rice/Symbol.hpp +66 -0
  77. data/rice/Symbol.ipp +44 -0
  78. data/rice/VM.cpp +92 -0
  79. data/rice/VM.hpp +32 -0
  80. data/rice/config.hpp.in +40 -0
  81. data/rice/detail/Arguments.hpp +118 -0
  82. data/rice/detail/Auto_Function_Wrapper.hpp +829 -0
  83. data/rice/detail/Auto_Function_Wrapper.ipp +3391 -0
  84. data/rice/detail/Auto_Member_Function_Wrapper.hpp +828 -0
  85. data/rice/detail/Auto_Member_Function_Wrapper.ipp +2503 -0
  86. data/rice/detail/Caster.hpp +103 -0
  87. data/rice/detail/Exception_Handler.hpp +8 -0
  88. data/rice/detail/Exception_Handler.ipp +68 -0
  89. data/rice/detail/Exception_Handler_defn.hpp +96 -0
  90. data/rice/detail/Iterator.hpp +93 -0
  91. data/rice/detail/Not_Copyable.hpp +25 -0
  92. data/rice/detail/Wrapped_Function.hpp +33 -0
  93. data/rice/detail/cfp.hpp +24 -0
  94. data/rice/detail/cfp.ipp +51 -0
  95. data/rice/detail/check_ruby_type.cpp +27 -0
  96. data/rice/detail/check_ruby_type.hpp +23 -0
  97. data/rice/detail/creation_funcs.hpp +37 -0
  98. data/rice/detail/creation_funcs.ipp +36 -0
  99. data/rice/detail/default_allocation_func.hpp +23 -0
  100. data/rice/detail/default_allocation_func.ipp +11 -0
  101. data/rice/detail/define_method_and_auto_wrap.hpp +31 -0
  102. data/rice/detail/define_method_and_auto_wrap.ipp +30 -0
  103. data/rice/detail/demangle.cpp +56 -0
  104. data/rice/detail/demangle.hpp +19 -0
  105. data/rice/detail/env.hpp +19 -0
  106. data/rice/detail/from_ruby.hpp +43 -0
  107. data/rice/detail/from_ruby.ipp +60 -0
  108. data/rice/detail/method_data.cpp +159 -0
  109. data/rice/detail/method_data.hpp +21 -0
  110. data/rice/detail/mininode.cpp +1220 -0
  111. data/rice/detail/mininode.hpp +320 -0
  112. data/rice/detail/node.hpp +13 -0
  113. data/rice/detail/object_call.hpp +68 -0
  114. data/rice/detail/object_call.ipp +131 -0
  115. data/rice/detail/protect.cpp +29 -0
  116. data/rice/detail/protect.hpp +34 -0
  117. data/rice/detail/ruby.hpp +93 -0
  118. data/rice/detail/ruby_version_code.hpp.in +6 -0
  119. data/rice/detail/rubysig.hpp +19 -0
  120. data/rice/detail/st.hpp +60 -0
  121. data/rice/detail/to_ruby.hpp +22 -0
  122. data/rice/detail/to_ruby.ipp +36 -0
  123. data/rice/detail/traits.hpp +43 -0
  124. data/rice/detail/win32.hpp +16 -0
  125. data/rice/detail/wrap_function.hpp +341 -0
  126. data/rice/detail/wrap_function.ipp +514 -0
  127. data/rice/global_function.hpp +33 -0
  128. data/rice/global_function.ipp +22 -0
  129. data/rice/protect.hpp +91 -0
  130. data/rice/protect.ipp +1133 -0
  131. data/rice/ruby_mark.hpp +13 -0
  132. data/rice/ruby_try_catch.hpp +86 -0
  133. data/rice/rubypp.rb +97 -0
  134. data/rice/to_from_ruby.hpp +8 -0
  135. data/rice/to_from_ruby.ipp +297 -0
  136. data/rice/to_from_ruby_defn.hpp +71 -0
  137. data/ruby/Makefile.am +1 -0
  138. data/ruby/lib/Makefile.am +3 -0
  139. data/ruby/lib/mkmf-rice.rb.in +216 -0
  140. data/ruby/lib/version.rb +3 -0
  141. data/ruby.ac +136 -0
  142. data/sample/Makefile.am +47 -0
  143. data/sample/enum/extconf.rb +3 -0
  144. data/sample/enum/sample_enum.cpp +54 -0
  145. data/sample/enum/test.rb +8 -0
  146. data/sample/inheritance/animals.cpp +98 -0
  147. data/sample/inheritance/extconf.rb +3 -0
  148. data/sample/inheritance/test.rb +7 -0
  149. data/sample/map/extconf.rb +3 -0
  150. data/sample/map/map.cpp +81 -0
  151. data/sample/map/test.rb +7 -0
  152. data/test/Makefile.am +78 -0
  153. data/test/ext/Makefile.am +43 -0
  154. data/test/ext/t1/Foo.hpp +10 -0
  155. data/test/ext/t1/extconf.rb +2 -0
  156. data/test/ext/t1/t1.cpp +15 -0
  157. data/test/ext/t2/extconf.rb +2 -0
  158. data/test/ext/t2/t2.cpp +11 -0
  159. data/test/test_Address_Registration_Guard.cpp +43 -0
  160. data/test/test_Allocation_Strategies.cpp +77 -0
  161. data/test/test_Array.cpp +241 -0
  162. data/test/test_Builtin_Object.cpp +72 -0
  163. data/test/test_Class.cpp +498 -0
  164. data/test/test_Constructor.cpp +128 -0
  165. data/test/test_Critical_Guard.cpp +51 -0
  166. data/test/test_Data_Object.cpp +275 -0
  167. data/test/test_Data_Type.cpp +348 -0
  168. data/test/test_Director.cpp +301 -0
  169. data/test/test_Enum.cpp +195 -0
  170. data/test/test_Exception.cpp +46 -0
  171. data/test/test_Hash.cpp +195 -0
  172. data/test/test_Identifier.cpp +70 -0
  173. data/test/test_Jump_Tag.cpp +17 -0
  174. data/test/test_Memory_Management.cpp +50 -0
  175. data/test/test_Module.cpp +481 -0
  176. data/test/test_Object.cpp +148 -0
  177. data/test/test_String.cpp +94 -0
  178. data/test/test_Struct.cpp +192 -0
  179. data/test/test_Symbol.cpp +63 -0
  180. data/test/test_To_From_Ruby.cpp +263 -0
  181. data/test/test_VM.cpp +26 -0
  182. data/test/test_global_functions.cpp +114 -0
  183. data/test/test_rice.rb +43 -0
  184. data/test/unittest.cpp +136 -0
  185. data/test/unittest.hpp +292 -0
  186. metadata +276 -0
data/README.mingw ADDED
@@ -0,0 +1,8 @@
1
+ Assuming you are using the one-click installer, you can build against it
2
+ using mingw by configuring with the following command:
3
+
4
+ $ CPPFLAGS=-D_MSC_VER=1200 LIBS=-lmsvcp60 ./configure
5
+
6
+ Rice includes a number of customizations to allow it to work in this
7
+ configuration. See [ruby-core:8264] for more details.
8
+
data/Rakefile ADDED
@@ -0,0 +1,33 @@
1
+ $: << File.expand_path(File.dirname(__FILE__))
2
+ require 'rake/gempackagetask'
3
+ require 'rake/contrib/sshpublisher'
4
+ require 'yaml'
5
+ require 'ruby/lib/version'
6
+
7
+ PROJECT_NAME = "rice"
8
+ PROJECT_WEB_PATH = "/var/www/gforge-projects/rice"
9
+
10
+ task :default => :test
11
+
12
+ desc "Run unit tests"
13
+ task :test do
14
+ cd "test" do
15
+ ruby "test_rice.rb"
16
+ end
17
+ end
18
+
19
+ desc "Build the documentation"
20
+ task :doc do
21
+ sh "make doc"
22
+ end
23
+
24
+ desc "Upload documentation to the website. Requires rubyforge gem"
25
+ task :upload_web => [:doc] do
26
+ host = "jameskilton@rubyforge.org"
27
+ Rake::SshDirPublisher.new(host, PROJECT_WEB_PATH, "doc/html").upload
28
+ end
29
+
30
+ # Gemspec kept externally
31
+ eval(File.read("rice.gemspec"))
32
+ Rake::GemPackageTask.new($spec) do |pkg|
33
+ end
data/bootstrap ADDED
@@ -0,0 +1,9 @@
1
+ #!/bin/sh
2
+ rm -f configure
3
+ find . -name 'Makefile.in' | xargs rm -f
4
+ puts "Auto reconfiguring"
5
+ autoreconf --install --verbose
6
+ touch rice/config.hpp.in
7
+ ruby post-autoconf.rb
8
+ ruby post-automake.rb
9
+
data/configure.ac ADDED
@@ -0,0 +1,52 @@
1
+ AC_INIT(rice, 1.1)
2
+ AC_CONFIG_SRCDIR(rice)
3
+ AM_INIT_AUTOMAKE
4
+
5
+ AM_CONFIG_HEADER(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
+ AC_SUBST(RICE_USING_MINGW32)
25
+
26
+ m4_include(ruby.ac)
27
+ RB_INIT_RUBY
28
+
29
+ m4_include(doxygen.ac)
30
+ DX_HTML_FEATURE(ON)
31
+ DX_CHM_FEATURE(OFF)
32
+ DX_CHI_FEATURE(OFF)
33
+ DX_MAN_FEATURE(OFF)
34
+ DX_RTF_FEATURE(OFF)
35
+ DX_XML_FEATURE(OFF)
36
+ DX_PDF_FEATURE(OFF)
37
+ DX_PS_FEATURE(OFF)
38
+ DX_INIT_DOXYGEN(rice, Doxyfile, doc)
39
+
40
+ RICE_SAMPLES="enum map inheritance"
41
+ AC_SUBST(RICE_SAMPLES)
42
+
43
+ RICE_ROOT=`pwd`
44
+ AC_SUBST(RICE_ROOT)
45
+
46
+ AC_CONFIG_FILES(Makefile rice/Makefile test/Makefile sample/Makefile
47
+ ruby/Makefile ruby/lib/Makefile test/ext/Makefile
48
+ ruby/lib/mkmf-rice.rb rice/detail/ruby_version_code.hpp)
49
+ AC_OUTPUT
50
+
51
+ dnl Work around a bug in older versions of Rubygems
52
+ chmod +x install-sh
data/doxygen.ac ADDED
@@ -0,0 +1,314 @@
1
+ # This file is part of Autoconf. -*- Autoconf -*-
2
+
3
+ # Copyright (C) 2004 Oren Ben-Kiki
4
+ # This file is distributed under the same terms as the Autoconf macro files.
5
+
6
+ # Generate automatic documentation using Doxygen. Works in concert with the
7
+ # aminclude.m4 file and a compatible doxygen configuration file. Defines the
8
+ # following public macros:
9
+ #
10
+ # DX_???_FEATURE(ON|OFF) - control the default setting fo a Doxygen feature.
11
+ # Supported features are 'DOXYGEN' itself, 'DOT' for generating graphics,
12
+ # 'HTML' for plain HTML, 'CHM' for compressed HTML help (for MS users), 'CHI'
13
+ # for generating a seperate .chi file by the .chm file, and 'MAN', 'RTF',
14
+ # 'XML', 'PDF' and 'PS' for the appropriate output formats. The environment
15
+ # variable DOXYGEN_PAPER_SIZE may be specified to override the default 'a4wide'
16
+ # paper size.
17
+ #
18
+ # By default, HTML, PDF and PS documentation is generated as this seems to be
19
+ # the most popular and portable combination. MAN pages created by Doxygen are
20
+ # usually problematic, though by picking an appropriate subset and doing some
21
+ # massaging they might be better than nothing. CHM and RTF are specific for MS
22
+ # (note that you can't generate both HTML and CHM at the same time). The XML is
23
+ # rather useless unless you apply specialized post-processing to it.
24
+ #
25
+ # The macro mainly controls the default state of the feature. The use can
26
+ # override the default by specifying --enable or --disable. The macros ensure
27
+ # that contradictory flags are not given (e.g., --enable-doxygen-html and
28
+ # --enable-doxygen-chm, --enable-doxygen-anything with --disable-doxygen, etc.)
29
+ # Finally, each feature will be automatically disabled (with a warning) if the
30
+ # required programs are missing.
31
+ #
32
+ # Once all the feature defaults have been specified, call DX_INIT_DOXYGEN with
33
+ # the following parameters: a one-word name for the project for use as a
34
+ # filename base etc., an optional configuration file name (the default is
35
+ # 'Doxyfile', the same as Doxygen's default), and an optional output directory
36
+ # name (the default is 'doxygen-doc').
37
+
38
+ ## ----------##
39
+ ## Defaults. ##
40
+ ## ----------##
41
+
42
+ DX_ENV=""
43
+ AC_DEFUN([DX_FEATURE_doc], ON)
44
+ AC_DEFUN([DX_FEATURE_dot], ON)
45
+ AC_DEFUN([DX_FEATURE_man], OFF)
46
+ AC_DEFUN([DX_FEATURE_html], ON)
47
+ AC_DEFUN([DX_FEATURE_chm], OFF)
48
+ AC_DEFUN([DX_FEATURE_chi], OFF)
49
+ AC_DEFUN([DX_FEATURE_rtf], OFF)
50
+ AC_DEFUN([DX_FEATURE_xml], OFF)
51
+ AC_DEFUN([DX_FEATURE_pdf], ON)
52
+ AC_DEFUN([DX_FEATURE_ps], ON)
53
+
54
+ ## --------------- ##
55
+ ## Private macros. ##
56
+ ## --------------- ##
57
+
58
+ # DX_ENV_APPEND(VARIABLE, VALUE)
59
+ # ------------------------------
60
+ # Append VARIABLE="VALUE" to DX_ENV for invoking doxygen.
61
+ AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])])
62
+
63
+ # DX_DIRNAME_EXPR
64
+ # ---------------
65
+ # Expand into a shell expression prints the directory part of a path.
66
+ AC_DEFUN([DX_DIRNAME_EXPR],
67
+ [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']])
68
+
69
+ # DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF)
70
+ # -------------------------------------
71
+ # Expands according to the M4 (static) status of the feature.
72
+ AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])])
73
+
74
+ # DX_REQUIRE_PROG(VARIABLE, PROGRAM)
75
+ # ----------------------------------
76
+ # Require the specified program to be found for the DX_CURRENT_FEATURE to work.
77
+ AC_DEFUN([DX_REQUIRE_PROG], [
78
+ AC_PATH_TOOL([$1], [$2])
79
+ if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then
80
+ AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
81
+ AC_SUBST([DX_FLAG_]DX_CURRENT_FEATURE, 0)
82
+ fi
83
+ ])
84
+
85
+ # DX_TEST_FEATURE(FEATURE)
86
+ # ------------------------
87
+ # Expand to a shell expression testing whether the feature is active.
88
+ AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1])
89
+
90
+ # DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE)
91
+ # -------------------------------------------------
92
+ # Verify that a required features has the right state before trying to turn on
93
+ # the DX_CURRENT_FEATURE.
94
+ AC_DEFUN([DX_CHECK_DEPEND], [
95
+ test "$DX_FLAG_$1" = "$2" \
96
+ || AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1,
97
+ requires, contradicts) doxygen-DX_CURRENT_FEATURE])
98
+ ])
99
+
100
+ # DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE)
101
+ # ----------------------------------------------------------
102
+ # Turn off the DX_CURRENT_FEATURE if the required feature is off.
103
+ AC_DEFUN([DX_CLEAR_DEPEND], [
104
+ test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_]DX_CURRENT_FEATURE, 0)
105
+ ])
106
+
107
+ # DX_FEATURE_ARG(FEATURE, DESCRIPTION,
108
+ # CHECK_DEPEND, CLEAR_DEPEND,
109
+ # REQUIRE, DO-IF-ON, DO-IF-OFF)
110
+ # --------------------------------------------
111
+ # Parse the command-line option controlling a feature. CHECK_DEPEND is called
112
+ # if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND),
113
+ # otherwise CLEAR_DEPEND is called to turn off the default state if a required
114
+ # feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional
115
+ # requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and
116
+ # DO-IF-ON or DO-IF-OFF are called according to the final state of the feature.
117
+ AC_DEFUN([DX_ARG_ABLE], [
118
+ AC_DEFUN([DX_CURRENT_FEATURE], [$1])
119
+ AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2])
120
+ AC_ARG_ENABLE(doxygen-$1,
121
+ [AC_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1],
122
+ [--enable-doxygen-$1]),
123
+ DX_IF_FEATURE([$1], [don't $2], [$2]))],
124
+ [
125
+ case "$enableval" in
126
+ #(
127
+ y|Y|yes|Yes|YES)
128
+ AC_SUBST([DX_FLAG_$1], 1)
129
+ $3
130
+ ;; #(
131
+ n|N|no|No|NO)
132
+ AC_SUBST([DX_FLAG_$1], 0)
133
+ ;; #(
134
+ *)
135
+ AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1])
136
+ ;;
137
+ esac
138
+ ], [
139
+ AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
140
+ $4
141
+ ])
142
+ if DX_TEST_FEATURE([$1]); then
143
+ $5
144
+ :
145
+ fi
146
+ if DX_TEST_FEATURE([$1]); then
147
+ AM_CONDITIONAL(DX_COND_$1, :)
148
+ $6
149
+ :
150
+ else
151
+ AM_CONDITIONAL(DX_COND_$1, false)
152
+ $7
153
+ :
154
+ fi
155
+ ])
156
+
157
+ ## -------------- ##
158
+ ## Public macros. ##
159
+ ## -------------- ##
160
+
161
+ # DX_XXX_FEATURE(DEFAULT_STATE)
162
+ # -----------------------------
163
+ AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])])
164
+ AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])])
165
+ AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])])
166
+ AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])])
167
+ AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])])
168
+ AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])])
169
+ AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])])
170
+ AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])])
171
+ AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])])
172
+ AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])])
173
+
174
+ # DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR])
175
+ # ---------------------------------------------------------
176
+ # PROJECT also serves as the base name for the documentation files.
177
+ # The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc".
178
+ AC_DEFUN([DX_INIT_DOXYGEN], [
179
+
180
+ # Files:
181
+ AC_SUBST([DX_PROJECT], [$1])
182
+ AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])])
183
+ AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])])
184
+
185
+ # Environment variables used inside doxygen.cfg:
186
+ DX_ENV_APPEND(SRCDIR, $srcdir)
187
+ DX_ENV_APPEND(PROJECT, $DX_PROJECT)
188
+ DX_ENV_APPEND(DOCDIR, $DX_DOCDIR)
189
+ DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
190
+
191
+ # Doxygen itself:
192
+ DX_ARG_ABLE(doc, [generate any doxygen documentation],
193
+ [],
194
+ [],
195
+ [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen)
196
+ DX_REQUIRE_PROG([DX_PERL], perl)],
197
+ [DX_ENV_APPEND(PERL_PATH, $DX_PERL)])
198
+
199
+ # Dot for graphics:
200
+ DX_ARG_ABLE(dot, [generate graphics for doxygen documentation],
201
+ [DX_CHECK_DEPEND(doc, 1)],
202
+ [DX_CLEAR_DEPEND(doc, 1)],
203
+ [DX_REQUIRE_PROG([DX_DOT], dot)],
204
+ [DX_ENV_APPEND(HAVE_DOT, YES)
205
+ DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])],
206
+ [DX_ENV_APPEND(HAVE_DOT, NO)])
207
+
208
+ # Man pages generation:
209
+ DX_ARG_ABLE(man, [generate doxygen manual pages],
210
+ [DX_CHECK_DEPEND(doc, 1)],
211
+ [DX_CLEAR_DEPEND(doc, 1)],
212
+ [],
213
+ [DX_ENV_APPEND(GENERATE_MAN, YES)],
214
+ [DX_ENV_APPEND(GENERATE_MAN, NO)])
215
+
216
+ # RTF file generation:
217
+ DX_ARG_ABLE(rtf, [generate doxygen RTF documentation],
218
+ [DX_CHECK_DEPEND(doc, 1)],
219
+ [DX_CLEAR_DEPEND(doc, 1)],
220
+ [],
221
+ [DX_ENV_APPEND(GENERATE_RTF, YES)],
222
+ [DX_ENV_APPEND(GENERATE_RTF, NO)])
223
+
224
+ # XML file generation:
225
+ DX_ARG_ABLE(xml, [generate doxygen XML documentation],
226
+ [DX_CHECK_DEPEND(doc, 1)],
227
+ [DX_CLEAR_DEPEND(doc, 1)],
228
+ [],
229
+ [DX_ENV_APPEND(GENERATE_XML, YES)],
230
+ [DX_ENV_APPEND(GENERATE_XML, NO)])
231
+
232
+ # (Compressed) HTML help generation:
233
+ DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation],
234
+ [DX_CHECK_DEPEND(doc, 1)],
235
+ [DX_CLEAR_DEPEND(doc, 1)],
236
+ [DX_REQUIRE_PROG([DX_HHC], hhc)],
237
+ [DX_ENV_APPEND(HHC_PATH, $DX_HHC)
238
+ DX_ENV_APPEND(GENERATE_HTML, YES)
239
+ DX_ENV_APPEND(GENERATE_HTMLHELP, YES)],
240
+ [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)])
241
+
242
+ # Seperate CHI file generation.
243
+ DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
244
+ [DX_CHECK_DEPEND(chm, 1)],
245
+ [DX_CLEAR_DEPEND(chm, 1)],
246
+ [],
247
+ [DX_ENV_APPEND(GENERATE_CHI, YES)],
248
+ [DX_ENV_APPEND(GENERATE_CHI, NO)])
249
+
250
+ # Plain HTML pages generation:
251
+ DX_ARG_ABLE(html, [generate doxygen plain HTML documentation],
252
+ [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)],
253
+ [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)],
254
+ [],
255
+ [DX_ENV_APPEND(GENERATE_HTML, YES)],
256
+ [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)])
257
+
258
+ # PostScript file generation:
259
+ DX_ARG_ABLE(ps, [generate doxygen PostScript documentation],
260
+ [DX_CHECK_DEPEND(doc, 1)],
261
+ [DX_CLEAR_DEPEND(doc, 1)],
262
+ [DX_REQUIRE_PROG([DX_LATEX], latex)
263
+ DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
264
+ DX_REQUIRE_PROG([DX_DVIPS], dvips)
265
+ DX_REQUIRE_PROG([DX_EGREP], egrep)])
266
+
267
+ # PDF file generation:
268
+ DX_ARG_ABLE(pdf, [generate doxygen PDF documentation],
269
+ [DX_CHECK_DEPEND(doc, 1)],
270
+ [DX_CLEAR_DEPEND(doc, 1)],
271
+ [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex)
272
+ DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
273
+ DX_REQUIRE_PROG([DX_EGREP], egrep)])
274
+
275
+ # LaTeX generation for PS and/or PDF:
276
+ if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
277
+ AM_CONDITIONAL(DX_COND_latex, :)
278
+ DX_ENV_APPEND(GENERATE_LATEX, YES)
279
+ else
280
+ AM_CONDITIONAL(DX_COND_latex, false)
281
+ DX_ENV_APPEND(GENERATE_LATEX, NO)
282
+ fi
283
+
284
+ # Paper size for PS and/or PDF:
285
+ AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
286
+ [a4wide (default), a4, letter, legal or executive])
287
+ case "$DOXYGEN_PAPER_SIZE" in
288
+ #(
289
+ "")
290
+ AC_SUBST(DOXYGEN_PAPER_SIZE, "")
291
+ ;; #(
292
+ a4wide|a4|letter|legal|executive)
293
+ DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE)
294
+ ;; #(
295
+ *)
296
+ AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'])
297
+ ;;
298
+ esac
299
+
300
+ #For debugging:
301
+ #echo DX_FLAG_doc=$DX_FLAG_doc
302
+ #echo DX_FLAG_dot=$DX_FLAG_dot
303
+ #echo DX_FLAG_man=$DX_FLAG_man
304
+ #echo DX_FLAG_html=$DX_FLAG_html
305
+ #echo DX_FLAG_chm=$DX_FLAG_chm
306
+ #echo DX_FLAG_chi=$DX_FLAG_chi
307
+ #echo DX_FLAG_rtf=$DX_FLAG_rtf
308
+ #echo DX_FLAG_xml=$DX_FLAG_xml
309
+ #echo DX_FLAG_pdf=$DX_FLAG_pdf
310
+ #echo DX_FLAG_ps=$DX_FLAG_ps
311
+ #echo DX_ENV=$DX_ENV
312
+ ])
313
+
314
+ dnl vi:ft=config
data/doxygen.am ADDED
@@ -0,0 +1,186 @@
1
+ # Copyright (C) 2004 Oren Ben-Kiki
2
+ # This file is distributed under the same terms as the Automake macro files.
3
+
4
+ # Generate automatic documentation using Doxygen. Goals and variables values
5
+ # are controlled by the various DX_COND_??? conditionals set by autoconf.
6
+ #
7
+ # The provided goals are:
8
+ # doxygen-doc: Generate all doxygen documentation.
9
+ # doxygen-run: Run doxygen, which will generate some of the documentation
10
+ # (HTML, CHM, CHI, MAN, RTF, XML) but will not do the post
11
+ # processing required for the rest of it (PS, PDF, and some MAN).
12
+ # doxygen-man: Rename some doxygen generated man pages.
13
+ # doxygen-ps: Generate doxygen PostScript documentation.
14
+ # doxygen-pdf: Generate doxygen PDF documentation.
15
+ #
16
+ # Note that by default these are not integrated into the automake goals. If
17
+ # doxygen is used to generate man pages, you can achieve this integration by
18
+ # setting man3_MANS to the list of man pages generated and then adding the
19
+ # dependency:
20
+ #
21
+ # $(man3_MANS): doxygen-doc
22
+ #
23
+ # This will cause make to run doxygen and generate all the documentation.
24
+ #
25
+ # The following variable is intended for use in Makefile.am:
26
+ #
27
+ # DX_CLEANFILES = everything to clean.
28
+ #
29
+ # This is usually added to MOSTLYCLEANFILES.
30
+
31
+ ## --------------------------------- ##
32
+ ## Format-independent Doxygen rules. ##
33
+ ## --------------------------------- ##
34
+
35
+ if DX_COND_doc
36
+
37
+ ## ------------------------------- ##
38
+ ## Rules specific for HTML output. ##
39
+ ## ------------------------------- ##
40
+
41
+ if DX_COND_html
42
+
43
+ DX_CLEAN_HTML = @DX_DOCDIR@/html
44
+
45
+ endif DX_COND_html
46
+
47
+ ## ------------------------------ ##
48
+ ## Rules specific for CHM output. ##
49
+ ## ------------------------------ ##
50
+
51
+ if DX_COND_chm
52
+
53
+ DX_CLEAN_CHM = @DX_DOCDIR@/chm
54
+
55
+ if DX_COND_chi
56
+
57
+ DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi
58
+
59
+ endif DX_COND_chi
60
+
61
+ endif DX_COND_chm
62
+
63
+ ## ------------------------------ ##
64
+ ## Rules specific for MAN output. ##
65
+ ## ------------------------------ ##
66
+
67
+ if DX_COND_man
68
+
69
+ DX_CLEAN_MAN = @DX_DOCDIR@/man
70
+
71
+ endif DX_COND_man
72
+
73
+ ## ------------------------------ ##
74
+ ## Rules specific for RTF output. ##
75
+ ## ------------------------------ ##
76
+
77
+ if DX_COND_rtf
78
+
79
+ DX_CLEAN_RTF = @DX_DOCDIR@/rtf
80
+
81
+ endif DX_COND_rtf
82
+
83
+ ## ------------------------------ ##
84
+ ## Rules specific for XML output. ##
85
+ ## ------------------------------ ##
86
+
87
+ if DX_COND_xml
88
+
89
+ DX_CLEAN_XML = @DX_DOCDIR@/xml
90
+
91
+ endif DX_COND_xml
92
+
93
+ ## ----------------------------- ##
94
+ ## Rules specific for PS output. ##
95
+ ## ----------------------------- ##
96
+
97
+ if DX_COND_ps
98
+
99
+ DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps
100
+
101
+ DX_PS_GOAL = doxygen-ps
102
+
103
+ doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
104
+
105
+ @DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag $(DX_EXTRA_DEPEND)
106
+ cd @DX_DOCDIR@/latex; \
107
+ rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
108
+ $(DX_LATEX) refman.tex; \
109
+ $(MAKEINDEX_PATH) refman.idx; \
110
+ $(DX_LATEX) refman.tex; \
111
+ countdown=5; \
112
+ while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
113
+ refman.log > /dev/null 2>&1 \
114
+ && test $$countdown -gt 0; do \
115
+ $(DX_LATEX) refman.tex; \
116
+ countdown=`expr $$countdown - 1`; \
117
+ done; \
118
+ $(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
119
+
120
+ endif DX_COND_ps
121
+
122
+ ## ------------------------------ ##
123
+ ## Rules specific for PDF output. ##
124
+ ## ------------------------------ ##
125
+
126
+ if DX_COND_pdf
127
+
128
+ DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf
129
+
130
+ DX_PDF_GOAL = doxygen-pdf
131
+
132
+ doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
133
+
134
+ @DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag $(DX_EXTRA_DEPEND)
135
+ cd @DX_DOCDIR@/latex; \
136
+ rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
137
+ $(DX_PDFLATEX) refman.tex; \
138
+ $(DX_MAKEINDEX) refman.idx; \
139
+ $(DX_PDFLATEX) refman.tex; \
140
+ countdown=5; \
141
+ while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
142
+ refman.log > /dev/null 2>&1 \
143
+ && test $$countdown -gt 0; do \
144
+ $(DX_PDFLATEX) refman.tex; \
145
+ countdown=`expr $$countdown - 1`; \
146
+ done; \
147
+ mv refman.pdf ../@PACKAGE@.pdf
148
+
149
+ endif DX_COND_pdf
150
+
151
+ ## ------------------------------------------------- ##
152
+ ## Rules specific for LaTeX (shared for PS and PDF). ##
153
+ ## ------------------------------------------------- ##
154
+
155
+ if DX_COND_latex
156
+
157
+ DX_CLEAN_LATEX = @DX_DOCDIR@/latex
158
+
159
+ endif DX_COND_latex
160
+
161
+ .PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
162
+
163
+ .INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
164
+
165
+ doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
166
+
167
+ doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
168
+
169
+ @DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS) $(DX_EXTRA_DEPEND)
170
+ rm -rf @DX_DOCDIR@
171
+ $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
172
+
173
+ DX_CLEANFILES = \
174
+ @DX_DOCDIR@/@PACKAGE@.tag \
175
+ -r \
176
+ $(DX_CLEAN_HTML) \
177
+ $(DX_CLEAN_CHM) \
178
+ $(DX_CLEAN_CHI) \
179
+ $(DX_CLEAN_MAN) \
180
+ $(DX_CLEAN_RTF) \
181
+ $(DX_CLEAN_XML) \
182
+ $(DX_CLEAN_PS) \
183
+ $(DX_CLEAN_PDF) \
184
+ $(DX_CLEAN_LATEX)
185
+
186
+ endif DX_COND_doc
data/extconf.rb ADDED
@@ -0,0 +1,41 @@
1
+ # To allow Rice to be installed on non-system installs of Ruby (say the user has
2
+ # 1.8.7 and 1.9.0 installed), the rice gem uses the extconf version of deployment
3
+ # rather than configure. This file will get the appropriate values from CONFIG
4
+ # for the Ruby that this library is being installed into and generate
5
+ # the proper arguments to ./configure.
6
+ #
7
+ # With this, installing on any of the Ruby versions installed on a machine is as
8
+ # easy as /path/to/the/gem install rice.
9
+ #
10
+ # This isn't actually an extconf.rb file, all it needs to do is create a Makefile
11
+ # for gem to continue 'make'-ing. It needs to be named 'extconf.rb' to fit Rubygem's
12
+ # expectations
13
+
14
+ `./bootstrap`
15
+ $:.unshift File.expand_path(File.dirname(__FILE__))
16
+
17
+ require 'rbconfig'
18
+ require 'ruby/lib/version.rb'
19
+
20
+ prefix_dir = File.join(File.dirname(File.expand_path(__FILE__)), "ruby", "lib")
21
+ with_ruby = File.join(Config::CONFIG["bindir"], Config::CONFIG["RUBY_INSTALL_NAME"])
22
+
23
+ other_opts = ""
24
+ env = ""
25
+
26
+ if RUBY_PLATFORM =~ /darwin10/
27
+ arch = Config::CONFIG["arch"].split("-")[0]
28
+
29
+ if arch == "universal"
30
+ arch = `uname -m`.strip
31
+ end
32
+
33
+ other_opts = "--disable-dependency-tracking"
34
+ env = "ARCHFLAGS='-arch #{arch}' CPPFLAGS='-arch #{arch}'"
35
+ elsif RUBY_PLATFORM =~ /darwin9/
36
+ arch = `uname -p`.chomp
37
+ env = "ARCHFLAGS='-arch #{arch}' CPPFLAGS='-arch #{arch}'"
38
+ end
39
+
40
+ puts "PWD: #{`pwd`}"
41
+ system "#{env} sh configure --with-ruby=#{with_ruby} --prefix=#{prefix_dir} #{other_opts}"
data/post-autoconf.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'fileutils'
2
+ require 'find'
3
+
4
+ def process(file)
5
+ puts "Post-processing #{file}"
6
+ File.open(file) do |input|
7
+ File.open("#{file}.pp", "w") do |output|
8
+ input.each_line do |line|
9
+ yield output, line
10
+ end
11
+ end
12
+ end
13
+ FileUtils.mv("#{file}.pp", "#{file}")
14
+ end
15
+
16
+ process("configure") do |out, line|
17
+ # autoconf doesn't properly enclose $srcdir and $am_aux_dir in quotes
18
+ line.gsub!(/([^"'])(\$srcdir)/, '\1"\2"')
19
+ line.gsub!(/([^"'])(\$am_aux_dir)/, '\1\"\2\"')
20
+ out.puts line
21
+ end
22
+ FileUtils.chmod(0700, "configure")
data/post-automake.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'fileutils'
2
+ require 'find'
3
+
4
+ def process(file)
5
+ puts "Post-processing #{file}"
6
+ File.open(file) do |input|
7
+ File.open("#{file}.pp", "w") do |output|
8
+ input.each_line do |line|
9
+ yield output, line
10
+ end
11
+ end
12
+ end
13
+ FileUtils.mv("#{file}.pp", "#{file}")
14
+ end
15
+
16
+ Find.find(".") do |file|
17
+ if file =~ /Makefile.in$/ then
18
+ process(file) do |out, line|
19
+ # automake doesn't properly enclose $distdir in quotes
20
+ if line !~ /echo / then
21
+ line.gsub!(/([^"'])(\$\(distdir\))/, '\1"\2"')
22
+ end
23
+ line.gsub!(/(\$\(MKDIR_P\).*`)/, 'eval \1')
24
+ out.puts line
25
+ end
26
+ end
27
+ end
28
+