## Copyright (C) 2005 the VideoLAN team
##
## Authors: Samuel Hocevar <sam@zoy.org>
-## Rémi Denis-Courmont <rem # videolan.org>
+## Rémi Denis-Courmont <rem # videolan.org>
###
### Get a sane environment, just in case
cat << EOF
recognized flags are:
--update-vc update Microsoft Visual Studio files
+ --update-vc7 update Microsoft Visual .NET files
--update-po update translation files
--update-includes generate various include files
--update-version generate src/misc/version.c
--update-vc)
action=vc
;;
+ --update-vc7)
+ action=vc7
+ ;;
--update-po)
action=po
;;
do
printf "."
# Top of the project file
- perl -pe 'if(/§SOURCES§/){last;}' < ${target}.in > ${target}
+ 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
EOF
done
# The headers
- perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){if(/§HEADERS§/){last;}print $_}' < ${target}.in >> ${target}
+ perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){if(/§HEADERS§/){last;}print $_}' < ${target}.in >> ${target}
for file in ${LIBVLC_HEADERS}
do
cat >> ${target} << EOF
cat >> ${target} << EOF
# End Group${M}
EOF
- perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
+ perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
done
# plugins files
source="${msdir}/plugins.${suf}.in"
target="${msdir}/plugin_${mod}.${suf}"
printf "."
- perl -pe 'if(/§SOURCES§/){last;} s/§PLUGIN§/'${mod}'/g' < ${source} > ${target}
+ perl -pe 'if(/§SOURCES§/){last;} s/§PLUGIN§/'${mod}'/g' < ${source} > ${target}
for cfile in ${cfiles}
do
cat >> ${target} << EOF
EOF
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}
+ # 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
# End Source File${M}
EOF
done
- # sed -ne '1,/§HEADERS§/d; p' < ${source} >> ${target}
- perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${source} >> ${target}
+ # sed -ne '1,/§HEADERS§/d; p' < ${source} >> ${target}
+ perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${source} >> ${target}
done
done
done
do
printf "."
# Top of the project file
- perl -pe 'if(/§SOURCES§/){last;}' < ${target}.in > ${target}
+ perl -pe 'if(/§SOURCES§/){last;}' < ${target}.in > ${target}
# The source files
cat >> ${target} << EOF
# Begin Source File${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}
+ perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
+ done
+
+ echo " done."
+ exit 0
+fi
+
+##
+## Update the MSVC (.NET) project files
+##
+if test "${action}" = "vc7"
+then
+ echo "generating Visual .NET files"
+
+ srcdir=.
+
+ # The evil ^M. printf '\r' does not work in Cygwin.
+ M='
+'
+
+ # 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`
+ LIBVLC_SYMBOL=`echo $LIBVLC_VERSION | sed -e 'y/.-/__/'`
+
+ # Sources that get built under Win32 - FIXME: anyone wanna deuglify this? :)
+ LIBVLC_SOURCES=`getfiles SOURCES_libvlc_common; getfiles SOURCES_libvlc_win32; getfiles SOURCES_libvlc_dirent; getfiles SOURCES_libvlc_getopt; getfiles SOURCES_libvlc_libc`
+
+ LIBVLC_HEADERS=`getfiles HEADERS_include; getfiles HEADERS_include_built`
+
+ LIBVLC_PKG_HEADERS=`getfiles dist_pkginclude_HEADERS`
+
+ # Clean up
+ rm -f msvc/*.vcproj
+
+ # config files
+ for target in msvc/config.h
+ do
+ printf "."
+ rm -f ${target}
+ sed -e "s/@CODENAME@/${LIBVLC_CODENAME}/" \
+ -e "s/@VERSION@/${LIBVLC_VERSION}/" \
+ -e "s/@SYMBOL@/${LIBVLC_SYMBOL}/" < ${target}.in > ${target}
+ done
+
+ # vlc files
+ target="msvc/vlc.vcproj"
+ printf "."
+ # Top of the project file
+ guid=`perl -e 'sub r {return sprintf("%X", int rand(65536))} print r.r."-".r."-".r."-".r."-".r.r.r'`
+ perl -pe 'if(/§SOURCES§/){last;} s/§GUID§/'${guid}'/g' < ${target}.in > ${target}
+ # The source files
+ cat >> ${target} << EOF
+<File RelativePath="..\\src\\vlc.c"></File>${M}
+EOF
+ # Bottom of the project file - handles resource files too
+ perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
+
+ # libvlc files
+ target=msvc/libvlc.vcproj
+ printf "."
+ # Top of the project file
+ guid=`perl -e 'sub r {return sprintf("%X", int rand(65536))} print r.r."-".r."-".r."-".r."-".r.r.r'`
+ perl -pe 'if(/§SOURCES§/){last;} s/§GUID§/'${guid}'/g' < ${target}.in > ${target}
+ # The source files
+ for file in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep -v "/.*/"`
+ do
+ cat >> ${target} << EOF
+<File RelativePath="..\\`echo ${dir}/${file} | sed 's,/,\\\\,g'`"></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
+<Filter Name="`echo ${subdir} | sed s,/,_,g`" Filter="c;cpp">${M}
+EOF
+ for file in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep "/${subdir}/"`
+ do
+ cat >> ${target} << EOF
+<File RelativePath="..\\`echo ${file} | sed 's,/,\\\\,g'`">${M}
+EOF
+ if echo ${file} | grep -q '.c$'
+ then
+ cat >> ${target} << EOF
+ <FileConfiguration Name="Debug|Win32">${M}
+ <Tool Name="VCCLCompilerTool" ObjectFile="\$(IntDir)/\$(ProjectName)/`echo ${file} | sed -e s/\.c$/.obj/`"/>${M}
+ </FileConfiguration>${M}
+EOF
+ fi
+ cat >> ${target} << EOF
+</File>${M}
+EOF
+ done
+ cat >> ${target} << EOF
+</Filter>${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
+<File RelativePath="..\\`echo ${file} | sed 's,/,\\\\,g'`"></File>${M}
+EOF
+ done
+ cat >> ${target} << EOF
+<Filter Name="vlc" Filter="h;hpp">${M}
+EOF
+ for file in ${LIBVLC_PKG_HEADERS}
+ do
+ cat >> ${target} << EOF
+<File RelativePath="..\\`echo ${file} | sed 's,/,\\\\,g'`"></File>${M}
+EOF
+ done
+ cat >> ${target} << EOF
+</Filter>${M}
+EOF
+ perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
+
+ # plugins files
+ for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' ${srcdir}/configure.ac`
+ do
+ mf="${srcdir}/modules/${dir}/Modules.am"
+ for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
+ do
+ # 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$'`
+ for msdir in msvc
+ do
+ source="${msdir}/plugins.vcproj.in"
+ target="${msdir}/plugin_${mod}.vcproj"
+ printf "."
+ guid=`perl -e 'sub r {return sprintf("%X", int rand(65536))} print r.r."-".r."-".r."-".r."-".r.r.r'`
+ perl -pe 'if(/§SOURCES§/){last;} s/§PLUGIN§/'${mod}'/g' < ${source} | sed 's,§GUID§,'${guid}',' > ${target}
+ for cfile in ${cfiles}
+ do
+ cat >> ${target} << EOF
+<File RelativePath="..\\modules\\`echo ${dir}/${cfile} | sed 's,/,\\\\,g'`"></File>${M}
+EOF
+ 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
+<File RelativePath="..\\modules\\`echo ${dir}/${hfile} | sed 's,/,\\\\,g'`"></File>${M}
+EOF
+ done
+ # sed -ne '1,/§HEADERS§/d; p' < ${source} >> ${target}
+ perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${source} >> ${target}
+ done
+ done
done
echo " done."
if test -z "${builddir}"; then
builddir="`sed -ne 's/^top_builddir *= *//p' < Makefile`"
fi
- BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' vlc-config`
+ BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' ${builddir}/vlc-config`
file="${builddir}/src/misc/modules_builtin.h"
- rm -f ${file}.tmp && cp ${srcdir}/src/misc/modules_builtin.h.in ${file}.tmp
+ rm -f "${file}.tmp"
+ mkdir -p -- "${builddir}/src/misc"
+ cat "${srcdir}/src/misc/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
+ echo "int vlc_entry__`echo $i | sed -e 'y@/@_@' -e 's@\..*@@'`( module_t* );" >> "${file}.tmp"
done
- echo "" >> ${file}.tmp
+ echo "" >> "${file}.tmp"
fi
echo "#define ALLOCATE_ALL_BUILTINS() \\" >> ${file}.tmp
- echo " do \\" >> ${file}.tmp
- echo " { \\" >> ${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
+ echo " ALLOCATE_BUILTIN(`echo $i | sed -e 'y@/@_@' -e 's@\..*@@'`); \\" >> "${file}.tmp"
done
fi
- echo " } while( 0 );" >> ${file}.tmp
- echo "" >> ${file}.tmp
- if diff >/dev/null 2>&1 ${file} ${file}.tmp
+ echo " } while( 0 );" >> "${file}.tmp"
+ echo "" >> "${file}.tmp" || exit 1
+ if diff >/dev/null 2>&1 "${file}" "${file}.tmp"
then
- rm -f ${file}.tmp
+ rm -f "${file}.tmp"
else
echo "creating new ${file}"
- mv -f ${file}.tmp ${file}
+ mv -f "${file}.tmp" "${file}"
fi
exit 0
fi
rm -f ${file}.tmp
+ mkdir -p -- "${builddir}/src/misc"
cat > ${file}.tmp << EOF
/* DO NOT EDIT THIS FILE - IT IS REGENERATED AT EVERY COMPILE -
* IT GIVES BETTER TRACKING OF VLC STABLE AND DEVELOPMENT VERSIONS