#!/bin/sh - # $Id: s_win32_dsp,v 1.5 2005/04/12 20:12:14 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" 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!@include@!$incl!g" \ -e "s/@XQUERY_VERSION_MAJOR@/$XQUERY_VERSION_MAJOR/g" \ -e "s/@XQUERY_VERSION_MINOR@/$XQUERY_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 xquery " $module " $TMPA \ $BUILDDIR/xquery.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 ;; * ) echo "s_win32_dsp: module name $module in $SRCFILES is unknown type" ;; esac done rm -f $TMPA