toolbox 20 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 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
  --distclean             "make distclean" on steroids
32
  --make-woody <dir>      change distdir <dir> to a woody distdir
33 34 35 36
EOF
  exit 1
}

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

48 49 50
###
###  argument check
###
51 52

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

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

98 99 100 101 102 103 104 105 106 107 108 109 110
##
##  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

111 112 113
##
##  Update the CVS changelog
##
114
if test "${action}" = "changelog"
115
then
Sam Hocevar's avatar
Sam Hocevar committed
116 117
  YEAR="`date +%Y`"
  echo "toolbox --changelog no longer required. use this instead:"
118
  echo " svn log -v -r '{$YEAR-12-31}:{$YEAR-01-01}' > ChangeLog"
119
  exit 0
120 121
fi

122 123 124
##
##  Update the MSVC project files
##
125
if test "${action}" = "vc"
126
then
Sam Hocevar's avatar
Sam Hocevar committed
127
  echo "generating Visual Studio files"
128

Sam Hocevar's avatar
Sam Hocevar committed
129 130 131
  if test -z "${srcdir}"; then
    srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
  fi
Sam Hocevar's avatar
Sam Hocevar committed
132

133 134
  #  The evil ^M. printf '\r' does not work in Cygwin.
  M='
'
135

136 137 138
  #  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`
139 140
  LIBVLC_SYMBOL=`echo $LIBVLC_VERSION | sed -e 'y/.-/__/'`

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

144
  LIBVLC_HEADERS=`getfiles HEADERS_include; getfiles HEADERS_include_built`
145

146
  LIBVLC_PKG_HEADERS=`getfiles dist_pkginclude_HEADERS`
147 148

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

151 152 153
  # config files
  for target in evc/config.h msvc/config.h
  do
Sam Hocevar's avatar
Sam Hocevar committed
154
    printf "."
155 156 157 158 159 160
    rm -f ${target}
    sed -e "s/@CODENAME@/${LIBVLC_CODENAME}/" \
        -e "s/@VERSION@/${LIBVLC_VERSION}/" \
        -e "s/@SYMBOL@/${LIBVLC_SYMBOL}/" < ${target}.in > ${target}
  done

161 162 163
  # libvlc files
  for target in evc/libvlc.vcp msvc/libvlc.dsp
  do
Sam Hocevar's avatar
Sam Hocevar committed
164
    printf "."
165 166 167 168 169 170 171
    #  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}
172
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
Gildas Bazin's avatar
 
Gildas Bazin committed
173
# ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
174 175 176 177 178 179 180 181 182 183
# 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
184
      subdir="`echo ${file} | sed -e 's%/[^/]*$%/%' | sed -e 's%/%\\\\%g'`"
185 186 187 188
      if test "${target}" = "evc/libvlc.vcp"
      then
        cat >> ${target} << EOF
# Begin Source File${M}
189
SOURCE="..\\`echo ${file} | sed -e 's%/%\\\\%g'`"${M}
Gildas Bazin's avatar
 
Gildas Bazin committed
190
# ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\".\\" /D DATA_PATH=\\"share\\"${M}
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
!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}
221 222 223 224 225 226 227 228 229 230 231 232
!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}
233 234 235 236 237 238
!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
    #  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
350
  echo " done."
351 352 353 354 355 356
  exit 0
fi

##
##  Update the potfiles because no one ever does it
##
357
if test "${action}" = "po"
358
then
359 360 361 362 363
  # 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
364
  find include src -name '*.[chm]' -o -name '*.[ch]pp' \
Sam Hocevar's avatar
Sam Hocevar committed
365
    | grep -v '\(vlc_symbols\|misc/modules_\)' \
Sam Hocevar's avatar
Sam Hocevar committed
366
    | sort >> po/POTFILES.in
367 368
  echo "" >> po/POTFILES.in
  echo "# modules" >> po/POTFILES.in
Sam Hocevar's avatar
Sam Hocevar committed
369
  find modules -name '*.[chm]' -o -name '*.[ch]pp' \
370
    | grep -v '\(\.moc\.\|gui/gtk2/\)' \
Sam Hocevar's avatar
Sam Hocevar committed
371
    | sort >> po/POTFILES.in
372
  # clean old potfiles
373 374
  cd po
  rm -f vlc.pot
375 376 377
  # update
  make vlc.pot || exit 1
  make update-po || exit 1
378 379 380 381 382
  cd ..

  exit 0
fi

383 384 385
##
##  Create include files
##
386
if test "${action}" = "includes"
387
then
Sam Hocevar's avatar
Sam Hocevar committed
388
  #set -x
389

Sam Hocevar's avatar
Sam Hocevar committed
390 391 392
  if test -z "${srcdir}"; then
    srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`"
  fi
393
  LIBVLC_HEADERS=`getfiles HEADERS_include`
Sam Hocevar's avatar
Sam Hocevar committed
394
  BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' vlc-config`
395

Sam Hocevar's avatar
Sam Hocevar committed
396
  file="${srcdir}/include/vlc_symbols.h"
397 398 399 400 401 402 403 404 405

  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
406
  if diff >/dev/null 2>&1 ${file} ${file}.in
407 408
  then
    rm -f ${file}.in
Sam Hocevar's avatar
Sam Hocevar committed
409
  else
Sam Hocevar's avatar
Sam Hocevar committed
410
    echo "creating new ${file}"
Sam Hocevar's avatar
Sam Hocevar committed
411
    mv -f ${file}.in ${file}
412 413
  fi

Sam Hocevar's avatar
Sam Hocevar committed
414
  file="${srcdir}/src/misc/modules_plugin.h"
415 416 417 418 419 420

  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
421
  if diff >/dev/null 2>&1 ${file} ${file}.tmp
422 423
  then
    rm -f ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
424
  else
Sam Hocevar's avatar
Sam Hocevar committed
425
    echo "creating new ${file}"
Sam Hocevar's avatar
Sam Hocevar committed
426
    mv -f ${file}.tmp ${file}
427 428
  fi

Sam Hocevar's avatar
Sam Hocevar committed
429
  file="${srcdir}/src/misc/modules_builtin.h"
430 431

  rm -f ${file}.tmp && cp ${file}.in ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
432
  if test -n "${BUILTINS}"
433 434 435 436 437 438 439 440 441 442
  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
443
  if test -n "${BUILTINS}"
444 445 446 447 448 449 450 451
  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
452
  if diff >/dev/null 2>&1 ${file} ${file}.tmp
453 454
  then
    rm -f ${file}.tmp
Sam Hocevar's avatar
Sam Hocevar committed
455
  else
Sam Hocevar's avatar
Sam Hocevar committed
456
    echo "creating new ${file}"
Sam Hocevar's avatar
Sam Hocevar committed
457
    mv -f ${file}.tmp ${file}
458 459 460 461 462
  fi

  exit 0
fi

463 464 465
##
##  Fix glade-generated files
##
466
if test "${action}" = "glade"
467 468 469 470 471 472 473 474 475 476
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
477
    if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
478 479 480 481 482 483 484 485 486
    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#' \
487
          -e 's#_(\("[a-z0-9]*://[^"]*"\))#\1#' \
488 489
          -e 's#_("---")#"---"#' \
          -e 's#_("--")#"--"#' \
Sam Hocevar's avatar
Sam Hocevar committed
490
          -e 's#_(\("/dev/[^"]*"\))#"\1"#' \
491 492 493 494 495 496 497 498 499
          -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
500
    if grep "DO NOT EDIT THIS FILE" $file >/dev/null 2>&1
501 502 503 504 505 506 507 508 509 510 511 512 513 514
    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

515 516 517 518 519
##
##  Fix glade2-generated files
##
if test "${action}" = "glade2"
then
Sam Hocevar's avatar
Sam Hocevar committed
520
  for file in modules/gui/gtk2/gnome2.glade modules/gui/gtk2/gtk2.glade modules/gui/pda/pda.glade
521 522 523 524 525
  do
    echo "generating code from $file"
    glade-2 -w $file || exit 1
  done

Sam Hocevar's avatar
Sam Hocevar committed
526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548
  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

549 550 551
  exit 0
fi

552 553 554 555 556 557 558
##
##  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
559
  test -f vlc.spec.mdk -a -f debian/rules || exit 1
560 561
  # 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 '{}' ';'
Sam Hocevar's avatar
Sam Hocevar committed
562
  (cd autotools && find . -name '[a-z]*' -maxdepth 1 -exec rm -f '{}' ';')
563 564 565 566 567
  (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
568
  rm -f config.h config.log config.status
569 570 571 572 573 574
  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
575 576 577
##
##  Build a woody-friendly package
##
578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595
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
596
  #                  libxosd-dev (>=2.2.4-1.3) with libxosd-dev
Sam Hocevar's avatar
Sam Hocevar committed
597
  #                  ttf-freefont with ttf-thryomanes
Sam Hocevar's avatar
Sam Hocevar committed
598
  #                  dvb-dev (>= 1.0.1-6) with dvb-dev
599 600 601
  #          remove libwxgtk2.4-dev
  #                 libidl0 (workaround for mozilla-dev's bad deps)
  #                 libglib2.0-0 (workaround for mozilla-dev's bad deps)
602
  #                 gcc-3.2 (workaround for an ICE in gcc-3.3)
Sam Hocevar's avatar
Sam Hocevar committed
603
  #          change Section: gnome with Section: graphics
604 605 606 607 608 609 610 611 612 613
  #                 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/' \
614
      -e 's/, libxosd-dev[^,]*/, libxosd-dev/' \
Sam Hocevar's avatar
Sam Hocevar committed
615
      -e 's/, ttf-freefont[^,]*/, ttf-thryomanes/' \
Sam Hocevar's avatar
Sam Hocevar committed
616
      -e 's/, dvb-dev[^,]*/, dvb-dev/' \
617 618 619 620
      -e 's/, libwx[^,]*//' \
      -e '/Package: wxvlc/,/^ *$/d' \
      -e 's/, libidl0[^,]*//' \
      -e 's/, libglib2.0-0[^,]*//' \
621
      -e 's/, gcc-3.2[^,]*//' \
622 623 624 625 626 627 628 629 630 631 632 633 634
      -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"
635 636

  # modules/misc/freetype.c: replace the default font
Sam Hocevar's avatar
Sam Hocevar committed
637
  sed -e 's,freefont/FreeSerifBold.ttf,thryomanes/thryb___.ttf,' \
638 639
      < "$1/modules/misc/freetype.c" > "$1/modules/misc/freetype.c.woody"
  mv "$1/modules/misc/freetype.c.woody" "$1/modules/misc/freetype.c"
640 641
fi