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