Home | History | Annotate | Line # | Download | only in dspgen
gen_template.sh revision 1.2.98.1
      1  1.2.98.1  rjs # $NetBSD: gen_template.sh,v 1.2.98.1 2008/02/28 21:47:53 rjs 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.98.1  rjs "evc3"|"evc4")
     62  1.2.98.1  rjs     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.98.1  rjs if [ -f asm_build.ARMV4.0 ]; then
    256  1.2.98.1  rjs     sed 's/%%% ASM %%%/armasm.exe/' asm_build.ARMV4.0 > asm_build.ARMV4
    257  1.2.98.1  rjs     rm -f asm_build.ARMV4.0
    258  1.2.98.1  rjs 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