toolbox 20.9 KB
Newer Older
1 2
#! /bin/sh

3
##  toolbox for the VLC media player
4
##  $Id: toolbox,v 1.51 2003/12/04 12:33:42 gbazin Exp $
5 6 7 8 9 10
##
##  Authors: Samuel Hocevar <sam@zoy.org>

###
###  Get a sane environment, just in case
###
11 12
LC_ALL=C
export LC_ALL
13 14 15 16 17 18 19 20 21 22 23 24
LANG=C
export LANG
CYGWIN=binmode
export CYGWIN

##
##  Give help
##
help()
{
  cat << EOF
recognized flags are:
Sam Hocevar's avatar
Sam Hocevar committed
25 26 27 28 29 30
  --update-vc             update Microsoft Visual Studio files
  --update-po             update translation files
  --update-includes       generate various include files
  --update-glade          generate and fix Glade code
  --update-glade2         generate and fix Glade 2 code
  --update-flexml         generate and fix flexml and flex code
Sam Hocevar's avatar
Sam Hocevar committed
31
  --changelog             update the CVS changelog
Sam Hocevar's avatar
Sam Hocevar committed
32
  --distclean             "make distclean" on steroids
33
  --make-woody <dir>      change distdir <dir> to a woody distdir
34 35 36 37
EOF
  exit 1
}

38 39 40 41 42
##
##  Extract stuff from Makefile.am
##
getfiles()
{
43
  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" | \
44
    tr '\\ ' '\n\n' | \
Sam Hocevar's avatar
Sam Hocevar committed
45 46
    sed -ne 's/[^-$()_a-zA-Z0-9][^-$()_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p' | \
    sed -e "s,^,${srcdir}/,"
47 48
}

49 50 51
###
###  argument check
###
52 53

if test "$1" = ""
54 55 56 57
then
  help
fi

58
case "$1" in
Sam Hocevar's avatar
Sam Hocevar committed
59
  --changelog|--update-changelog)
60
    action=changelog
61 62
    ;;
  --update-vc)
63
    action=vc
64 65
    ;;
  --update-po)
66
    action=po
67 68
    ;;
  --update-includes)
69
    action=includes
70
    ;;
71 72 73
  --update-flexml)
    action=flexml
    ;;
74
  --update-glade|--fix-glade)
75
    action=glade
76
    ;;
77 78 79
  --update-glade2|--update-glade-2|--fix-glade2)
    action=glade2
    ;;
80 81 82
  --distclean)
    action=distclean
    ;;
83 84 85
  --make-woody)
    action=woody
    ;;
86 87 88
  --add-include)
    action=include
    ;;
89 90 91 92 93 94 95 96 97 98
  --help)
    help
    ;;
  *)
    echo "$0: unknown option $1"
    help
    ;;
esac
shift

99 100 101 102 103 104 105 106 107 108 109 110 111
##
##  Add includes to help doxygen
##
if test "${action}" = "include"
then
  case "$1" in
    */vlc_common.h|*/include/vlc/*);;
    */include/*.h) echo "#include <vlc_common.h>" ;;
  esac
  cat $1
  exit 0
fi

112 113 114
##
##  Update the CVS changelog
##
115
if test "${action}" = "changelog"
116
then
Sam Hocevar's avatar
Sam Hocevar committed
117 118
  set -e
  set -x
119
  cvs2cl --help >/dev/null 2>&1 || exit 1
Sam Hocevar's avatar
Sam Hocevar committed
120 121
  rm -f ChangeLog ChangeLog.tmp
  cvs2cl --utc --hide-filenames --no-wrap -w --stdout -g -z9 | \
122 123
    sed -e 's/^[^0-9]/ /' -e 's/^  *$//' -e 's/^ \* 	/ /g' | \
    grep -v '^ \*$' | uniq > ChangeLog.tmp         # ^-- tab
Sam Hocevar's avatar
Sam Hocevar committed
124 125 126
  YEAR=`sed -e 's/\(....\)-..-.*/\1/;q' ChangeLog.tmp`
  LASTYEAR="$((${YEAR} - 1))"
  sed -ne "/^${YEAR}-..-../,/^${LASTYEAR}-..-../{/^${LASTYEAR}-..-../d;p}" \
Gildas Bazin's avatar
 
Gildas Bazin committed
127
    < ChangeLog.tmp > ChangeLog
Sam Hocevar's avatar
Sam Hocevar committed
128
  rm -f ChangeLog.tmp
129
  exit 0
Sam Hocevar's avatar
Sam Hocevar committed
130 131
  # To generate changelog for the year 2001:
  # sed -ne '/^2001/,/^2000/{/^2000/d;p}'
132 133
fi

134 135 136
##
##  Update the MSVC project files
##
137
if test "${action}" = "vc"
138
then
Sam Hocevar's avatar
Sam Hocevar committed
139
  echo "generating Visual Studio files"
140

Sam Hocevar's avatar
Sam Hocevar committed
141 142 143
  if test -z "${srcdir}"; then
    srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
  fi
Sam Hocevar's avatar
Sam Hocevar committed
144

145 146
  #  The evil ^M. printf '\r' does not work in Cygwin.
  M='
'
147

148 149 150
  #  Variables we get from configure.ac
  LIBVLC_VERSION=`sed -ne '/AC_INIT/s/.*,\(.*\))/\1/p' < configure.ac`
  LIBVLC_CODENAME=`sed -ne '/CODENAME=/s/.*"\(.*\)"/\1/p' < configure.ac`
151 152
  LIBVLC_SYMBOL=`echo $LIBVLC_VERSION | sed -e 'y/.-/__/'`

153
  #  Sources that get built under Win32 - FIXME: anyone wanna deuglify this? :)
154
  LIBVLC_SOURCES=`getfiles SOURCES_libvlc_common; getfiles SOURCES_libvlc_win32; getfiles SOURCES_libvlc_dirent; getfiles SOURCES_libvlc_getopt; getfiles SOURCES_libvlc_libc`
155

156
  LIBVLC_HEADERS=`getfiles HEADERS_include; getfiles HEADERS_include_built`
157

158
  LIBVLC_PKG_HEADERS=`getfiles dist_pkginclude_HEADERS`
159 160

  # Clean up
161
  rm -f evc/*.vcp msvc/*.dsp msvc/*.vcproj msvc/*.sln msvc/*.ncb
162

163 164 165
  # config files
  for target in evc/config.h msvc/config.h
  do
Sam Hocevar's avatar
Sam Hocevar committed
166
    printf "."
167 168 169 170 171 172
    rm -f ${target}
    sed -e "s/@CODENAME@/${LIBVLC_CODENAME}/" \
        -e "s/@VERSION@/${LIBVLC_VERSION}/" \
        -e "s/@SYMBOL@/${LIBVLC_SYMBOL}/" < ${target}.in > ${target}
  done

173 174 175
  # libvlc files
  for target in evc/libvlc.vcp msvc/libvlc.dsp
  do
Sam Hocevar's avatar
Sam Hocevar committed
176
    printf "."
177 178 179 180 181 182 183
    #  Top of the project file
    perl -pe 'if(/SOURCES/){last;}' < ${target}.in > ${target}
    #  The source files
    for file in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep -v "/.*/"`
    do
      cat >> ${target} << EOF
# Begin Source File${M}
184
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
Gildas Bazin's avatar
 
Gildas Bazin committed
185
# ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
186 187 188 189 190 191 192 193 194 195
# End Source File${M}
EOF
    done
    for subdir in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep "/.*/" | cut -f2 -d/ | sort | uniq`
    do
      cat >> ${target} << EOF
# Begin Group "${subdir}"${M}
EOF
      for file in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep "/${subdir}/"`
      do
196
      subdir="`echo ${file} | sed -e 's%/[^/]*$%/%' | sed -e 's%/%\\\\%g'`"
197 198 199 200
      if test "${target}" = "evc/libvlc.vcp"
      then
        cat >> ${target} << EOF
# Begin Source File${M}
201
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
Gildas Bazin's avatar
 
Gildas Bazin committed
202
# ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
!IF "\$(CFG)" == "libvlc - Win32 (WCE MIPS) Release"${M}
# PROP Output_Dir "MIPSRel\\${subdir}"${M}
# PROP Intermediate_Dir "MIPSRel\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE MIPS) Debug"${M}
# PROP Output_Dir "MIPSDbg\\${subdir}"${M}
# PROP Intermediate_Dir "MIPSDbg\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH4) Release"${M}
# PROP Output_Dir "SH4Rel\\${subdir}"${M}
# PROP Intermediate_Dir "SH4Rel\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH4) Debug"${M}
# PROP Output_Dir "SH4Dbg\\${subdir}"${M}
# PROP Intermediate_Dir "SH4Dbg\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH3) Release"${M}
# PROP Output_Dir "SH3Rel\\${subdir}"${M}
# PROP Intermediate_Dir "SH3Rel\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH3) Debug"${M}
# PROP Output_Dir "SH3Dbg\\${subdir}"${M}
# PROP Intermediate_Dir "SH3Dbg\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE ARM) Release"${M}
# PROP Output_Dir "ARMRel\\${subdir}"${M}
# PROP Intermediate_Dir "ARMRel\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE ARM) Debug"${M}
# PROP Output_Dir "ARMDbg\\${subdir}"${M}
# PROP Intermediate_Dir "ARMDbg\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE x86em) Release"${M}
# PROP Output_Dir "X86EMRel\\${subdir}"${M}
# PROP Intermediate_Dir "X86EMRel\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE x86em) Debug"${M}
# PROP Output_Dir "X86EMDbg\\${subdir}"${M}
# PROP Intermediate_Dir "X86EMDbg\\${subdir}"${M}
!ENDIF${M}
# End Source File${M}
EOF
        else
          cat >> ${target} << EOF
# Begin Source File${M}
239
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
Gildas Bazin's avatar
 
Gildas Bazin committed
240
# ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
!IF "\$(CFG)" == "libvlc - Win32 Release"${M}
# PROP Output_Dir "Release\\${subdir}"${M}
# PROP Intermediate_Dir "Release\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 Debug"${M}
# PROP Output_Dir "Debug\\${subdir}"${M}
# PROP Intermediate_Dir "Debug\\${subdir}"${M}
!ENDIF${M}
# End Source File${M}
EOF
        fi
      done
      cat >> ${target} << EOF
# End Group${M}
EOF
    done
    #  The headers
    perl -e 'while(<>){if(/SOURCES/){last;}}while(<>){if(/HEADERS/){last;}print $_}' < ${target}.in >> ${target}
    for file in ${LIBVLC_HEADERS}
    do
      cat >> ${target} << EOF
# Begin Source File${M}
262
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
263 264 265 266 267 268 269 270 271 272
# End Source File${M}
EOF
    done
    cat >> ${target} << EOF
# Begin Group "vlc"${M}
EOF
    for file in ${LIBVLC_PKG_HEADERS}
    do
      cat >> ${target} << EOF
# Begin Source File${M}
273
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
274 275 276 277 278 279 280 281 282 283
# End Source File${M}
EOF
    done
    cat >> ${target} << EOF
# End Group${M}
EOF
    perl -e 'while(<>){if(/HEADERS/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
  done

  # plugins files
Sam Hocevar's avatar
Sam Hocevar committed
284
  for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' ${srcdir}/configure.ac`
285
  do
Sam Hocevar's avatar
Sam Hocevar committed
286 287
    mf="${srcdir}/modules/${dir}/Modules.am"
    for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
288
    do
Sam Hocevar's avatar
Sam Hocevar committed
289 290 291 292 293 294
      # this is an attempt at getting a list of plugin sources... we take the
      # production and remove everything that does not contain "module", which
      # means you miss $(NULL), but other variables too.
      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 '\.'`
      hfiles=`for i in ${allfiles} ; do echo "$i" ; done | grep '\.h$'`
      cfiles=`for i in ${allfiles} ; do echo "$i" ; done | grep -v '\.h$'`
295
      for msdir in evc msvc
296
      do
297 298 299
        test "${msdir}" = "evc" && suf="vcp" || suf="dsp"
        source="${msdir}/plugins.${suf}.in"
        target="${msdir}/plugin_${mod}.${suf}"
Sam Hocevar's avatar
Sam Hocevar committed
300
        printf "."
Sam Hocevar's avatar
Sam Hocevar committed
301 302 303 304
        perl -pe 'if(/SOURCES/){last;} s/PLUGIN/'${mod}'/g' < ${source} > ${target}
        for cfile in ${cfiles}
        do
          cat >> ${target} << EOF
305
# Begin Source File${M}
Sam Hocevar's avatar
Sam Hocevar committed
306 307
SOURCE="..\\modules\\`echo ${dir}/${cfile} | sed 's,/,\\\\,g'`"${M}
# ADD CPP /D "__VLC__" /D "__PLUGIN__"  /D "MODULE_NAME=${mod}" /D "MODULE_NAME_IS_${mod}" ${M}
308 309 310 311 312 313
!IF "\$(CFG)" == "plugin_${mod} - Win32 Release"${M}
# PROP Output_Dir "Release\\modules\\`echo ${dir} | sed 's,/,\\\\,g'`"${M}
# PROP Intermediate_Dir "Release\\modules\\`echo ${dir} | sed 's,/,\\\\,g'`"${M}
!ELSEIF "\$(CFG)" == "plugin_${mod} - Win32 Debug"${M}
# PROP Output_Dir "Debug\\modules\\`echo ${dir} | sed 's,/,\\\\,g'`"${M}
# PROP Intermediate_Dir "Debug\\modules\\`echo ${dir} | sed 's,/,\\\\,g'`"${M}
314 315
# End Source File${M}
EOF
Sam Hocevar's avatar
Sam Hocevar committed
316 317 318 319 320 321 322
        done
        # sed is really nicer for this... unfortunately it's broken under cygwin
        # sed -ne '1,/SOURCES/d; /HEADERS/,$d; p' < ${source} >> ${target}
        perl -e 'while(<>){if(/SOURCES/){last;}}while(<>){if(/HEADERS/){last;}print $_}' < ${source} >> ${target}
        for hfile in ${hfiles}
        do
          cat >> ${target} << EOF
323
# Begin Source File${M}
Sam Hocevar's avatar
Sam Hocevar committed
324
SOURCE="..\\modules\\`echo ${dir}/${hfile} | sed 's,/,\\\\,g'`"${M}
325 326
# End Source File${M}
EOF
Sam Hocevar's avatar
Sam Hocevar committed
327 328 329
        done
        # sed -ne '1,/HEADERS/d; p' < ${source} >> ${target}
        perl -e 'while(<>){if(/HEADERS/){last;}}while(<>){print $_}' < ${source} >> ${target}
330 331 332 333 334 335 336
      done
    done
  done

  # vlc files
  for target in evc/vlc.vcp msvc/vlc.dsp
  do
Sam Hocevar's avatar
Sam Hocevar committed
337
    printf "."
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358
    #  Top of the project file
    perl -pe 'if(/SOURCES/){last;}' < ${target}.in > ${target}
    #  The source files
    if test "${target}" = "evc/vlc.vcp"
    then
      cat >> ${target} << EOF
# Begin Source File${M}
SOURCE="..\\evc\\vlc.c"${M}
# End Source File${M}
EOF
    else
      cat >> ${target} << EOF
# Begin Source File${M}
SOURCE="..\\src\\vlc.c"${M}
# End Source File${M}
EOF
    fi
    #  Bottom of the project file - handles resource files too
    perl -e 'while(<>){if(/SOURCES/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
  done

Sam Hocevar's avatar
Sam Hocevar committed
359
  echo " done."
360 361 362 363 364 365
  exit 0
fi

##
##  Update the potfiles because no one ever does it
##
366
if test "${action}" = "po"
367
then
368 369
  # create a fake file containing win32 strings
  rm -f modules/gui/win32/strings.cpp
370 371 372 373 374 375
  #printf "/* Automatically generated by 'toolbox --update-po', please don't compile */\n" > modules/gui/win32/strings.cpp
  #find modules/gui/win32 -name '*.dfm' | while read file
  #do
  #  printf "\n/*\n * from $file:\n */\n\n" >> modules/gui/win32/strings.cpp
  #  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
  #done
376 377 378 379 380
  # find out the source files
  rm -f po/POTFILES.in
  echo "# automatically created by toolbox --update-po" > po/POTFILES.in
  echo "" >> po/POTFILES.in
  echo "# main sources" >> po/POTFILES.in
Sam Hocevar's avatar
Sam Hocevar committed
381 382 383
  find include src -name '*.[chm]' -o -name '*.[ch]pp' \
    | grep -v '\(vlc_symbols\|misc/modules_\)' \
    | sort >> po/POTFILES.in
384 385
  echo "" >> po/POTFILES.in
  echo "# modules" >> po/POTFILES.in
Sam Hocevar's avatar
Sam Hocevar committed
386
  find modules -name '*.[chm]' -o -name '*.[ch]pp' \
Sam Hocevar's avatar
Sam Hocevar committed
387
    | grep -v '\(gui/win32/\)' \
Sam Hocevar's avatar
Sam Hocevar committed
388
    | sort >> po/POTFILES.in
389
  # clean old potfiles
390 391
  cd po
  rm -f vlc.pot
392 393 394
  # update
  make vlc.pot || exit 1
  make update-po || exit 1
395 396 397 398 399
  cd ..

  exit 0
fi

400 401 402
##
##  Create include files
##
403
if test "${action}" = "includes"
404
then
Sam Hocevar's avatar
Sam Hocevar committed
405
  #set -x
406

Sam Hocevar's avatar
Sam Hocevar committed
407 408 409
  if test -z "${srcdir}"; then
    srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
  fi
410
  LIBVLC_HEADERS=`getfiles HEADERS_include`
Sam Hocevar's avatar
Sam Hocevar committed
411
  BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' vlc-config`
412

Sam Hocevar's avatar
Sam Hocevar committed
413
  file="${srcdir}/include/vlc_symbols.h"
414 415 416 417 418 419 420 421 422

  rm -f ${file}.in
  echo '/* DO NOT EDIT THIS FILE! See Makefile.am */' >> ${file}.in
  echo 'struct module_symbols_t {' >> ${file}.in
  cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/    \1 (* \2_inner) \3;/' >> ${file}.in
  echo '};' >> ${file}.in
  echo '#ifdef __PLUGIN__' >> ${file}.in
  cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/#   define \2 p_symbols->\2_inner/' >> ${file}.in
  echo '#endif /* __PLUGIN__ */' >> ${file}.in
Sam Hocevar's avatar
Sam Hocevar committed
423
  if diff >/dev/null 2>&1 ${file} ${file}.in
424 425
  then
    rm -f ${file}.in
426
  else
Sam Hocevar's avatar
Sam Hocevar committed
427
    echo "creating new ${file}"
428
    mv -f ${file}.in ${file}
429 430
  fi

Sam Hocevar's avatar
Sam Hocevar committed
431
  file="${srcdir}/src/misc/modules_plugin.h"
432 433 434 435 436 437

  rm -f ${file}.tmp && cp ${file}.in ${file}.tmp
  sed -e 's#.*\$[I][d]:.*# * Automatically generated from '${file}'.in by bootstrap#' < ${file}.in > ${file}.tmp
  echo '#define STORE_SYMBOLS( p_symbols ) \' >> ${file}.tmp
  cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/    (p_symbols)->\2_inner = \2; \\/' >> ${file}.tmp
  echo '' >> ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
438
  if diff >/dev/null 2>&1 ${file} ${file}.tmp
439 440
  then
    rm -f ${file}.tmp
441
  else
Sam Hocevar's avatar
Sam Hocevar committed
442
    echo "creating new ${file}"
443
    mv -f ${file}.tmp ${file}
444 445
  fi

Sam Hocevar's avatar
Sam Hocevar committed
446
  file="${srcdir}/src/misc/modules_builtin.h"
447 448

  rm -f ${file}.tmp && cp ${file}.in ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
449
  if test -n "${BUILTINS}"
450 451 452 453 454 455 456 457 458 459
  then
    for i in `echo ${BUILTINS}`
    do
      echo "int vlc_entry__`echo $i | sed -e 'y@/@_@' -e 's@\..*@@'`( module_t* );" >>${file}.tmp
    done
    echo "" >> ${file}.tmp
  fi
  echo "#define ALLOCATE_ALL_BUILTINS() \\" >> ${file}.tmp
  echo "    do \\" >> ${file}.tmp
  echo "    { \\" >> ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
460
  if test -n "${BUILTINS}"
461 462 463 464 465 466 467 468
  then
    for i in `echo ${BUILTINS}`
    do
      echo "        ALLOCATE_BUILTIN(`echo $i | sed -e 'y@/@_@' -e 's@\..*@@'`); \\" >> ${file}.tmp
    done
  fi
  echo "    } while( 0 );" >> ${file}.tmp
  echo "" >> ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
469
  if diff >/dev/null 2>&1 ${file} ${file}.tmp
470 471
  then
    rm -f ${file}.tmp
472
  else
Sam Hocevar's avatar
Sam Hocevar committed
473
    echo "creating new ${file}"
474
    mv -f ${file}.tmp ${file}
475 476 477 478 479
  fi

  exit 0
fi

480 481 482
##
##  Fix glade-generated files
##
483
if test "${action}" = "glade"
484 485 486 487 488 489 490 491 492 493
then
  for file in modules/gui/gtk/gnome.glade modules/gui/gtk/gtk.glade modules/gui/familiar/familiar.glade
  do
    echo "generating code from $file"
    glade -w $file || exit 1
  done

  for file in modules/gui/gtk/gnome_interface.c modules/gui/gtk/gtk_interface.c modules/gui/familiar/interface.c
  do
    echo "fixing $file"
Sam Hocevar's avatar
Sam Hocevar committed
494
    if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
495 496 497 498 499 500 501 502 503
    then
      rm -f $file.$$.bak
      cat > $file.$$.bak << EOF
/* This file was created automatically by glade and fixed by bootstrap */

#include <vlc/vlc.h>
EOF
      sed -e 1,7d \
          -e 's#_(\(".:..:.."\))#\1#' \
504
          -e 's#_(\("[a-z0-9]*://[^"]*"\))#\1#' \
505 506 507 508 509 510 511 512 513 514 515 516
          -e 's#_("---")#"---"#' \
          -e 's#_("--")#"--"#' \
          -e 's#_("/dev/dvd")#"/dev/dvd"#' \
          -e 's#_(\("./."\))#\1#' \
          < $file >> $file.$$.bak
      mv -f $file.$$.bak $file
    fi
  done

  for file in modules/gui/gtk/gtk_support.h modules/gui/familiar/support.h
  do
    echo "fixing $file"
Sam Hocevar's avatar
Sam Hocevar committed
517
    if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
518 519 520 521 522 523 524 525 526 527 528 529 530 531
    then
      rm -f $file.$$.bak
      sed -e 's/DO NOT EDIT.*/Created by glade, fixed by bootstrap/' \
          -e 's,<config.h>,<vlc/vlc.h>,' \
          -e 's,#if.*ENABLE_NLS.*,#if 0 /* Disabled by bootstrap */,' \
          -e 's,#else,/* & */,' \
          < $file > $file.$$.bak
      mv -f $file.$$.bak $file
    fi
  done

  exit 0
fi

532 533 534 535 536 537 538 539 540 541 542 543 544 545
##
##  Fix glade2-generated files
##
if test "${action}" = "glade2"
then
  for file in modules/gui/gtk2/gnome2.glade modules/gui/gtk2/gtk2.glade
  do
    echo "generating code from $file"
    glade-2 -w $file || exit 1
  done

  exit 0
fi

546 547 548 549 550 551 552 553 554 555 556 557 558 559
##
##  Fix flexml-generated files
##
if test "${action}" = "flexml"
then
  cd modules/gui/skins/parser
  flexml -SH -a skin.act skin.dtd
  # comment the dummy main function
  file=skin.c
  sed 's@int main@//int main@' < $file > $file.$$.bak
  mv -f $file.$$.bak $file
  flex -oflex.c -BLs skin.l
fi

560 561 562 563 564 565 566
##
##  Make distclean
##
if test "${action}" = "distclean"
then
  set -x
  # a naive sanity check to make sure we are in a VLC tree
Gildas Bazin's avatar
 
Gildas Bazin committed
567
  test -f vlc.spec.mdk -a -f debian/rules || exit 1
568 569 570 571 572 573 574 575
  # let's rock!
  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 '{}' ';'
  (cd autotools && find . -name '[a-z]*' -exec rm -f '{}' ';')
  (cd debian && find . -type d -name '[a-z]*' -maxdepth 1 -exec rm -Rf '{}' ';')
  find msvc -type f -name '*.dsp' -exec rm -f '{}' ';'
  find evc -type f -name '*.vcp' -exec rm -f '{}' ';'
  #find . -type d -name '.deps' -exec rm -Rf '{}' ';'
  # there's some more cruft all around
576
  rm -f config.h config.log config.status
577 578 579 580 581 582
  rm -f vlc vlc-config Makefile Modules.am
  rm -Rf autom4te.cache
  rm -f mozilla/vlcintf.h mozilla/vlcintf.xpt
  # FIXME: a lot of Makefiles are still there
fi

Sam Hocevar's avatar
Sam Hocevar committed
583 584 585
##
##  Build a woody-friendly package
##
586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603
if test "${action}" = "woody"
then
  set -ex
  test -d "$1"

  # changelog: replace (1.2.3-4) with (1.2.3-0woody.4)
  sed -e 's/^vlc (\([^)]*\)-\([^-)]*\))/vlc-woody (\1-0woody.\2)/' \
      -e 's/ unstable; / stable; /' \
      < "$1/debian/changelog" > "$1/debian/changelog.woody"
  mv "$1/debian/changelog.woody" "$1/debian/changelog"

  # control: replace liba52-*-dev with a52dec-dev (>=0.7.3)
  #                  libdv*-dev with libdv-dev
  #                  kdelibs4-dev with kdelibs-dev
  #                  libqt3-mt-dev libqt3-compat-headers with libqt-dev
  #                  libarts1-dev with libarts-dev
  #                  libdvdread3-dev with libdvdread2-dev
  #                  libdvdplay0-dev (>=1.0.1-2) with libdvdplay0-dev
604
  #                  libxosd-dev (>=2.2.4-1.3) with libxosd-dev
605
  #                  ttf-freefonts with ttf-thryomanes
Sam Hocevar's avatar
Sam Hocevar committed
606
  #                  dvb-dev (>= 1.0.1-6) with dvb-dev
607 608 609 610 611
  #          remove libwxgtk2.4-dev
  #                 libflac-dev
  #                 libidl0 (workaround for mozilla-dev's bad deps)
  #                 libglib2.0-0 (workaround for mozilla-dev's bad deps)
  #                 libmatroska-dev
612
  #                 libspeex-dev
613 614 615 616 617 618 619 620 621 622 623 624
  #          change Source: vlc with Source: vlc-woody
  #                 Section: gnome with Section: graphics
  #                 Section: kde with Section: kde
  #                 Section: libdevel with Section: devel
  sed -e 's/liba52-[^-]*-dev/a52dec-dev (>=0.7.3)/' \
      -e 's/libdv[0-9]*-dev/libdv-dev/' \
      -e 's/kdelibs[0-9]*-dev/kdelibs-dev/' \
      -e 's/libqt[0-9]*-mt-dev/libqt-dev/' \
      -e 's/, libqt[0-9]*-compat-headers[^,]*//' \
      -e 's/libarts[0-9]*-dev/libarts-dev/' \
      -e 's/libdvdread[0-9]*-dev/libdvdread2-dev/' \
      -e 's/, libdvdplay0-dev[^,]*/, libdvdplay0-dev/' \
625
      -e 's/, libxosd-dev[^,]*/, libxosd-dev/' \
626
      -e 's/, ttf-freefonts[^,]*/, ttf-thryomanes/' \
Sam Hocevar's avatar
Sam Hocevar committed
627
      -e 's/, dvb-dev[^,]*/, dvb-dev/' \
628 629 630 631 632 633
      -e 's/, libwx[^,]*//' \
      -e '/Package: wxvlc/,/^ *$/d' \
      -e 's/, libflac-dev[^,]*//' \
      -e 's/, libidl0[^,]*//' \
      -e 's/, libglib2.0-0[^,]*//' \
      -e 's/, libmatroska-dev[^,]*//' \
634
      -e 's/, libspeex-dev[^,]*//' \
635 636 637 638 639 640 641 642 643 644 645 646 647 648 649
      -e 's/Source: vlc/Source: vlc-woody/' \
      -e 's/Section: gnome/Section: graphics/' \
      -e 's/Section: kde/Section: graphics/' \
      -e 's/Section: libdevel/Section: devel/' \
      < "$1/debian/control" > "$1/debian/control.woody"
  mv "$1/debian/control.woody" "$1/debian/control"

  # rules: remove wxwindows and skins stuff
  #        remove flac support
  #        remove matroska support
  sed -e '/# Package: wxvlc/,/^ *$/d' \
      -e 's,--enable-wxwindows,--disable-wxwindows,' \
      -e 's,--enable-skins,--disable-skins,' \
      -e 's,--enable-flac,--disable-flac,' \
      -e 's,--enable-mkv,--disable-mkv,' \
650
      -e 's,--enable-speex,--disable-speex,' \
651 652 653
      < "$1/debian/rules" > "$1/debian/rules.woody"
  mv "$1/debian/rules.woody" "$1/debian/rules"
  chmod 0755 "$1/debian/rules"
654 655 656 657 658

  # modules/misc/freetype.c: replace the default font
  sed -e 's,FreeSerifBold.ttf,thryomanes/thryb___.ttf,' \
      < "$1/modules/misc/freetype.c" > "$1/modules/misc/freetype.c.woody"
  mv "$1/modules/misc/freetype.c.woody" "$1/modules/misc/freetype.c"
659 660
fi