11573Srgrimes# $NetBSD: gen_template.sh,v 1.3 2008/02/26 21:46:38 rafal Exp $
21573Srgrimes#
31573Srgrimes# Copyright (c) 2001 The NetBSD Foundation, Inc.
41573Srgrimes# All rights reserved.
51573Srgrimes#
61573Srgrimes# This code is derived from software contributed to The NetBSD Foundation
71573Srgrimes# by UCHIYAMA Yasushi.
81573Srgrimes#
91573Srgrimes# Redistribution and use in source and binary forms, with or without
101573Srgrimes# modification, are permitted provided that the following conditions
111573Srgrimes# are met:
121573Srgrimes# 1. Redistributions of source code must retain the above copyright
131573Srgrimes#    notice, this list of conditions and the following disclaimer.
141573Srgrimes# 2. Redistributions in binary form must reproduce the above copyright
151573Srgrimes#    notice, this list of conditions and the following disclaimer in the
161573Srgrimes#    documentation and/or other materials provided with the distribution.
171573Srgrimes#
181573Srgrimes# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
191573Srgrimes# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
201573Srgrimes# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
211573Srgrimes# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
221573Srgrimes# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
231573Srgrimes# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
241573Srgrimes# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
251573Srgrimes# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
261573Srgrimes# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
271573Srgrimes# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
281573Srgrimes# POSSIBILITY OF SUCH DAMAGE.
291573Srgrimes#
301573Srgrimes
311573Srgrimes#
3282496Sbde# Generate application/static library dsp/vcp template.
3390039Sobrien#
3490039SobrienTEMPLATE=$TYPE.tmpl
351573SrgrimesDEBUG_VER="Debug"
361573SrgrimesRELEASE_VER="Release"
371573Srgrimesif [ $TYPE != "application" ] ; then
3882496Sbde    PROJECTTYPE="Static Library"
3911659Sphkelse
4082496Sbde    PROJECTTYPE="Application"
41194494Sbrooksfi
42194494Sbrooks
43194494Sbrooks#
4417141Sjkh# Visual C++ version.
451573Srgrimes#
461573Srgrimesvc_ver=$1
47288029Srodrigccase $vc_ver in
481573Srgrimes"vc5")
49194494Sbrooks    echo "Generate template for Visual C++ 5 Windows CE Embeded ToolKit"
50194494Sbrooks    ;;
51194494Sbrooks"vc6")
52194494Sbrooks    echo "Generate template for Visual C++ 6 Windows CE ToolKit"
53122899Sdds    ;;
54194494Sbrooks"evc3"|"evc4")
55122899Sdds    echo "Generate template for Embeded Visual C++ 3/4"
56122899Sdds    ;;
57194494Sbrooks*)
58194494Sbrooks    echo "Unsupported Visual C++ version."
59194494Sbrooks    exit 1
601573Srgrimesesac
61194494Sbrooks
6287054Stobeztmpl_base="tmpl.$vc_ver"
63194494Sbrooksheader_tmpl="$tmpl_base/header"
64194494Sbrooksproject_tmpl="$tmpl_base/project"
65194494Sbrooks
661573Srgrimes#
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