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