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