Home | History | Annotate | Line # | Download | only in dspgen
gen_template.sh revision 1.1.2.2
      1 # $NetBSD: gen_template.sh,v 1.1.2.2 2001/02/11 19:09:36 bouyer 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 "vc6")
     56     echo "Generate template for Visual C++ 6 Windows CE ToolKit"
     57     ;;
     58 "evc3")
     59     echo "Generate template for Embeded Visual C++ 3"
     60     ;;
     61 *)
     62     echo "Unsupported Visual C++ version."
     63     exit 1
     64 esac
     65 
     66 tmpl_base="tmpl.$vc_ver"
     67 header_tmpl="$tmpl_base/header"
     68 project_tmpl="$tmpl_base/project"
     69 
     70 #
     71 # Architecture types.
     72 #
     73 archs=""
     74 i=1
     75 n=`expr $#`
     76 while [ $i -lt $n ]; do
     77     shift 1
     78     archs="$archs $1"
     79     i=`expr $i + 1`
     80 done
     81 echo "Supported architecture [$archs ]"
     82 
     83 #
     84 # DSP/VCP header.
     85 #
     86 cat $header_tmpl >> $TEMPLATE 
     87 
     88 #
     89 # Configuration declare.
     90 #
     91 echo '!MESSAGE' >> $TEMPLATE
     92 for arch in $archs
     93 do
     94     ARCH_CFG="Win32 (WCE $arch)"
     95     CFG="%%% NAME %%% - $ARCH_CFG"
     96     echo "!MESSAGE \"$CFG $DEBUG_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE
     97     echo "!MESSAGE \"$CFG $RELEASE_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE
     98 done
     99 echo '!MESSAGE' >> $TEMPLATE
    100 
    101 #
    102 # Project define.
    103 #
    104 cat $project_tmpl >> $TEMPLATE
    105 
    106 #
    107 # Architecture dependent configuration define.
    108 #
    109 for arch in $archs
    110 do
    111     ARCH_CFG="Win32 (WCE $arch)"
    112     CFG="%%% NAME %%% - $ARCH_CFG"
    113     echo "!IF  \"\$(CFG)\" == \"$CFG $DEBUG_VER\"" >> $TEMPLATE
    114     echo "# PROP BASE Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    115     echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    116     echo "# PROP Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    117     echo "# PROP Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    118     cat $tmpl_base/$TYPE.$arch$DEBUG_VER >> $TEMPLATE
    119     cat $tmpl_base/config.defadd >> $TEMPLATE
    120     if [ $TYPE = "application" ] ; then
    121 	echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    122     fi
    123     echo "!ENDIF" >> $TEMPLATE
    124     echo "!IF  \"\$(CFG)\" == \"$CFG $RELEASE_VER\"" >> $TEMPLATE
    125     cat $tmpl_base/config.defprop >> $TEMPLATE
    126     echo "# PROP BASE Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    127     echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    128     echo "# PROP Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    129     echo "# PROP Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    130     cat $tmpl_base/$TYPE.$arch$RELEASE_VER >> $TEMPLATE
    131     cat $tmpl_base/config.defadd >> $TEMPLATE
    132     if [ $TYPE = "application" ] ; then
    133 	echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    134     fi
    135     echo "!ENDIF" >> $TEMPLATE
    136 done
    137 
    138 #
    139 # Target declare
    140 #
    141 echo >> $TEMPLATE
    142 echo "# Begin Target" >> $TEMPLATE
    143 for arch in $archs
    144 do
    145     ARCH_CFG="Win32 (WCE $arch)"
    146     CFG="%%% NAME %%% - $ARCH_CFG"
    147     echo "# Name \"$CFG $DEBUG_VER\"" >> $TEMPLATE
    148     echo "# Name \"$CFG $RELEASE_VER\"" >> $TEMPLATE
    149 done
    150 
    151 #
    152 # Source files
    153 #
    154 # (MI)
    155 cat >> $TEMPLATE <<SRCS
    156 
    157 # Begin Group "Source Files"
    158 %%% SRCFILES %%%
    159 
    160 SRCS
    161 # (MD)
    162 for arch in $archs
    163 do
    164     echo "%%% SRCFILES_$arch %%%" >> $TEMPLATE
    165 done
    166 #
    167 # Footer.
    168 #
    169 cat >> $TEMPLATE <<FOOTER
    170 
    171 # End Group
    172 # End Target
    173 # End Project
    174 
    175 FOOTER
    176 
    177 #
    178 # Generate MD source files property.
    179 #
    180 for arch in $archs
    181 do
    182     ARCH_FILE="property.$arch"
    183     rm -f $ARCH_FILE
    184     for sub_arch in $archs
    185     do
    186 	ARCH_CFG="Win32 (WCE $sub_arch)"
    187 	CFG="%%% NAME %%% - $ARCH_CFG"
    188 	CONDITION_DEBUG="!IF  \"\$(CFG)\" == \"$CFG $DEBUG_VER\""
    189 	CONDITION_RELEASE="!IF  \"\$(CFG)\" == \"$CFG $RELEASE_VER\""
    190 	if [ $sub_arch != $arch ] ; then
    191 	    echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
    192 	    echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
    193 	    echo "!ENDIF" >> $ARCH_FILE
    194 	    echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
    195 	    echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
    196 	    echo "!ENDIF" >> $ARCH_FILE
    197 	fi
    198     done
    199 #    mv $ARCH_FILE $ARCH_FILE.0
    200 #    awk ' { printf "%s\r\n", $0 }' $ARCH_FILE.0 > $ARCH_FILE
    201 #    rm -f $ARCH_FILE.0
    202 done
    203 
    204 #
    205 # Generate MD assembler files property and custom build method.
    206 #
    207 for arch in $archs
    208 do
    209     ARCH_FILE="asm_build.$arch.0"
    210     rm -f $ARCH_FILE
    211     for sub_arch in $archs
    212     do
    213 	ARCH_CFG="Win32 (WCE $sub_arch)"
    214 	CFG="%%% NAME %%% - $ARCH_CFG"
    215 	CONDITION_DEBUG="!IF  \"\$(CFG)\" == \"$CFG $DEBUG_VER\""
    216 	CONDITION_RELEASE="!IF  \"\$(CFG)\" == \"$CFG $RELEASE_VER\""
    217 	if [ $sub_arch != $arch ] ; then
    218 	    echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
    219 	    echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
    220 	    echo "!ENDIF" >> $ARCH_FILE
    221 	    echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
    222 	    echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
    223 	    echo "!ENDIF" >> $ARCH_FILE
    224 	else
    225 	    echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
    226 	    echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE
    227 	    echo "# Begin Custom Build" >> $ARCH_FILE
    228 	    echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE
    229 	    echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE
    230 	    echo "	%%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE
    231 	    echo "# End Custom Build" >> $ARCH_FILE
    232 	    echo "!ENDIF" >> $ARCH_FILE
    233 	    echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
    234 	    echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE
    235 	    echo "# Begin Custom Build" >> $ARCH_FILE
    236 	    echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE
    237 	    echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE
    238 	    echo "	%%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE
    239 	    echo "# End Custom Build" >> $ARCH_FILE
    240 	    echo "!ENDIF" >> $ARCH_FILE
    241 	fi
    242     done
    243 done
    244 
    245 #
    246 # set assembler.
    247 #
    248 if [ -f asm_build.ARM.0 ]; then
    249     sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARM.0 > asm_build.ARM
    250     rm -f asm_build.ARM.0
    251 fi
    252 if [ -f asm_build.SH3.0 ]; then
    253     sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH3.0 > asm_build.SH3
    254     rm -f asm_build.SH3.0
    255 fi
    256 if [ -f asm_build.SH4.0 ]; then
    257     sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH4.0 > asm_build.SH4
    258     rm -f asm_build.SH4.0
    259 fi
    260 if [ -f asm_build.MIPS.0 ]; then
    261     sed 's/%%% ASM %%%/mipsasm.exe/' asm_build.MIPS.0 > asm_build.MIPS
    262     rm -f asm_build.MIPS.0
    263 fi
    264