#! /bin/sh

# set -x

: ${LN_S:="ln -s"}

# rm -f Makefile Makefile.md README.md qtmd.h qtmdb.s qtmdc.c qtmds.s configuration
rm -f qtmdc.c qtmds.s configuration

case $1 in
	axp*)
		: "DEC AXP"
		case $1 in
			axp-osf1*)
				: "Compile using /bin/cc under OSF 1.x."
#				${LN_S} md/axp.1.Makefile Makefile.md
				;;
			axp-osf2*)
				: "Compile using /bin/cc under OSF 2.x."
#				${LN_S} md/axp.1.Makefile Makefile.md
				;;
			*)
				: "Compile using GNU CC."
#				${LN_S} md/axp.Makefile Makefile.md
				;;
		esac

#		${LN_S} md/axp.h qtmd.h
		${LN_S} md/axp.c qtmdc.c
		${LN_S} md/axp.s qtmds.s
#		${LN_S} md/axp_b.s qtmdb.s
#		${LN_S} md/axp.README README.md
		iter_init=1000000000
		iter_runone=10000000
		iter_blockint=10000000
		iter_blockfloat=10000000
		iter_vainit0=10000000
		iter_vainit2=10000000
		iter_vainit4=10000000
		iter_vainit8=10000000
		iter_vastart0=10000000
		iter_vastart2=10000000
		iter_vastart4=10000000
		iter_vastart8=10000000
		iter_bench_call_reg=10000000
		iter_bench_call_imm=10000000
		iter_bench_add=100000000
		iter_bench_load=100000000
		;;

       hppa*)
		: "HP's PA-RISC 1.1 processors."

		case $1 in
			hppa-cnx-spp*)
				: "Convex SPP (PA-RISC 1.1 processors)."
#				${LN_S} md/hppa-cnx.Makefile Makefile.md
				;;
			*)
#				${LN_S} md/hppa.Makefile Makefile.md
				;;
		esac

#		${LN_S} md/hppa.h qtmd.h
#		${LN_S} md/null.c qtmdc.c
		${LN_S} md/hppa.s qtmds.s
#		${LN_S} md/hppa_b.s qtmdb.s
		iter_init=10000000
		iter_runone=1000000
		iter_blockint=1000000
		iter_blockfloat=1000000
		iter_vainit0=1000000
		iter_vainit2=1000000
		iter_vainit4=1000000
		iter_vainit8=1000000
		iter_vastart0=1000000
		iter_vastart2=1000000
		iter_vastart4=1000000
		iter_vastart8=1000000
		iter_bench_call_reg=10000000
		iter_bench_call_imm=10000000
		iter_bench_add=100000000
		iter_bench_load=100000000
		;;

	x86_64*)
		case $1 in
			iX86-ss*)
				: "Assembler comments '//'"
				sed 's/\/\*/\/\//' < md/i386_64.s > qtmds.s
				;;
				
			*)
				${LN_S} md/iX86_64.s qtmds.s
				;;
		esac
		: "Intel X386 64-bit and compatibles"
#		${LN_S} md/null.c qtmdc.c
		iter_init=10000000
		iter_runone=1000000
		iter_blockint=1000000
		iter_blockfloat=1000000
		iter_vainit0=1000000
		iter_vainit2=1000000
		iter_vainit4=1000000
		iter_vainit8=1000000
		iter_vastart0=1000000
		iter_vastart2=1000000
		iter_vastart4=1000000
		iter_vastart8=1000000
		iter_bench_call_reg=1000000
		iter_bench_call_imm=1000000
		iter_bench_add=100000000
		iter_bench_load=10000000
		;;

    iX86*)
        case $1 in
            iX86-ss*)
                : "Assembler comments '//'"
                sed 's/\/\*/\/\//' < md/i386.s > qtmds.s
#               sed 's/\/\*/\/\//' < md/i386_b.s > qtmdb.s
                ;;
                
            *)
                ${LN_S} md/i386.s qtmds.s
#               ${LN_S} md/i386_b.s qtmdb.s
                ;;
        esac
        : "Intel 80386 and compatibles (not '286...)"
#       ${LN_S} md/default.Makefile Makefile.md
#       ${LN_S} md/i386.h qtmd.h
#       ${LN_S} md/null.c qtmdc.c
#       ${LN_S} md/i386.README README.md
        iter_init=10000000
        iter_runone=1000000
        iter_blockint=1000000
        iter_blockfloat=1000000
        iter_vainit0=1000000
        iter_vainit2=1000000
        iter_vainit4=1000000
        iter_vainit8=1000000
        iter_vastart0=1000000
        iter_vastart2=1000000
        iter_vastart4=1000000
        iter_vastart8=1000000
        iter_bench_call_reg=1000000
        iter_bench_call_imm=1000000
        iter_bench_add=100000000
        iter_bench_load=10000000
        ;;


	m68k)
		: "Motorola 68000 family -- incomplete!"
#		${LN_S} md/default.Makefile Makefile.md
#		${LN_S} md/m68k.h qtmd.h
#		${LN_S} md/null.c qtmdc.c
		${LN_S} md/m68k.s qtmds.s
#		${LN_S} md/m68k_b.s qtmdb.s
#		${LN_S} md/null.README README.md
		;;

	m88k)
		: "Motorola 88000 family"
#		${LN_S} md/m88k.Makefile Makefile.md
#		${LN_S} md/m88k.h qtmd.h
		${LN_S} md/m88k.c qtmdc.c
		${LN_S} md/m88k.s qtmds.s
#		${LN_S} md/m88k_b.s qtmdb.s
#		${LN_S} md/null.README README.md
		iter_init=1000000
		iter_runone=100000
		iter_blockint=100000
		iter_blockfloat=100000
		iter_vainit0=100000
		iter_vainit2=100000
		iter_vainit4=100000
		iter_vainit8=100000
		iter_vastart0=100000
		iter_vastart2=100000
		iter_vastart4=100000
		iter_vastart8=100000
		iter_bench_call_reg=100000000
		iter_bench_call_imm=100000000
		iter_bench_add=1000000000
		iter_bench_load=100000000
		;;

	mips*)
		: "MIPS R2000 and R3000."

		case $1 in
			mips-irix5*)
				: "Silicon Graphics Irix with dynamic linking"
				: "Use mips for irix4."
				${LN_S} md/mips-irix5.s qtmds.s
				;;
			*)
				${LN_S} md/mips.s qtmds.s
				;;
		esac

#		${LN_S} md/default.Makefile Makefile.md
#		${LN_S} md/mips.h qtmd.h
#		${LN_S} md/null.c qtmdc.c
#		${LN_S} md/mips_b.s qtmdb.s
#		${LN_S} md/null.README README.md
		iter_init=10000000
		iter_runone=10000000
		iter_blockint=10000000
		iter_blockfloat=10000000
		iter_vainit0=1000000
		iter_vainit2=1000000
		iter_vainit4=1000000
		iter_vainit8=1000000
		iter_vastart0=1000000
		iter_vastart2=1000000
		iter_vastart4=1000000
		iter_vastart8=1000000
		iter_bench_call_reg=100000000
		iter_bench_call_imm=100000000
		iter_bench_add=1000000000
		iter_bench_load=100000000
		;;

	sparc*)
		: "SPARC processors"
		case $1 in
			sparc-os2*)
				sed 's/_qt_/qt_/' md/sparc.s > qtmds.s
#				sed 's/_b_/b_/' md/sparc_b.s > qtmdb.s
#				${LN_S} md/solaris.README README.md
				;;
			*)
				${LN_S} md/sparc.s qtmds.s
#				${LN_S} md/sparc_b.s qtmdb.s
#				${LN_S} md/null.README README.md
				;;
		esac

 		${LN_S} md/default.Makefile Makefile.md
#		${LN_S} md/sparc.h qtmd.h
#		${LN_S} md/null.c qtmdc.c
		iter_init=10000000
		iter_runone=1000000
		iter_blockint=1000000
		iter_blockfloat=1000000
		iter_vainit0=1000000
		iter_vainit2=1000000
		iter_vainit4=1000000
		iter_vainit8=1000000
		iter_vastart0=1000000
		iter_vastart2=1000000
		iter_vastart4=1000000
		iter_vastart8=1000000
		iter_bench_call_reg=10000000
		iter_bench_call_imm=10000000
		iter_bench_add=100000000
		iter_bench_load=100000000
		;;

	vax*)
		: "DEC VAX processors."
#		${LN_S} md/default.Makefile Makefile.md
#		${LN_S} md/vax.h qtmd.h
#		${LN_S} md/null.c qtmdc.c
		${LN_S} md/vax.s qtmds.s
#		${LN_S} md/vax_b.s qtmdb.s
#		${LN_S} md/null.README README.md
		iter_init=1000000
		iter_runone=100000
		iter_blockint=100000
		iter_blockfloat=100000
		iter_vainit0=100000
		iter_vainit2=100000
		iter_vainit4=100000
		iter_vainit8=100000
		iter_vastart0=100000
		iter_vastart2=100000
		iter_vastart4=100000
		iter_vastart8=100000
		iter_bench_call_reg=10000000
		iter_bench_call_imm=10000000
		iter_bench_add=10000000
		iter_bench_load=1000000
		;;

	ksr1)
		: "Kendall Square Research model KSR-1."
		: "Varargs is not currently supported."
#		${LN_S} md/ksr1.Makefile Makefile.md
#		${LN_S} md/ksr1.h qtmd.h
#		${LN_S} md/null.c qtmdc.c
		${LN_S} md/ksr1.s qtmds.s
#		${LN_S} md/ksr1_b.s qtmdb.s
#		${LN_S} md/null.README README.md
		iter_init=1000000
		iter_runone=100000
		iter_blockint=100000
		iter_blockfloat=100000
		iter_vainit0=100000
		iter_vainit2=100000
		iter_vainit4=100000
		iter_vainit8=100000
		iter_vastart0=100000
		iter_vastart2=100000
		iter_vastart4=100000
		iter_vastart8=100000
		iter_bench_call_reg=10000000
		iter_bench_call_imm=10000000
		iter_bench_add=10000000
		iter_bench_load=1000000
		;;

    powerpc*)
        : "PowerPC IBM/Motorola processors."

        case $1 in
			powerpc-apple-macosx*)
				: "PowerPC using Mach Application Binary Interface"
                : "NOTICE: Darwin assembler syntax is used:"
                : "  (i.e. registers are named rx not %rx)"
                ${LN_S} md/default.Makefile Makefile.md
#               ${LN_S} md/powerpc_mach.h qtmd.h
                ${LN_S} md/powerpc_mach.s qtmds.s
                ;;
            powerpc-linux*)
                : "PowerPC using System V Application Binary Interface"
                : "  (e.g. LinuxPPC)"
                : "Use powerpc-darwin for MacOS X and other systems based on Mac
h ABI"
#               ${LN_S} md/powerpc_sys5.h qtmd.h
                ${LN_S} md/powerpc_sys5.s qtmds.s
                ;;
            *)
                echo "Unknown configuration"
                echo "See md/powerpc.README for documentation"
                echo "Use powerpc-darwin for MacOS X and other systems based on
Mach ABI"
                echo "Use powerpc-linux for Linux and other systems based on Sys
tem V ABI"
                exit 1
                ;;

        esac

        ${LN_S} md/powerpc.c qtmdc.c
        ${LN_S} md/powerpc.README README.md
        ;;


	pthreads*)
		: Posix thread support rather than Quick threads.
#		${LN_S} md/hppa.h qtmd.h
#		${LN_S} md/null.c qtmdc.c
#		${LN_S} md/null.s qtmds.s
#		${LN_S} md/hppa_b.s qtmdb.s
#		cp md/pthreads.Makefile Makefile
		exit 0
		;;

	clean)
		: Deconfigure
		exit 0
		;;

	*)
		echo "Unknown configuration"
		exit 1
		;;
esac

# cat Makefile.md Makefile.base > Makefile

echo set config_machine=$1 >> configuration
echo set config_init=$iter_init >> configuration
echo set config_runone=$iter_runone >> configuration
echo set config_blockint=$iter_blockint >> configuration
echo set config_blockfloat=$iter_blockfloat >> configuration
echo set config_vainit0=$iter_vainit0 >> configuration
echo set config_vainit2=$iter_vainit2 >> configuration
echo set config_vainit4=$iter_vainit4 >> configuration
echo set config_vainit8=$iter_vainit8 >> configuration
echo set config_vastart0=$iter_vastart0 >> configuration
echo set config_vastart2=$iter_vastart2 >> configuration
echo set config_vastart4=$iter_vastart4 >> configuration
echo set config_vastart8=$iter_vastart8 >> configuration
echo set config_bcall_reg=$iter_bench_call_reg >> configuration
echo set config_bcall_imm=$iter_bench_call_imm >> configuration
echo set config_b_add=$iter_bench_add >> configuration
echo set config_b_load=$iter_bench_load >> configuration