#!/bin/sh - # $Id: s_win32_dsp,v 1.13 2005/03/24 18:23:57 gmf Exp $ # # Build Windows/32 .dsp files. . RELEASE BUILDDIR=../build_win32 SRCFILES=srcfiles.in create_dsp() { projname="$1" # name of the .dsp file match="$2" # the string used to egrep the $sources file sources="$3" # a modified version of $SRCFILES to facilitate matches dsptemplate="$4" # overall template file for the .dsp srctemplate="$5" # template file for the src file fragments dspoutput=$BUILDDIR/$projname.dsp # destination targets for build components libDest="../../lib" binRelDest="../../bin" binDebugDest="../../bin/debug" jarDest="../../jar" jarDebugDest="../../jar/debug" incl="../../include" rm -f $dspoutput.insert for srcpath in `egrep "$match" $sources | sed -e 's/[ ].*//'` do # take the path name and break it up, converting / to \\. # so many backslashes needed because of shell quoting and # sed quoting -- we'll end up with two backslashes for every # forward slash, but we need that when feeding that to the # later sed command. set - `echo $srcpath | sed -e 's;\(.*\)/;../\\1 ;' \ -e 's;../build_win32;.;' \ -e 's;/;\\\\\\\\;g'` srcdir="$1" srcfile="$2" sed -e "s/@srcdir@/$srcdir/g" \ -e "s/@srcfile@/$srcfile/g" \ < $srctemplate >> $dspoutput.insert done sed -e "/@SOURCE_FILES@/r$dspoutput.insert" \ -e "/@SOURCE_FILES@/d" \ -e "s/@project_name@/$projname/g" \ -e "s!@lib_dest@!$libDest!g" \ -e "s!@bin_rel_dest@!$binRelDest!g" \ -e "s!@bin_debug_dest@!$binDebugDest!g" \ -e "s!@jar_rel_dest@!$jarDest!g" \ -e "s!@jar_debug_dest@!$jarDebugDest!g" \ -e "s!@include@!$incl!g" \ -e "s/@DBXML_VERSION_MAJOR@/$DBXML_VERSION_MAJOR/g" \ -e "s/@DBXML_VERSION_MINOR@/$DBXML_VERSION_MINOR/g" \ -f lib_paths.sed \ < $dsptemplate > $dspoutput.new # Set the file mode to 644 because the VC++ IDE needs a writeable file # in our development environment. cmp $dspoutput.new $dspoutput > /dev/null 2>&1 || (echo "Building $dspoutput" && rm -f $dspoutput && cp $dspoutput.new $dspoutput && chmod 664 $dspoutput) rm -f $dspoutput.insert $dspoutput.new } TMPA=/tmp/swin32dsp$$a trap "rm -f $TMPA; exit 1" 1 2 3 15 # create a copy of the srcfiles with comments and empty lines removed. # add a space at the end of each list of modules so that each module # can be unambiguously matched e.g. ' dynamic ' sed -e "s/#.*$//" \ -e "/^[ ]*$/d" \ -e "s/[ ][ ]*/ /" \ -e "s/[ ]*$//" \ -e "/[ ]/!d" \ -e "s/$/ /" < $SRCFILES > $TMPA # get a list of all modules mentioned # MODULES="`sed -e 's/^[^ ]* //' < $TMPA \ | tr ' ' '\012' | sort | uniq`" for module in $MODULES do case "$module" in lib ) create_dsp dbxml " $module " $TMPA \ $BUILDDIR/dbxml.src $BUILDDIR/srcfile_dsp.src ;; dll=* ) dllname=`echo $module | sed -e 's/^dll=//'` if [ -f $BUILDDIR/$dllname.src ] ; then srcname=$BUILDDIR/$dllname.src else srcname=$BUILDDIR/dll_dsp.src fi create_dsp $dllname " $module " $TMPA \ $srcname $BUILDDIR/srcfile_dsp.src ;; app=* ) appname=`echo $module | sed -e 's/^app=//'` if [ -f $BUILDDIR/$appname.src ] ; then srcname=$BUILDDIR/$appname.src else srcname=$BUILDDIR/app_dsp.src fi create_dsp $appname " $module " $TMPA \ $srcname $BUILDDIR/srcfile_dsp.src ;; test=* ) appname=`echo $module | sed -e 's/^test=//'` create_dsp $appname " $module " $TMPA \ $BUILDDIR/test_dsp.src $BUILDDIR/srcfile_dsp.src ;; * ) echo "s_win32_dsp: module name $module in $SRCFILES is unknown type" ;; esac done f=$BUILDDIR/BDBXML_all.dsw sed -f lib_paths.sed < $f.template | sed 's,/,\\,g' > $TMPA cmp $TMPA $f > /dev/null 2>&1 || (echo "$f" && rm -f $f && cp $TMPA $f && chmod 664 $f) rm -f $TMPA