# sourced by ../configure to get the list of files to link
# this should set $mpi_ln_src and mpi_ln_dst.
# Note: this is called from the above directory.


mpi_extra_modules=
mpi_sflags=

test -d ./mpi || mkdir ./mpi

echo '/* created by config.links - do not edit */' >./mpi/asm-syntax.h

if test "$try_asm_modules" = "yes" ; then
case "${target}" in
    i[34]86*-*-freebsd*-elf  | \
    i[34]86*-*-freebsd[3-9]* | \
    i[34]86*-*-freebsdelf*   | \
    i[34]86*-*-netbsd* )
       echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
       cat  $srcdir/mpi/i386/syntax.h	   >>./mpi/asm-syntax.h
       path="i386"
       ;;
    i[56]86*-*-freebsd*-elf  | \
    i[56]86*-*-freebsd[3-9]* | \
    i[56]86*-*-freebsdelf*   | \
    i[56]86*-*-netbsd*	     | \
    pentium-*-netbsd*	     | \
    pentiumpro-*-netbsd*)
       echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
       cat  $srcdir/mpi/i386/syntax.h	   >>./mpi/asm-syntax.h
       path="i586 i386"
       ;;
    i[34]86*-*-bsdi4*)
       echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
       cat  $srcdir/mpi/i386/syntax.h	 >>./mpi/asm-syntax.h
       path="i386"
       ;;
    i[34]86*-*-linuxaout*  | \
    i[34]86*-*-linuxoldld* | \
    i[34]86*-*-*bsd*)
	echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
	echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/i386/syntax.h	    >>./mpi/asm-syntax.h
	path="i386"
	;;
    i[56]86*-*-linuxaout*  | \
    i[56]86*-*-linuxoldld* | \
    i[56]86*-*-*bsd*)
	echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
	echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/i386/syntax.h	    >>./mpi/asm-syntax.h
	path="i586 i386"
	;;
    i[34]86*-msdosdjgpp*)
	echo '#define BSD_SYNTAX'        >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/i386/syntax.h	 >>./mpi/asm-syntax.h
	path="i386"
	;;
    i[56]86*-msdosdjgpp*)
	echo '#define BSD_SYNTAX'        >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/i386/syntax.h	 >>./mpi/asm-syntax.h
	path="i586 i386"
	;;
    i[34]86*-*-*)
	echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/i386/syntax.h	    >>./mpi/asm-syntax.h
	path="i386"
	;;
    i[56]86*-*-*  | \
    pentium-*-*   | \
    pentiumpro-*-*)
	echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/i386/syntax.h	    >>./mpi/asm-syntax.h
	path="i586 i386"
	;;
    alpha*-*-*)
	echo '/* configured for alpha */' >>./mpi/asm-syntax.h
	path="alpha"
	mpi_extra_modules="udiv-qrnnd"
	;;
    hppa7000*-*-*)
	echo '/* configured for HPPA (pa7000) */' >>./mpi/asm-syntax.h
	path="hppa1.1 hppa"
	mpi_extra_modules="udiv-qrnnd"
	;;
    hppa1.0*-*-*)
	echo '/* configured for HPPA 1.0 */' >>./mpi/asm-syntax.h
	path="hppa"
	mpi_extra_modules="udiv-qrnnd"
	;;
    hppa*-*-*)	# assume pa7100
	echo '/* configured for HPPA (pa7100) */' >>./mpi/asm-syntax.h
	path="pa7100 hppa1.1 hppa"
	mpi_extra_modules="udiv-qrnnd"
	;;
    sparc64-*-linux-gnu)
	# An extra rule because we have an report for this one only.
	# Should be compared against the next GMP version
	echo '/* configured for sparc64-*-linux-gnu */' >>./mpi/asm-syntax.h
	path="sparc32v8 sparc32"
	mpi_extra_modules="udiv"
	;;
    sparc9*-*-*     | \
    sparc64*-*-*    | \
    ultrasparc*-*-* )
	echo '/* configured for sparc9 or higher */' >>./mpi/asm-syntax.h
	path="sparc32v8 sparc32"
	;;
    sparc8*-*-*     | \
    microsparc*-*-*)
	echo '/* configured for sparc8 */' >>./mpi/asm-syntax.h
	path="sparc32v8 sparc32"
	;;
    supersparc*-*-*)
	echo '/* configured for supersparc */' >>./mpi/asm-syntax.h
	path="supersparc sparc32v8 sparc32"
	mpi_extra_modules="udiv"
	;;
    sparc*-*-*)
	echo '/* configured for sparc */' >>./mpi/asm-syntax.h
	path="sparc32"
	mpi_extra_modules="udiv"
	;;
    mips[34]*-*-* | \
    mips*-*-irix6*)
       echo '/* configured for MIPS3 */' >>./mpi/asm-syntax.h
       path="mips3"
       ;;
    mips*-*-*)
       echo '/* configured for MIPS2 */' >>./mpi/asm-syntax.h
       path="mips2"
       ;;

    # Motorola 68k configurations.  Let m68k mean 68020-68040.
    # mc68000 or mc68060 configurations need to be specified explicitly
    m680[234]0*-*-linuxaout* | \
    m68k*-*-linuxaout*)
	echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/m68k/syntax.h	    >>./mpi/asm-syntax.h
	path="m68k/mc68020 m68k"
	;;
    m68060*-*-linuxaout*)
	echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/m68k/syntax.h	    >>./mpi/asm-syntax.h
	path="m68k"
	;;
    m680[234]0*-*-linux* | \
    m68k*-*-linux*)
	echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/m68k/syntax.h	    >>./mpi/asm-syntax.h
	;;
    m68060*-*-linux*)
	echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/m68k/syntax.h	    >>./mpi/asm-syntax.h
	path="m68k"
	;;
    m68k-atari-mint)
	echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/m68k/syntax.h	    >>./mpi/asm-syntax.h
	path="m68k/mc68020 m68k"
	;;
    m68000*-*-* | \
    m68060*-*-*)
	echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/m68k/syntax.h	    >>./mpi/asm-syntax.h
	path="m68k/mc68000"
	;;
    m680[234]0*-*-* | \
    m68k*-*-*)
	echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
	cat  $srcdir/mpi/m68k/syntax.h	    >>./mpi/asm-syntax.h
	path="m68k/mc68020 m68k"
	;;

    powerpc*-*-linux*)
	echo '/* configured for powerpc/ELF */' >>./mpi/asm-syntax.h
	echo '#define ELF_SYNTAX'               >>./mpi/asm-syntax.h
	cat   $srcdir/mpi/powerpc32/syntax.h	>>./mpi/asm-syntax.h
	path="powerpc32"
	;;

    powerpc*-*-netbsd*)
       echo '/* configured NetBSD on powerpc */' >>./mpi/asm-syntax.h
       echo '#define ELF_SYNTAX'                 >>./mpi/asm-syntax.h
       cat   $srcdir/mpi/powerpc32/syntax.h	 >>./mpi/asm-syntax.h
       mpi_sflags="-Wa,-mppc"
       path="powerpc32"
       ;;

    rs6000-*-aix[456789]*    | \
    rs6000-*-aix3.2.[456789])
	mpi_sflags="-Wa,-mpwr"
	path="power"
	mpi_extra_modules="udiv-w-sdiv"
	;;
    rs6000-*-* | \
    power-*-*  | \
    power2-*-*)
	mpi_sflags="-Wa,-mppc"
	path="power"
	mpi_extra_modules="udiv-w-sdiv"
	;;
    powerpc-ibm-aix4.2.* )
	# I am not sure about this one but a machine identified by
	# powerpc-ibm-aix4.2.1.0 cannot use the powerpc32 code.
	mpi_sflags="-Wa,-mpwr"
	path="power"
	mpi_extra_modules="udiv-w-sdiv"
	;;
    ppc601-*-*)
	mpi_sflags="-Wa,-mppc"
	path="power powerpc32"
	;;
    ppc60[234]*-*-* | \
    powerpc*-*-*)
	mpi_sflags="-Wa,-mppc"
	path="powerpc32"
	;;
    ppc620-*-*	    | \
    powerpc64*-*-*)
	mpi_sflags="-Wa,-mppc"
	path="powerpc64"
	;;

    *)
	echo '/* No assembler modules configured */' >>./mpi/asm-syntax.h
	path=""
	;;
esac
else
    echo '/* Assembler modules disabled on request */' >>./mpi/asm-syntax.h
    path=""
fi


# Make sysdep.h
echo '/* created by config.links - do not edit */' >./mpi/sysdep.h
if test x$ac_cv_sys_symbol_underscore = xyes; then
    cat <<EOF >>./mpi/sysdep.h
#if __STDC__
#define C_SYMBOL_NAME(name) _##name
#else
#define C_SYMBOL_NAME(name) _/**/name
#endif
EOF
else
    cat <<EOF >>./mpi/sysdep.h
#define C_SYMBOL_NAME(name) name
EOF
fi


# fixme: grep these modules from Makefile.in
mpi_ln_modules="${mpi_extra_modules} mpih-add1 mpih-mul1 mpih-mul2 mpih-mul3 \
		 mpih-lshift mpih-rshift mpih-sub1"

mpi_ln_objects=
mpi_ln_src=
mpi_ln_dst=

# try to get file to link from the assembler subdirectory and
# if this fails get it from the generic subdirectory.
path="$path generic"
for fn in $mpi_ln_modules ; do
    mpi_ln_objects="$mpi_ln_objects $fn.o"
    for dir in $path ; do
	rm -f $srcdir/mpi/$fn.[Sc]
	if test -f $srcdir/mpi/$dir/$fn.S ; then
	    mpi_ln_src="$mpi_ln_src mpi/$dir/$fn.S"
	    mpi_ln_dst="$mpi_ln_dst mpi/$fn.S"
	    break;
	elif test -f $srcdir/mpi/$dir/$fn.c ; then
	    mpi_ln_src="$mpi_ln_src mpi/$dir/$fn.c"
	    mpi_ln_dst="$mpi_ln_dst mpi/$fn.c"
	    break;
	fi
    done
done

# Same thing for the file which defines the limb size
path="$path generic"
for dir in $path ; do
     	rm -f $srcdir/mpi/mpi-asm-defs.h
	if test -f $srcdir/mpi/$dir/mpi-asm-defs.h ; then
	    mpi_ln_src="$mpi_ln_src mpi/$dir/mpi-asm-defs.h"
	    mpi_ln_dst="$mpi_ln_dst mpi/mpi-asm-defs.h"
	    break;
	fi
done
