summaryrefslogtreecommitdiff
path: root/db/dist/s_win32_dsp
blob: cd9ce00f0edc50513b2e75323ba3ea1ab2b49a10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/sh -
#	$Id: s_win32_dsp,v 1.10 2003/03/24 10:35:21 mjc 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

    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/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/g" \
        -e "s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/g" \
      < $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
    dynamic )
        create_dsp db_dll " $module " $TMPA \
		$BUILDDIR/dynamic_dsp.src $BUILDDIR/srcfile_dsp.src
        ;;
    small )
        create_dsp db_small " $module " $TMPA \
		$BUILDDIR/small_dsp.src $BUILDDIR/srcfile_dsp.src
        ;;
    static )
        create_dsp db_static " $module " $TMPA \
		$BUILDDIR/static_dsp.src $BUILDDIR/srcfile_dsp.src
        ;;
    java )
        create_dsp db_java " $module " $TMPA \
		$BUILDDIR/java_dsp.src $BUILDDIR/srcfile_dsp.src
        ;;
    tcl )
        create_dsp db_tcl " $module " $TMPA \
		$BUILDDIR/tcl_dsp.src $BUILDDIR/srcfile_dsp.src
        ;;
    testutil )
        create_dsp db_test " $module " $TMPA \
		$BUILDDIR/db_test.src $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
        ;;
    vx )
	;;
    * )
        echo "s_win32_dsp: module name $module in $SRCFILES is unknown type"
        ;;
    esac
done

rm -f $TMPA