#! /bin/sh
## Usage: 'makesrc srcdir --all'    makes all
##        'makesrc srcdir --switch' makes switch.c gsl_ran_switch.h
##        'makesrc srcdir xxx'      makes xxx-state.c, xxx.h, xxx-gen.c
##        'makesrc'          gets this usage message

if [ $# -eq 0 ]; then
    echo "Usage: 'makesrc srcdir --all'    makes all, including switch"
    echo "       'makesrc srcdir --switch' makes switch.c gsl_ran_switch.h"
    echo "       'makesrc srcdir xxx'      makes xxx-state.c, xxx.h, xxx-gen.c"
    echo "       'makesrc'                 gets this usage message"
    exit
fi

srcdir=$1

echo srcdir is $srcdir
echo arg is $2

buildsrc () { 
for i in $*; do
    echo sed s/gsl_ran_XXX_/gsl_ran_${i}_/g $srcdir/xxx-state.xc INTO $i-state.c
    echo sed s/gsl_ran_/gsl_ran_${i}_/g $srcdir/gsl_ran.h INTO $i.h
    echo sed s/XXX/$i/g $srcdir/xxx-gen.xc INTO $i-gen.c
    sed s/gsl_ran_XXX_/gsl_ran_${i}_/g $srcdir/xxx-state.xc > $i-state.c
    sed s/gsl_ran_/gsl_ran_${i}_/g $srcdir/gsl_ran.h > $i.h
    sed s/XXX/$i/g $srcdir/xxx-gen.xc > $i-gen.c
done 
}

if [ "$2" = "--switch" -o "$2" = "-switch" ]; then
 
    echo '/* gsl_ran_switch.h */'           > gsl_ran_switch.h
    echo '#ifndef gsl_ran_SWITCH_H '       >> gsl_ran_switch.h
    echo '#define gsl_ran_SWITCH_H '       >> gsl_ran_switch.h
    echo "void gsl_ran_use_default(void);" >> gsl_ran_switch.h
    list=`egrep '^ALLRAN=' Makefile.ami | sed s/ALLRAN=//`
    for i in $list; do
	if [ -z "$fave" ]; then fave=$i; fi
	echo "void gsl_ran_use_$i(void);"  >> gsl_ran_switch.h
    done
    echo '#endif'                          >> gsl_ran_switch.h
    
    sed -n -e '/include..XXX.h./,$p' < $srcdir/xxx-switch.xc > tmp.xxx
    sed    -e '/include..XXX.h./,$d' \
           -e s/YYY/$fave/           < $srcdir/xxx-switch.xc > switch.c

    for xxx in $list; do
	sed s/XXX/$xxx/g tmp.xxx >> switch.c
    done

    /bin/rm tmp.xxx
    exit

fi  

if [ "$2" = "--all" -o "$2" = "-all" ]; then
    list=`egrep '^ALLRAN=' Makefile.ami | sed s/ALLRAN=//`
    echo "list is " $list
    buildsrc $list
else
    echo "list is " $2
    buildsrc $2
fi
