# $NetBSD: gen_template.sh,v 1.4 2008/04/30 13:10:59 martin Exp $ # # Copyright (c) 2001 The NetBSD Foundation, Inc. # All rights reserved. # # This code is derived from software contributed to The NetBSD Foundation # by UCHIYAMA Yasushi. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # # Generate application/static library dsp/vcp template. # TEMPLATE=$TYPE.tmpl DEBUG_VER="Debug" RELEASE_VER="Release" if [ $TYPE != "application" ] ; then PROJECTTYPE="Static Library" else PROJECTTYPE="Application" fi # # Visual C++ version. # vc_ver=$1 case $vc_ver in "vc5") echo "Generate template for Visual C++ 5 Windows CE Embeded ToolKit" ;; "vc6") echo "Generate template for Visual C++ 6 Windows CE ToolKit" ;; "evc3"|"evc4") echo "Generate template for Embeded Visual C++ 3/4" ;; *) echo "Unsupported Visual C++ version." exit 1 esac tmpl_base="tmpl.$vc_ver" header_tmpl="$tmpl_base/header" project_tmpl="$tmpl_base/project" # # Architecture types. # archs="" i=1 n=`expr $#` while [ $i -lt $n ]; do shift 1 archs="$archs $1" i=`expr $i + 1` done echo "Supported architecture [$archs ]" # # DSP/VCP header. # cat $header_tmpl >> $TEMPLATE # # Configuration declare. # echo '!MESSAGE' >> $TEMPLATE for arch in $archs do ARCH_CFG="Win32 (WCE $arch)" CFG="%%% NAME %%% - $ARCH_CFG" echo "!MESSAGE \"$CFG $DEBUG_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE echo "!MESSAGE \"$CFG $RELEASE_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE done echo '!MESSAGE' >> $TEMPLATE # # Project define. # cat $project_tmpl >> $TEMPLATE # # Architecture dependent configuration define. # for arch in $archs do ARCH_CFG="Win32 (WCE $arch)" CFG="%%% NAME %%% - $ARCH_CFG" echo "!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\"" >> $TEMPLATE echo "# PROP BASE Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE echo "# PROP Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE echo "# PROP Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE cat $tmpl_base/$TYPE.$arch$DEBUG_VER >> $TEMPLATE cat $tmpl_base/config.defadd >> $TEMPLATE if [ $TYPE = "application" ] ; then echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE fi echo "!ENDIF" >> $TEMPLATE echo "!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\"" >> $TEMPLATE cat $tmpl_base/config.defprop >> $TEMPLATE echo "# PROP BASE Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE echo "# PROP Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE echo "# PROP Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE cat $tmpl_base/$TYPE.$arch$RELEASE_VER >> $TEMPLATE cat $tmpl_base/config.defadd >> $TEMPLATE if [ $TYPE = "application" ] ; then echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE fi echo "!ENDIF" >> $TEMPLATE done # # Target declare # echo >> $TEMPLATE echo "# Begin Target" >> $TEMPLATE for arch in $archs do ARCH_CFG="Win32 (WCE $arch)" CFG="%%% NAME %%% - $ARCH_CFG" echo "# Name \"$CFG $DEBUG_VER\"" >> $TEMPLATE echo "# Name \"$CFG $RELEASE_VER\"" >> $TEMPLATE done # # Source files # # (MI) cat >> $TEMPLATE <<SRCS # Begin Group "Source Files" %%% SRCFILES %%% SRCS # (MD) for arch in $archs do echo "%%% SRCFILES_$arch %%%" >> $TEMPLATE done # # Footer. # cat >> $TEMPLATE <<FOOTER # End Group # End Target # End Project FOOTER # # Generate MD source files property. # for arch in $archs do ARCH_FILE="property.$arch" rm -f $ARCH_FILE for sub_arch in $archs do ARCH_CFG="Win32 (WCE $sub_arch)" CFG="%%% NAME %%% - $ARCH_CFG" CONDITION_DEBUG="!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\"" CONDITION_RELEASE="!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\"" if [ $sub_arch != $arch ] ; then echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE echo "!ENDIF" >> $ARCH_FILE echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE echo "!ENDIF" >> $ARCH_FILE fi done # mv $ARCH_FILE $ARCH_FILE.0 # awk ' { printf "%s\r\n", $0 }' $ARCH_FILE.0 > $ARCH_FILE # rm -f $ARCH_FILE.0 done # # Generate MD assembler files property and custom build method. # for arch in $archs do ARCH_FILE="asm_build.$arch.0" rm -f $ARCH_FILE for sub_arch in $archs do ARCH_CFG="Win32 (WCE $sub_arch)" CFG="%%% NAME %%% - $ARCH_CFG" CONDITION_DEBUG="!IF \"\$(CFG)\" == \"$CFG $DEBUG_VER\"" CONDITION_RELEASE="!IF \"\$(CFG)\" == \"$CFG $RELEASE_VER\"" if [ $sub_arch != $arch ] ; then echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE echo "!ENDIF" >> $ARCH_FILE echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE echo "!ENDIF" >> $ARCH_FILE else echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE echo "# Begin Custom Build" >> $ARCH_FILE echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE echo " %%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE echo "# End Custom Build" >> $ARCH_FILE echo "!ENDIF" >> $ARCH_FILE echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE echo "# Begin Custom Build" >> $ARCH_FILE echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE echo " %%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE echo "# End Custom Build" >> $ARCH_FILE echo "!ENDIF" >> $ARCH_FILE fi done done # # set assembler. # if [ -f asm_build.ARM.0 ]; then sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARM.0 > asm_build.ARM rm -f asm_build.ARM.0 fi if [ -f asm_build.ARMV4.0 ]; then sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARMV4.0 > asm_build.ARMV4 rm -f asm_build.ARMV4.0 fi if [ -f asm_build.SH.0 ]; then sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH.0 > asm_build.SH rm -f asm_build.SH.0 fi if [ -f asm_build.SH3.0 ]; then sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH3.0 > asm_build.SH3 rm -f asm_build.SH3.0 fi if [ -f asm_build.SH4.0 ]; then sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH4.0 > asm_build.SH4 rm -f asm_build.SH4.0 fi if [ -f asm_build.MIPS.0 ]; then sed 's/%%% ASM %%%/mipsasm.exe/' asm_build.MIPS.0 > asm_build.MIPS rm -f asm_build.MIPS.0 fi