#! /bin/sh ## toolbox for the VLC media player ## $Id$ ## ## Copyright (C) 2002-2006 the VideoLAN team ## ## Authors: Samuel Hocevar ## RĂ©mi Denis-Courmont ### ### Get a sane environment, just in case ### LC_ALL=C export LC_ALL LANG=C export LANG CYGWIN=binmode export CYGWIN ## ## Give help ## help() { cat << EOF recognized flags are: --update-po update translation files --update-includes generate various include files --update-glade2 generate and fix Glade 2 code --update-flexml generate and fix flexml and flex code --distclean "make distclean" on steroids --dist-contrib add the contrib dir to MAKE_DIST EOF exit 1 } ## ## Extract stuff from Makefile.am ## getfiles() { 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" | \ tr '\\ ' '\n\n' | \ sed -ne 's/[^-$()_a-zA-Z0-9][^-$()_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p' | \ sed -e "s,^,${srcdir}/," } ### ### argument check ### if test "$1" = "" then help fi case "$1" in --changelog|--update-changelog) action=changelog ;; --update-po) action=po ;; --update-includes) action=includes ;; --update-flexml) action=flexml ;; --update-glade2|--update-glade-2|--fix-glade2) action=glade2 ;; --distclean) action=distclean ;; --add-include) action=include ;; --dist-contrib) action=contrib ;; --help) help ;; *) echo "$0: unknown option $1" help ;; esac shift ## ## Add includes to help doxygen ## if test "${action}" = "include" then case "$1" in */vlc_common.h|*/include/vlc/*);; */include/*.h) echo "#include " ;; esac cat $1 exit 0 fi ## ## Update the CVS changelog ## if test "${action}" = "changelog" then YEAR="`date +%Y`" echo "toolbox --changelog no longer required. use this instead:" echo " LANG=C svn log -v -r '{$YEAR-12-31}:{$YEAR-01-01}' > ChangeLog" exit 0 fi ## ## Update the potfiles because no one ever does it ## if test "${action}" = "po" then # find out the source files echo "WARNING: you should run \"make update-po\" instead!" >&2 make update-po exit $? fi ## ## Create include files ## if test "${action}" = "includes" then #set -x if test -z "${srcdir}"; then srcdir="`sed -ne 's/^srcdir *= *//p' < Makefile`" fi if test -z "${builddir}"; then builddir="`sed -ne 's/^top_builddir *= *//p' < Makefile`" fi BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' ${builddir}/vlc-config` file="${builddir}/src/modules/builtin.h" rm -f "${file}.tmp" mkdir -p -- "${builddir}/src/modules" cat "${srcdir}/src/modules/builtin.h.in" > "${file}.tmp" || exit 1 if test -n "${BUILTINS}" 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" if test -n "${BUILTINS}" 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" || exit 1 if diff >/dev/null 2>&1 "${file}" "${file}.tmp" then rm -f "${file}.tmp" else echo "creating new ${file}" mv -f "${file}.tmp" "${file}" fi exit 0 fi ## ## Fix glade2-generated files ## if test "${action}" = "glade2" then file="modules/gui/pda/pda.glade" echo "generating code from $file" glade-2 -w "$file" || exit 1 file="modules/gui/pda/pda_interface.c" 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 */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include 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 exit 0 fi ## ## Make distclean ## if test "${action}" = "distclean" then set -x # a naive sanity check to make sure we are in a VLC tree test -f vlc-config.in.in -a -f src/libvlc.c || exit 1 # let's rock! find . -false -path './extras/contrib/*' -type f '(' -name '*.[oa]' -o -name '*.l[oa]' -o -name '*.so' -o -name '*.sl' -o -name '*.dylib' -o -name '*.dll' -o -name .dirstamp -o '(' '(' ! -path '\./doc/developer/Makefile\.in' ')' -a -name Makefile.in ')' -o -name 'stamp-h*' -o -name '*~' -o -name '*.bak' -o -name '*.moc.cpp' ')' -exec rm -f '{}' ';' (cd autotools && find . -maxdepth 1 -name '[a-z]*' -not -name 'config.rpath' -exec rm -f '{}' ';') find . -type d -name '.deps' -exec rm -Rf '{}' ';' find . -type d -name '.libs' -exec rm -Rf '{}' ';' # there's some more cruft all around rm -f config.h config.log config.status rm -f vlc vlc-config Makefile Modules.am rm -Rf autom4te.cache echo "\`toolbox --distclean\' is known to be broken." echo "Don't complain if it does not work, or better yet, don't use it." echo "You were warned." # FIXME: a lot of Makefiles are still there fi ## ## 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/" if test ! -d "${distdir}/extras/contrib/src/Distributions" then mkdir "${distdir}/extras/contrib/src/Distributions" fi cp ${srcdir}/extras/contrib/src/Distributions/* "${distdir}/extras/contrib/src/Distributions/" fi