[BACK]Return to acinclude.m4 CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp

Annotation of OpenXM_contrib/gmp/acinclude.m4, Revision 1.1.1.1

1.1       maekawa     1: dnl  GMP specific autoconf macros
                      2:
                      3:
                      4: dnl  Copyright (C) 2000 Free Software Foundation, Inc.
                      5: dnl
                      6: dnl  This file is part of the GNU MP Library.
                      7: dnl
                      8: dnl  The GNU MP Library is free software; you can redistribute it and/or modify
                      9: dnl  it under the terms of the GNU Lesser General Public License as published
                     10: dnl  by the Free Software Foundation; either version 2.1 of the License, or (at
                     11: dnl  your option) any later version.
                     12: dnl
                     13: dnl  The GNU MP Library is distributed in the hope that it will be useful, but
                     14: dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     15: dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
                     16: dnl  License for more details.
                     17: dnl
                     18: dnl  You should have received a copy of the GNU Lesser General Public License
                     19: dnl  along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
                     20: dnl  the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
                     21: dnl  MA 02111-1307, USA.
                     22:
                     23:
                     24: dnl  GMP_HEADER_GETVAL(NAME,FILE)
                     25: dnl  ----------------------------
                     26: dnl  Expand to the value of a "#define NAME" from the given FILE.
                     27: dnl  The regexps here aren't very rugged, but are enough for gmp.
                     28: dnl  /dev/null as a parameter prevents a hang if $2 is accidentally omitted.
                     29:
                     30: define(GMP_HEADER_GETVAL,
                     31: [patsubst(patsubst(
                     32: esyscmd([grep "^#define $1 " $2 /dev/null 2>/dev/null]),
                     33: [^.*$1[        ]+],[]),
                     34: [[
                     35:        ]*$],[])])
                     36:
                     37:
                     38: dnl  GMP_VERSION
                     39: dnl  -----------
                     40: dnl  The gmp version number, extracted from the #defines in gmp.h.
                     41: dnl  Two digits like 3.0 if patchlevel <= 0, or three digits like 3.0.1 if
                     42: dnl  patchlevel > 0.
                     43:
                     44: define(GMP_VERSION,
                     45: [GMP_HEADER_GETVAL(__GNU_MP_VERSION,gmp.h)[]dnl
                     46: .GMP_HEADER_GETVAL(__GNU_MP_VERSION_MINOR,gmp.h)[]dnl
                     47: ifelse(m4_eval(GMP_HEADER_GETVAL(__GNU_MP_VERSION_PATCHLEVEL,gmp.h) > 0),1,
                     48: [.GMP_HEADER_GETVAL(__GNU_MP_VERSION_PATCHLEVEL,gmp.h)])])
                     49:
                     50:
                     51: dnl  GMP_PROG_M4()
                     52: dnl  -------------
                     53: dnl
                     54: dnl  Find a working m4, either in $PATH or likely locations, and setup $M4
                     55: dnl  and an AC_SUBST accordingly.  If $M4 is already set then it's a user
                     56: dnl  choice and is accepted with no checks.  GMP_PROG_M4 is like
                     57: dnl  AC_PATH_PROG or AC_CHECK_PROG, but it tests each m4 found to see if
                     58: dnl  it's good enough.
                     59: dnl
                     60: dnl  See mpn/asm-defs.m4 for details on the known bad m4s.
                     61:
                     62: AC_DEFUN(GMP_PROG_M4,
                     63: [AC_CACHE_CHECK([for suitable m4],
                     64:                 gmp_cv_prog_m4,
                     65: [if test -n "$M4"; then
                     66:   gmp_cv_prog_m4="$M4"
                     67: else
                     68:   cat >conftest.m4 <<\EOF
                     69: dnl  must protect this against being expanded during autoconf m4!
                     70: [define(dollarhash,``$][#'')dnl
                     71: ifelse(dollarhash(x),1,`define(t1,Y)',
                     72: ``bad: $][# not supported (SunOS /usr/bin/m4)
                     73: '')dnl
                     74: ifelse(eval(89),89,`define(t2,Y)',
                     75: `bad: eval() doesnt support 8 or 9 in a constant (OpenBSD 2.6 m4)
                     76: ')dnl
                     77: ifelse(t1`'t2,YY,`good
                     78: ')dnl]
                     79: EOF
                     80:   echo "trying m4" 1>&AC_FD_CC
                     81:   gmp_tmp_val="`(m4 conftest.m4) 2>&AC_FD_CC`"
                     82:   echo "$gmp_tmp_val" 1>&AC_FD_CC
                     83:   if test "$gmp_tmp_val" = good; then
                     84:     gmp_cv_prog_m4="m4"
                     85:   else
                     86:     IFS="${IFS=        }"; ac_save_ifs="$IFS"; IFS=":"
                     87: dnl $ac_dummy forces splitting on constant user-supplied paths.
                     88: dnl POSIX.2 word splitting is done only on the output of word expansions,
                     89: dnl not every word.  This closes a longstanding sh security hole.
                     90:     ac_dummy="$PATH:/usr/5bin"
                     91:     for ac_dir in $ac_dummy; do
                     92:       test -z "$ac_dir" && ac_dir=.
                     93:       echo "trying $ac_dir/m4" 1>&AC_FD_CC
                     94:       gmp_tmp_val="`($ac_dir/m4 conftest.m4) 2>&AC_FD_CC`"
                     95:       echo "$gmp_tmp_val" 1>&AC_FD_CC
                     96:       if test "$gmp_tmp_val" = good; then
                     97:         gmp_cv_prog_m4="$ac_dir/m4"
                     98:         break
                     99:       fi
                    100:     done
                    101:     IFS="$ac_save_ifs"
                    102:     if test -z "$gmp_cv_prog_m4"; then
                    103:       AC_MSG_ERROR([No usable m4 in \$PATH or /usr/5bin (see config.log for reasons).])
                    104:     fi
                    105:   fi
                    106:   rm -f conftest.m4
                    107: fi])
                    108: M4="$gmp_cv_prog_m4"
                    109: AC_SUBST(M4)
                    110: ])
                    111:
                    112:
                    113: dnl  GMP_PROG_CC_FIND([CC_LIST], [REQ_64BIT_CC])
                    114: dnl  Find first working compiler in CC_LIST.
                    115: dnl  If REQ_64BIT_CC is "yes", the compiler is required to be able to
                    116: dnl  produce 64-bit code.
                    117: dnl  NOTE: If a compiler needs any special flags for producing 64-bit code,
                    118: dnl  these have to be found in shell variable `gmp_cflags64_{cc}', where `{cc}'
                    119: dnl  is the name of the compiler.
                    120: dnl  Set CC to the name of the first working compiler.
                    121: dnl  If a 64-bit compiler is found, set CC64 to the name of the compiler and
                    122: dnl  CFLAGS64 to flags to use.
                    123: dnl  This macro does not test if any of the compilers found is a GNU compiler.
                    124: dnl  To do this, when you have finally made up your mind on which one to use,
                    125: dnl  and set CC accordingly, invoke [GMP_PROG_CC_SELECT].  That macro will
                    126: dnl  also make sure that your selection of CFLAGS is valid.
                    127: dnl
                    128: AC_DEFUN(GMP_PROG_CC_FIND,
                    129: [AC_BEFORE([$0], [CC_PROG_CPP])
                    130: ifelse([$1], , gmp_cc_list="gcc cc", gmp_cc_list="[$1]")
                    131: ifelse([$2], , gmp_req_64bit_cc="no", gmp_req_64bit_cc="[$2]")
                    132:
                    133: CC32=
                    134: CC64=
                    135: for c in $gmp_cc_list; do
                    136:   # Avoid cache hits.
                    137:   unset CC
                    138:   unset ac_cv_prog_CC
                    139:   AC_CHECK_TOOL(CC, $c, $c)
                    140:   if test -n "$CC"; then
                    141:     eval c_flags=\$gmp_cflags_$c
                    142:     GMP_PROG_CC_WORKS($CC, $c_flags,
                    143:                      gmp_prog_cc_works=yes,
                    144:                      gmp_prog_cc_works=no)
                    145:
                    146:     if test "$gmp_prog_cc_works" != "yes"; then
                    147:       continue
                    148:     fi
                    149:
                    150:     # Save first working compiler, whether 32- or 64-bit capable.
                    151:     if test -z "$CC32"; then
                    152:       CC32="$CC"
                    153:     fi
                    154:     if test "$gmp_req_64bit_cc" = "yes"; then
                    155:       eval c_flags=\$gmp_cflags64_$c
                    156:
                    157:       # Verify that the compiler works in 64-bit mode as well.
                    158:       # /usr/ucb/cc on Solaris 7 can *compile* in 64-bit mode, but not link.
                    159:       GMP_PROG_CC_WORKS($c, $c_flags,
                    160:                        gmp_prog_cc_works=yes,
                    161:                        gmp_prog_cc_works=no)
                    162:
                    163:       if test "$gmp_prog_cc_works" = "yes"; then
                    164:         GMP_CHECK_CC_64BIT($c, $c_flags)
                    165:         if test "$gmp_cv_cc_64bit" = "yes"; then
                    166:           test -z "$CC64" && CC64="$c"
                    167:           test -z "$CFLAGS64" && CFLAGS64="$c_flags"
                    168:          # We have CC64 so we're done.
                    169:           break
                    170:         fi
                    171:       fi
                    172:     else
                    173:       # We have CC32, and we don't need a 64-bit compiler so we're done.
                    174:       break
                    175:     fi
                    176:   fi
                    177: done
                    178: CC="$CC32"
                    179: ])dnl
                    180:
                    181: dnl  GMP_PROG_CC_SELECT
                    182: dnl  Check that `CC' works with `CFLAGS'.  Check if `CC' is a GNU compiler.
                    183: dnl  Cache the result as `ac_cv_prog_CC'.
                    184: AC_DEFUN(GMP_PROG_CC_SELECT,
                    185: [AC_BEFORE([$0], [CC_PROG_CPP])
                    186: AC_PROG_CC_WORKS
                    187: AC_PROG_CC_GNU
                    188:
                    189: if test "$ac_cv_prog_gcc" = "yes"; then
                    190:   GCC=yes
                    191: else
                    192:   GCC=
                    193: fi
                    194:
                    195: # Set CFLAGS if not already set.
                    196: if test -z "$CFLAGS"; then
                    197:   CFLAGS="-g"
                    198:   if test "$GCC" = "yes"; then
                    199:     CFLAGS="$CFLAGS -O2"
                    200:   fi
                    201: fi
                    202:
                    203: AC_SUBST(CC)
                    204: AC_CACHE_VAL(ac_cv_prog_CC, ac_cv_prog_CC="$CC")
                    205: AC_PROVIDE([AC_PROG_CC])
                    206: ])dnl
                    207:
                    208: dnl  GMP_CHECK_CC_64BIT(cc, cflags64)
                    209: dnl  Find out if `CC' can produce 64-bit code.
                    210: dnl  Requires NM to be set to nm for target.
                    211: dnl  FIXME: Cache result.
                    212: AC_DEFUN(GMP_CHECK_CC_64BIT,
                    213: [
                    214:   gmp_tmp_CC_save="$CC"
                    215:   CC="[$1]"
                    216:   AC_MSG_CHECKING([whether the C compiler ($CC) is 64-bit capable])
                    217:   if test -z "$NM"; then
                    218:     echo; echo ["configure: $0: fatal: need nm"]
                    219:     exit 1
                    220:   fi
                    221:   gmp_tmp_CFLAGS_save="$CFLAGS"
                    222:   CFLAGS="[$2]"
                    223:
                    224:   case "$target" in
                    225:     hppa2.0*-*-*)
                    226:       # FIXME: If gcc is installed under another name than "gcc", we will
                    227:       # test the wrong thing.
                    228:       if test "$CC" != "gcc"; then
                    229:         dnl Let compiler version A.10.32.30 or higher be ok.
                    230:         dnl Bad compiler output:
                    231:         dnl   ccom: HP92453-01 G.10.32.05 HP C Compiler
                    232:         dnl Good compiler output:
                    233:         dnl   ccom: HP92453-01 A.10.32.30 HP C Compiler
                    234:         echo >conftest.c
                    235:         gmp_tmp_vs=`$CC $CFLAGS -V -c -o conftest.o conftest.c 2>&1 | grep "^ccom:"`
                    236:         rm conftest*
                    237:         gmp_tmp_v1=`echo $gmp_tmp_vs | sed 's/.* .\.\(.*\)\..*\..* HP C.*/\1/'`
                    238:         gmp_tmp_v2=`echo $gmp_tmp_vs | sed 's/.* .\..*\.\(.*\)\..* HP C.*/\1/'`
                    239:         gmp_tmp_v3=`echo $gmp_tmp_vs | sed 's/.* .\..*\..*\.\(.*\) HP C.*/\1/'`
                    240:        gmp_cv_cc_64bit=no
                    241:        test -n "$gmp_tmp_v1" && test "$gmp_tmp_v1" -ge "10" \
                    242:          && test -n "$gmp_tmp_v2" && test "$gmp_tmp_v2" -ge "32" \
                    243:          && test -n "$gmp_tmp_v3" && test "$gmp_tmp_v3" -ge "30" \
                    244:          && gmp_cv_cc_64bit=yes
                    245:       else     # gcc
                    246:        # FIXME: Compile a minimal file and determine if the resulting object
                    247:        # file is an ELF file.  If so, gcc can produce 64-bit code.
                    248:        # Do we have file(1) for target?
                    249:        gmp_cv_cc_64bit=no
                    250:       fi
                    251:       ;;
                    252:     mips-sgi-irix6.*)
                    253:       # We use `-n32' to cc and `-mabi=n32' to gcc, resulting in 64-bit
                    254:       # arithmetic but not 64-bit pointers, so the general test for sizeof
                    255:       # (void *) is not valid.
                    256:       # Simply try to compile an empty main.  If that succeeds return
                    257:       # true.
                    258:       AC_TRY_COMPILE( , ,
                    259:                      gmp_cv_cc_64bit=yes, gmp_cv_cc_64bit=no,
                    260:                      gmp_cv_cc_64bit=no)
                    261:       ;;
                    262:     *-*-*)
                    263:       # Allocate an array of size sizeof (void *) and use nm to determine its
                    264:       # size.  We depend on the first declared variable being put at address 0.
                    265:       cat >conftest.c <<EOF
                    266: [char arr[sizeof (void *)]={0};
                    267: char post=0;]
                    268: EOF
                    269:       gmp_compile="$CC $CFLAGS -c conftest.c 1>&AC_FD_CC"
                    270:       if AC_TRY_EVAL(gmp_compile); then
                    271:         changequote(<,>)dnl
                    272:        gmp_tmp_val=`$NM conftest.o | grep post | sed -e 's;[[][0-9][]]\(.*\);\1;' \
                    273:           -e 's;[^1-9]*\([0-9]*\).*;\1;'`
                    274:         changequote([, ])dnl
                    275:         if test "$gmp_tmp_val" = "8"; then
                    276:          gmp_cv_cc_64bit=yes
                    277:        else
                    278:          gmp_cv_cc_64bit=no
                    279:         fi
                    280:       else
                    281:         echo "configure: failed program was:" >&AC_FD_CC
                    282:         cat conftest.$ac_ext >&AC_FD_CC
                    283:         gmp_cv_cc_64bit=no
                    284:       fi
                    285:       rm -f conftest*
                    286:       ;;
                    287:   esac
                    288:
                    289:   CC="$gmp_tmp_CC_save"
                    290:   CFLAGS="$gmp_tmp_CFLAGS_save"
                    291:   AC_MSG_RESULT($gmp_cv_cc_64bit)
                    292: ])dnl
                    293:
                    294: dnl  GMP_INIT([M4-DEF-FILE])
                    295: dnl
                    296: AC_DEFUN(GMP_INIT,
                    297: [ifelse([$1], , gmp_configm4=config.m4, gmp_configm4="[$1]")
                    298: gmp_tmpconfigm4=cnfm4.tmp
                    299: gmp_tmpconfigm4i=cnfm4i.tmp
                    300: gmp_tmpconfigm4p=cnfm4p.tmp
                    301: test -f $gmp_tmpconfigm4 && rm $gmp_tmpconfigm4
                    302: test -f $gmp_tmpconfigm4i && rm $gmp_tmpconfigm4i
                    303: test -f $gmp_tmpconfigm4p && rm $gmp_tmpconfigm4p
                    304: ])dnl
                    305:
                    306: dnl  GMP_FINISH
                    307: dnl  ----------
                    308: dnl  Create config.m4 from its accumulated parts.
                    309: dnl
                    310: dnl  __CONFIG_M4_INCLUDED__ is used so that a second or subsequent include
                    311: dnl  of config.m4 is harmless.
                    312: dnl
                    313: dnl  A separate ifdef on the angle bracket quoted part ensures the quoting
                    314: dnl  style there is respected.  The basic defines from gmp_tmpconfigm4 are
                    315: dnl  fully quoted but are still put under an ifdef in case any have been
                    316: dnl  redefined by one of the m4 include files.
                    317: dnl
                    318: dnl  Doing a big ifdef within asm-defs.m4 and/or other macro files wouldn't
                    319: dnl  work, since it'd interpret parentheses and quotes in dnl comments, and
                    320: dnl  having a whole file as a macro argument would overflow the string space
                    321: dnl  on BSD m4.
                    322:
                    323: AC_DEFUN(GMP_FINISH,
                    324: [AC_REQUIRE([GMP_INIT])
                    325: echo "creating $gmp_configm4"
                    326: echo ["dnl $gmp_configm4.  Generated automatically by configure."] > $gmp_configm4
                    327: if test -f $gmp_tmpconfigm4; then
                    328:   echo ["changequote(<,>)dnl"] >> $gmp_configm4
                    329:   echo ["ifdef(<__CONFIG_M4_INCLUDED__>,,<"] >> $gmp_configm4
                    330:   cat $gmp_tmpconfigm4 >> $gmp_configm4
                    331:   echo [">)"] >> $gmp_configm4
                    332:   echo ["changequote(\`,')dnl"] >> $gmp_configm4
                    333:   rm $gmp_tmpconfigm4
                    334: fi
                    335: echo ["ifdef(\`__CONFIG_M4_INCLUDED__',,\`"] >> $gmp_configm4
                    336: if test -f $gmp_tmpconfigm4i; then
                    337:   cat $gmp_tmpconfigm4i >> $gmp_configm4
                    338:   rm $gmp_tmpconfigm4i
                    339: fi
                    340: if test -f $gmp_tmpconfigm4p; then
                    341:   cat $gmp_tmpconfigm4p >> $gmp_configm4
                    342:   rm $gmp_tmpconfigm4p
                    343: fi
                    344: echo ["')"] >> $gmp_configm4
                    345: echo ["define(\`__CONFIG_M4_INCLUDED__')"] >> $gmp_configm4
                    346: ])dnl
                    347:
                    348: dnl  GMP_INCLUDE(FILE)
                    349: AC_DEFUN(GMP_INCLUDE,
                    350: [AC_REQUIRE([GMP_INIT])
                    351: echo ["include(\`$1')"] >> $gmp_tmpconfigm4i
                    352: ])dnl
                    353:
                    354: dnl  GMP_SINCLUDE(FILE)
                    355: AC_DEFUN(GMP_SINCLUDE,
                    356: [AC_REQUIRE([GMP_INIT])
                    357: echo ["sinclude(\`$1')"] >> $gmp_tmpconfigm4i
                    358: ])dnl
                    359:
                    360: dnl GMP_DEFINE(MACRO, DEFINITION [, LOCATION])
                    361: dnl [ Define M4 macro MACRO as DEFINITION in temporary file.           ]
                    362: dnl [ If LOCATION is `POST', the definition will appear after any      ]
                    363: dnl [ include() directives inserted by GMP_INCLUDE/GMP_SINCLUDE.       ]
                    364: dnl [ Mind the quoting!  No shell variables will get expanded.         ]
                    365: dnl [ Don't forget to invoke GMP_FINISH to create file config.m4.      ]
                    366: dnl [ config.m4 uses `<' and '>' as quote characters for all defines.  ]
                    367: AC_DEFUN(GMP_DEFINE,
                    368: [AC_REQUIRE([GMP_INIT])
                    369: echo ['define(<$1>, <$2>)'] >> ifelse([$3], [POST], $gmp_tmpconfigm4p, $gmp_tmpconfigm4)
                    370: ])dnl
                    371:
                    372: dnl GMP_DEFINE_RAW(STRING, [, LOCATION])
                    373: dnl [ Put STRING in temporary file.                                    ]
                    374: dnl [ If LOCATION is `POST', the definition will appear after any      ]
                    375: dnl [ include() directives inserted by GMP_INCLUDE/GMP_SINCLUDE.       ]
                    376: dnl [ Don't forget to invoke GMP_FINISH to create file config.m4.      ]
                    377: AC_DEFUN(GMP_DEFINE_RAW,
                    378: [AC_REQUIRE([GMP_INIT])
                    379: echo [$1] >> ifelse([$2], [POST], $gmp_tmpconfigm4p, $gmp_tmpconfigm4)
                    380: ])dnl
                    381:
                    382: dnl  GMP_CHECK_ASM_LABEL_SUFFIX
                    383: dnl  Should a label have a colon or not?
                    384: AC_DEFUN(GMP_CHECK_ASM_LABEL_SUFFIX,
                    385: [AC_CACHE_CHECK([what assembly label suffix to use],
                    386:                gmp_cv_check_asm_label_suffix,
                    387: [case "$target" in
                    388:   *-*-hpux*) gmp_cv_check_asm_label_suffix=[""] ;;
                    389:   *) gmp_cv_check_asm_label_suffix=[":"] ;;
                    390: esac
                    391: ])
                    392: echo ["define(<LABEL_SUFFIX>, <\$][1$gmp_cv_check_asm_label_suffix>)"] >> $gmp_tmpconfigm4
                    393: ])dnl
                    394:
                    395: dnl  GMP_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
                    396: dnl  Shamelessly borrowed from glibc.
                    397: AC_DEFUN(GMP_CHECK_ASM_UNDERSCORE,
                    398: [AC_CACHE_CHECK([if symbols are prefixed by underscore],
                    399:                gmp_cv_check_asm_underscore,
                    400: [cat > conftest.$ac_ext <<EOF
                    401: dnl This sometimes fails to find confdefs.h, for some reason.
                    402: dnl [#]line __oline__ "[$]0"
                    403: [#]line __oline__ "configure"
                    404: #include "confdefs.h"
                    405: int underscore_test() {
                    406: return; }
                    407: EOF
                    408: if AC_TRY_EVAL(ac_compile); then
                    409:   if grep _underscore_test conftest* >/dev/null; then
                    410:     gmp_cv_check_asm_underscore=yes
                    411:   else
                    412:     gmp_cv_check_asm_underscore=no
                    413:   fi
                    414: else
                    415:   echo "configure: failed program was:" >&AC_FD_CC
                    416:   cat conftest.$ac_ext >&AC_FD_CC
                    417: fi
                    418: rm -f conftest*
                    419: ])
                    420: if test "$gmp_cv_check_asm_underscore" = "yes"; then
                    421:   GMP_DEFINE(GSYM_PREFIX, [_])
                    422:   ifelse([$1], , :, [$1])
                    423: else
                    424:   GMP_DEFINE(GSYM_PREFIX, [])
                    425:   ifelse([$2], , :, [$2])
                    426: fi
                    427: ])dnl
                    428:
                    429: dnl  GMP_CHECK_ASM_ALIGN_LOG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
                    430: dnl  Is parameter to `.align' logarithmic?
                    431: dnl  Requires NM to be set to nm for target.
                    432: AC_DEFUN(GMP_CHECK_ASM_ALIGN_LOG,
                    433: [AC_REQUIRE([GMP_CHECK_ASM_GLOBL])
                    434: AC_REQUIRE([GMP_CHECK_ASM_DATA])
                    435: AC_REQUIRE([GMP_CHECK_ASM_LABEL_SUFFIX])
                    436: AC_CACHE_CHECK([if .align assembly directive is logarithmic],
                    437:                gmp_cv_check_asm_align_log,
                    438: [if test -z "$NM"; then
                    439:   echo; echo ["configure: $0: fatal: need nm"]
                    440:   exit 1
                    441: fi
                    442: cat > conftest.s <<EOF
                    443:        $gmp_cv_check_asm_data
                    444:        .align  4
                    445:        $gmp_cv_check_asm_globl foo
                    446:        .byte   1
                    447:        .align  4
                    448: foo$gmp_cv_check_asm_label_suffix
                    449:        .byte   2
                    450: EOF
                    451: ac_assemble="$CCAS $CFLAGS conftest.s 1>&AC_FD_CC"
                    452: if AC_TRY_EVAL(ac_assemble); then
                    453:   changequote(<,>)
                    454:   gmp_tmp_val=`$NM conftest.o | grep foo | sed -e 's;[[][0-9][]]\(.*\);\1;' \
                    455:        -e 's;[^1-9]*\([0-9]*\).*;\1;'`
                    456:   changequote([, ])dnl
                    457:   if test "$gmp_tmp_val" = "10" || test "$gmp_tmp_val" = "16"; then
                    458:     gmp_cv_check_asm_align_log=yes
                    459:   else
                    460:     gmp_cv_check_asm_align_log=no
                    461:   fi
                    462: else
                    463:   echo "configure: failed program was:" >&AC_FD_CC
                    464:   cat conftest.s >&AC_FD_CC
                    465: fi
                    466: rm -f conftest*
                    467: ])
                    468: GMP_DEFINE_RAW(["define(<ALIGN_LOGARITHMIC>,<$gmp_cv_check_asm_align_log>)"])
                    469: if test "$gmp_cv_check_asm_align_log" = "yes"; then
                    470:   ifelse([$1], , :, [$1])
                    471: else
                    472:   ifelse([$2], , :, [$2])
                    473: fi
                    474: ])dnl
                    475:
                    476:
                    477: dnl  GMP_CHECK_ASM_ALIGN_FILL_0x90
                    478: dnl  -----------------------------
                    479: dnl  Determine whether a ",0x90" suffix works on a .align directive.
                    480: dnl  This is only meant for use on x86, where 0x90 is a "nop".
                    481: dnl
                    482: dnl  Old gas, eg. 1.92.3 - needs ",0x90" or else the fill is an invalid 0x00.
                    483: dnl  New gas, eg. 2.91 - generates the good multibyte nop fills even when
                    484: dnl                      ",0x90" is given.
                    485: dnl  Solaris 2.6 as - doesn't allow ",0x90", gives a fatal error.
                    486: dnl  Solaris 2.8 as - gives a warning for ",0x90", no ill effect.
                    487: dnl
                    488: dnl  Note that both solaris "as"s only care about ",0x90" if they actually
                    489: dnl  have to use it to fill something, hence the .byte in the sample.  It's
                    490: dnl  only the second .align that provokes an error or warning.
                    491: dnl
                    492: dnl  We prefer to suppress the warning from solaris 2.8 to stop anyone
                    493: dnl  worrying something might be wrong.
                    494:
                    495: AC_DEFUN(GMP_CHECK_ASM_ALIGN_FILL_0x90,
                    496: [AC_CACHE_CHECK([if the .align directive accepts an 0x90 fill in .text],
                    497:                 gmp_cv_check_asm_align_fill_0x90,
                    498: [AC_REQUIRE([GMP_CHECK_ASM_TEXT])
                    499: cat > conftest.s <<EOF
                    500:        $gmp_cv_check_asm_text
                    501:        .align  4, 0x90
                    502:        .byte   0
                    503:        .align  4, 0x90
                    504: EOF
                    505: gmp_tmp_val="`$CCAS $CFLAGS conftest.s 2>&1`"
                    506: if test $? = 0; then
                    507:   echo "$gmp_tmp_val" 1>&AC_FD_CC
                    508:   if echo "$gmp_tmp_val" | grep "Warning: Fill parameter ignored for executable section"; then
                    509:     echo "Supressing this warning by omitting 0x90" 1>&AC_FD_CC
                    510:     gmp_cv_check_asm_align_fill_0x90=no
                    511:   else
                    512:     gmp_cv_check_asm_align_fill_0x90=yes
                    513:   fi
                    514: else
                    515:   echo "Non-zero exit code" 1>&AC_FD_CC
                    516:   echo "$gmp_tmp_val" 1>&AC_FD_CC
                    517:   gmp_cv_check_asm_align_fill_0x90=no
                    518: fi
                    519: rm -f conftest*
                    520: ])
                    521: GMP_DEFINE_RAW(
                    522: ["define(<ALIGN_FILL_0x90>,<$gmp_cv_check_asm_align_fill_0x90>)"])
                    523: ])
                    524:
                    525:
                    526: dnl  GMP_CHECK_ASM_TEXT
                    527: AC_DEFUN(GMP_CHECK_ASM_TEXT,
                    528: [AC_CACHE_CHECK([how to switch to text section], gmp_cv_check_asm_text,
                    529: [case "$target" in
                    530:   *-*-aix*)
                    531:     changequote({, })
                    532:     gmp_cv_check_asm_text={".csect .text[PR]"}
                    533:     changequote([, ])
                    534:     ;;
                    535:   *-*-hpux*) gmp_cv_check_asm_text=[".code"] ;;
                    536:   *) gmp_cv_check_asm_text=[".text"] ;;
                    537: esac
                    538: ])
                    539: echo ["define(<TEXT>, <$gmp_cv_check_asm_text>)"] >> $gmp_tmpconfigm4
                    540: ])dnl
                    541:
                    542: dnl  GMP_CHECK_ASM_DATA
                    543: dnl  Can we say `.data'?
                    544: AC_DEFUN(GMP_CHECK_ASM_DATA,
                    545: [AC_CACHE_CHECK([how to switch to data section], gmp_cv_check_asm_data,
                    546: [case "$target" in
                    547:   *-*-aix*)
                    548:     changequote({, })
                    549:     gmp_cv_check_asm_data={".csect .data[RW]"}
                    550:     changequote([, ])
                    551:     ;;
                    552:   *) gmp_cv_check_asm_data=[".data"] ;;
                    553: esac
                    554: ])
                    555: echo ["define(<DATA>, <$gmp_cv_check_asm_data>)"] >> $gmp_tmpconfigm4
                    556: ])dnl
                    557:
                    558: dnl  GMP_CHECK_ASM_GLOBL
                    559: dnl  Can we say `.global'?
                    560: AC_DEFUN(GMP_CHECK_ASM_GLOBL,
                    561: [AC_CACHE_CHECK([how to export a symbol], gmp_cv_check_asm_globl,
                    562: [case "$target" in
                    563:   *-*-hpux*) gmp_cv_check_asm_globl=[".export"] ;;
                    564:   *) gmp_cv_check_asm_globl=[".globl"] ;;
                    565: esac
                    566: ])
                    567: echo ["define(<GLOBL>, <$gmp_cv_check_asm_globl>)"] >> $gmp_tmpconfigm4
                    568: ])dnl
                    569:
                    570: dnl  GMP_CHECK_ASM_TYPE
                    571: dnl  Can we say `.type'?
                    572: AC_DEFUN(GMP_CHECK_ASM_TYPE,
                    573: [AC_CACHE_CHECK([how the .type assembly directive should be used],
                    574: gmp_cv_check_asm_type,
                    575: [ac_assemble="$CCAS $CFLAGS conftest.s 1>&AC_FD_CC"
                    576: for gmp_tmp_prefix in @ \# %; do
                    577:   echo "       .type   sym,${gmp_tmp_prefix}function" > conftest.s
                    578:   if AC_TRY_EVAL(ac_assemble); then
                    579:     gmp_cv_check_asm_type="[.type      \$][1,${gmp_tmp_prefix}\$][2]"
                    580:     break
                    581:   fi
                    582: done
                    583: if test -z "$gmp_cv_check_asm_type"; then
                    584:   gmp_cv_check_asm_type="[dnl]"
                    585: fi
                    586: ])
                    587: echo ["define(<TYPE>, <$gmp_cv_check_asm_type>)"] >> $gmp_tmpconfigm4
                    588: ])dnl
                    589:
                    590: dnl  GMP_CHECK_ASM_SIZE
                    591: dnl  Can we say `.size'?
                    592: AC_DEFUN(GMP_CHECK_ASM_SIZE,
                    593: [AC_CACHE_CHECK([if the .size assembly directive works], gmp_cv_check_asm_size,
                    594: [ac_assemble="$CCAS $CFLAGS conftest.s 1>&AC_FD_CC"
                    595: echo ' .size   sym,1' > conftest.s
                    596: if AC_TRY_EVAL(ac_assemble); then
                    597:   gmp_cv_check_asm_size="[.size        \$][1,\$][2]"
                    598: else
                    599:   gmp_cv_check_asm_size="[dnl]"
                    600: fi
                    601: ])
                    602: echo ["define(<SIZE>, <$gmp_cv_check_asm_size>)"] >> $gmp_tmpconfigm4
                    603: ])dnl
                    604:
                    605: dnl  GMP_CHECK_ASM_LSYM_PREFIX
                    606: dnl  What is the prefix for a local label?
                    607: dnl  Requires NM to be set to nm for target.
                    608: AC_DEFUN(GMP_CHECK_ASM_LSYM_PREFIX,
                    609: [AC_REQUIRE([GMP_CHECK_ASM_LABEL_SUFFIX])
                    610: AC_CACHE_CHECK([what prefix to use for a local label],
                    611: gmp_cv_check_asm_lsym_prefix,
                    612: [if test -z "$NM"; then
                    613:   echo; echo ["$0: fatal: need nm"]
                    614:   exit 1
                    615: fi
                    616: ac_assemble="$CCAS $CFLAGS conftest.s 1>&AC_FD_CC"
                    617: gmp_cv_check_asm_lsym_prefix="L"
                    618: for gmp_tmp_pre in L .L $ L$; do
                    619:   cat > conftest.s <<EOF
                    620: dummy${gmp_cv_check_asm_label_suffix}
                    621: ${gmp_tmp_pre}gurkmacka${gmp_cv_check_asm_label_suffix}
                    622:        .byte 0
                    623: EOF
                    624:   if AC_TRY_EVAL(ac_assemble); then
                    625:     $NM conftest.o >/dev/null 2>&1
                    626:     gmp_rc=$?
                    627:     if test "$gmp_rc" != "0"; then
                    628:       echo "configure: $NM failure, using default"
                    629:       break
                    630:     fi
                    631:     if $NM conftest.o | grep gurkmacka >/dev/null; then true; else
                    632:       gmp_cv_check_asm_lsym_prefix="$gmp_tmp_pre"
                    633:       break
                    634:     fi
                    635:   else
                    636:     echo "configure: failed program was:" >&AC_FD_CC
                    637:     cat conftest.s >&AC_FD_CC
                    638:     # Use default.
                    639:   fi
                    640: done
                    641: rm -f conftest*
                    642: ])
                    643: echo ["define(<LSYM_PREFIX>, <${gmp_cv_check_asm_lsym_prefix}>)"] >> $gmp_tmpconfigm4
                    644: ])
                    645:
                    646: dnl  GMP_CHECK_ASM_W32
                    647: dnl  How to [define] a 32-bit word.
                    648: dnl  Requires NM to be set to nm for target.
                    649: AC_DEFUN(GMP_CHECK_ASM_W32,
                    650: [AC_REQUIRE([GMP_CHECK_ASM_DATA])
                    651: AC_REQUIRE([GMP_CHECK_ASM_GLOBL])
                    652: AC_REQUIRE([GMP_CHECK_ASM_LABEL_SUFFIX])
                    653: AC_CACHE_CHECK([how to [define] a 32-bit word],
                    654:               gmp_cv_check_asm_w32,
                    655: [if test -z "$NM"; then
                    656:   echo; echo ["configure: $0: fatal: need nm"]
                    657:   exit 1
                    658: fi
                    659:
                    660: # FIXME: HPUX puts first symbol at 0x40000000, breaking our assumption
                    661: # that it's at 0x0.  We'll have to declare another symbol before the
                    662: # .long/.word and look at the distance between the two symbols.  The
                    663: # only problem is that the sed expression(s) barfs (on Solaris, for
                    664: # example) for the symbol with value 0.  For now, HPUX uses .word.
                    665:
                    666: case "$target" in
                    667:   *-*-hpux*)
                    668:     gmp_cv_check_asm_w32=".word"
                    669:     ;;
                    670:   *-*-*)
                    671:     ac_assemble="$CCAS $CFLAGS conftest.s 1>&AC_FD_CC"
                    672:     for gmp_tmp_op in .long .word; do
                    673:       cat > conftest.s <<EOF
                    674:        $gmp_cv_check_asm_data
                    675:        $gmp_cv_check_asm_globl foo
                    676:        $gmp_tmp_op     0
                    677: foo${gmp_cv_check_asm_label_suffix}
                    678:        .byte   0
                    679: EOF
                    680:       if AC_TRY_EVAL(ac_assemble); then
                    681:         changequote(<,>)
                    682:         gmp_tmp_val=`$NM conftest.o | grep foo | sed -e 's;[[][0-9][]]\(.*\);\1;' \
                    683:              -e 's;[^1-9]*\([0-9]*\).*;\1;'`
                    684:         changequote([, ])dnl
                    685:         if test "$gmp_tmp_val" = "4"; then
                    686:           gmp_cv_check_asm_w32="$gmp_tmp_op"
                    687:           break
                    688:         fi
                    689:       fi
                    690:     done
                    691:     ;;
                    692: esac
                    693:
                    694: if test -z "$gmp_cv_check_asm_w32"; then
                    695:   echo; echo ["configure: $0: fatal: do not know how to define a 32-bit word"]
                    696:   exit 1
                    697: fi
                    698: rm -f conftest*
                    699: ])
                    700: echo ["define(<W32>, <$gmp_cv_check_asm_w32>)"] >> $gmp_tmpconfigm4
                    701: ])
                    702:
                    703: dnl  GMP_CHECK_ASM_MMX([ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]])
                    704: dnl  Can we assemble MMX insns?
                    705: AC_DEFUN(GMP_CHECK_ASM_MMX,
                    706: [AC_REQUIRE([GMP_CHECK_ASM_TEXT])
                    707: AC_CACHE_CHECK([if the assembler knows about MMX instructions],
                    708:                gmp_cv_check_asm_mmx,
                    709: [cat > conftest.s <<EOF
                    710:        $gmp_cv_check_asm_text
                    711:        por     %mm0, %mm0
                    712: EOF
                    713: ac_assemble="$CCAS $CFLAGS conftest.s 1>&AC_FD_CC"
                    714: if AC_TRY_EVAL(ac_assemble); then
                    715:   gmp_cv_check_asm_mmx=yes
                    716: else
                    717:   gmp_cv_check_asm_mmx=no
                    718: fi
                    719: rm -f conftest*
                    720: ])
                    721: if test "$gmp_cv_check_asm_mmx" = "yes"; then
                    722:   ifelse([$1], , :, [$1])
                    723: else
                    724:   AC_MSG_WARN([+----------------------------------------------------------])
                    725:   AC_MSG_WARN([| WARNING WARNING WARNING])
                    726:   AC_MSG_WARN([| Target CPU has MMX code, but it can't be assembled by])
                    727:   AC_MSG_WARN([|     $CCAS $CFLAGS])
                    728:   AC_MSG_WARN([| Non-MMX replacements will be used.])
                    729:   AC_MSG_WARN([| This will be an inferior build.])
                    730:   AC_MSG_WARN([+----------------------------------------------------------])
                    731:   ifelse([$2], , :, [$2])
                    732: fi
                    733: ])dnl
                    734:
                    735: dnl  GMP_CHECK_ASM_SHLDL_CL([ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]])
                    736: AC_DEFUN(GMP_CHECK_ASM_SHLDL_CL,
                    737: [AC_REQUIRE([GMP_CHECK_ASM_TEXT])
                    738: AC_CACHE_CHECK([if the assembler takes cl with shldl],
                    739:                gmp_cv_check_asm_shldl_cl,
                    740: [cat > conftest.s <<EOF
                    741:        $gmp_cv_check_asm_text
                    742:        shldl   %cl, %eax, %ebx
                    743: EOF
                    744: ac_assemble="$CCAS $CFLAGS conftest.s 1>&AC_FD_CC"
                    745: if AC_TRY_EVAL(ac_assemble); then
                    746:   gmp_cv_check_asm_shldl_cl=yes
                    747: else
                    748:   gmp_cv_check_asm_shldl_cl=no
                    749: fi
                    750: rm -f conftest*
                    751: ])
                    752: if test "$gmp_cv_check_asm_shldl_cl" = "yes"; then
                    753:   ifelse([$1], , :, [$1])
                    754: else
                    755:   ifelse([$2], , :, [$2])
                    756: fi
                    757: ])dnl
                    758:
                    759: dnl  GMP_PROG_CC_WORKS(CC, CFLAGS, ACTION-IF-WORKS, [ACTION-IF-NOT-WORKS])
                    760: dnl  Check if CC can compile and link.  Perform various target specific tests.
                    761: dnl  FIXME: Require `$target'.
                    762: AC_DEFUN(GMP_PROG_CC_WORKS,
                    763: [AC_LANG_C     dnl  Note: Destructive.
                    764: CC="[$1]"
                    765: CFLAGS="[$2]"
                    766: AC_MSG_CHECKING([if the C compiler ($CC) works with flags $CFLAGS])
                    767:
                    768: # Simple test for all targets.
                    769: AC_TRY_COMPILER([int main(){return(0);}],
                    770:                 tmp_works, tmp_cross)
                    771:
                    772: # Target specific tests.
                    773: if test "$tmp_works" = "yes"; then
                    774:   case "$target" in
                    775:     *-*-aix*)  # Returning a funcptr.
                    776:       AC_TRY_COMPILE( , [} void *g(); void *f() { return g(); } int bar(){],
                    777:                       tmp_works=yes, tmp_works=no)
                    778:       ;;
                    779:   esac
                    780: fi
                    781:
                    782: if test "$tmp_works" = "yes"; then
                    783:   [$3]
                    784: else
                    785:   ifelse([$4], , :, [$4])
                    786: fi
                    787:
                    788: AC_MSG_RESULT($tmp_works)
                    789: ])dnl
                    790:
                    791:
                    792: dnl  GMP_C_ANSI2KNR
                    793: dnl  --------------
                    794: dnl  Setup to use ansi2knr if necessary.
                    795: dnl
                    796: dnl  The test here is simply that if an ANSI style function works then
                    797: dnl  ansi2knr isn't needed.  The normal tests for whether $CC works mean we
                    798: dnl  don't need to worry here about anything badly broken.
                    799: dnl
                    800: dnl  AM_C_PROTOTYPES is the normal way to set up ansi2knr, but (in automake
                    801: dnl  March 2000) it gives the wrong answer on a C++ compiler because its
                    802: dnl  test requires that the compiler accept both ANSI and K&R, or otherwise
                    803: dnl  ansi2knr is used.  A C++ compiler fails on the K&R part, which makes
                    804: dnl  AM_C_PROTOTYPES think it needs ansi2knr!  GMP has no bare K&R so we
                    805: dnl  only need ANSI or K&R to work, not both.
                    806:
                    807: AC_DEFUN(GMP_C_ANSI2KNR,
                    808: [AC_CACHE_CHECK([if ansi2knr should be used],
                    809:                 gmp_cv_c_ansi2knr,
                    810: [cat >conftest.c <<EOF
                    811: int main (int argc, char *argv[]) { return 0; }
                    812: EOF
                    813: if AC_TRY_EVAL(ac_compile); then
                    814:   gmp_cv_c_ansi2knr=no
                    815: else
                    816:   gmp_cv_c_ansi2knr=yes
                    817: fi
                    818: rm -f conftest.*
                    819: ])
                    820: if test $gmp_cv_c_ansi2knr = no; then
                    821:   U= ANSI2KNR=
                    822: else
                    823:   U=_ ANSI2KNR=./ansi2knr
                    824:   # Ensure some checks needed by ansi2knr itself.
                    825:   AC_HEADER_STDC
                    826:   AC_CHECK_HEADERS(string.h)
                    827: fi
                    828: AC_SUBST(U)
                    829: AC_SUBST(ANSI2KNR)
                    830: ])
                    831:
                    832:
                    833: dnl  Deal with bad synchronization of Autoconf with Libtool.
                    834: AC_DEFUN(AC_CANONICAL_BUILD, [_AC_CANONICAL_BUILD])
                    835: AC_DEFUN(AC_CHECK_TOOL_PREFIX, [_AC_CHECK_TOOL_PREFIX])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>