gtkdocize: Take a --srcdir argument
[gtk-doc.git] / gtkdocize.in
blob9164ac47c7a4c2fc02caf7fb41b04e0c191a5f0e
1 #!/bin/sh
3 progname=`echo "$0" | sed 's%^.*/%%'`
5 PROGRAM=gtkdocize
6 PACKAGE=@PACKAGE@
7 VERSION=@VERSION@
9 prefix=@prefix@
10 datarootdir=@datarootdir@
11 datadir=@datadir@
13 # options
14 copy=no
15 makefile=gtk-doc.make
16 flavour=legacy
18 # mini help
19 usage="\
20 usage: $progname [ --copy ] [ --docdir DIR ] [ --flavour {legacy|legacy-flat|no-tmpl|no-tmpl-flat} ] [ --srcdir DIR ]"
22 while test $# -gt 0; do
23 #echo >&2 "DEBUG: parsing args [$1]";
24 case "$1" in
25 --help)
26 echo "$usage"
27 exit 0 ;;
28 --version)
29 echo "$PROGRAM ($PACKAGE) $VERSION"
30 exit 0 ;;
31 --copy)
32 copy=yes
33 shift ;;
34 --docdir)
35 shift
36 docdir="$1"
37 shift ;;
38 --docdir=*)
39 docdir=`expr "X$1" : '[^=]*=\(.*\)'`
40 shift ;;
41 --flavour)
42 shift
43 flavour="$1"
44 shift ;;
45 --flavour=*)
46 flavour=`expr "X$1" : '[^=]*=\(.*\)'`
47 shift ;;
48 --srcdir)
49 shift
50 srcdir="$1"
51 shift ;;
52 --srcdir=*)
53 srcdir=`expr "X$1" : '[^=]*=\(.*\)'`
54 shift ;;
55 -*)
56 echo "$progname: unrecognised option '$1'" 1>&2
57 echo "$usage" 1>&2
58 exit 1 ;;
60 echo "$progname: too many arguments" 1>&2
61 echo "$usage" 1>&2
62 exit 1 ;;
63 esac
64 done
66 case "$flavour" in
67 legacy*)
69 legacy-flat*)
70 makefile=gtk-doc.flat.make
72 no-tmpl*)
73 makefile=gtk-doc.notmpl.make
75 no-tmpl-flat*)
76 makefile=gtk-doc.notmpl-flat.make
79 echo "$progname: invalid value for --flavour" 1>&2
80 echo "$usage" 1>&2
81 exit 1 ;;
82 esac
84 # assume working directory if srcdir is not set
85 test "$srcdir" || srcdir=.
86 test "$docdir" || docdir="$srcdir"
88 # detect configure script
89 no_configure_found=0
90 if test -f "$srcdir"/configure.ac; then
91 configure="$srcdir"/configure.ac
92 elif test -f "$srcdir"/configure.in; then
93 configure="$srcdir"/configure.in
94 else
95 no_configure_found=1
98 # check configure script for GTK_DOC_CHECK macro
99 no_gtk_doc_check_found=0
100 if test $no_configure_found -eq 0; then
101 macro=`grep '^GTK_DOC_CHECK' $configure 2>/dev/null`
102 if test $? -eq 0; then
103 # GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
104 params=`echo $macro | sed -e 's/^GTK_DOC_CHECK(\ *\(.*\))/\1/'`
105 if echo $params | grep -q '^.*\,\ *\[\{0,1\}'; then
106 extra_options=`echo $params | sed -e 's/^.*\,\ *\[\{0,1\}\([^]]*\)\]\{0,1\}\ *$/\1/'`
107 #echo >&2 "DEBUG: adding extra options [$extra_options] to [$*]"
108 set - $* $GTKDOCIZE_FLAGS $extra_options
109 else
110 set - $* $GTKDOCIZE_FLAGS
112 else
113 no_gtk_doc_check_found=1;
117 if test $no_configure_found -eq 1; then
118 echo "$progname: neither configure.ac nor configure.in exist" 1>&2
119 exit 1
121 if test $no_gtk_doc_check_found -eq 1; then
122 echo "$progname: GTK_DOC_CHECK not called in $configure" 1>&2
123 exit 1
126 # If the AC_CONFIG_MACRO_DIR() macro is used, copy gtk-doc.m4 from our
127 # prefix to that directory. This makes sure that the M4 macro used
128 # matches the the automake fragment.
129 # If AC_CONFIG_MACRO_DIR is not used, the macro won't be copied, and
130 # the correct flags must be passed to aclocal for it to find the macro.
131 m4dir="$srcdir/`cat "$configure" | grep '^AC_CONFIG_MACRO_DIR' | sed -n -e 's/AC_CONFIG_MACRO_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`"
132 if test -n "$m4dir"; then
133 rm -f $m4dir/gtk-doc.m4
134 if test "$copy" = yes; then
135 cp -f $datadir/aclocal/gtk-doc.m4 $m4dir/ ||
136 exit 1
137 else
138 ln -sf $datadir/aclocal/gtk-doc.m4 $m4dir/ ||
139 cp -f $datadir/aclocal/gtk-doc.m4 $m4dir/ ||
140 exit 1
144 rm -f $docdir/gtk-doc.make
145 if test "$copy" = yes; then
146 cp -f $datadir/gtk-doc/data/$makefile $docdir/gtk-doc.make ||
147 exit 1
148 else
149 ln -sf $datadir/gtk-doc/data/$makefile $docdir/gtk-doc.make ||
150 cp -f $datadir/gtk-doc/data/$makefile $docdir/gtk-doc.make ||
151 exit 1