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