gen_template.sh revision 1.1.2.2 1 # $NetBSD: gen_template.sh,v 1.1.2.2 2001/02/11 19:09:36 bouyer 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 "vc6")
56 echo "Generate template for Visual C++ 6 Windows CE ToolKit"
57 ;;
58 "evc3")
59 echo "Generate template for Embeded Visual C++ 3"
60 ;;
61 *)
62 echo "Unsupported Visual C++ version."
63 exit 1
64 esac
65
66 tmpl_base="tmpl.$vc_ver"
67 header_tmpl="$tmpl_base/header"
68 project_tmpl="$tmpl_base/project"
69
70 #
71 # Architecture types.
72 #
73 archs=""
74 i=1
75 n=`expr $#`
76 while [ $i -lt $n ]; do
77 shift 1
78 archs="$archs $1"
79 i=`expr $i + 1`
80 done
81 echo "Supported architecture [$archs ]"
82
83 #
84 # DSP/VCP header.
85 #
86 cat $header_tmpl >> $TEMPLATE
87
88 #
89 # Configuration declare.
90 #
91 echo '!MESSAGE' >> $TEMPLATE
92 for arch in $archs
93 do
94 ARCH_CFG="Win32 (WCE $arch)"
95 CFG="%%% NAME %%% - $ARCH_CFG"
96 echo "!MESSAGE \"$CFG $DEBUG_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE
97 echo "!MESSAGE \"$CFG $RELEASE_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE
98 done
99 echo '!MESSAGE' >> $TEMPLATE
100
101 #
102 # Project define.
103 #
104 cat $project_tmpl >> $TEMPLATE
105
106 #
107 # Architecture dependent configuration define.
108 #
109 for arch in $archs
110 do
111 ARCH_CFG="Win32 (WCE $arch)"
112 CFG="%%% NAME %%% - $ARCH_CFG"
113 echo "!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\"" >> $TEMPLATE
114 echo "# PROP BASE Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
115 echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
116 echo "# PROP Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
117 echo "# PROP Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
118 cat $tmpl_base/$TYPE.$arch$DEBUG_VER >> $TEMPLATE
119 cat $tmpl_base/config.defadd >> $TEMPLATE
120 if [ $TYPE = "application" ] ; then
121 echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
122 fi
123 echo "!ENDIF" >> $TEMPLATE
124 echo "!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\"" >> $TEMPLATE
125 cat $tmpl_base/config.defprop >> $TEMPLATE
126 echo "# PROP BASE Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
127 echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
128 echo "# PROP Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
129 echo "# PROP Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
130 cat $tmpl_base/$TYPE.$arch$RELEASE_VER >> $TEMPLATE
131 cat $tmpl_base/config.defadd >> $TEMPLATE
132 if [ $TYPE = "application" ] ; then
133 echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
134 fi
135 echo "!ENDIF" >> $TEMPLATE
136 done
137
138 #
139 # Target declare
140 #
141 echo >> $TEMPLATE
142 echo "# Begin Target" >> $TEMPLATE
143 for arch in $archs
144 do
145 ARCH_CFG="Win32 (WCE $arch)"
146 CFG="%%% NAME %%% - $ARCH_CFG"
147 echo "# Name \"$CFG $DEBUG_VER\"" >> $TEMPLATE
148 echo "# Name \"$CFG $RELEASE_VER\"" >> $TEMPLATE
149 done
150
151 #
152 # Source files
153 #
154 # (MI)
155 cat >> $TEMPLATE <<SRCS
156
157 # Begin Group "Source Files"
158 %%% SRCFILES %%%
159
160 SRCS
161 # (MD)
162 for arch in $archs
163 do
164 echo "%%% SRCFILES_$arch %%%" >> $TEMPLATE
165 done
166 #
167 # Footer.
168 #
169 cat >> $TEMPLATE <<FOOTER
170
171 # End Group
172 # End Target
173 # End Project
174
175 FOOTER
176
177 #
178 # Generate MD source files property.
179 #
180 for arch in $archs
181 do
182 ARCH_FILE="property.$arch"
183 rm -f $ARCH_FILE
184 for sub_arch in $archs
185 do
186 ARCH_CFG="Win32 (WCE $sub_arch)"
187 CFG="%%% NAME %%% - $ARCH_CFG"
188 CONDITION_DEBUG="!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\""
189 CONDITION_RELEASE="!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\""
190 if [ $sub_arch != $arch ] ; then
191 echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
192 echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
193 echo "!ENDIF" >> $ARCH_FILE
194 echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
195 echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
196 echo "!ENDIF" >> $ARCH_FILE
197 fi
198 done
199 # mv $ARCH_FILE $ARCH_FILE.0
200 # awk ' { printf "%s\r\n", $0 }' $ARCH_FILE.0 > $ARCH_FILE
201 # rm -f $ARCH_FILE.0
202 done
203
204 #
205 # Generate MD assembler files property and custom build method.
206 #
207 for arch in $archs
208 do
209 ARCH_FILE="asm_build.$arch.0"
210 rm -f $ARCH_FILE
211 for sub_arch in $archs
212 do
213 ARCH_CFG="Win32 (WCE $sub_arch)"
214 CFG="%%% NAME %%% - $ARCH_CFG"
215 CONDITION_DEBUG="!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\""
216 CONDITION_RELEASE="!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\""
217 if [ $sub_arch != $arch ] ; then
218 echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
219 echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
220 echo "!ENDIF" >> $ARCH_FILE
221 echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
222 echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
223 echo "!ENDIF" >> $ARCH_FILE
224 else
225 echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
226 echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE
227 echo "# Begin Custom Build" >> $ARCH_FILE
228 echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE
229 echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE
230 echo " %%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE
231 echo "# End Custom Build" >> $ARCH_FILE
232 echo "!ENDIF" >> $ARCH_FILE
233 echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
234 echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE
235 echo "# Begin Custom Build" >> $ARCH_FILE
236 echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE
237 echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE
238 echo " %%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE
239 echo "# End Custom Build" >> $ARCH_FILE
240 echo "!ENDIF" >> $ARCH_FILE
241 fi
242 done
243 done
244
245 #
246 # set assembler.
247 #
248 if [ -f asm_build.ARM.0 ]; then
249 sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARM.0 > asm_build.ARM
250 rm -f asm_build.ARM.0
251 fi
252 if [ -f asm_build.SH3.0 ]; then
253 sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH3.0 > asm_build.SH3
254 rm -f asm_build.SH3.0
255 fi
256 if [ -f asm_build.SH4.0 ]; then
257 sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH4.0 > asm_build.SH4
258 rm -f asm_build.SH4.0
259 fi
260 if [ -f asm_build.MIPS.0 ]; then
261 sed 's/%%% ASM %%%/mipsasm.exe/' asm_build.MIPS.0 > asm_build.MIPS
262 rm -f asm_build.MIPS.0
263 fi
264