Home | History | Annotate | Line # | Download | only in dspgen
gen_template.sh revision 1.3.4.1
      1 # $NetBSD: gen_template.sh,v 1.3.4.1 2008/05/16 02:22:23 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 #
     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 #
     34 TEMPLATE=$TYPE.tmpl
     35 DEBUG_VER="Debug"
     36 RELEASE_VER="Release"
     37 if [ $TYPE != "application" ] ; then
     38     PROJECTTYPE="Static Library"
     39 else
     40     PROJECTTYPE="Application"
     41 fi
     42 
     43 #
     44 # Visual C++ version.
     45 #
     46 vc_ver=$1
     47 case $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
     60 esac
     61 
     62 tmpl_base="tmpl.$vc_ver"
     63 header_tmpl="$tmpl_base/header"
     64 project_tmpl="$tmpl_base/project"
     65 
     66 #
     67 # Architecture types.
     68 #
     69 archs=""
     70 i=1
     71 n=`expr $#`
     72 while [ $i -lt $n ]; do
     73     shift 1
     74     archs="$archs $1"
     75     i=`expr $i + 1`
     76 done
     77 echo "Supported architecture [$archs ]"
     78 
     79 #
     80 # DSP/VCP header.
     81 #
     82 cat $header_tmpl >> $TEMPLATE 
     83 
     84 #
     85 # Configuration declare.
     86 #
     87 echo '!MESSAGE' >> $TEMPLATE
     88 for arch in $archs
     89 do
     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
     94 done
     95 echo '!MESSAGE' >> $TEMPLATE
     96 
     97 #
     98 # Project define.
     99 #
    100 cat $project_tmpl >> $TEMPLATE
    101 
    102 #
    103 # Architecture dependent configuration define.
    104 #
    105 for arch in $archs
    106 do
    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
    132 done
    133 
    134 #
    135 # Target declare
    136 #
    137 echo >> $TEMPLATE
    138 echo "# Begin Target" >> $TEMPLATE
    139 for arch in $archs
    140 do
    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
    145 done
    146 
    147 #
    148 # Source files
    149 #
    150 # (MI)
    151 cat >> $TEMPLATE <<SRCS
    152 
    153 # Begin Group "Source Files"
    154 %%% SRCFILES %%%
    155 
    156 SRCS
    157 # (MD)
    158 for arch in $archs
    159 do
    160     echo "%%% SRCFILES_$arch %%%" >> $TEMPLATE
    161 done
    162 #
    163 # Footer.
    164 #
    165 cat >> $TEMPLATE <<FOOTER
    166 
    167 # End Group
    168 # End Target
    169 # End Project
    170 
    171 FOOTER
    172 
    173 #
    174 # Generate MD source files property.
    175 #
    176 for arch in $archs
    177 do
    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
    198 done
    199 
    200 #
    201 # Generate MD assembler files property and custom build method.
    202 #
    203 for arch in $archs
    204 do
    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
    239 done
    240 
    241 #
    242 # set assembler.
    243 #
    244 if [ -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
    247 fi
    248 if [ -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
    251 fi
    252 if [ -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
    255 fi
    256 if [ -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
    259 fi
    260 if [ -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
    263 fi
    264 if [ -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
    267 fi
    268