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