OLD | NEW |
1 # Copyright 2009, Google Inc. | 1 # Copyright 2009, Google Inc. |
2 # All rights reserved. | 2 # All rights reserved. |
3 # | 3 # |
4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
6 # met: | 6 # met: |
7 # | 7 # |
8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
(...skipping 10 matching lines...) Expand all Loading... |
21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 | 29 |
30 | 30 |
31 import glob | |
32 import os.path | 31 import os.path |
33 import subprocess | 32 import subprocess |
34 Import('env') | 33 Import('env') |
35 env.SConscript('$SCONSTRUCT_DIR/plugin/idl_list.scons') | 34 env.SConscript('$SCONSTRUCT_DIR/plugin/idl_list.scons') |
36 env.SConscript('$SCONSTRUCT_DIR/samples/o3djs/js_list.scons') | 35 env.SConscript('$SCONSTRUCT_DIR/samples/o3djs/js_list.scons') |
37 Import('O3D_IDL_SOURCES') | 36 Import('O3D_IDL_SOURCES') |
38 Import('O3D_JS_SOURCES') | 37 Import('O3D_JS_SOURCES') |
39 | 38 |
40 env.Replace( | 39 env.Replace( |
41 EZT_FORMATTER = 'documentation/ezt_formatter.py', | |
42 CLASS_TREE_GEN = 'documentation/classtree.py', | |
43 JSDOC_DIR = '$SCONSTRUCT_DIR/documentation', | 40 JSDOC_DIR = '$SCONSTRUCT_DIR/documentation', |
44 JSDOC_EZT_TEMPLATE_DIR = '$JSDOC_DIR/jsdoc-toolkit-templates/', | 41 JSDOC_EZT_TEMPLATE_DIR = '$JSDOC_DIR/jsdoc-toolkit-templates/', |
45 JSDOC_JAR = '$JSDOCTOOLKIT_DIR/jsrun.jar', | |
46 PYTHONPATH = ['$NIXYSA_DIR', | 42 PYTHONPATH = ['$NIXYSA_DIR', |
47 '$GFLAGS_DIR/python', | 43 '$GFLAGS_DIR/python', |
48 '$PLY_DIR'] | 44 '$PLY_DIR'] |
49 ) | 45 ) |
50 | 46 |
51 # Build documentation | 47 # Build documentation |
52 IDL_DIR = "$SCONSTRUCT_DIR/plugin/" | 48 IDL_DIR = "$SCONSTRUCT_DIR/plugin/" |
53 LOCAL_IDL_SOURCES = [IDL_DIR + i for i in O3D_IDL_SOURCES] | 49 LOCAL_IDL_SOURCES = [IDL_DIR + i for i in O3D_IDL_SOURCES] |
54 JS_DIR = '$SCONSTRUCT_DIR/samples/o3djs/' | 50 JS_DIR = '$SCONSTRUCT_DIR/samples/o3djs/' |
55 LOCAL_JS_SOURCES = [JS_DIR + i for i in O3D_JS_SOURCES] | 51 LOCAL_JS_SOURCES = [JS_DIR + i for i in O3D_JS_SOURCES] |
56 | 52 |
57 def IdlDocsEmitter(target, source, env): | 53 DOCSGEN_ARGS = ['$JSDOC_DIR/build_docs.py $JAVA_EXE'] |
58 bases = [os.path.splitext(s.name)[0] for s in source] | |
59 targets = [target[0].dir.abspath + "/%s.$IDL_GENERATE_EXT" % b for b in bases] | |
60 return targets, source | |
61 | 54 |
62 AUTOGEN_ARGS = ['$NIXYSA_DIR/codegen.py', | 55 env["BUILDERS"]["JSDocs"] = Builder(action=env.Python(DOCSGEN_ARGS)) |
63 '--binding-module=o3d:plugin/o3d_binding.py', | |
64 '--generate=$IDL_GENERATE', | |
65 '--output-dir=${TARGET.dir}'] | |
66 if ARGUMENTS.get('force-docs', False): | |
67 AUTOGEN_ARGS += ['--force-docs'] | |
68 AUTOGEN_ARGS += ['$SOURCES'] | |
69 | |
70 JSDOCS_CMD = ' '.join([ | |
71 '$JAVA_EXE', | |
72 '-Djsdoc.dir=$JSDOCTOOLKIT_DIR', | |
73 '-jar $JSDOC_JAR', | |
74 '$JSDOCTOOLKIT_DIR/app/run.js', | |
75 '-v', | |
76 '-t=$JSDOC_EZT_TEMPLATE_DIR/', | |
77 '-d=${TARGET.dir}', | |
78 ' '.join(LOCAL_JS_SOURCES)]) | |
79 | |
80 def TouchAll(target=None, source=None, env=None): | |
81 for i in target: | |
82 if not os.path.exists(i.path): | |
83 open(i.path, 'wb').close() | |
84 | |
85 env["BUILDERS"]["IdlDocs"] = Builder(action=[env.Python(AUTOGEN_ARGS), | |
86 Action(TouchAll)], | |
87 emitter=IdlDocsEmitter) | |
88 | |
89 doxy_inputs = [] | |
90 doxy_inputs += env.IdlDocs( | |
91 'dummy', LOCAL_IDL_SOURCES, | |
92 IDL_GENERATE='cppheader', | |
93 IDL_GENERATE_EXT='h') | |
94 | |
95 def EZTStep(target=None, source=None, env=None): | |
96 dir = env.Dir('$OBJ_ROOT/documentation/html') | |
97 html_files = glob.glob(dir.path + os.sep + '*.html') | |
98 for file in html_files: | |
99 ret = env.Execute(env.Python(['$EZT_FORMATTER', file])) | |
100 if ret > 0: | |
101 return ret | |
102 return 0 | |
103 | |
104 def ClassTreeStep(target=None, source=None, env=None): | |
105 dir = env.Dir('$OBJ_ROOT/documentation/html') | |
106 return env.Execute(env.Python(['$CLASS_TREE_GEN', dir.path])) | |
107 | |
108 env.Command( | |
109 'html/doxygen.png', doxy_inputs, | |
110 ['$DOXYGEN documentation/Doxyfile', | |
111 Action(EZTStep), | |
112 Action(ClassTreeStep), | |
113 Touch('$TARGET')], | |
114 ) | |
115 | |
116 env["BUILDERS"]["JSDocs"] = Builder(action=JSDOCS_CMD) | |
117 | 56 |
118 # index.ezt is a file that the jsdoctoolkit happens to build. | 57 # index.ezt is a file that the jsdoctoolkit happens to build. |
119 # Putting it in jsdocs means that will be our target dir for the rest | 58 # Putting it in jsdocs means that will be our target dir for the rest |
120 # of the files. | 59 # of the files. |
121 env.JSDocs('html/jsdocs/classtree.html', LOCAL_JS_SOURCES + | 60 env.JSDocs('base.js', LOCAL_JS_SOURCES + LOCAL_IDL_SOURCES + |
122 ['$JSDOC_EZT_TEMPLATE_DIR/annotated.tmpl', | 61 ['$JSDOC_EZT_TEMPLATE_DIR/annotated.tmpl', |
123 '$JSDOC_EZT_TEMPLATE_DIR/class.tmpl', | 62 '$JSDOC_EZT_TEMPLATE_DIR/class.tmpl', |
124 '$JSDOC_EZT_TEMPLATE_DIR/classtree.tmpl', | 63 '$JSDOC_EZT_TEMPLATE_DIR/classtree.tmpl', |
125 '$JSDOC_EZT_TEMPLATE_DIR/filelist.tmpl', | 64 '$JSDOC_EZT_TEMPLATE_DIR/filelist.tmpl', |
126 '$JSDOC_EZT_TEMPLATE_DIR/members.tmpl', | 65 '$JSDOC_EZT_TEMPLATE_DIR/members.tmpl', |
127 '$JSDOC_EZT_TEMPLATE_DIR/namespaces.tmpl', | 66 '$JSDOC_EZT_TEMPLATE_DIR/namespaces.tmpl', |
128 '$JSDOC_EZT_TEMPLATE_DIR/publish.js', | 67 '$JSDOC_EZT_TEMPLATE_DIR/publish.js', |
129 '$JSDOC_EZT_TEMPLATE_DIR/static/header.html', | 68 '$JSDOC_EZT_TEMPLATE_DIR/static/header.html', |
130 '$JSDOC_EZT_TEMPLATE_DIR/static/footer.html']) | 69 '$JSDOC_EZT_TEMPLATE_DIR/static/footer.html']) |
OLD | NEW |