blob: 35fd402faf76ab9d60f76445610ccae26151fa53 (
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
|
#!/bin/bash -
# $Id$
#
# Build Windows CE .vcproj files
# Build Windows .vcproj files.
. ./RELEASE
create_projects()
{
# project name list
PROJECTS=$1
# xquery script template
TEMPLATE=genproject.template
TEMPLATE_VS2010=vs2010.template
# vs2010 common properties template
LIBTEMPLATE=library.props.template
APPTEMPLATE=application.props.template
# temporary script, post-sed-replacement
TEMP_SCRIPT=genproject.script
# temporary common properties for vs2010
TEMP_LIB=library.props
TEMP_APP=application.props
# xml document input template
CONFIG_INPUT=$2
# temporary xml document, post-sed-replacement
CONFIG_OUTPUT=projects.xml
# location for output project files
PROJECT_OUTPUT_PARENT_DIR=$3
# judge Windows or Win CE for vs2010
WinVersion=$4
if [ $WinVersion = "WinCE" ]; then
VLoop=VS8
else
VLoop="VS8 VS10"
fi
# for each project, substitute 2 variables in the XQuery script, then run it
# temporarily use only VS10 here to omit the generation of VS8
for v in $VLoop
do
if [ $v = "VS71" ]; then
VERSION="7.10"
elif [ $v = "VS8" ]; then
VERSION="8.00"
elif [ $v = "VS10" ]; then
VERSION="10.0"
fi
PROJECT_OUTPUT_DIR="$PROJECT_OUTPUT_PARENT_DIR/$v"
# substitute some variables in the XML document template
if [ $v = "VS10" ]; then
sed -e "s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/g" \
-e "s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/g" \
-e "s/$/
/" \
< $LIBTEMPLATE > $TEMP_LIB
sed -e "s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/g" \
-e "s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/g" \
-e "s/$/
/" \
< $APPTEMPLATE > $TEMP_APP
mv $TEMP_LIB $PROJECT_OUTPUT_DIR/$TEMP_LIB
mv $TEMP_APP $PROJECT_OUTPUT_DIR/$TEMP_APP
fi
sed -e "s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/g" \
-e "s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/g" \
< $CONFIG_INPUT > $CONFIG_OUTPUT
echo "Building for Visual Studio version $VERSION"
for i in `cat $PROJECTS`
do
if [ $v = "VS10" ]; then
sed -e "s!@PROJECT_NAME@!$i!g" -e "s!@PROJECT_INPUT@!$CONFIG_OUTPUT!g" -e "s!@VISUAL_STUDIO_VERSION@!$VERSION!g" < $TEMPLATE_VS2010 > $TEMP_SCRIPT
else
sed -e "s!@PROJECT_NAME@!$i!g" -e "s!@PROJECT_INPUT@!$CONFIG_OUTPUT!g" -e "s!@VISUAL_STUDIO_VERSION@!$VERSION!g" < $TEMPLATE > $TEMP_SCRIPT
fi
if [ $v = "VS7.1" ]; then
TMP=$PROJECT_OUTPUT_DIR/$i.tmp.vcproj
TARG=$PROJECT_OUTPUT_DIR/${i}_vs71.vcproj
elif [ $v = "VS8" ]; then
TMP=$PROJECT_OUTPUT_DIR/$i.tmp.vcproj
TARG=$PROJECT_OUTPUT_DIR/${i}.vcproj
else
TMP=$PROJECT_OUTPUT_DIR/$i.tmp.vcxproj
TARG=$PROJECT_OUTPUT_DIR/${i}.vcxproj
fi
xqilla -o $TMP $TEMP_SCRIPT
rm -f $TEMP_SCRIPT
chmod 644 $TMP
cmp $TMP $TARG > /dev/null 2>&1 ||
(echo "Building $TARG" && rm -f $TARG &&
cp $TMP $TARG)
rm -f $TMP
done
done
# Cleanup.
rm -f $CONFIG_OUTPUT
}
create_projects_csharp()
{
# project name list
PROJECTS=$1
# xquery script template
TEMPLATE=genproject_csharp.template
# temporary script, post-sed-replacement
TEMP_SCRIPT=genproject.script
# xml document input template
CONFIG_INPUT=$2
# temporary xml document, post-sed-replacement
CONFIG_OUTPUT=projects.xml
# substitute some variables in the XML document template
sed -e "s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/g" \
-e "s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/g" \
< $CONFIG_INPUT > $CONFIG_OUTPUT
# for each project, substitute 2 variables in the XQuery script, then run it
for i in `cat $PROJECTS`
do
# Split project path into dir + basename
PROJECT_OUTPUT_DIR=`dirname $i`
i=`basename $i`
sed -e "s!@PROJECT_NAME@!$i!g" -e "s!@PROJECT_INPUT@!$CONFIG_OUTPUT!g" -e "s!@VISUAL_STUDIO_VERSION@!$VERSION!g" < $TEMPLATE > $TEMP_SCRIPT
TMP=$PROJECT_OUTPUT_DIR/$i.tmp.csproj
TARG=$PROJECT_OUTPUT_DIR/${i}.csproj
xqilla -o $TMP $TEMP_SCRIPT
rm -f $TEMP_SCRIPT
chmod 644 $TMP
cmp $TMP $TARG > /dev/null 2>&1 ||
(echo "Building $TARG" && rm -f $TARG &&
cp $TMP $TARG)
rm -f $TMP
done
# Cleanup.
rm -f $CONFIG_OUTPUT
}
# Detect XQilla
which xqilla > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Can not find xqilla command."
exit 1
fi
cd win_projects
# Create/Update Windows project files
echo "Building Visual Studio project files for Windows -- "
echo " output only for modified projects (this can take a while)"
create_projects db.projects projects.template.xml ../../build_windows Win
# Create/Update Windows CE project files
echo "Building Visual Studio project files for Windows CE -- "
echo " output only for modified projects (this can take a while)"
create_projects db_wince.projects projects_wince.template.xml ../../build_wince WinCE
# Create/Update C Sharp project files
echo "Building C Sharp project files -- "
echo " output only for modified projects (this can take a while)"
create_projects_csharp db_csharp.projects projects_csharp.template.xml
cd ..
|