gen_template.sh revision 1.2.98.1 1 # $NetBSD: gen_template.sh,v 1.2.98.1 2008/02/28 21:47:53 rjs Exp $
2 #
3 # Copyright (c) 2001 The NetBSD Foundation, Inc.
4 # All rights reserved.
5 #
6 # This code is derived from software contributed to The NetBSD Foundation
7 # by UCHIYAMA Yasushi.
8 #
9 # Redistribution and use in source and binary forms, with or without
10 # modification, are permitted provided that the following conditions
11 # are met:
12 # 1. Redistributions of source code must retain the above copyright
13 # notice, this list of conditions and the following disclaimer.
14 # 2. Redistributions in binary form must reproduce the above copyright
15 # notice, this list of conditions and the following disclaimer in the
16 # documentation and/or other materials provided with the distribution.
17 # 3. All advertising materials mentioning features or use of this software
18 # must display the following acknowledgement:
19 # This product includes software developed by the NetBSD
20 # Foundation, Inc. and its contributors.
21 # 4. Neither the name of The NetBSD Foundation nor the names of its
22 # contributors may be used to endorse or promote products derived
23 # from this software without specific prior written permission.
24 #
25 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
26 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
29 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 # POSSIBILITY OF SUCH DAMAGE.
36 #
37
38 #
39 # Generate application/static library dsp/vcp template.
40 #
41 TEMPLATE=$TYPE.tmpl
42 DEBUG_VER="Debug"
43 RELEASE_VER="Release"
44 if [ $TYPE != "application" ] ; then
45 PROJECTTYPE="Static Library"
46 else
47 PROJECTTYPE="Application"
48 fi
49
50 #
51 # Visual C++ version.
52 #
53 vc_ver=$1
54 case $vc_ver in
55 "vc5")
56 echo "Generate template for Visual C++ 5 Windows CE Embeded ToolKit"
57 ;;
58 "vc6")
59 echo "Generate template for Visual C++ 6 Windows CE ToolKit"
60 ;;
61 "evc3"|"evc4")
62 echo "Generate template for Embeded Visual C++ 3/4"
63 ;;
64 *)
65 echo "Unsupported Visual C++ version."
66 exit 1
67 esac
68
69 tmpl_base="tmpl.$vc_ver"
70 header_tmpl="$tmpl_base/header"
71 project_tmpl="$tmpl_base/project"
72
73 #
74 # Architecture types.
75 #
76 archs=""
77 i=1
78 n=`expr $#`
79 while [ $i -lt $n ]; do
80 shift 1
81 archs="$archs $1"
82 i=`expr $i + 1`
83 done
84 echo "Supported architecture [$archs ]"
85
86 #
87 # DSP/VCP header.
88 #
89 cat $header_tmpl >> $TEMPLATE
90
91 #
92 # Configuration declare.
93 #
94 echo '!MESSAGE' >> $TEMPLATE
95 for arch in $archs
96 do
97 ARCH_CFG="Win32 (WCE $arch)"
98 CFG="%%% NAME %%% - $ARCH_CFG"
99 echo "!MESSAGE \"$CFG $DEBUG_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE
100 echo "!MESSAGE \"$CFG $RELEASE_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE
101 done
102 echo '!MESSAGE' >> $TEMPLATE
103
104 #
105 # Project define.
106 #
107 cat $project_tmpl >> $TEMPLATE
108
109 #
110 # Architecture dependent configuration define.
111 #
112 for arch in $archs
113 do
114 ARCH_CFG="Win32 (WCE $arch)"
115 CFG="%%% NAME %%% - $ARCH_CFG"
116 echo "!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\"" >> $TEMPLATE
117 echo "# PROP BASE Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
118 echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
119 echo "# PROP Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
120 echo "# PROP Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
121 cat $tmpl_base/$TYPE.$arch$DEBUG_VER >> $TEMPLATE
122 cat $tmpl_base/config.defadd >> $TEMPLATE
123 if [ $TYPE = "application" ] ; then
124 echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
125 fi
126 echo "!ENDIF" >> $TEMPLATE
127 echo "!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\"" >> $TEMPLATE
128 cat $tmpl_base/config.defprop >> $TEMPLATE
129 echo "# PROP BASE Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
130 echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
131 echo "# PROP Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
132 echo "# PROP Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
133 cat $tmpl_base/$TYPE.$arch$RELEASE_VER >> $TEMPLATE
134 cat $tmpl_base/config.defadd >> $TEMPLATE
135 if [ $TYPE = "application" ] ; then
136 echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
137 fi
138 echo "!ENDIF" >> $TEMPLATE
139 done
140
141 #
142 # Target declare
143 #
144 echo >> $TEMPLATE
145 echo "# Begin Target" >> $TEMPLATE
146 for arch in $archs
147 do
148 ARCH_CFG="Win32 (WCE $arch)"
149 CFG="%%% NAME %%% - $ARCH_CFG"
150 echo "# Name \"$CFG $DEBUG_VER\"" >> $TEMPLATE
151 echo "# Name \"$CFG $RELEASE_VER\"" >> $TEMPLATE
152 done
153
154 #
155 # Source files
156 #
157 # (MI)
158 cat >> $TEMPLATE <<SRCS
159
160 # Begin Group "Source Files"
161 %%% SRCFILES %%%
162
163 SRCS
164 # (MD)
165 for arch in $archs
166 do
167 echo "%%% SRCFILES_$arch %%%" >> $TEMPLATE
168 done
169 #
170 # Footer.
171 #
172 cat >> $TEMPLATE <<FOOTER
173
174 # End Group
175 # End Target
176 # End Project
177
178 FOOTER
179
180 #
181 # Generate MD source files property.
182 #
183 for arch in $archs
184 do
185 ARCH_FILE="property.$arch"
186 rm -f $ARCH_FILE
187 for sub_arch in $archs
188 do
189 ARCH_CFG="Win32 (WCE $sub_arch)"
190 CFG="%%% NAME %%% - $ARCH_CFG"
191 CONDITION_DEBUG="!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\""
192 CONDITION_RELEASE="!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\""
193 if [ $sub_arch != $arch ] ; then
194 echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
195 echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
196 echo "!ENDIF" >> $ARCH_FILE
197 echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
198 echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
199 echo "!ENDIF" >> $ARCH_FILE
200 fi
201 done
202 # mv $ARCH_FILE $ARCH_FILE.0
203 # awk ' { printf "%s\r\n", $0 }' $ARCH_FILE.0 > $ARCH_FILE
204 # rm -f $ARCH_FILE.0
205 done
206
207 #
208 # Generate MD assembler files property and custom build method.
209 #
210 for arch in $archs
211 do
212 ARCH_FILE="asm_build.$arch.0"
213 rm -f $ARCH_FILE
214 for sub_arch in $archs
215 do
216 ARCH_CFG="Win32 (WCE $sub_arch)"
217 CFG="%%% NAME %%% - $ARCH_CFG"
218 CONDITION_DEBUG="!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\""
219 CONDITION_RELEASE="!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\""
220 if [ $sub_arch != $arch ] ; then
221 echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
222 echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
223 echo "!ENDIF" >> $ARCH_FILE
224 echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
225 echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
226 echo "!ENDIF" >> $ARCH_FILE
227 else
228 echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
229 echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE
230 echo "# Begin Custom Build" >> $ARCH_FILE
231 echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE
232 echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE
233 echo " %%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE
234 echo "# End Custom Build" >> $ARCH_FILE
235 echo "!ENDIF" >> $ARCH_FILE
236 echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
237 echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE
238 echo "# Begin Custom Build" >> $ARCH_FILE
239 echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE
240 echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE
241 echo " %%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE
242 echo "# End Custom Build" >> $ARCH_FILE
243 echo "!ENDIF" >> $ARCH_FILE
244 fi
245 done
246 done
247
248 #
249 # set assembler.
250 #
251 if [ -f asm_build.ARM.0 ]; then
252 sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARM.0 > asm_build.ARM
253 rm -f asm_build.ARM.0
254 fi
255 if [ -f asm_build.ARMV4.0 ]; then
256 sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARMV4.0 > asm_build.ARMV4
257 rm -f asm_build.ARMV4.0
258 fi
259 if [ -f asm_build.SH.0 ]; then
260 sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH.0 > asm_build.SH
261 rm -f asm_build.SH.0
262 fi
263 if [ -f asm_build.SH3.0 ]; then
264 sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH3.0 > asm_build.SH3
265 rm -f asm_build.SH3.0
266 fi
267 if [ -f asm_build.SH4.0 ]; then
268 sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH4.0 > asm_build.SH4
269 rm -f asm_build.SH4.0
270 fi
271 if [ -f asm_build.MIPS.0 ]; then
272 sed 's/%%% ASM %%%/mipsasm.exe/' asm_build.MIPS.0 > asm_build.MIPS
273 rm -f asm_build.MIPS.0
274 fi
275