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