]> git.sesse.net Git - vlc/blob - toolbox
84ef0c0aa8606053d06f65bd15f3781de79dd4b4
[vlc] / toolbox
1 #! /bin/sh
2
3 ##  toolbox for the VLC media player
4 ##  $Id: toolbox,v 1.42 2003/07/16 15:52:04 sam Exp $
5 ##
6 ##  Authors: Samuel Hocevar <sam@zoy.org>
7
8 ###
9 ###  Get a sane environment, just in case
10 ###
11 LANG=C
12 export LANG
13 CYGWIN=binmode
14 export CYGWIN
15
16 ##
17 ##  Give help
18 ##
19 help()
20 {
21   cat << EOF
22 recognized flags are:
23   --update-vc             update Microsoft Visual Studio files
24   --update-po             update translation files
25   --update-includes       generate various include files
26   --update-glade          generate and fix Glade code
27   --update-glade2         generate and fix Glade 2 code
28   --update-flexml         generate and fix flexml and flex code
29   --changelog             update the CVS changelog
30   --distclean             "make distclean" on steroids
31   --make-woody <dir>      change distdir <dir> to a woody distdir
32 EOF
33   exit 1
34 }
35
36 ##
37 ##  Extract stuff from Makefile.am
38 ##
39 getfiles()
40 {
41   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" | \
42     tr '\\ ' '\n\n' | \
43     sed -ne 's/[^-$()_a-zA-Z0-9][^-$()_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p' | \
44     sed -e "s,^,${srcdir}/,"
45 }
46
47 ###
48 ###  argument check
49 ###
50
51 if test "$1" = ""
52 then
53   help
54 fi
55
56 case "$1" in
57   --changelog|--update-changelog)
58     action=changelog
59     ;;
60   --update-vc)
61     action=vc
62     ;;
63   --update-po)
64     action=po
65     ;;
66   --update-includes)
67     action=includes
68     ;;
69   --update-flexml)
70     action=flexml
71     ;;
72   --update-glade|--fix-glade)
73     action=glade
74     ;;
75   --update-glade2|--update-glade-2|--fix-glade2)
76     action=glade2
77     ;;
78   --distclean)
79     action=distclean
80     ;;
81   --make-woody)
82     action=woody
83     ;;
84   --add-include)
85     action=include
86     ;;
87   --help)
88     help
89     ;;
90   *)
91     echo "$0: unknown option $1"
92     help
93     ;;
94 esac
95 shift
96
97 ##
98 ##  Add includes to help doxygen
99 ##
100 if test "${action}" = "include"
101 then
102   case "$1" in
103     */vlc_common.h|*/include/vlc/*);;
104     */include/*.h) echo "#include <vlc_common.h>" ;;
105   esac
106   cat $1
107   exit 0
108 fi
109
110 ##
111 ##  Update the CVS changelog
112 ##
113 if test "${action}" = "changelog"
114 then
115   set -e
116   set -x
117   cvs2cl --help >/dev/null 2>&1 || exit 1
118   rm -f ChangeLog ChangeLog.tmp
119   cvs2cl --utc --hide-filenames --no-wrap -w --stdout -g -z9 | \
120     sed -e 's/^[^0-9]/ /' -e 's/^  *$//' | \
121     uniq > ChangeLog.tmp
122   YEAR=`sed -e 's/\(....\)-..-.*/\1/;q' ChangeLog.tmp`
123   LASTYEAR="$((${YEAR} - 1))"
124   sed -ne "/^${YEAR}-..-../,/^${LASTYEAR}-..-../{/^${LASTYEAR}-..-../d;p}" \
125     < ChangeLog.tmp > Changelog
126   rm -f ChangeLog.tmp
127   exit 0
128   # To generate changelog for the year 2001:
129   # sed -ne '/^2001/,/^2000/{/^2000/d;p}'
130 fi
131
132 ##
133 ##  Update the MSVC project files
134 ##
135 if test "${action}" = "vc"
136 then
137   echo "generating Visual Studio files..."
138
139   if test -z "${srcdir}"; then
140     srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
141   fi
142
143   #  The evil ^M. printf '\r' does not work in Cygwin.
144   M='\r'
145
146   #  Variables we get from configure.ac
147   LIBVLC_VERSION=`sed -ne '/AC_INIT/s/.*,\(.*\))/\1/p' < configure.ac`
148   LIBVLC_CODENAME=`sed -ne '/CODENAME=/s/.*"\(.*\)"/\1/p' < configure.ac`
149   LIBVLC_SYMBOL=`echo $LIBVLC_VERSION | sed -e 'y/.-/__/'`
150
151   #  Sources that get built under Win32 - FIXME: anyone wanna deuglify this? :)
152   LIBVLC_SOURCES=`getfiles SOURCES_libvlc_common; getfiles SOURCES_libvlc_win32; getfiles SOURCES_libvlc_dirent; getfiles SOURCES_libvlc_getopt; getfiles SOURCES_libvlc_libc`
153
154   LIBVLC_HEADERS=`getfiles HEADERS_include; getfiles HEADERS_include_built`
155
156   LIBVLC_PKG_HEADERS=`getfiles dist_pkginclude_HEADERS`
157
158   # Clean up
159   rm -f evc/*.vcp msvc/*.dsp
160
161   # config files
162   for target in evc/config.h msvc/config.h
163   do
164     echo "${target}"
165     rm -f ${target}
166     sed -e "s/@CODENAME@/${LIBVLC_CODENAME}/" \
167         -e "s/@VERSION@/${LIBVLC_VERSION}/" \
168         -e "s/@SYMBOL@/${LIBVLC_SYMBOL}/" < ${target}.in > ${target}
169   done
170
171   # libvlc files
172   for target in evc/libvlc.vcp msvc/libvlc.dsp
173   do
174     echo "${target}"
175     #  Top of the project file
176     perl -pe 'if(/§SOURCES§/){last;}' < ${target}.in > ${target}
177     #  The source files
178     for file in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep -v "/.*/"`
179     do
180       cat >> ${target} << EOF
181 # Begin Source File${M}
182 SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
183 # ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
184 # End Source File${M}
185 EOF
186     done
187     for subdir in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep "/.*/" | cut -f2 -d/ | sort | uniq`
188     do
189       cat >> ${target} << EOF
190 # Begin Group "${subdir}"${M}
191 EOF
192       for file in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep "/${subdir}/"`
193       do
194       if test "${target}" = "evc/libvlc.vcp"
195       then
196         cat >> ${target} << EOF
197 # Begin Source File${M}
198 SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
199 # ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
200 !IF "\$(CFG)" == "libvlc - Win32 (WCE MIPS) Release"${M}
201 # PROP Output_Dir "MIPSRel\\${subdir}"${M}
202 # PROP Intermediate_Dir "MIPSRel\\${subdir}"${M}
203 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE MIPS) Debug"${M}
204 # PROP Output_Dir "MIPSDbg\\${subdir}"${M}
205 # PROP Intermediate_Dir "MIPSDbg\\${subdir}"${M}
206 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH4) Release"${M}
207 # PROP Output_Dir "SH4Rel\\${subdir}"${M}
208 # PROP Intermediate_Dir "SH4Rel\\${subdir}"${M}
209 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH4) Debug"${M}
210 # PROP Output_Dir "SH4Dbg\\${subdir}"${M}
211 # PROP Intermediate_Dir "SH4Dbg\\${subdir}"${M}
212 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH3) Release"${M}
213 # PROP Output_Dir "SH3Rel\\${subdir}"${M}
214 # PROP Intermediate_Dir "SH3Rel\\${subdir}"${M}
215 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH3) Debug"${M}
216 # PROP Output_Dir "SH3Dbg\\${subdir}"${M}
217 # PROP Intermediate_Dir "SH3Dbg\\${subdir}"${M}
218 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE ARM) Release"${M}
219 # PROP Output_Dir "ARMRel\\${subdir}"${M}
220 # PROP Intermediate_Dir "ARMRel\\${subdir}"${M}
221 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE ARM) Debug"${M}
222 # PROP Output_Dir "ARMDbg\\${subdir}"${M}
223 # PROP Intermediate_Dir "ARMDbg\\${subdir}"${M}
224 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE x86em) Release"${M}
225 # PROP Output_Dir "X86EMRel\\${subdir}"${M}
226 # PROP Intermediate_Dir "X86EMRel\\${subdir}"${M}
227 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE x86em) Debug"${M}
228 # PROP Output_Dir "X86EMDbg\\${subdir}"${M}
229 # PROP Intermediate_Dir "X86EMDbg\\${subdir}"${M}
230 !ENDIF${M}
231 # End Source File${M}
232 EOF
233         else
234           cat >> ${target} << EOF
235 # Begin Source File${M}
236 SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
237 # ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
238 !IF "\$(CFG)" == "libvlc - Win32 Release"${M}
239 # PROP Output_Dir "Release\\${subdir}"${M}
240 # PROP Intermediate_Dir "Release\\${subdir}"${M}
241 !ELSEIF "\$(CFG)" == "libvlc - Win32 Debug"${M}
242 # PROP Output_Dir "Debug\\${subdir}"${M}
243 # PROP Intermediate_Dir "Debug\\${subdir}"${M}
244 !ENDIF${M}
245 # End Source File${M}
246 EOF
247         fi
248       done
249       cat >> ${target} << EOF
250 # End Group${M}
251 EOF
252     done
253     #  The headers
254     perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){if(/§HEADERS§/){last;}print $_}' < ${target}.in >> ${target}
255     for file in ${LIBVLC_HEADERS}
256     do
257       cat >> ${target} << EOF
258 # Begin Source File${M}
259 SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
260 # End Source File${M}
261 EOF
262     done
263     cat >> ${target} << EOF
264 # Begin Group "vlc"${M}
265 EOF
266     for file in ${LIBVLC_PKG_HEADERS}
267     do
268       cat >> ${target} << EOF
269 # Begin Source File${M}
270 SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
271 # End Source File${M}
272 EOF
273     done
274     cat >> ${target} << EOF
275 # End Group${M}
276 EOF
277     perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
278   done
279
280   # plugins files
281   for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' ${srcdir}/configure.ac`
282   do
283     mf="${srcdir}/modules/${dir}/Modules.am"
284     for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
285     do
286       # this is an attempt at getting a list of plugin sources... we take the
287       # production and remove everything that does not contain "module", which
288       # means you miss $(NULL), but other variables too.
289       allfiles=`grep -v '[^-_a-zA-Z0-9]*#' ${mf} | awk 'BEGIN{a=0}{if(!a&&$0~/^SOURCES_'${mod}'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if($0~/^[a-zA-Z]/){exit;}print $0}}' | tr '\\ ' '\n\n' | grep '\.'`
290       hfiles=`for i in ${allfiles} ; do echo "$i" ; done | grep '\.h$'`
291       cfiles=`for i in ${allfiles} ; do echo "$i" ; done | grep -v '\.h$'`
292       for msdir in evc msvc
293       do
294         test "${msdir}" = "evc" && suf="vcp" || suf="dsp"
295         source="${msdir}/plugins.${suf}.in"
296         target="${msdir}/plugin_${mod}.${suf}"
297         echo "${target}"
298         perl -pe 'if(/§SOURCES§/){last;} s/§PLUGIN§/'${mod}'/g' < ${source} > ${target}
299         for cfile in ${cfiles}
300         do
301           cat >> ${target} << EOF
302 # Begin Source File${M}
303 SOURCE="..\\modules\\`echo ${dir}/${cfile} | sed 's,/,\\\\,g'`"${M}
304 # ADD CPP /D "__VLC__" /D "__PLUGIN__"  /D "MODULE_NAME=${mod}" /D "MODULE_NAME_IS_${mod}" ${M}
305 # End Source File${M}
306 EOF
307         done
308         # sed is really nicer for this... unfortunately it's broken under cygwin
309         # sed -ne '1,/§SOURCES§/d; /§HEADERS§/,$d; p' < ${source} >> ${target}
310         perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){if(/§HEADERS§/){last;}print $_}' < ${source} >> ${target}
311         for hfile in ${hfiles}
312         do
313           cat >> ${target} << EOF
314 # Begin Source File${M}
315 SOURCE="..\\modules\\`echo ${dir}/${hfile} | sed 's,/,\\\\,g'`"${M}
316 # End Source File${M}
317 EOF
318         done
319         # sed -ne '1,/§HEADERS§/d; p' < ${source} >> ${target}
320         perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${source} >> ${target}
321       done
322     done
323   done
324
325   # vlc files
326   for target in evc/vlc.vcp msvc/vlc.dsp
327   do
328     echo "${target}"
329     #  Top of the project file
330     perl -pe 'if(/§SOURCES§/){last;}' < ${target}.in > ${target}
331     #  The source files
332     if test "${target}" = "evc/vlc.vcp"
333     then
334       cat >> ${target} << EOF
335 # Begin Source File${M}
336 SOURCE="..\\evc\\vlc.c"${M}
337 # End Source File${M}
338 EOF
339     else
340       cat >> ${target} << EOF
341 # Begin Source File${M}
342 SOURCE="..\\src\\vlc.c"${M}
343 # End Source File${M}
344 EOF
345     fi
346     #  Bottom of the project file - handles resource files too
347     perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
348   done
349
350   echo "done."
351   exit 0
352 fi
353
354 ##
355 ##  Update the potfiles because no one ever does it
356 ##
357 if test "${action}" = "po"
358 then
359   # create a fake file containing win32 strings
360   rm -f modules/gui/win32/strings.cpp
361   #printf "/* Automatically generated by 'toolbox --update-po', please don't compile */\n" > modules/gui/win32/strings.cpp
362   #find modules/gui/win32 -name '*.dfm' | while read file
363   #do
364   #  printf "\n/*\n * from $file:\n */\n\n" >> modules/gui/win32/strings.cpp
365   #  perl -ne 'chop; chop; if( / (Caption|Text|Hint) / || $buffer =~ /[+=] *$/ ) { $buffer =~ s/\+ *$//; $buffer .= $_; } if( $buffer =~ /'"'"' *$/) { $buffer =~ s/'"'"'/"/g; $buffer =~ s/\\/\\\\/g; $buffer =~ s/=/= _(/; print $buffer." );\n"; $buffer = "";}' < $file | grep -v '"-*"' | grep -v '"http://' | grep -v '"vlcs"' >> modules/gui/win32/strings.cpp || exit 1
366   #done
367   # find out the source files
368   rm -f po/POTFILES.in
369   echo "# automatically created by toolbox --update-po" > po/POTFILES.in
370   echo "" >> po/POTFILES.in
371   echo "# main sources" >> po/POTFILES.in
372   find include src -name '*.[chm]' -o -name '*.[ch]pp' \
373     | grep -v '\(vlc_symbols\|misc/modules_\)' \
374     | sort >> po/POTFILES.in
375   echo "" >> po/POTFILES.in
376   echo "# modules" >> po/POTFILES.in
377   find modules -name '*.[chm]' -o -name '*.[ch]pp' \
378     | grep -v '\(gui/win32/\)' \
379     | sort >> po/POTFILES.in
380   # clean old potfiles
381   cd po
382   rm -f vlc.pot
383   # update
384   make vlc.pot || exit 1
385   make update-po || exit 1
386   cd ..
387
388   exit 0
389 fi
390
391 ##
392 ##  Create include files
393 ##
394 if test "${action}" = "includes"
395 then
396   #set -x
397
398   if test -z "${srcdir}"; then
399     srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
400   fi
401   LIBVLC_HEADERS=`getfiles HEADERS_include`
402   BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' vlc-config`
403
404   file="${srcdir}/include/vlc_symbols.h"
405
406   rm -f ${file}.in
407   echo '/* DO NOT EDIT THIS FILE! See Makefile.am */' >> ${file}.in
408   echo 'struct module_symbols_t {' >> ${file}.in
409   cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/    \1 (* \2_inner) \3;/' >> ${file}.in
410   echo '};' >> ${file}.in
411   echo '#ifdef __PLUGIN__' >> ${file}.in
412   cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/#   define \2 p_symbols->\2_inner/' >> ${file}.in
413   echo '#endif /* __PLUGIN__ */' >> ${file}.in
414   if diff >/dev/null 2>&1 ${file} ${file}.in
415   then
416     rm -f ${file}.in
417   else
418     echo "creating new ${file}"
419     mv -f ${file}.in ${file}
420   fi
421
422   file="${srcdir}/src/misc/modules_plugin.h"
423
424   rm -f ${file}.tmp && cp ${file}.in ${file}.tmp
425   sed -e 's#.*\$[I][d]:.*# * Automatically generated from '${file}'.in by bootstrap#' < ${file}.in > ${file}.tmp
426   echo '#define STORE_SYMBOLS( p_symbols ) \' >> ${file}.tmp
427   cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/    (p_symbols)->\2_inner = \2; \\/' >> ${file}.tmp
428   echo '' >> ${file}.tmp
429   if diff >/dev/null 2>&1 ${file} ${file}.tmp
430   then
431     rm -f ${file}.tmp
432   else
433     echo "creating new ${file}"
434     mv -f ${file}.tmp ${file}
435   fi
436
437   file="${srcdir}/src/misc/modules_builtin.h"
438
439   rm -f ${file}.tmp && cp ${file}.in ${file}.tmp
440   if test -n "${BUILTINS}"
441   then
442     for i in `echo ${BUILTINS}`
443     do
444       echo "int vlc_entry__`echo $i | sed -e 'y@/@_@' -e 's@\..*@@'`( module_t* );" >>${file}.tmp
445     done
446     echo "" >> ${file}.tmp
447   fi
448   echo "#define ALLOCATE_ALL_BUILTINS() \\" >> ${file}.tmp
449   echo "    do \\" >> ${file}.tmp
450   echo "    { \\" >> ${file}.tmp
451   if test -n "${BUILTINS}"
452   then
453     for i in `echo ${BUILTINS}`
454     do
455       echo "        ALLOCATE_BUILTIN(`echo $i | sed -e 'y@/@_@' -e 's@\..*@@'`); \\" >> ${file}.tmp
456     done
457   fi
458   echo "    } while( 0 );" >> ${file}.tmp
459   echo "" >> ${file}.tmp
460   if diff >/dev/null 2>&1 ${file} ${file}.tmp
461   then
462     rm -f ${file}.tmp
463   else
464     echo "creating new ${file}"
465     mv -f ${file}.tmp ${file}
466   fi
467
468   exit 0
469 fi
470
471 ##
472 ##  Fix glade-generated files
473 ##
474 if test "${action}" = "glade"
475 then
476   for file in modules/gui/gtk/gnome.glade modules/gui/gtk/gtk.glade modules/gui/familiar/familiar.glade
477   do
478     echo "generating code from $file"
479     glade -w $file || exit 1
480   done
481
482   for file in modules/gui/gtk/gnome_interface.c modules/gui/gtk/gtk_interface.c modules/gui/familiar/interface.c
483   do
484     echo "fixing $file"
485     if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
486     then
487       rm -f $file.$$.bak
488       cat > $file.$$.bak << EOF
489 /* This file was created automatically by glade and fixed by bootstrap */
490
491 #include <vlc/vlc.h>
492 EOF
493       sed -e 1,7d \
494           -e 's#_(\(".:..:.."\))#\1#' \
495           -e 's#_(\("[a-z0-9]*://[^"]*"\))#\1#' \
496           -e 's#_("---")#"---"#' \
497           -e 's#_("--")#"--"#' \
498           -e 's#_("/dev/dvd")#"/dev/dvd"#' \
499           -e 's#_(\("./."\))#\1#' \
500           < $file >> $file.$$.bak
501       mv -f $file.$$.bak $file
502     fi
503   done
504
505   for file in modules/gui/gtk/gtk_support.h modules/gui/familiar/support.h
506   do
507     echo "fixing $file"
508     if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
509     then
510       rm -f $file.$$.bak
511       sed -e 's/DO NOT EDIT.*/Created by glade, fixed by bootstrap/' \
512           -e 's,<config.h>,<vlc/vlc.h>,' \
513           -e 's,#if.*ENABLE_NLS.*,#if 0 /* Disabled by bootstrap */,' \
514           -e 's,#else,/* & */,' \
515           < $file > $file.$$.bak
516       mv -f $file.$$.bak $file
517     fi
518   done
519
520   exit 0
521 fi
522
523 ##
524 ##  Fix glade2-generated files
525 ##
526 if test "${action}" = "glade2"
527 then
528   for file in modules/gui/gtk2/gnome2.glade modules/gui/gtk2/gtk2.glade
529   do
530     echo "generating code from $file"
531     glade-2 -w $file || exit 1
532   done
533
534   exit 0
535 fi
536
537 ##
538 ##  Fix flexml-generated files
539 ##
540 if test "${action}" = "flexml"
541 then
542   cd modules/gui/skins/parser
543   flexml -SH -a skin.act skin.dtd
544   # comment the dummy main function
545   file=skin.c
546   sed 's@int main@//int main@' < $file > $file.$$.bak
547   mv -f $file.$$.bak $file
548   flex -oflex.c -BLs skin.l
549 fi
550
551 ##
552 ##  Make distclean
553 ##
554 if test "${action}" = "distclean"
555 then
556   set -x
557   # a naive sanity check to make sure we are in a VLC tree
558   test -f vlc.spec.mdk -a -f debian/rules || exit 1
559   # let's rock!
560   find . -type f '(' -name '*.[oa]' -o -name '*.so' -o -name '*.sl' -o -name '*.dylib' -o -name '*.dll' -o -name .dirstamp -o -name Makefile.in -o -name 'stamp-h*' -o -name '*~' -o -name '*.bak' -o -name '*.moc.cpp' ')' -exec rm -f '{}' ';'
561   (cd autotools && find . -name '[a-z]*' -exec rm -f '{}' ';')
562   (cd debian && find . -type d -name '[a-z]*' -maxdepth 1 -exec rm -Rf '{}' ';')
563   find msvc -type f -name '*.dsp' -exec rm -f '{}' ';'
564   find evc -type f -name '*.vcp' -exec rm -f '{}' ';'
565   #find . -type d -name '.deps' -exec rm -Rf '{}' ';'
566   # there's some more cruft all around
567   rm -f config.h config.log config.status
568   rm -f vlc vlc-config Makefile Modules.am
569   rm -Rf autom4te.cache
570   rm -f mozilla/vlcintf.h mozilla/vlcintf.xpt
571   # FIXME: a lot of Makefiles are still there
572 fi
573
574 ##
575 ##  Build a woody-friendly package
576 ##
577 if test "${action}" = "woody"
578 then
579   set -ex
580   test -d "$1"
581
582   # changelog: replace (1.2.3-4) with (1.2.3-0woody.4)
583   sed -e 's/^vlc (\([^)]*\)-\([^-)]*\))/vlc-woody (\1-0woody.\2)/' \
584       -e 's/ unstable; / stable; /' \
585       < "$1/debian/changelog" > "$1/debian/changelog.woody"
586   mv "$1/debian/changelog.woody" "$1/debian/changelog"
587
588   # control: replace liba52-*-dev with a52dec-dev (>=0.7.3)
589   #                  libdv*-dev with libdv-dev
590   #                  kdelibs4-dev with kdelibs-dev
591   #                  libqt3-mt-dev libqt3-compat-headers with libqt-dev
592   #                  libarts1-dev with libarts-dev
593   #                  libdvdread3-dev with libdvdread2-dev
594   #                  libdvdplay0-dev (>=1.0.1-2) with libdvdplay0-dev
595   #          remove libwxgtk2.4-dev
596   #                 libflac-dev
597   #                 libidl0 (workaround for mozilla-dev's bad deps)
598   #                 libglib2.0-0 (workaround for mozilla-dev's bad deps)
599   #                 libmatroska-dev
600   #          change Source: vlc with Source: vlc-woody
601   #                 Section: gnome with Section: graphics
602   #                 Section: kde with Section: kde
603   #                 Section: libdevel with Section: devel
604   sed -e 's/liba52-[^-]*-dev/a52dec-dev (>=0.7.3)/' \
605       -e 's/libdv[0-9]*-dev/libdv-dev/' \
606       -e 's/kdelibs[0-9]*-dev/kdelibs-dev/' \
607       -e 's/libqt[0-9]*-mt-dev/libqt-dev/' \
608       -e 's/, libqt[0-9]*-compat-headers[^,]*//' \
609       -e 's/libarts[0-9]*-dev/libarts-dev/' \
610       -e 's/libdvdread[0-9]*-dev/libdvdread2-dev/' \
611       -e 's/, libdvdplay0-dev[^,]*/, libdvdplay0-dev/' \
612       -e 's/, libwx[^,]*//' \
613       -e '/Package: wxvlc/,/^ *$/d' \
614       -e 's/, libflac-dev[^,]*//' \
615       -e 's/, libidl0[^,]*//' \
616       -e 's/, libglib2.0-0[^,]*//' \
617       -e 's/, libmatroska-dev[^,]*//' \
618       -e 's/Source: vlc/Source: vlc-woody/' \
619       -e 's/Section: gnome/Section: graphics/' \
620       -e 's/Section: kde/Section: graphics/' \
621       -e 's/Section: libdevel/Section: devel/' \
622       < "$1/debian/control" > "$1/debian/control.woody"
623   mv "$1/debian/control.woody" "$1/debian/control"
624
625   # rules: remove wxwindows and skins stuff
626   #        remove flac support
627   #        remove matroska support
628   sed -e '/# Package: wxvlc/,/^ *$/d' \
629       -e 's,--enable-wxwindows,--disable-wxwindows,' \
630       -e 's,--enable-skins,--disable-skins,' \
631       -e 's,--enable-flac,--disable-flac,' \
632       -e 's,--enable-mkv,--disable-mkv,' \
633       < "$1/debian/rules" > "$1/debian/rules.woody"
634   mv "$1/debian/rules.woody" "$1/debian/rules"
635   chmod 0755 "$1/debian/rules"
636 fi
637