Home | History | Annotate | Line # | Download | only in dspgen
gen_template.sh revision 1.2.40.1
      1 # $NetBSD: gen_template.sh,v 1.2.40.1 2008/02/27 08:36:19 yamt 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 #
     41 TEMPLATE=$TYPE.tmpl
     42 DEBUG_VER="Debug"
     43 RELEASE_VER="Release"
     44 if [ $TYPE != "application" ] ; then
     45     PROJECTTYPE="Static Library"
     46 else
     47     PROJECTTYPE="Application"
     48 fi
     49 
     50 #
     51 # Visual C++ version.
     52 #
     53 vc_ver=$1
     54 case $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"|"evc4")
     62     echo "Generate template for Embeded Visual C++ 3/4"
     63     ;;
     64 *)
     65     echo "Unsupported Visual C++ version."
     66     exit 1
     67 esac
     68 
     69 tmpl_base="tmpl.$vc_ver"
     70 header_tmpl="$tmpl_base/header"
     71 project_tmpl="$tmpl_base/project"
     72 
     73 #
     74 # Architecture types.
     75 #
     76 archs=""
     77 i=1
     78 n=`expr $#`
     79 while [ $i -lt $n ]; do
     80     shift 1
     81     archs="$archs $1"
     82     i=`expr $i + 1`
     83 done
     84 echo "Supported architecture [$archs ]"
     85 
     86 #
     87 # DSP/VCP header.
     88 #
     89 cat $header_tmpl >> $TEMPLATE 
     90 
     91 #
     92 # Configuration declare.
     93 #
     94 echo '!MESSAGE' >> $TEMPLATE
     95 for arch in $archs
     96 do
     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
    101 done
    102 echo '!MESSAGE' >> $TEMPLATE
    103 
    104 #
    105 # Project define.
    106 #
    107 cat $project_tmpl >> $TEMPLATE
    108 
    109 #
    110 # Architecture dependent configuration define.
    111 #
    112 for arch in $archs
    113 do
    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
    139 done
    140 
    141 #
    142 # Target declare
    143 #
    144 echo >> $TEMPLATE
    145 echo "# Begin Target" >> $TEMPLATE
    146 for arch in $archs
    147 do
    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
    152 done
    153 
    154 #
    155 # Source files
    156 #
    157 # (MI)
    158 cat >> $TEMPLATE <<SRCS
    159 
    160 # Begin Group "Source Files"
    161 %%% SRCFILES %%%
    162 
    163 SRCS
    164 # (MD)
    165 for arch in $archs
    166 do
    167     echo "%%% SRCFILES_$arch %%%" >> $TEMPLATE
    168 done
    169 #
    170 # Footer.
    171 #
    172 cat >> $TEMPLATE <<FOOTER
    173 
    174 # End Group
    175 # End Target
    176 # End Project
    177 
    178 FOOTER
    179 
    180 #
    181 # Generate MD source files property.
    182 #
    183 for arch in $archs
    184 do
    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
    205 done
    206 
    207 #
    208 # Generate MD assembler files property and custom build method.
    209 #
    210 for arch in $archs
    211 do
    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
    246 done
    247 
    248 #
    249 # set assembler.
    250 #
    251 if [ -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
    254 fi
    255 if [ -f asm_build.ARMV4.0 ]; then
    256     sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARMV4.0 > asm_build.ARMV4
    257     rm -f asm_build.ARMV4.0
    258 fi
    259 if [ -f asm_build.SH.0 ]; then
    260     sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH.0 > asm_build.SH
    261     rm -f asm_build.SH.0
    262 fi
    263 if [ -f asm_build.SH3.0 ]; then
    264     sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH3.0 > asm_build.SH3
    265     rm -f asm_build.SH3.0
    266 fi
    267 if [ -f asm_build.SH4.0 ]; then
    268     sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH4.0 > asm_build.SH4
    269     rm -f asm_build.SH4.0
    270 fi
    271 if [ -f asm_build.MIPS.0 ]; then
    272     sed 's/%%% ASM %%%/mipsasm.exe/' asm_build.MIPS.0 > asm_build.MIPS
    273     rm -f asm_build.MIPS.0
    274 fi
    275