Another update for Lua-documentation (new manual.ardour.org)
[ardour.git] / tools / doxy2json / ardourdoc.sh
1 #!/bin/bash
2 cd `dirname $0`
3 set -e
4 make
5 cd ../..
6 test -f libs/ardour/ardour/ardour.h
7 LLVMINCLUDE="-I /usr/lib/llvm-3.6/include -I /usr/lib/llvm-3.6/lib/clang/3.6.2/include/"
8
9 TMPFILE=`mktemp`
10 trap 'rm -f $TMPFILE' exit SIGINT SIGTERM
11
12 echo "# analyzing source.. -> $TMPFILE"
13 time ./tools/doxy2json/doxy2json -j 4 \
14         $LLVMINCLUDE \
15         -D PACKAGE=\"doc\" \
16         -D PROGRAM_NAME=\"Ardour\" -D PROGRAM_VERSION=\"4\" -D LOCALEDIR=\"/\" \
17         -D ARCH_X86 -D CONFIG_ARCH=\"x86_64\" -D WAF_BUILD \
18         -D HAVE_AUBIO=1 -D HAVE_ALSA=1 -D HAVE_GLIB=1 -D HAVE_LIBS_LUA=1 -D HAVE_XML=1 -D PTFORMAT=1 \
19         -D HAVE_SAMPLERATE=1 -D HAVE_LV2=1 -D HAVE_LV2_1_2_0=1 -D HAVE_LV2_1_10_0=1 -D HAVE_SERD=1 -D HAVE_SORD=1 -D HAVE_SRATOM=1 -D HAVE_LILV=1 -D HAVE_LV2_1_0_0=1 \
20         -D HAVE_LILV_0_16_0=1 -D HAVE_LILV_0_19_2=1 -D HAVE_LILV_0_21_3=1 -D HAVE_SUIL=1 -D LV2_SUPPORT=1 -D LV2_EXTENDED=1 -D HAVE_GTK=1 -D HAVE_LIBS_GTKMM2EXT=1 \
21         -D HAVE_X11=1  -D LXVST_64BIT=1 -D LXVST_SUPPORT=1 -D HAVE_TAGLIB=1 -D HAVE_POSIX_MEMALIGN=1 -D HAVE_VAMPSDK=1 -D HAVE_VAMPHOSTSDK=1 -D HAVE_RUBBERBAND=1 -D ENABLE_NLS=1 \
22         -D HAVE_CURL=1 -D HAVE_LO=1 -D HAVE_LRDF=1 -D _VAMP_NO_PLUGIN_NAMESPACE=1 \
23         -I libs/ardour -I libs/pbd -I libs/lua -I gtk2_ardour -I libs/timecode -I libs/audiographer -I libs/ptformat -I libs/fst \
24         -I libs/ltc -I libs/evoral -I libs/canvas -I libs/gtkmm2ext -I libs/midi++2 -I libs/surfaces/control_protocol -I libs \
25         -I build/libs/pbd -I build/libs/ardour -I build/gtk2_ardour \
26         `pkg-config --cflags glib-2.0 glibmm-2.4 cairomm-1.0 gtkmm-2.4 libxml-2.0 lilv-0 suil-0 | sed 's/-std=c++11 //;s/-pthread //'` \
27         -X "_" -X "::" -X "sigc" -X "Atk::" -X "Gdk::" -X "Gtk::" -X "Gio::" \
28         -X "Glib::" -X "Pango::" -X "luabridge::" \
29         \
30         libs/ardour/*.cc libs/pbd/*.cc \
31         gtk2_ardour/*.cc \
32         /usr/include/cairomm-1.0/cairomm/context.h \
33         /usr/include/vamp-sdk/Plugin.h \
34 > $TMPFILE
35
36 ls -lh $TMPFILE
37
38 echo "# consolidating JSON"
39 php << EOF
40 <?php
41 \$json = file_get_contents ('$TMPFILE');
42 \$api = array ();
43 foreach (json_decode (\$json, true) as \$a) {
44         if (!isset (\$a['decl'])) { continue; }
45
46         \$a['decl'] = str_replace ('size_t', 'unsigned long', \$a['decl']);
47         \$a['decl'] = str_replace ('uint32_t', 'unsigned int', \$a['decl']);
48         \$a['decl'] = str_replace ('int32_t', 'int', \$a['decl']);
49         \$a['decl'] = str_replace ('framepos_t', 'long', \$a['decl']);
50         \$a['decl'] = str_replace ('framecnt_t', 'long', \$a['decl']);
51         \$a['decl'] = str_replace ('frameoffset_t', 'long', \$a['decl']);
52         \$a['decl'] = str_replace ('int64_t', 'long', \$a['decl']);
53         \$a['decl'] = str_replace ('uint8_t', 'unsigned char', \$a['decl']);
54         \$a['decl'] = str_replace ('pframes_t', 'unsigned int', \$a['decl']);
55         \$a['decl'] = str_replace ('uint64_t', 'unsigned long', \$a['decl']);
56         \$a['decl'] = str_replace ('const char', 'char', \$a['decl']);
57         \$a['decl'] = str_replace ('const float', 'float', \$a['decl']);
58         \$a['decl'] = str_replace ('const double', 'double', \$a['decl']);
59         \$a['decl'] = str_replace ('const long', 'long', \$a['decl']);
60         \$a['decl'] = str_replace ('const unsigned int', 'unsigned int', \$a['decl']);
61         \$a['decl'] = str_replace ('const unsigned long', 'unsigned long', \$a['decl']);
62         \$a['decl'] = str_replace (' ::Vamp::', ' Vamp::', \$a['decl']);
63         \$canon = str_replace (' *', '*', \$a['decl']);
64         \$api[\$canon] = \$a;
65 }
66 \$jout = array ();
67 foreach (\$api as \$k => \$a) {
68         \$jout[] = \$a;
69 }
70 file_put_contents('doc/ardourapi.json.gz', gzencode (json_encode (\$jout, JSON_PRETTY_PRINT)));
71 EOF
72
73 ls -l doc/ardourapi.json.gz