Home | History | Annotate | Line # | Download | only in dspgen
gen_template.sh revision 1.2.126.1
      1  1.2.126.1  mjf # $NetBSD: gen_template.sh,v 1.2.126.1 2008/04/03 12:42:16 mjf Exp $
      2        1.1  uch #
      3        1.1  uch # Copyright (c) 2001 The NetBSD Foundation, Inc.
      4        1.1  uch # All rights reserved.
      5        1.1  uch #
      6        1.1  uch # This code is derived from software contributed to The NetBSD Foundation
      7        1.1  uch # by UCHIYAMA Yasushi.
      8        1.1  uch #
      9        1.1  uch # Redistribution and use in source and binary forms, with or without
     10        1.1  uch # modification, are permitted provided that the following conditions
     11        1.1  uch # are met:
     12        1.1  uch # 1. Redistributions of source code must retain the above copyright
     13        1.1  uch #    notice, this list of conditions and the following disclaimer.
     14        1.1  uch # 2. Redistributions in binary form must reproduce the above copyright
     15        1.1  uch #    notice, this list of conditions and the following disclaimer in the
     16        1.1  uch #    documentation and/or other materials provided with the distribution.
     17        1.1  uch # 3. All advertising materials mentioning features or use of this software
     18        1.1  uch #    must display the following acknowledgement:
     19        1.1  uch #        This product includes software developed by the NetBSD
     20        1.1  uch #        Foundation, Inc. and its contributors.
     21        1.1  uch # 4. Neither the name of The NetBSD Foundation nor the names of its
     22        1.1  uch #    contributors may be used to endorse or promote products derived
     23        1.1  uch #    from this software without specific prior written permission.
     24        1.1  uch #
     25        1.1  uch # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     26        1.1  uch # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     27        1.1  uch # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     28        1.1  uch # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     29        1.1  uch # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     30        1.1  uch # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     31        1.1  uch # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     32        1.1  uch # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     33        1.1  uch # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     34        1.1  uch # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     35        1.1  uch # POSSIBILITY OF SUCH DAMAGE.
     36        1.1  uch #
     37        1.1  uch 
     38        1.1  uch #
     39        1.1  uch # Generate application/static library dsp/vcp template.
     40        1.1  uch #
     41        1.1  uch TEMPLATE=$TYPE.tmpl
     42        1.1  uch DEBUG_VER="Debug"
     43        1.1  uch RELEASE_VER="Release"
     44        1.1  uch if [ $TYPE != "application" ] ; then
     45        1.1  uch     PROJECTTYPE="Static Library"
     46        1.1  uch else
     47        1.1  uch     PROJECTTYPE="Application"
     48        1.1  uch fi
     49        1.1  uch 
     50        1.1  uch #
     51        1.1  uch # Visual C++ version.
     52        1.1  uch #
     53        1.1  uch vc_ver=$1
     54        1.1  uch case $vc_ver in
     55        1.2  uch "vc5")
     56        1.2  uch     echo "Generate template for Visual C++ 5 Windows CE Embeded ToolKit"
     57        1.2  uch     ;;
     58        1.1  uch "vc6")
     59        1.1  uch     echo "Generate template for Visual C++ 6 Windows CE ToolKit"
     60        1.1  uch     ;;
     61  1.2.126.1  mjf "evc3"|"evc4")
     62  1.2.126.1  mjf     echo "Generate template for Embeded Visual C++ 3/4"
     63        1.1  uch     ;;
     64        1.1  uch *)
     65        1.1  uch     echo "Unsupported Visual C++ version."
     66        1.1  uch     exit 1
     67        1.1  uch esac
     68        1.1  uch 
     69        1.1  uch tmpl_base="tmpl.$vc_ver"
     70        1.1  uch header_tmpl="$tmpl_base/header"
     71        1.1  uch project_tmpl="$tmpl_base/project"
     72        1.1  uch 
     73        1.1  uch #
     74        1.1  uch # Architecture types.
     75        1.1  uch #
     76        1.1  uch archs=""
     77        1.1  uch i=1
     78        1.1  uch n=`expr $#`
     79        1.1  uch while [ $i -lt $n ]; do
     80        1.1  uch     shift 1
     81        1.1  uch     archs="$archs $1"
     82        1.1  uch     i=`expr $i + 1`
     83        1.1  uch done
     84        1.1  uch echo "Supported architecture [$archs ]"
     85        1.1  uch 
     86        1.1  uch #
     87        1.1  uch # DSP/VCP header.
     88        1.1  uch #
     89        1.1  uch cat $header_tmpl >> $TEMPLATE 
     90        1.1  uch 
     91        1.1  uch #
     92        1.1  uch # Configuration declare.
     93        1.1  uch #
     94        1.1  uch echo '!MESSAGE' >> $TEMPLATE
     95        1.1  uch for arch in $archs
     96        1.1  uch do
     97        1.1  uch     ARCH_CFG="Win32 (WCE $arch)"
     98        1.1  uch     CFG="%%% NAME %%% - $ARCH_CFG"
     99        1.1  uch     echo "!MESSAGE \"$CFG $DEBUG_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE
    100        1.1  uch     echo "!MESSAGE \"$CFG $RELEASE_VER\" (\"$ARCH_CFG $PROJECTTYPE\")" >> $TEMPLATE
    101        1.1  uch done
    102        1.1  uch echo '!MESSAGE' >> $TEMPLATE
    103        1.1  uch 
    104        1.1  uch #
    105        1.1  uch # Project define.
    106        1.1  uch #
    107        1.1  uch cat $project_tmpl >> $TEMPLATE
    108        1.1  uch 
    109        1.1  uch #
    110        1.1  uch # Architecture dependent configuration define.
    111        1.1  uch #
    112        1.1  uch for arch in $archs
    113        1.1  uch do
    114        1.1  uch     ARCH_CFG="Win32 (WCE $arch)"
    115        1.1  uch     CFG="%%% NAME %%% - $ARCH_CFG"
    116        1.1  uch     echo "!IF  \"\$(CFG)\" == \"$CFG $DEBUG_VER\"" >> $TEMPLATE
    117        1.1  uch     echo "# PROP BASE Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    118        1.1  uch     echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    119        1.1  uch     echo "# PROP Output_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    120        1.1  uch     echo "# PROP Intermediate_Dir \"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    121        1.1  uch     cat $tmpl_base/$TYPE.$arch$DEBUG_VER >> $TEMPLATE
    122        1.1  uch     cat $tmpl_base/config.defadd >> $TEMPLATE
    123        1.1  uch     if [ $TYPE = "application" ] ; then
    124        1.1  uch 	echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$DEBUG_VER\"" >> $TEMPLATE
    125        1.1  uch     fi
    126        1.1  uch     echo "!ENDIF" >> $TEMPLATE
    127        1.1  uch     echo "!IF  \"\$(CFG)\" == \"$CFG $RELEASE_VER\"" >> $TEMPLATE
    128        1.1  uch     cat $tmpl_base/config.defprop >> $TEMPLATE
    129        1.1  uch     echo "# PROP BASE Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    130        1.1  uch     echo "# PROP BASE Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    131        1.1  uch     echo "# PROP Output_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    132        1.1  uch     echo "# PROP Intermediate_Dir \"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    133        1.1  uch     cat $tmpl_base/$TYPE.$arch$RELEASE_VER >> $TEMPLATE
    134        1.1  uch     cat $tmpl_base/config.defadd >> $TEMPLATE
    135        1.1  uch     if [ $TYPE = "application" ] ; then
    136        1.1  uch 	echo "# ADD LINK32 /libpath:\"..\\compile\\$arch$RELEASE_VER\"" >> $TEMPLATE
    137        1.1  uch     fi
    138        1.1  uch     echo "!ENDIF" >> $TEMPLATE
    139        1.1  uch done
    140        1.1  uch 
    141        1.1  uch #
    142        1.1  uch # Target declare
    143        1.1  uch #
    144        1.1  uch echo >> $TEMPLATE
    145        1.1  uch echo "# Begin Target" >> $TEMPLATE
    146        1.1  uch for arch in $archs
    147        1.1  uch do
    148        1.1  uch     ARCH_CFG="Win32 (WCE $arch)"
    149        1.1  uch     CFG="%%% NAME %%% - $ARCH_CFG"
    150        1.1  uch     echo "# Name \"$CFG $DEBUG_VER\"" >> $TEMPLATE
    151        1.1  uch     echo "# Name \"$CFG $RELEASE_VER\"" >> $TEMPLATE
    152        1.1  uch done
    153        1.1  uch 
    154        1.1  uch #
    155        1.1  uch # Source files
    156        1.1  uch #
    157        1.1  uch # (MI)
    158        1.1  uch cat >> $TEMPLATE <<SRCS
    159        1.1  uch 
    160        1.1  uch # Begin Group "Source Files"
    161        1.1  uch %%% SRCFILES %%%
    162        1.1  uch 
    163        1.1  uch SRCS
    164        1.1  uch # (MD)
    165        1.1  uch for arch in $archs
    166        1.1  uch do
    167        1.1  uch     echo "%%% SRCFILES_$arch %%%" >> $TEMPLATE
    168        1.1  uch done
    169        1.1  uch #
    170        1.1  uch # Footer.
    171        1.1  uch #
    172        1.1  uch cat >> $TEMPLATE <<FOOTER
    173        1.1  uch 
    174        1.1  uch # End Group
    175        1.1  uch # End Target
    176        1.1  uch # End Project
    177        1.1  uch 
    178        1.1  uch FOOTER
    179        1.1  uch 
    180        1.1  uch #
    181        1.1  uch # Generate MD source files property.
    182        1.1  uch #
    183        1.1  uch for arch in $archs
    184        1.1  uch do
    185        1.1  uch     ARCH_FILE="property.$arch"
    186        1.1  uch     rm -f $ARCH_FILE
    187        1.1  uch     for sub_arch in $archs
    188        1.1  uch     do
    189        1.1  uch 	ARCH_CFG="Win32 (WCE $sub_arch)"
    190        1.1  uch 	CFG="%%% NAME %%% - $ARCH_CFG"
    191        1.1  uch 	CONDITION_DEBUG="!IF  \"\$(CFG)\" == \"$CFG $DEBUG_VER\""
    192        1.1  uch 	CONDITION_RELEASE="!IF  \"\$(CFG)\" == \"$CFG $RELEASE_VER\""
    193        1.1  uch 	if [ $sub_arch != $arch ] ; then
    194        1.1  uch 	    echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
    195        1.1  uch 	    echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
    196        1.1  uch 	    echo "!ENDIF" >> $ARCH_FILE
    197        1.1  uch 	    echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
    198        1.1  uch 	    echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
    199        1.1  uch 	    echo "!ENDIF" >> $ARCH_FILE
    200        1.1  uch 	fi
    201        1.1  uch     done
    202        1.1  uch #    mv $ARCH_FILE $ARCH_FILE.0
    203        1.1  uch #    awk ' { printf "%s\r\n", $0 }' $ARCH_FILE.0 > $ARCH_FILE
    204        1.1  uch #    rm -f $ARCH_FILE.0
    205        1.1  uch done
    206        1.1  uch 
    207        1.1  uch #
    208        1.1  uch # Generate MD assembler files property and custom build method.
    209        1.1  uch #
    210        1.1  uch for arch in $archs
    211        1.1  uch do
    212        1.1  uch     ARCH_FILE="asm_build.$arch.0"
    213        1.1  uch     rm -f $ARCH_FILE
    214        1.1  uch     for sub_arch in $archs
    215        1.1  uch     do
    216        1.1  uch 	ARCH_CFG="Win32 (WCE $sub_arch)"
    217        1.1  uch 	CFG="%%% NAME %%% - $ARCH_CFG"
    218        1.1  uch 	CONDITION_DEBUG="!IF  \"\$(CFG)\" == \"$CFG $DEBUG_VER\""
    219        1.1  uch 	CONDITION_RELEASE="!IF  \"\$(CFG)\" == \"$CFG $RELEASE_VER\""
    220        1.1  uch 	if [ $sub_arch != $arch ] ; then
    221        1.1  uch 	    echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
    222        1.1  uch 	    echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
    223        1.1  uch 	    echo "!ENDIF" >> $ARCH_FILE
    224        1.1  uch 	    echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
    225        1.1  uch 	    echo "# PROP Exclude_From_Build 1" >> $ARCH_FILE
    226        1.1  uch 	    echo "!ENDIF" >> $ARCH_FILE
    227        1.1  uch 	else
    228        1.1  uch 	    echo $CONDITION_DEBUG >> $ARCH_FILE >> $ARCH_FILE
    229        1.1  uch 	    echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE
    230        1.1  uch 	    echo "# Begin Custom Build" >> $ARCH_FILE
    231        1.1  uch 	    echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE
    232        1.1  uch 	    echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE
    233        1.1  uch 	    echo "	%%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE
    234        1.1  uch 	    echo "# End Custom Build" >> $ARCH_FILE
    235        1.1  uch 	    echo "!ENDIF" >> $ARCH_FILE
    236        1.1  uch 	    echo $CONDITION_RELEASE >> $ARCH_FILE >> $ARCH_FILE
    237        1.1  uch 	    echo "# PROP Ignore_Default_Tool 1" >> $ARCH_FILE
    238        1.1  uch 	    echo "# Begin Custom Build" >> $ARCH_FILE
    239        1.1  uch 	    echo "InputPath=%%% ASM_BASENAME %%%.asm" >> $ARCH_FILE
    240        1.1  uch 	    echo "\"\$(OUTDIR)\\%%% ASM_BASENAME %%%.obj\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"" >> $ARCH_FILE
    241        1.1  uch 	    echo "	%%% ASM %%% \$(InputPath) \$(OUTDIR)\\%%% ASM_BASENAME %%%.obj" >> $ARCH_FILE
    242        1.1  uch 	    echo "# End Custom Build" >> $ARCH_FILE
    243        1.1  uch 	    echo "!ENDIF" >> $ARCH_FILE
    244        1.1  uch 	fi
    245        1.1  uch     done
    246        1.1  uch done
    247        1.1  uch 
    248        1.1  uch #
    249        1.1  uch # set assembler.
    250        1.1  uch #
    251        1.1  uch if [ -f asm_build.ARM.0 ]; then
    252        1.1  uch     sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARM.0 > asm_build.ARM
    253        1.1  uch     rm -f asm_build.ARM.0
    254        1.2  uch fi
    255  1.2.126.1  mjf if [ -f asm_build.ARMV4.0 ]; then
    256  1.2.126.1  mjf     sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARMV4.0 > asm_build.ARMV4
    257  1.2.126.1  mjf     rm -f asm_build.ARMV4.0
    258  1.2.126.1  mjf fi
    259        1.2  uch if [ -f asm_build.SH.0 ]; then
    260        1.2  uch     sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH.0 > asm_build.SH
    261        1.2  uch     rm -f asm_build.SH.0
    262        1.1  uch fi
    263        1.1  uch if [ -f asm_build.SH3.0 ]; then
    264        1.1  uch     sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH3.0 > asm_build.SH3
    265        1.1  uch     rm -f asm_build.SH3.0
    266        1.1  uch fi
    267        1.1  uch if [ -f asm_build.SH4.0 ]; then
    268        1.1  uch     sed 's/%%% ASM %%%/asmsh.exe/' asm_build.SH4.0 > asm_build.SH4
    269        1.1  uch     rm -f asm_build.SH4.0
    270        1.1  uch fi
    271        1.1  uch if [ -f asm_build.MIPS.0 ]; then
    272        1.1  uch     sed 's/%%% ASM %%%/mipsasm.exe/' asm_build.MIPS.0 > asm_build.MIPS
    273        1.1  uch     rm -f asm_build.MIPS.0
    274        1.1  uch fi
    275