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