xref: /netbsd/sys/arch/hpc/stand/dspgen/gen_template.sh (revision bf9ec67e)
1# $NetBSD: gen_template.sh,v 1.2 2001/03/04 16:51:05 uch 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#
41TEMPLATE=$TYPE.tmpl
42DEBUG_VER="Debug"
43RELEASE_VER="Release"
44if [ $TYPE != "application" ] ; then
45    PROJECTTYPE="Static Library"
46else
47    PROJECTTYPE="Application"
48fi
49
50#
51# Visual C++ version.
52#
53vc_ver=$1
54case $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")
62    echo "Generate template for Embeded Visual C++ 3"
63    ;;
64*)
65    echo "Unsupported Visual C++ version."
66    exit 1
67esac
68
69tmpl_base="tmpl.$vc_ver"
70header_tmpl="$tmpl_base/header"
71project_tmpl="$tmpl_base/project"
72
73#
74# Architecture types.
75#
76archs=""
77i=1
78n=`expr $#`
79while [ $i -lt $n ]; do
80    shift 1
81    archs="$archs $1"
82    i=`expr $i + 1`
83done
84echo "Supported architecture [$archs ]"
85
86#
87# DSP/VCP header.
88#
89cat $header_tmpl >> $TEMPLATE
90
91#
92# Configuration declare.
93#
94echo '!MESSAGE' >> $TEMPLATE
95for arch in $archs
96do
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
101done
102echo '!MESSAGE' >> $TEMPLATE
103
104#
105# Project define.
106#
107cat $project_tmpl >> $TEMPLATE
108
109#
110# Architecture dependent configuration define.
111#
112for arch in $archs
113do
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
139done
140
141#
142# Target declare
143#
144echo >> $TEMPLATE
145echo "# Begin Target" >> $TEMPLATE
146for arch in $archs
147do
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
152done
153
154#
155# Source files
156#
157# (MI)
158cat >> $TEMPLATE <<SRCS
159
160# Begin Group "Source Files"
161%%% SRCFILES %%%
162
163SRCS
164# (MD)
165for arch in $archs
166do
167    echo "%%% SRCFILES_$arch %%%" >> $TEMPLATE
168done
169#
170# Footer.
171#
172cat >> $TEMPLATE <<FOOTER
173
174# End Group
175# End Target
176# End Project
177
178FOOTER
179
180#
181# Generate MD source files property.
182#
183for arch in $archs
184do
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
205done
206
207#
208# Generate MD assembler files property and custom build method.
209#
210for arch in $archs
211do
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
246done
247
248#
249# set assembler.
250#
251if [ -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
254fi
255if [ -f asm_build.SH.0 ]; then
256    sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH.0 > asm_build.SH
257    rm -f asm_build.SH.0
258fi
259if [ -f asm_build.SH3.0 ]; then
260    sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH3.0 > asm_build.SH3
261    rm -f asm_build.SH3.0
262fi
263if [ -f asm_build.SH4.0 ]; then
264    sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH4.0 > asm_build.SH4
265    rm -f asm_build.SH4.0
266fi
267if [ -f asm_build.MIPS.0 ]; then
268    sed 's/%%% ASM %%%/mipsasm.exe/' asm_build.MIPS.0 > asm_build.MIPS
269    rm -f asm_build.MIPS.0
270fi
271