Changeset 3520:be1498bb88bb in roaraudio for compbins


Ignore:
Timestamp:
02/17/10 04:28:54 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

support to write DOS batch job files

Location:
compbins
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • compbins/Makefile

    r3506 r3520  
    99include ../Makefile.inc 
    1010 
     11.SUFFIXES: .a .r .bat 
     12 
    1113all: ${TARGETS} 
    1214        cp $(cp_v) ${TARGETS} ../lib/ 
     
    1719.a.r: 
    1820        ./ast2roar $@ $< 
     21.a.bat: 
     22        ./ast2roar --dos $@ $< 
  • compbins/ast2roar

    r3502 r3520  
    11#!/bin/sh 
     2 
     3DOS=false 
     4SECTIONC=0 
     5 
     6if [ "$1" = '--dos' ] 
     7then 
     8 DOS=true; 
     9 shift; 
     10fi 
    211 
    312OUT="$1" 
     
    1423 cat > $HELPFILE 
    1524} 
     25 
    1626 
    1727if [ -r $IN ] 
     
    2434 
    2535{ 
    26  echo '#!/bin/sh' 
     36 $DOS && echo '@ECHO OFF' 
     37 $DOS || echo '#!/bin/sh' 
    2738 echo 
    2839 
    29  echo "_args='$ARGS_ADD_OPTS';" 
    30  cat <<_E_O_F_ 
     40 $DOS && echo "SET _ARGS=$ARGS_ADD_OPTS" 
     41 $DOS || echo "_args='$ARGS_ADD_OPTS';" 
     42 
     43 if $DOS 
     44 then 
     45  cat <<_E_O_F_ 
     46 
     47:mloop 
     48IF "x%1" == "x" GOTO mloopend 
     49SET k=%1 
     50SHIFT 
     51 
     52IF "%k%" == "--" GOTO mloopend 
     53_E_O_F_ 
     54 else 
     55  cat <<_E_O_F_ 
    3156 
    3257while [ -n "\$1" ] 
     
    4065  ;; 
    4166_E_O_F_ 
     67 fi 
    4268 
    4369 if [ "$HELPOPTS" != '' ] 
    4470 then 
    45   _opts=`echo "$HELPOPTS" | sed "s/^/\'/; s/$/\'/; s/ /\'\|\'/g"` 
    46   echo "  $_opts)"; 
    47   echo '   cat <<__AST2ROAR__END_OF_HELP_TEXT__' 
    48   cat $HELPFILE 
    49   echo '__AST2ROAR__END_OF_HELP_TEXT__' 
    50   echo '   exit 0;' 
    51   echo '  ;;'; 
     71  if $DOS 
     72  then 
     73   for o in $HELPOPTS 
     74   do 
     75    echo "IF \"%k%\" == \"$o\" GOTO help" 
     76   done 
     77  else 
     78   _opts=`echo "$HELPOPTS" | sed "s/^/\'/; s/$/\'/; s/ /\'\|\'/g"` 
     79   echo "  $_opts)"; 
     80   echo '   cat <<__AST2ROAR__END_OF_HELP_TEXT__' 
     81   cat $HELPFILE 
     82   echo '__AST2ROAR__END_OF_HELP_TEXT__' 
     83   echo '   exit 0;' 
     84   echo '  ;;'; 
     85  fi 
    5286 fi 
    5387 
     
    5690  on=`echo $o | cut -d: -f1` 
    5791  oa=`echo $o | cut -d: -f2` 
    58   echo "  '$on')"; 
    59   if $oa 
    60   then 
    61    echo '   shift;'; 
    62   fi 
    63   echo '  ;;'; 
     92  if $DOS 
     93  then 
     94   if $oa 
     95   then 
     96    echo "IF \"%k%\" == \"$on\" GOTO nextshift" 
     97   else 
     98    echo "IF \"%k%\" == \"$on\" GOTO next" 
     99   fi 
     100  else 
     101   echo "  '$on')"; 
     102   if $oa 
     103   then 
     104    echo '   shift;'; 
     105   fi 
     106   echo '  ;;'; 
     107  fi 
    64108 done 
    65109 
     
    68112  on=`echo $o | cut -d: -f1` 
    69113  oa=`echo $o | cut -d: -f2` 
    70   echo "  '$on')"; 
    71   if $oa 
    72   then 
    73    echo '   _args="$_args '"$on"' $1";'; 
    74    echo '   shift;'; 
    75   else 
    76    echo '   _args="$_args '"$on"'";'; 
    77   fi 
    78   echo '  ;;'; 
     114  if $DOS 
     115  then 
     116   if $oa 
     117   then 
     118    echo 'IF "%k%" == "'"$on"'" GOTO passval'; 
     119   else 
     120    echo 'IF "%k%" == "'"$on"'" GOTO pass'; 
     121   fi 
     122  else 
     123   echo "  '$on')"; 
     124   if $oa 
     125   then 
     126    echo '   _args="$_args '"$on"' $1";'; 
     127    echo '   shift;'; 
     128   else 
     129    echo '   _args="$_args '"$on"'";'; 
     130   fi 
     131   echo '  ;;'; 
     132  fi 
    79133 done 
    80134 
     
    84138  oa=`echo $o | cut -d: -f2` 
    85139  or=`echo $o | cut -d: -f3` 
    86   echo "  '$on')"; 
    87   if $oa 
    88   then 
    89    echo '   _args="$_args '"$or"' $1";'; 
    90    echo '   shift;'; 
    91   else 
    92    echo '   _args="$_args '"$or"'";'; 
    93   fi 
    94   echo '  ;;'; 
     140  if $DOS 
     141  then 
     142   sec=sec$SECTIONC 
     143   SECTIONC=`expr $SECTIONC + 1` 
     144   if $oa 
     145   then 
     146    cat <<_E_O_F_ 
     147IF NOT "%k%" == "$on" GOTO ${sec}end 
     148SET _ARGV=%_ARGV% $or %1 
     149GOTO nextshift 
     150:${sec}end 
     151 
     152_E_O_F_ 
     153   else 
     154    cat <<_E_O_F_ 
     155IF NOT "%k%" == "$on" GOTO ${sec}end 
     156SET _ARGV=%_ARGV% $or 
     157GOTO next 
     158:${sec}end 
     159 
     160_E_O_F_ 
     161   fi 
     162  else 
     163   echo "  '$on')"; 
     164   if $oa 
     165   then 
     166    echo '   _args="$_args '"$or"' $1";'; 
     167    echo '   shift;'; 
     168   else 
     169    echo '   _args="$_args '"$or"'";'; 
     170   fi 
     171   echo '  ;;'; 
     172  fi 
    95173 done 
    96174 
    97175 for o in $ARGS_DEEQ_OPTS 
    98176 do 
    99   echo "  '$o='*)"; 
    100   echo '   _para=`echo "$k" | cut -d= -f2`;'; 
    101   echo '   _args="$_args '"$o"' $_para";'; 
    102   echo '  ;;'; 
     177  if $DOS 
     178  then 
     179   echo "REM IGNORED DEEQ: $o"; 
     180   echo "Warning: can not compile DEEQ as target does not support DEEQ: $o" >&2 
     181  else 
     182   echo "  '$o='*)"; 
     183   echo '   _para=`echo "$k" | cut -d= -f2`;'; 
     184   echo '   _args="$_args '"$o"' $_para";'; 
     185   echo '  ;;'; 
     186  fi 
    103187 done 
    104188 
     
    107191  on=`echo $o | cut -d: -f1` 
    108192  or=`echo $o | cut -d: -f2` 
    109   echo "  '$on')"; 
    110   echo "   export $or=\"\$1\""; 
    111   echo '   shift;'; 
    112   echo '  ;;'; 
    113   echo "  '$on='*)"; 
    114   echo '   _para=`echo "$k" | cut -d= -f2`;'; 
    115   echo "   export $or=\"\$_para\""; 
    116   echo '  ;;'; 
    117  done 
    118  
    119  cat <<_E_O_F_ 
     193  if $DOS 
     194  then 
     195   sec=sec$SECTIONC 
     196   SECTIONC=`expr $SECTIONC + 1` 
     197   cat <<_E_O_F_ 
     198IF NOT "%k%" == "$on" GOTO ${sec}end 
     199SET $or=%1 
     200GOTO nextshift 
     201:${sec}end 
     202_E_O_F_ 
     203  else 
     204   echo "  '$on')"; 
     205   echo "   export $or=\"\$1\""; 
     206   echo '   shift;'; 
     207   echo '  ;;'; 
     208   echo "  '$on='*)"; 
     209   echo '   _para=`echo "$k" | cut -d= -f2`;'; 
     210   echo "   export $or=\"\$_para\""; 
     211   echo '  ;;'; 
     212  fi 
     213 done 
     214 
     215 if $DOS 
     216 then 
     217  : # we ignore this here and handle in the next section 
     218 else 
     219  cat <<_E_O_F_ 
    120220  '-'*) 
    121221   echo "Unknown option" >&2; 
     
    124224  *) 
    125225_E_O_F_ 
     226 fi 
    126227 
    127228 if $ARGS_PASS_NON_OPTS 
    128229 then 
    129   echo '   _args="$_args $k";'; 
    130   if $ARGS_END_OPTS_ON_NON_OPT 
    131   then 
    132    echo '   break;'; 
    133   fi 
    134  else 
    135   echo '   echo "Unknown option" >&2;'; 
    136   echo '   exit 1;'; 
    137  fi 
    138  
    139  cat <<_E_O_F_ 
     230  if $DOS 
     231  then 
     232   echo "Warning: can not compile unknown options check in as target does not support it" >&2 
     233   echo "REM IGNORED UNKNOWN OPTION CHECK" 
     234   if $ARGS_END_OPTS_ON_NON_OPT 
     235   then 
     236    cat <<_E_O_F_ 
     237SET _ARGV=%_ARGV% %k% 
     238GOTO mloopend 
     239_E_O_F_ 
     240   else 
     241    echo 'GOTO addshift'; 
     242   fi 
     243  else 
     244   echo '   _args="$_args $k";'; 
     245   if $ARGS_END_OPTS_ON_NON_OPT 
     246   then 
     247    echo '   break;'; 
     248   fi 
     249  fi 
     250 else 
     251  if $DOS 
     252  then 
     253   echo 'GOTO erruopt' 
     254  else 
     255   echo '   echo "Unknown option" >&2;'; 
     256   echo '   exit 1;'; 
     257  fi 
     258 fi 
     259 
     260 if $DOS 
     261 then 
     262  cat <<_E_O_F_ 
     263 
     264GOTO next 
     265:pass 
     266SET _ARGV=%_ARGV% %k% 
     267GOTO next 
     268:passval 
     269SET _ARGV=%_ARGV% %k% 
     270:addshift 
     271SET _ARGV=%_ARGV% %1 
     272:nextshift 
     273SHIFT 
     274 
     275:next 
     276GOTO mloop 
     277:mloopend 
     278 
     279_E_O_F_ 
     280 else 
     281  cat <<_E_O_F_ 
    140282  ;; 
    141283 esac; 
     
    143285 
    144286_E_O_F_ 
     287 fi 
    145288 
    146289 if $ARGS_PASS_NON_OPTS 
    147290 then 
    148   echo '_args="$_args $*";'; 
    149  else 
    150   echo 'if [ "$*" != '' ]'; 
    151   echo 'then'; 
    152   echo ' echo "Unknown option" >&2;'; 
    153   echo ' exit 1;'; 
    154   echo 'fi'; 
    155  fi 
    156  
    157  cat <<_E_O_F_ 
     291  $DOS && echo "SET _ARGS=%_ARGS% %1 %2 %3 %4 %5 %6 %7 %8 %9" 
     292  $DOS || echo '_args="$_args $*";'; 
     293 else 
     294  if $DOS 
     295  then 
     296   echo 'IF "%1%2%3%4%5%6%7%8%9" GOTO erruopt' 
     297  else 
     298   echo 'if [ "$*" != '' ]'; 
     299   echo 'then'; 
     300   echo ' echo "Unknown option" >&2;'; 
     301   echo ' exit 1;'; 
     302   echo 'fi'; 
     303  fi 
     304 fi 
     305 
     306 if $DOS 
     307 then 
     308  cat <<_E_O_F_ 
     309 
     310$RNAME %_ARGS% 
     311 
     312GOTO end 
     313 
     314:erruopt 
     315ECHO Unknown option 
     316EXIT 1 
     317GOTO end 
     318 
     319:help 
     320_E_O_F_ 
     321  if [ "$HELPOPTS" != '' ] 
     322  then 
     323   sed 's/^$/./; s/^/echo /; s/</#/g; s/>/#/g;' $HELPFILE 
     324  fi 
     325  cat <<_E_O_F_ 
     326GOTO end 
     327 
     328:end 
     329 
     330_E_O_F_ 
     331 else 
     332  cat <<_E_O_F_ 
    158333 
    159334exec $RNAME \$_args 
    160 _E_O_F_ 
     335 
     336_E_O_F_ 
     337 fi 
    161338 
    162339 echo 
    163  echo '#ll' 
     340 $DOS && echo 'REM ll' 
     341 $DOS || echo '#ll' 
    164342} > $OUT 
    165343 
Note: See TracChangeset for help on using the changeset viewer.