# THIS IS A MODIFIED VERSION OF GMP-2.0.2. THE MODIFICATIONS WERE MADE # TO INTEGRATE THIS CODE TO THE SSH SOFTWARE PACKAGE. PLEASE CONTACT # ssh-bugs@cs.hut.fi IF MORE INFORMATION IS NEEDED. # # Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc. # This file is part of the GNU MP Library. # The GNU MP Library is free software; you can redistribute it and/or modify # it under the terms of the GNU Library General Public License as published by # the Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # The GNU MP Library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public # License for more details. # You should have received a copy of the GNU Library General Public License # along with the GNU MP Library; see the file COPYING.LIB. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. AC_INIT(gmp-impl.h) AC_PREREQ(2.10) AM_INIT_AUTOMAKE(gmp,`grep gmp_version $srcdir/version.c | sed 's/.*"\(.*\)".*/\1/'`) AC_CANONICAL_HOST AC_MSG_CHECKING(cached information) hostcheck="$host" AC_CACHE_VAL(ac_cv_gmp_hostcheck, [ ac_cv_gmp_hostcheck="$hostcheck" ]) if test "$ac_cv_gmp_hostcheck" != "$hostcheck"; then AC_MSG_RESULT(changed) AC_MSG_WARN(config.cache exists!) AC_MSG_ERROR(you must do 'make distclean' first to compile for different host or different parameters.) else AC_MSG_RESULT(ok) fi AC_PROG_CC AC_C_CONST AC_C_INLINE AC_HEADER_STDC AC_PROG_LN_S AC_PROG_RANLIB AC_PROG_MAKE_SET AC_PROG_INSTALL AC_REPLACE_FUNCS(random) AC_ARG_PROGRAM AC_CHECK_SIZEOF(int,4) AC_FUNC_ALLOCA # We need to kludge with autoconf quotes to use [...] syntax in regexps. changequote case "$host" in sparc9*-*-* | sparc64*-*-* | ultrasparc*-*-*) #path="sparc64" ;; Don't use this until compilers are ready path="sparc32/v8 sparc" ;; sparc8*-*-* | microsparc*-*-*) path="sparc32/v8 sparc" GCC_CFLAGS="-mv8" ;; supersparc*-*-*) path="sparc32/v8/supersparc sparc32/v8 sparc" extra_functions="udiv" GCC_CFLAGS="-mv8 -DSUPERSPARC" ;; sparc*-*-*) path="sparc32" if test "$with_fp" = "no" then extra_functions="udiv_nfp" else extra_functions="udiv_fp" fi ;; hppa7000*-*-*) path="hppa/hppa1_1 hppa" extra_functions="udiv_qrnnd" changequote([, ])dnl AC_MSG_CHECKING(whether assembler understands +DA1.1 option) OLD_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -Wa,+DA1.1" AC_TRY_LINK(,, [AC_MSG_RESULT(yes) SFLAGS="-Wa,+DA1.1"], AC_MSG_RESULT(no)) CFLAGS=$OLD_CFLAGS changequote ;; hppa1.0*-*-*) path="hppa" extra_functions="udiv_qrnnd" ;; hppa*-*-*) # assume pa7100 path="hppa/hppa1_1/pa7100 hppa/hppa1_1 hppa" extra_functions="udiv_qrnnd" changequote([, ])dnl AC_MSG_CHECKING(whether assembler understands +DA1.1 option) OLD_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -Wa,+DA1.1" AC_TRY_LINK(,, [AC_MSG_RESULT(yes) SFLAGS="-Wa,+DA1.1"], AC_MSG_RESULT(no)) CFLAGS=$OLD_CFLAGS changequote ;; cray2-cray-unicos* | [xy]mp-cray-unicos* | [ctj]90-cray-unicos* | t3e-*-*) path="cray" ;; alphaev5-*-*) path="alpha/ev5 alpha" extra_functions="udiv_qrnnd" ;; alpha*-*-*) path="alpha" extra_functions="udiv_qrnnd" ;; am29000*-*-*) path="am29000" ;; a29k*-*-*) path="am29000" ;; i[3456]86*-*-*elf | pentium-*-*elf) # 386/486 running BSD or Linux with ELF path="x86" syntax_alternatives="$syntax_alternatives ELF_SYNTAX BSD_SYNTAX INTEL_SYNTAX" ;; i[34]86*-*-linuxaout* | i[34]86*-*-linuxoldld* | \ i[34]86*-*-*bsd*) # 386/486 running BSD or Linux with a.out path="x86" x86_broken_align=yes syntax_alternatives="$syntax_alternatives BSD_SYNTAX" ;; i[56]86*-*-linuxaout* | pentium-*-linuxaout* | pentiumpro-*-linuxaout* | \ i[56]86*-*-linuxoldld* | pentium-*-linuxoldld* | pentiumpro-*-linuxoldld* | \ i[56]86*-*-*bsd* | pentium-*-*bsd* | pentiumpro-*-*bsd*) path="x86/pentium x86" x86_broken_align=yes syntax_alternatives="$syntax_alternatives BSD_SYNTAX" ;; i[34]86*-*-*) path="x86" syntax_alternatives="$syntax_alternatives ELF_SYNTAX BSD_SYNTAX INTEL_SYNTAX" ;; i[56]86*-*-* | pentium-*-* | pentiumpro-*-*) path="x86/pentium x86" syntax_alternatives="$syntax_alternatives ELF_SYNTAX BSD_SYNTAX INTEL_SYNTAX" ;; # Motorola 68k configurations. Let m68k mean 68020-68040. # mc68000 or mc68060 configurations need to be specified explicitly m680[234]0*-*-linuxaout* | m68k*-*-linuxaout*) path="m68k/mc68020 m68k" syntax_alternatives="$syntax_alternatives MIT_SYNTAX" ;; m68060*-*-linuxaout*) path="m68k" syntax_alternatives="$syntax_alternatives MIT_SYNTAX" ;; m680[234]0*-*-linux* | m68k*-*-linux*) path="m68k/mc68020 m68k" syntax_alternatives="$syntax_alternatives ELF_SYNTAX" ;; m68060*-*-linux*) path="m68k" syntax_alternatives="$syntax_alternatives ELF_SYNTAX" ;; m68000*-*-* | m68060*-*-*) path="m68k/mc68000" syntax_alternatives="$syntax_alternatives MIT_SYNTAX" ;; m680[234]0*-*-* | m68k*-*-*) path="m68k/mc68020 m68k" syntax_alternatives="$syntax_alternatives MIT_SYNTAX ELF_SYNTAX SONY_SYNTAX MOTOROLA_SYNTAX" ;; i960*-*-*) path="i960" ;; m88k*-*-* | m88k*-*-*) path="m88k" ;; m88110*-*-*) path="m88k/mc88110 m88k" ;; ns32k*-*-*) path="n32k" ;; # Power/PowerPC platforms ppc601-*-aix[456789]* | ppc601-*-aix3.2.[456789]) path="power powerpc32" SFLAGS="-Wa,-mppc" ;; ppc601-*-*) path="power powerpc32" ;; ppc620-*-* | powerpc64*-*-*) path="powerpc64" ;; ppc60[234]*-*-aix[456789]* | ppc60[234]*-*-aix3.2.[456789] | \ powerpc*-*-aix[456789]* | powerpc*-*-aix3.2.[456789]) path="powerpc32" SFLAGS="-Wa,-mppc" ;; ppc60[234]*-*-* | powerpc*-*-*) path="powerpc32" ;; rs6000-*-aix[456789]* | rs6000-*-aix3.2.[456789]*) path="power" extra_functions="udiv_w_sdiv" SFLAGS="-Wa,-mpwr" ;; rs6000-*-* | power-*-* | power2-*-*) path="power" extra_functions="udiv_w_sdiv" ;; pyramid-*-*) path="pyr" ;; sh-*-*) path="sh" ;; sh2-*-*) path="sh/sh2 sh" ;; mips[34]*-*-*) path="mips3" ;; mips*-*-irix6*) path="mips3" ;; mips*-*-*) path="mips2" ;; vax*-*-*) path="vax" extra_functions="udiv_w_sdiv" ;; z8000x*-*-*) path="z8000x" extra_functions="udiv_w_sdiv" ;; z8000*-*-*) path="z8000" extra_functions="udiv_w_sdiv" ;; clipper*-*-*) path="clipper" ;; *-*-*) ;; esac # System specific settings case "$host" in *-*-solaris*) # If not using gcc add -Xs option to cpp so we can process assembler files if test -z "$GCC"; then CPP="$CPP -Xs" fi esac changequote([, ])dnl # Add gcc-specific flags if using gcc if test -n "$GCC"; then CFLAGS="$CFLAGS $GCC_CFLAGS" fi # Check X86_BROKEN_ALIGN if test -n "$x86_broken_align"; then AC_DEFINE(X86_BROKEN_ALIGN) fi # Check whether an underscore gets prepended in names AC_CACHE_CHECK(whether underscore gets prepended in C function names, ac_cv_c_underscore, [ cat > conftest.c </dev/null if test -n "`nm conftest.o | grep _foobarzappafunction`" 2>/dev/null; then ac_cv_c_underscore=yes elif test -n "`nm conftest.o | grep foobarzappafunction`" 2>/dev/null; then ac_cv_c_underscore=no else AC_MSG_WARN(CHECK FAILED) path="" fi rm -f conftest.o conftest.c ]) if test "$ac_cv_c_underscore" = "yes"; then AC_DEFINE(C_UNDERSCORE) echo "Underscores are prepended in function names." >&5 else echo "Underscores are not prepended in function names." >&5 fi # Check for asm files functions="${extra_functions} inlines add_n addmul_1 cmp divmod_1 divrem divrem_1 dump lshift mod_1 mul mul_1 mul_n random2 rshift sqrtrem sub_n submul_1 get_str set_str scan0 scan1 popcount hamdist gcd_1 pre_mod_1 perfsqr bdivmod gcd gcdext" path="$path generic" if test '!' -d mpn; then mkdir mpn; fi AC_MSG_CHECKING(asm code) AC_CACHE_VAL(ac_cv_gmp_asm_status, [ asm_status="" asm_files="" asm_links="" asm_objs="" remaining_functions="" for fn in $functions ; do found=no for dir in $path ; do if test -f $srcdir/mpn/$dir/$fn.S ; then if test -f mpn/../$srcdir/mpn/$dir/$fn.S; then asm_files="$asm_files ../$srcdir/mpn/$dir/$fn.S" else asm_files="$asm_files $srcdir/mpn/$dir/$fn.S" fi asm_links="$asm_links $fn.S" asm_objs="$asm_objs $fn.o" found=yes break elif test -f $srcdir/mpn/$dir/$fn.s ; then if test -f mpn/../$srcdir/mpn/$dir/$fn.s; then asm_files="$asm_files ../$srcdir/mpn/$dir/$fn.s" else asm_files="$asm_files $srcdir/mpn/$dir/$fn.s" fi asm_links="$asm_links $fn.s" asm_objs="$asm_objs $fn.o" found=yes break fi done if test "$found" = "no"; then remaining_functions="$remaining_functions $fn" fi done AC_ARG_ENABLE(asm, [ --disable-asm Disable assembly language optimizations. ], [ case "$enableval" in no) AC_DEFINE(NO_ASM) asm_files="" asm_objs="" asm_links="" asm_status="disabled" path="generic" remaining_functions="$functions" ;; esac ]) if test -z "$asm_files"; then if test -z "$asm_status"; then asm_status="no" fi else # found asm files; validate them and determine correct syntax syntax_h="" for dir in $path; do if test -f $srcdir/mpn/$dir/syntax.h; then if test -f mpn/../$srcdir/mpn/$dir/syntax.h; then syntax_h="../$srcdir/mpn/$dir/syntax.h" else syntax_h="$srcdir/mpn/$dir/syntax.h" fi break fi done syntax_alternatives="$syntax_alternatives default" echo "asm_files: $asm_files" >&5 echo "asm_links: $asm_links" >&5 echo "asm_objs: $asm_objs" >&5 echo "syntax_alternatives: $syntax_alternatives" >&5 (cd mpn; rm -f $asm_links; $LN_S $asm_files .) asm_ok=no for asm_syntax in $syntax_alternatives; do if test "$asm_syntax" = "default"; then rm -f mpn/asm-syntax.h else echo "#define $asm_syntax" >mpn/asm-syntax.h echo "#include \"$syntax_h\"" >>mpn/asm-syntax.h fi echo "testing syntax $asm_syntax" >&5 # Check if the found asm files will compile asm_ok=yes for file in $asm_links; do changequote(<<, >>)dnl s=`echo $file | sed 's/[sS]$/s/'` o=`echo $file | sed 's/[sS]$/o/'` changequote([, ])dnl if test -d mpn/../$srcdir/mpn; then mpnincl="../$srcdir/mpn" else mpnincl="$srcdir/mpn" fi if test "$s" = "$file"; then echo "${CC-cc} -c -I$mpnincl -I. -I.. $CFLAGS $SFLAGS $file" >&5 (cd mpn; ${CC-cc} -c -I$mpnincl -I. -I.. $CFLAGS $SFLAGS $file >../conftemp.$$ 2>&1 ) else echo "$CPP $SFLAGS -I$mpnincl -I. -I.. $CFLAGS $file | grep -v '^#' >tmp-$s; ${CC-cc} -c $CFLAGS $SFLAGS tmp-$s; rm -f tmp-$s; mv tmp-$o $o" >&5 (cd mpn; $CPP $SFLAGS -I$mpnincl -I. -I.. $CFLAGS $file | grep -v '^#' >tmp-$s; ${CC-cc} -c $CFLAGS $SFLAGS tmp-$s; rm -f tmp-$s; mv tmp-$o $o >../conftemp.$$ 2>&1) fi if test "$?" != 0 || test -n "`cat conftemp.$$`"; then asm_ok=no fi cat conftemp.$$ >&5 done rm -f conftemp.$$ mpn/asm-syntax.h if test "$asm_ok" = "yes"; then asm_status="ok" echo "Chose $asm_syntax." >&5 break fi done (cd mpn; rm -f $asm_objs $asm_links) if test "$asm_ok" = "no"; then asm_files="" asm_objs="" asm_links="" asm_status="FAILED" echo "Asm fails to compile; chose no asm." >&5 echo "$CC -v" >&5 $CC -v >&5 2>&5 echo "$CC -V" >&5 $CC -V >&5 2>&5 remaining_functions="$functions" fi fi ac_cv_gmp_asm_status="$asm_status" ]) AC_MSG_RESULT($ac_cv_gmp_asm_status) if test "$ac_cv_gmp_asm_status" = "FAILED"; then AC_MSG_WARN(Assembly language optimizations failed and were disabled.) AC_MSG_WARN(Please mail gmp-2.0.2-ssh-2/config.log to ssh-bugs@cs.hut.fi.) fi AC_MSG_CHECKING(asm links) AC_CACHE_VAL(ac_cv_gmp_asm_links, [ ac_cv_gmp_asm_links="$asm_links" ]) AC_MSG_RESULT(done) AC_MSG_CHECKING(asm sources) AC_CACHE_VAL(ac_cv_gmp_asm_files, [ ac_cv_gmp_asm_files="$asm_files" ]) AC_MSG_RESULT(done) AC_MSG_CHECKING(asm objects) AC_CACHE_VAL(ac_cv_gmp_asm_objs, [ ac_cv_gmp_asm_objs="$asm_objs" ]) AC_MSG_RESULT(done) AC_CACHE_CHECK(asm syntax, ac_cv_gmp_asm_syntax, [ ac_cv_gmp_asm_syntax="$asm_syntax" ]) AC_CACHE_CHECK(asm syntax header, ac_cv_gmp_asm_syntax_h, [ ac_cv_gmp_asm_syntax_h="$syntax_h" ]) AC_CACHE_CHECK(for gmp-mparam.h, ac_cv_gmp_mparam, [ ac_cv_gmp_mparam="NONE" for dir in $path; do if test -f $srcdir/mpn/$dir/gmp-mparam.h; then if test -f mpn/../$srcdir/mpn/$dir/gmp-mparam.h; then ac_cv_gmp_mparam="../$srcdir/mpn/$dir/gmp-mparam.h" else ac_cv_gmp_mparam="$srcdir/mpn/$dir/gmp-mparam.h" fi break fi done if test "$ac_cv_gmp_mparam" = NONE; then AC_ERROR(gmp-mparam.h not found) fi ]) AC_MSG_CHECKING(other objs) AC_CACHE_VAL(ac_cv_gmp_other_objs, [ other_objs="" other_files="" other_links="" for fn in $remaining_functions; do for dir in $path; do if test -f $srcdir/mpn/$dir/$fn.c; then if test -f mpn/../$srcdir/mpn/$dir/$fn.c; then other_files="$other_files ../$srcdir/mpn/$dir/$fn.c" else other_files="$other_files $srcdir/mpn/$dir/$fn.c" fi other_links="$other_links $fn.c" other_objs="$other_objs $fn.o" break fi done done ac_cv_gmp_other_objs="$other_objs" ]) AC_MSG_RESULT(done) AC_MSG_CHECKING(other sources) AC_CACHE_VAL(ac_cv_gmp_other_files, [ ac_cv_gmp_other_files="$other_files" ]) AC_MSG_RESULT(done) AC_MSG_CHECKING(other links) AC_CACHE_VAL(ac_cv_gmp_other_links, [ ac_cv_gmp_other_links="$other_links" ]) AC_MSG_RESULT(done) MPN_DISTCLEANFILES="$ac_cv_gmp_asm_links $ac_cv_gmp_other_links gmp-mparam.h asm-syntax.h conftest.c" (cd mpn; rm -f $MPN_DISTCLEANFILES) (cd mpn; $LN_S $ac_cv_gmp_asm_files $ac_cv_gmp_other_files .) (cd mpn; $LN_S $ac_cv_gmp_mparam .) if test "$ac_cv_gmp_asm_syntax" != "default"; then echo "#define $ac_cv_gmp_asm_syntax" >mpn/asm-syntax.h echo "#include \"$ac_cv_gmp_asm_syntax_h\"" >>mpn/asm-syntax.h fi MPN_OBJS="$ac_cv_gmp_asm_objs $ac_cv_gmp_other_objs" AC_MSG_CHECKING(links to mpz sources in mpbsd) mpz_files="add.c cmp.c dmincl.c gcd.c mul.c pow_ui.c powm.c sqrtrem.c sub.c" if test '!' -d mpbsd; then mkdir mpbsd; fi for file in $mpz_files; do rm -f mpbsd/$file if test -f mpbsd/../$srcdir/mpz/$file; then (cd mpbsd; $LN_S ../$srcdir/mpz/$file .) else (cd mpbsd; $LN_S $srcdir/mpz/$file .) fi done AC_MSG_RESULT(done) AC_SUBST(PACKAGE) AC_SUBST(VERSION) AC_SUBST(SFLAGS) AC_SUBST(MPN_DISTCLEANFILES) AC_SUBST(MPN_OBJS) AC_OUTPUT(Makefile demos/Makefile mpbsd/Makefile mpf/Makefile mpf/tests/Makefile mpn/Makefile mpn/tests/Makefile mpq/Makefile mpq/tests/Makefile mpz/Makefile mpz/tests/Makefile)