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