Decomp: vmsplice support
[vlc.git] / toolbox
1 #! /bin/sh
2
3
4 ##  toolbox for the VLC media player
5 ##  $Id$
6 ##
7 ##  Copyright (C) 2002-2006  the VideoLAN team
8 ##
9 ##  Authors: Samuel Hocevar <sam@zoy.org>
10 ##           RĂ©mi Denis-Courmont <rem # videolan.org>
11
12 ###
13 ###  Get a sane environment, just in case
14 ###
15 LC_ALL=C
16 export LC_ALL
17 LANG=C
18 export LANG
19 CYGWIN=binmode
20 export CYGWIN
21
22 ##
23 ##  Give help
24 ##
25 help()
26 {
27   cat << EOF
28 recognized flags are:
29   --update-po             update translation files
30   --update-includes       generate various include files
31   --update-glade2         generate and fix Glade 2 code
32   --update-flexml         generate and fix flexml and flex code
33   --distclean             "make distclean" on steroids
34   --dist-contrib          add the contrib dir to MAKE_DIST
35 EOF
36   exit 1
37 }
38
39 ##
40 ##  Extract stuff from Makefile.am
41 ##
42 getfiles()
43 {
44   awk 'BEGIN{a=0}{if(!a&&$0~/^'"$1"'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if($0~/^[a-zA-Z]/){exit;}print $0}}' < "${srcdir}/Makefile.am" | \
45     tr '\\ ' '\n\n' | \
46     sed -ne 's/[^-$()_a-zA-Z0-9][^-$()_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p' | \
47     sed -e "s,^,${srcdir}/,"
48 }
49
50 ###
51 ###  argument check
52 ###
53
54 if test "$1" = ""
55 then
56   help
57 fi
58
59 case "$1" in
60   --changelog|--update-changelog)
61     action=changelog
62     ;;
63   --update-po)
64     action=po
65     ;;
66   --update-includes)
67     action=includes
68     ;;
69   --update-flexml)
70     action=flexml
71     ;;
72   --update-glade2|--update-glade-2|--fix-glade2)
73     action=glade2
74     ;;
75   --distclean)
76     action=distclean
77     ;;
78   --add-include)
79     action=include
80     ;;
81   --dist-contrib)
82     action=contrib
83     ;;
84   --help)
85     help
86     ;;
87   *)
88     echo "$0: unknown option $1"
89     help
90     ;;
91 esac
92 shift
93
94 ##
95 ##  Add includes to help doxygen
96 ##
97 if test "${action}" = "include"
98 then
99   case "$1" in
100     */vlc_common.h|*/include/vlc/*);;
101     */include/*.h) echo "#include <vlc_common.h>" ;;
102   esac
103   cat $1
104   exit 0
105 fi
106
107 ##
108 ##  Update the CVS changelog
109 ##
110 if test "${action}" = "changelog"
111 then
112   YEAR="`date +%Y`"
113   echo "toolbox --changelog no longer required. use this instead:"
114   echo " LANG=C svn log -v -r '{$YEAR-12-31}:{$YEAR-01-01}' > ChangeLog"
115   exit 0
116 fi
117
118 ##
119 ##  Update the potfiles because no one ever does it
120 ##
121 if test "${action}" = "po"
122 then
123   # find out the source files
124   echo "WARNING: you should run \"make update-po\" instead!" >&2
125   make update-po
126   exit $?
127 fi
128
129 ##
130 ##  Create include files
131 ##
132 if test "${action}" = "includes"
133 then
134   #set -x
135
136   if test -z "${srcdir}"; then
137     srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
138   fi
139   if test -z "${builddir}"; then
140     builddir="`sed -ne 's/^top_builddir *= *//p' < Makefile`"
141   fi
142   BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' ${builddir}/vlc-config`
143
144   file="${builddir}/src/modules/builtin.h"
145
146   rm -f "${file}.tmp"
147   mkdir -p -- "${builddir}/src/modules"
148   cat "${srcdir}/src/modules/builtin.h.in" > "${file}.tmp" || exit 1
149   if test -n "${BUILTINS}"
150   then
151     for i in `echo ${BUILTINS}`
152     do
153       echo "int vlc_entry__`echo $i | sed -e 'y@/@_@' -e 's@\..*@@'`( module_t* );" >> "${file}.tmp"
154     done
155     echo "" >> "${file}.tmp"
156   fi
157   echo "#define ALLOCATE_ALL_BUILTINS() \\" >> ${file}.tmp
158   echo "    do \\" >> "${file}.tmp"
159   echo "    { \\" >> "${file}.tmp"
160   if test -n "${BUILTINS}"
161   then
162     for i in `echo ${BUILTINS}`
163     do
164       echo "        ALLOCATE_BUILTIN(`echo $i | sed -e 'y@/@_@' -e 's@\..*@@'`); \\" >> "${file}.tmp"
165     done
166   fi
167   echo "    } while( 0 );" >> "${file}.tmp"
168   echo "" >> "${file}.tmp" || exit 1
169   if diff >/dev/null 2>&1 "${file}" "${file}.tmp"
170   then
171     rm -f "${file}.tmp"
172   else
173     echo "creating new ${file}"
174     mv -f "${file}.tmp" "${file}"
175   fi
176
177   exit 0
178 fi
179
180 ##
181 ##  Fix glade2-generated files
182 ##
183 if test "${action}" = "glade2"
184 then
185   file="modules/gui/pda/pda.glade"
186   echo "generating code from $file"
187   glade-2 -w "$file" || exit 1
188
189   file="modules/gui/pda/pda_interface.c"
190   echo "fixing $file"
191   if grep "DO NOT EDIT THIS FILE" "$file" >/dev/null 2>&1
192   then
193     rm -f -- "$file.$$.bak"
194     cat > "$file.$$.bak" << EOF
195 /* This file was created automatically by glade2 and fixed by bootstrap */
196
197 #ifdef HAVE_CONFIG_H
198 # include "config.h"
199 #endif
200
201 #include <vlc/vlc.h>
202 EOF
203     sed -e 1,7d \
204         -e 's#_(\(".:..:.."\))#\1#' \
205         -e 's#_(\("[a-z0-9]*://[^"]*"\))#\1#' \
206         -e 's#_("---")#"---"#' \
207         -e 's#_("--")#"--"#' \
208         -e 's#_(\("/dev/[^"]*"\))#\1#' \
209         -e 's#_(\("./."\))#\1#' \
210         < "$file" >> "$file.$$.bak"
211     mv -f "$file.$$.bak" "$file"
212   fi
213
214   exit 0
215 fi
216
217 ##
218 ##  Make distclean
219 ##
220 if test "${action}" = "distclean"
221 then
222   set -x
223   # a naive sanity check to make sure we are in a VLC tree
224   test -f vlc-config.in.in -a -f src/libvlc.c || exit 1
225   # let's rock!
226   find . -false -path './extras/contrib/*' -type f '(' -name '*.[oa]' -o -name '*.l[oa]' -o -name '*.so' -o -name '*.sl' -o -name '*.dylib' -o -name '*.dll' -o -name .dirstamp -o '(' '(' ! -path '\./doc/developer/Makefile\.in' ')' -a -name Makefile.in ')' -o -name 'stamp-h*' -o -name '*~' -o -name '*.bak' -o -name '*.moc.cpp' ')' -exec rm -f '{}' ';'
227   (cd autotools && find . -maxdepth 1 -name '[a-z]*' -not -name 'config.rpath' -exec rm -f '{}' ';')
228   find . -type d -name '.deps' -exec rm -Rf '{}' ';'
229   find . -type d -name '.libs' -exec rm -Rf '{}' ';'
230   # there's some more cruft all around
231   rm -f config.h config.log config.status
232   rm -f vlc vlc-config Makefile Modules.am
233   rm -Rf autom4te.cache
234   echo "\`toolbox --distclean\' is known to be broken."
235   echo "Don't complain if it does not work, or better yet, don't use it."
236   echo "You were warned."
237   # FIXME: a lot of Makefiles are still there
238 fi
239
240 ##
241 ## Add the extras/contrib dir to the distribution
242 ##
243 if test "${action}" = "contrib"
244 then
245   set -x
246   if test ! -d "${distdir}/extras"
247   then
248     mkdir "${distdir}/extras"
249   fi
250   if test ! -d "${distdir}/extras/contrib"
251   then
252     mkdir "${distdir}/extras/contrib"
253   fi
254   cp "${srcdir}/extras/contrib/Makefile" "${distdir}/extras/contrib/Makefile"
255   cp "${srcdir}/extras/contrib/README" "${distdir}/extras/contrib/README"
256   cp "${srcdir}/extras/contrib/bootstrap" "${distdir}/extras/contrib/bootstrap"
257   cp "${srcdir}/extras/contrib/change_prefix.sh" "${distdir}/extras/contrib/change_prefix.sh"
258   if test ! -d "${distdir}/extras/contrib/src"
259   then
260     mkdir "${distdir}/extras/contrib/src"
261   fi
262   cp "${srcdir}/extras/contrib/src/Makefile" "${distdir}/extras/contrib/src/Makefile"
263   cp "${srcdir}/extras/contrib/src/packages.mak" "${distdir}/extras/contrib/src/packages.mak"
264   if test ! -d "${distdir}/extras/contrib/src/Patches"
265   then
266     mkdir "${distdir}/extras/contrib/src/Patches"
267   fi
268   cp ${srcdir}/extras/contrib/src/Patches/* "${distdir}/extras/contrib/src/Patches/"
269   if test ! -d "${distdir}/extras/contrib/src/Distributions"
270   then
271     mkdir "${distdir}/extras/contrib/src/Distributions"
272   fi
273   cp ${srcdir}/extras/contrib/src/Distributions/* "${distdir}/extras/contrib/src/Distributions/"
274 fi
275