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

3
##  toolbox for the VLC media player
Sam Hocevar's avatar
Sam Hocevar committed
4
##  $Id$
5
##
6 7
##  Copyright (C) 2005  the VideoLAN team
##
8
##  Authors: Samuel Hocevar <sam@zoy.org>
9
##           Rmi Denis-Courmont <rem # videolan.org>
10 11 12 13

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

##
##  Give help
##
help()
{
  cat << EOF
recognized flags are:
Sam Hocevar's avatar
Sam Hocevar committed
28 29 30 31 32 33
  --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
34
  --distclean             "make distclean" on steroids
35
  --dist-contrib          add the contrib dir to MAKE_DIST
36
  --make-woody <dir>      change distdir <dir> to a woody distdir
37 38 39 40
EOF
  exit 1
}

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

52 53 54
###
###  argument check
###
55 56

if test "$1" = ""
57 58 59 60
then
  help
fi

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

105 106 107 108 109 110 111 112 113 114 115 116 117
##
##  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

118 119 120
##
##  Update the CVS changelog
##
121
if test "${action}" = "changelog"
122
then
Sam Hocevar's avatar
Sam Hocevar committed
123 124
  YEAR="`date +%Y`"
  echo "toolbox --changelog no longer required. use this instead:"
125
  echo " svn log -v -r '{$YEAR-12-31}:{$YEAR-01-01}' > ChangeLog"
126
  exit 0
127 128
fi

129 130 131
##
##  Update the MSVC project files
##
132
if test "${action}" = "vc"
133
then
Sam Hocevar's avatar
Sam Hocevar committed
134
  echo "generating Visual Studio files"
135

Sam Hocevar's avatar
Sam Hocevar committed
136 137 138
  if test -z "${srcdir}"; then
    srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
  fi
Sam Hocevar's avatar
Sam Hocevar committed
139

140 141
  #  The evil ^M. printf '\r' does not work in Cygwin.
  M='
'
142

143 144 145
  #  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`
146 147
  LIBVLC_SYMBOL=`echo $LIBVLC_VERSION | sed -e 'y/.-/__/'`

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

151
  LIBVLC_HEADERS=`getfiles HEADERS_include; getfiles HEADERS_include_built`
152

153
  LIBVLC_PKG_HEADERS=`getfiles dist_pkginclude_HEADERS`
154 155

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

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

168 169 170
  # libvlc files
  for target in evc/libvlc.vcp msvc/libvlc.dsp
  do
Sam Hocevar's avatar
Sam Hocevar committed
171
    printf "."
172 173 174 175 176 177 178
    #  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}
179
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
Gildas Bazin's avatar
 
Gildas Bazin committed
180
# ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
181 182 183 184 185 186 187 188 189 190
# 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
191
      subdir="`echo ${file} | sed -e 's%/[^/]*$%/%' | sed -e 's%/%\\\\%g'`"
192 193 194 195
      if test "${target}" = "evc/libvlc.vcp"
      then
        cat >> ${target} << EOF
# Begin Source File${M}
196
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
Gildas Bazin's avatar
 
Gildas Bazin committed
197
# ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
!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}
222 223 224 225 226 227
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE ARMV4) Release"${M}
# PROP Output_Dir "ARMV4Rel\\${subdir}"${M}
# PROP Intermediate_Dir "ARMV4Rel\\${subdir}"${M}
!ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE ARMV4) Debug"${M}
# PROP Output_Dir "ARMV4Dbg\\${subdir}"${M}
# PROP Intermediate_Dir "ARMV4Dbg\\${subdir}"${M}
228 229 230 231 232 233
!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}
234 235 236 237 238 239 240 241 242 243 244 245
!ELSEIF  "\$(CFG)" == "libvlc - Win32 (WCE emulator) Debug"${M}
# PROP Output_Dir "emulatorDbg\\${subdir}"${M}
# PROP Intermediate_Dir "emulatorDbg\\${subdir}"${M}
!ELSEIF  "\$(CFG)" == "libvlc - Win32 (WCE emulator) Release"${M}
# PROP Output_Dir "emulatorRel\\${subdir}"${M}
# PROP Intermediate_Dir "emulatorRel\\${subdir}"${M}
!ELSEIF  "\$(CFG)" == "libvlc - Win32 (WCE x86) Debug"${M}
# PROP Output_Dir "X86Dbg\\${subdir}"${M}
# PROP Intermediate_Dir "X86Dbg\\${subdir}"${M}
!ELSEIF  "\$(CFG)" == "libvlc - Win32 (WCE x86) Release"${M}
# PROP Output_Dir "X86Rel\\${subdir}"${M}
# PROP Intermediate_Dir "X86Rel\\${subdir}"${M}
246 247 248 249 250 251
!ENDIF${M}
# End Source File${M}
EOF
        else
          cat >> ${target} << EOF
# Begin Source File${M}
252
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
Gildas Bazin's avatar
 
Gildas Bazin committed
253
# ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
!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}
275
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
276 277 278 279 280 281 282 283 284 285
# 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}
286
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
287 288 289 290 291 292 293 294 295 296
# 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
297
  for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' ${srcdir}/configure.ac`
298
  do
Sam Hocevar's avatar
Sam Hocevar committed
299 300
    mf="${srcdir}/modules/${dir}/Modules.am"
    for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
301
    do
Sam Hocevar's avatar
Sam Hocevar committed
302 303 304 305 306 307
      # 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$'`
308
      for msdir in evc msvc
309
      do
310 311 312
        test "${msdir}" = "evc" && suf="vcp" || suf="dsp"
        source="${msdir}/plugins.${suf}.in"
        target="${msdir}/plugin_${mod}.${suf}"
Sam Hocevar's avatar
Sam Hocevar committed
313
        printf "."
Sam Hocevar's avatar
Sam Hocevar committed
314 315 316 317
        perl -pe 'if(/SOURCES/){last;} s/PLUGIN/'${mod}'/g' < ${source} > ${target}
        for cfile in ${cfiles}
        do
          cat >> ${target} << EOF
318
# Begin Source File${M}
Sam Hocevar's avatar
Sam Hocevar committed
319 320
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}
321 322 323 324 325 326
!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}
327 328
# End Source File${M}
EOF
Sam Hocevar's avatar
Sam Hocevar committed
329 330 331 332 333 334 335
        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
336
# Begin Source File${M}
Sam Hocevar's avatar
Sam Hocevar committed
337
SOURCE="..\\modules\\`echo ${dir}/${hfile} | sed 's,/,\\\\,g'`"${M}
338 339
# End Source File${M}
EOF
Sam Hocevar's avatar
Sam Hocevar committed
340 341 342
        done
        # sed -ne '1,/HEADERS/d; p' < ${source} >> ${target}
        perl -e 'while(<>){if(/HEADERS/){last;}}while(<>){print $_}' < ${source} >> ${target}
343 344 345 346 347 348 349
      done
    done
  done

  # vlc files
  for target in evc/vlc.vcp msvc/vlc.dsp
  do
Sam Hocevar's avatar
Sam Hocevar committed
350
    printf "."
351 352 353 354 355 356 357 358 359 360 361 362
    #  Top of the project file
    perl -pe 'if(/SOURCES/){last;}' < ${target}.in > ${target}
    #  The source files
      cat >> ${target} << EOF
# Begin Source File${M}
SOURCE="..\\src\\vlc.c"${M}
# End Source File${M}
EOF
    #  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
363
  echo " done."
364 365 366 367 368 369
  exit 0
fi

##
##  Update the potfiles because no one ever does it
##
370
if test "${action}" = "po"
371
then
372 373 374 375 376
  # 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
377
  find include src -name '*.[chm]' -o -name '*.[ch]pp' \
Sam Hocevar's avatar
Sam Hocevar committed
378
    | grep -v '\(vlc_symbols\|misc/modules_\)' \
Sam Hocevar's avatar
Sam Hocevar committed
379
    | sort >> po/POTFILES.in
380 381
  echo "" >> po/POTFILES.in
  echo "# modules" >> po/POTFILES.in
Sam Hocevar's avatar
Sam Hocevar committed
382
  find modules -name '*.[chm]' -o -name '*.[ch]pp' \
383
    | grep -v '\(\.moc\.\|gui/gtk2/\)' \
Sam Hocevar's avatar
Sam Hocevar committed
384
    | sort >> po/POTFILES.in
385
  # clean old potfiles
386 387
  cd po
  rm -f vlc.pot
388 389 390
  # update
  make vlc.pot || exit 1
  make update-po || exit 1
391 392 393 394 395
  cd ..

  exit 0
fi

396 397 398
##
##  Create include files
##
399
if test "${action}" = "includes"
400
then
Sam Hocevar's avatar
Sam Hocevar committed
401
  #set -x
402

Sam Hocevar's avatar
Sam Hocevar committed
403 404 405
  if test -z "${srcdir}"; then
    srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
  fi
406 407 408
  if test -z "${builddir}"; then
    builddir="`sed -ne 's/^top_builddir *= *//p' < Makefile`"
  fi
Sam Hocevar's avatar
Sam Hocevar committed
409
  BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' vlc-config`
410

411
  file="${builddir}/src/misc/modules_builtin.h"
412

413
  rm -f ${file}.tmp && cp ${srcdir}/src/misc/modules_builtin.h.in ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
414
  if test -n "${BUILTINS}"
415 416 417 418 419 420 421 422 423 424
  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
425
  if test -n "${BUILTINS}"
426 427 428 429 430 431 432 433
  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
434
  if diff >/dev/null 2>&1 ${file} ${file}.tmp
435 436
  then
    rm -f ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
437
  else
Sam Hocevar's avatar
Sam Hocevar committed
438
    echo "creating new ${file}"
Sam Hocevar's avatar
Sam Hocevar committed
439
    mv -f ${file}.tmp ${file}
440 441 442 443 444
  fi

  exit 0
fi

445 446 447
##
##  Fix glade-generated files
##
448
if test "${action}" = "glade"
449 450 451 452 453 454 455 456 457 458
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
459
    if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
460 461 462 463 464 465 466 467 468
    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#' \
469
          -e 's#_(\("[a-z0-9]*://[^"]*"\))#\1#' \
470 471
          -e 's#_("---")#"---"#' \
          -e 's#_("--")#"--"#' \
Sam Hocevar's avatar
Sam Hocevar committed
472
          -e 's#_(\("/dev/[^"]*"\))#"\1"#' \
473 474 475 476 477 478 479 480 481
          -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
482
    if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
483 484 485 486 487 488 489 490 491 492 493 494 495 496
    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

497 498 499 500 501
##
##  Fix glade2-generated files
##
if test "${action}" = "glade2"
then
Sam Hocevar's avatar
Sam Hocevar committed
502
  for file in modules/gui/gtk2/gnome2.glade modules/gui/gtk2/gtk2.glade modules/gui/pda/pda.glade
503 504 505 506 507
  do
    echo "generating code from $file"
    glade-2 -w $file || exit 1
  done

Sam Hocevar's avatar
Sam Hocevar committed
508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530
  for file in modules/gui/pda/pda_interface.c
  do
    echo "fixing $file"
    if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
    then
      rm -f $file.$$.bak
      cat > $file.$$.bak << EOF
/* This file was created automatically by glade2 and fixed by bootstrap */

#include <vlc/vlc.h>
EOF
      sed -e 1,7d \
          -e 's#_(\(".:..:.."\))#\1#' \
          -e 's#_(\("[a-z0-9]*://[^"]*"\))#\1#' \
          -e 's#_("---")#"---"#' \
          -e 's#_("--")#"--"#' \
          -e 's#_(\("/dev/[^"]*"\))#\1#' \
          -e 's#_(\("./."\))#\1#' \
          < $file >> $file.$$.bak
      mv -f $file.$$.bak $file
    fi
  done

531 532 533
  exit 0
fi

534 535 536 537 538 539 540
##
##  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
541
  test -f vlc.spec.mdk -a -f debian/rules || exit 1
542
  # let's rock!
543
  find . -type f '(' -name '*.[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 '{}' ';'
Sam Hocevar's avatar
Sam Hocevar committed
544
  (cd autotools && find . -name '[a-z]*' -maxdepth 1 -exec rm -f '{}' ';')
545
  (cd debian && find . -type d '(' -name '[a-z]*' ! -name 'patches' ')' -maxdepth 1 -exec rm -Rf '{}' ';')
546 547
  find msvc -type f -name '*.dsp' -exec rm -f '{}' ';'
  find evc -type f -name '*.vcp' -exec rm -f '{}' ';'
548
  find . -type d -name '.deps' -exec rm -Rf '{}' ';'
549
  # there's some more cruft all around
550
  rm -f config.h config.log config.status
551 552 553 554 555 556
  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

557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587
##
## Add the extras/contrib dir to the distribution
##
if test "${action}" = "contrib"
then
  set -x
  if test ! -d "${distdir}/extras"
  then
    mkdir "${distdir}/extras"
  fi
  if test ! -d "${distdir}/extras/contrib"
  then
    mkdir "${distdir}/extras/contrib"
  fi
  cp "${srcdir}/extras/contrib/Makefile" "${distdir}/extras/contrib/Makefile"
  cp "${srcdir}/extras/contrib/README" "${distdir}/extras/contrib/README"
  cp "${srcdir}/extras/contrib/bootstrap" "${distdir}/extras/contrib/bootstrap"
  cp "${srcdir}/extras/contrib/change_prefix.sh" "${distdir}/extras/contrib/change_prefix.sh"
  if test ! -d "${distdir}/extras/contrib/src"
  then
    mkdir "${distdir}/extras/contrib/src"
  fi
  cp "${srcdir}/extras/contrib/src/Makefile" "${distdir}/extras/contrib/src/Makefile"
  cp "${srcdir}/extras/contrib/src/packages.mak" "${distdir}/extras/contrib/src/packages.mak"
  if test ! -d "${distdir}/extras/contrib/src/Patches"
  then
    mkdir "${distdir}/extras/contrib/src/Patches"
  fi
  cp ${srcdir}/extras/contrib/src/Patches/* "${distdir}/extras/contrib/src/Patches/"
fi

Sam Hocevar's avatar
Sam Hocevar committed
588 589 590
##
##  Build a woody-friendly package
##
591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608
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
609
  #                  libxosd-dev (>=2.2.4-1.3) with libxosd-dev
Sam Hocevar's avatar
Sam Hocevar committed
610
  #                  ttf-freefont with ttf-thryomanes
Sam Hocevar's avatar
Sam Hocevar committed
611
  #                  dvb-dev (>= 1.0.1-6) with dvb-dev
612 613 614
  #          remove libwxgtk2.4-dev
  #                 libidl0 (workaround for mozilla-dev's bad deps)
  #                 libglib2.0-0 (workaround for mozilla-dev's bad deps)
615
  #                 gcc-3.2 (workaround for an ICE in gcc-3.3)
Sam Hocevar's avatar
Sam Hocevar committed
616
  #          change Section: gnome with Section: graphics
617 618 619 620 621 622 623 624 625 626
  #                 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/' \
627
      -e 's/, libxosd-dev[^,]*/, libxosd-dev/' \
Sam Hocevar's avatar
Sam Hocevar committed
628
      -e 's/, ttf-freefont[^,]*/, ttf-thryomanes/' \
Sam Hocevar's avatar
Sam Hocevar committed
629
      -e 's/, dvb-dev[^,]*/, dvb-dev/' \
630 631 632 633
      -e 's/, libwx[^,]*//' \
      -e '/Package: wxvlc/,/^ *$/d' \
      -e 's/, libidl0[^,]*//' \
      -e 's/, libglib2.0-0[^,]*//' \
634
      -e 's/, gcc-3.2[^,]*//' \
635 636 637 638 639 640 641 642 643 644 645 646 647
      -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
  sed -e '/# Package: wxvlc/,/^ *$/d' \
      -e 's,--enable-wxwindows,--disable-wxwindows,' \
      -e 's,--enable-skins,--disable-skins,' \
      < "$1/debian/rules" > "$1/debian/rules.woody"
  mv "$1/debian/rules.woody" "$1/debian/rules"
  chmod 0755 "$1/debian/rules"
648 649

  # modules/misc/freetype.c: replace the default font
Sam Hocevar's avatar
Sam Hocevar committed
650
  sed -e 's,freefont/FreeSerifBold.ttf,thryomanes/thryb___.ttf,' \
651 652
      < "$1/modules/misc/freetype.c" > "$1/modules/misc/freetype.c.woody"
  mv "$1/modules/misc/freetype.c.woody" "$1/modules/misc/freetype.c"
653 654
fi