1169689Skandnl See whether we need a declaration for a function. 2169689Skandnl The result is highly dependent on the INCLUDES passed in, so make sure 3169689Skandnl to use a different cache variable name in this macro if it is invoked 4169689Skandnl in a different context somewhere else. 5169689Skandnl gcc_AC_CHECK_DECL(SYMBOL, 6169689Skandnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, INCLUDES]]]) 7169689SkanAC_DEFUN([gcc_AC_CHECK_DECL], 8169689Skan[AC_MSG_CHECKING([whether $1 is declared]) 9169689SkanAC_CACHE_VAL(gcc_cv_have_decl_$1, 10169689Skan[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$4], 11169689Skan[#ifndef $1 12169689Skanchar *(*pfn) = (char *(*)) $1 ; 13169689Skan#endif])], eval "gcc_cv_have_decl_$1=yes", eval "gcc_cv_have_decl_$1=no")]) 14169689Skanif eval "test \"`echo '$gcc_cv_have_decl_'$1`\" = yes"; then 15169689Skan AC_MSG_RESULT(yes) ; ifelse([$2], , :, [$2]) 16169689Skanelse 17169689Skan AC_MSG_RESULT(no) ; ifelse([$3], , :, [$3]) 18169689Skanfi 19169689Skan])dnl 20169689Skan 21169689Skandnl Check multiple functions to see whether each needs a declaration. 22169689Skandnl Arrange to define HAVE_DECL_<FUNCTION> to 0 or 1 as appropriate. 23169689Skandnl gcc_AC_CHECK_DECLS(SYMBOLS, 24169689Skandnl [ACTION-IF-NEEDED [, ACTION-IF-NOT-NEEDED [, INCLUDES]]]) 25169689SkanAC_DEFUN([gcc_AC_CHECK_DECLS], 26169689Skan[AC_FOREACH([gcc_AC_Func], [$1], 27169689Skan [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_[]gcc_AC_Func), 28169689Skan [Define to 1 if we found a declaration for ']gcc_AC_Func[', otherwise 29169689Skan define to 0.])])dnl 30169689Skanfor ac_func in $1 31169689Skando 32169689Skan ac_tr_decl=AS_TR_CPP([HAVE_DECL_$ac_func]) 33169689Skangcc_AC_CHECK_DECL($ac_func, 34169689Skan [AC_DEFINE_UNQUOTED($ac_tr_decl, 1) $2], 35169689Skan [AC_DEFINE_UNQUOTED($ac_tr_decl, 0) $3], 36169689Skandnl It is possible that the include files passed in here are local headers 37169689Skandnl which supply a backup declaration for the relevant prototype based on 38169689Skandnl the definition of (or lack of) the HAVE_DECL_ macro. If so, this test 39169689Skandnl will always return success. E.g. see libiberty.h's handling of 40169689Skandnl `basename'. To avoid this, we define the relevant HAVE_DECL_ macro to 41169689Skandnl 1 so that any local headers used do not provide their own prototype 42169689Skandnl during this test. 43169689Skan#undef $ac_tr_decl 44169689Skan#define $ac_tr_decl 1 45169689Skan $4 46169689Skan) 47169689Skandone 48169689Skan]) 49169689Skan 50169689Skandnl 'make compare' can be significantly faster, if cmp itself can 51169689Skandnl skip bytes instead of using tail. The test being performed is 52169689Skandnl "if cmp --ignore-initial=2 t1 t2 && ! cmp --ignore-initial=1 t1 t2" 53169689Skandnl but we need to sink errors and handle broken shells. We also test 54169689Skandnl for the parameter format "cmp file1 file2 skip1 skip2" which is 55169689Skandnl accepted by cmp on some systems. 56169689SkanAC_DEFUN([gcc_AC_PROG_CMP_IGNORE_INITIAL], 57169689Skan[AC_CACHE_CHECK([for cmp's capabilities], gcc_cv_prog_cmp_skip, 58169689Skan[ echo abfoo >t1 59169689Skan echo cdfoo >t2 60169689Skan gcc_cv_prog_cmp_skip=slowcompare 61169689Skan if cmp --ignore-initial=2 t1 t2 > /dev/null 2>&1; then 62169689Skan if cmp --ignore-initial=1 t1 t2 > /dev/null 2>&1; then 63169689Skan : 64169689Skan else 65169689Skan gcc_cv_prog_cmp_skip=gnucompare 66169689Skan fi 67169689Skan fi 68169689Skan if test $gcc_cv_prog_cmp_skip = slowcompare ; then 69169689Skan if cmp t1 t2 2 2 > /dev/null 2>&1; then 70169689Skan if cmp t1 t2 1 1 > /dev/null 2>&1; then 71169689Skan : 72169689Skan else 73169689Skan gcc_cv_prog_cmp_skip=fastcompare 74169689Skan fi 75169689Skan fi 76169689Skan fi 77169689Skan rm t1 t2 78169689Skan]) 79169689Skanmake_compare_target=$gcc_cv_prog_cmp_skip 80169689SkanAC_SUBST(make_compare_target) 81169689Skan]) 82169689Skan 83169689Skandnl See if symbolic links work and if not, try to substitute either hard links or simple copy. 84169689SkanAC_DEFUN([gcc_AC_PROG_LN_S], 85169689Skan[AC_MSG_CHECKING(whether ln -s works) 86169689SkanAC_CACHE_VAL(gcc_cv_prog_LN_S, 87169689Skan[rm -f conftestdata_t 88169689Skanecho >conftestdata_f 89169689Skanif ln -s conftestdata_f conftestdata_t 2>/dev/null 90169689Skanthen 91169689Skan gcc_cv_prog_LN_S="ln -s" 92169689Skanelse 93169689Skan if ln conftestdata_f conftestdata_t 2>/dev/null 94169689Skan then 95169689Skan gcc_cv_prog_LN_S=ln 96169689Skan else 97169689Skan if cp -p conftestdata_f conftestdata_t 2>/dev/null 98169689Skan then 99169689Skan gcc_cv_prog_LN_S="cp -p" 100169689Skan else 101169689Skan gcc_cv_prog_LN_S=cp 102169689Skan fi 103169689Skan fi 104169689Skanfi 105169689Skanrm -f conftestdata_f conftestdata_t 106169689Skan])dnl 107169689SkanLN_S="$gcc_cv_prog_LN_S" 108169689Skanif test "$gcc_cv_prog_LN_S" = "ln -s"; then 109169689Skan AC_MSG_RESULT(yes) 110169689Skanelse 111169689Skan if test "$gcc_cv_prog_LN_S" = "ln"; then 112169689Skan AC_MSG_RESULT([no, using ln]) 113169689Skan else 114169689Skan AC_MSG_RESULT([no, and neither does ln, so using $gcc_cv_prog_LN_S]) 115169689Skan fi 116169689Skanfi 117169689SkanAC_SUBST(LN_S)dnl 118169689Skan]) 119169689Skan 120169689Skandnl Define MKDIR_TAKES_ONE_ARG if mkdir accepts only one argument instead 121169689Skandnl of the usual 2. 122169689SkanAC_DEFUN([gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG], 123169689Skan[AC_CACHE_CHECK([if mkdir takes one argument], gcc_cv_mkdir_takes_one_arg, 124169689Skan[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 125169689Skan#include <sys/types.h> 126169689Skan#ifdef HAVE_SYS_STAT_H 127169689Skan# include <sys/stat.h> 128169689Skan#endif 129169689Skan#ifdef HAVE_UNISTD_H 130169689Skan# include <unistd.h> 131169689Skan#endif 132169689Skan#ifdef HAVE_DIRECT_H 133169689Skan# include <direct.h> 134169689Skan#endif], [mkdir ("foo", 0);])], 135169689Skan gcc_cv_mkdir_takes_one_arg=no, gcc_cv_mkdir_takes_one_arg=yes)]) 136169689Skanif test $gcc_cv_mkdir_takes_one_arg = yes ; then 137169689Skan AC_DEFINE(MKDIR_TAKES_ONE_ARG, 1, [Define if host mkdir takes a single argument.]) 138169689Skanfi 139169689Skan]) 140169689Skan 141169689SkanAC_DEFUN([gcc_AC_PROG_INSTALL], 142169689Skan[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl 143169689Skan# Find a good install program. We prefer a C program (faster), 144169689Skan# so one script is as good as another. But avoid the broken or 145169689Skan# incompatible versions: 146169689Skan# SysV /etc/install, /usr/sbin/install 147169689Skan# SunOS /usr/etc/install 148169689Skan# IRIX /sbin/install 149169689Skan# AIX /bin/install 150169689Skan# AFS /usr/afsws/bin/install, which mishandles nonexistent args 151169689Skan# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" 152169689Skan# ./install, which can be erroneously created by make from ./install.sh. 153169689SkanAC_MSG_CHECKING(for a BSD compatible install) 154169689Skanif test -z "$INSTALL"; then 155169689SkanAC_CACHE_VAL(ac_cv_path_install, 156169689Skan[ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" 157169689Skan for ac_dir in $PATH; do 158169689Skan # Account for people who put trailing slashes in PATH elements. 159169689Skan case "$ac_dir/" in 160169689Skan /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; 161169689Skan *) 162169689Skan # OSF1 and SCO ODT 3.0 have their own names for install. 163169689Skan for ac_prog in ginstall scoinst install; do 164169689Skan if test -f $ac_dir/$ac_prog; then 165169689Skan if test $ac_prog = install && 166169689Skan grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then 167169689Skan # AIX install. It has an incompatible calling convention. 168169689Skan # OSF/1 installbsd also uses dspmsg, but is usable. 169169689Skan : 170169689Skan else 171169689Skan ac_cv_path_install="$ac_dir/$ac_prog -c" 172169689Skan break 2 173169689Skan fi 174169689Skan fi 175169689Skan done 176169689Skan ;; 177169689Skan esac 178169689Skan done 179169689Skan IFS="$ac_save_IFS" 180169689Skan])dnl 181169689Skan if test "${ac_cv_path_install+set}" = set; then 182169689Skan INSTALL="$ac_cv_path_install" 183169689Skan else 184169689Skan # As a last resort, use the slow shell script. We don't cache a 185169689Skan # path for INSTALL within a source directory, because that will 186169689Skan # break other packages using the cache if that directory is 187169689Skan # removed, or if the path is relative. 188169689Skan INSTALL="$ac_install_sh" 189169689Skan fi 190169689Skanfi 191169689Skandnl We do special magic for INSTALL instead of AC_SUBST, to get 192169689Skandnl relative paths right. 193169689SkanAC_MSG_RESULT($INSTALL) 194169689SkanAC_SUBST(INSTALL)dnl 195169689Skan 196169689Skan# Use test -z because SunOS4 sh mishandles braces in ${var-val}. 197169689Skan# It thinks the first close brace ends the variable substitution. 198169689Skantest -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' 199169689SkanAC_SUBST(INSTALL_PROGRAM)dnl 200169689Skan 201169689Skantest -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' 202169689SkanAC_SUBST(INSTALL_DATA)dnl 203169689Skan]) 204169689Skan 205169689Skan# mmap(2) blacklisting. Some platforms provide the mmap library routine 206169689Skan# but don't support all of the features we need from it. 207169689SkanAC_DEFUN([gcc_AC_FUNC_MMAP_BLACKLIST], 208169689Skan[ 209169689SkanAC_CHECK_HEADER([sys/mman.h], 210169689Skan [gcc_header_sys_mman_h=yes], [gcc_header_sys_mman_h=no]) 211169689SkanAC_CHECK_FUNC([mmap], [gcc_func_mmap=yes], [gcc_func_mmap=no]) 212169689Skanif test "$gcc_header_sys_mman_h" != yes \ 213169689Skan || test "$gcc_func_mmap" != yes; then 214169689Skan gcc_cv_func_mmap_file=no 215169689Skan gcc_cv_func_mmap_dev_zero=no 216169689Skan gcc_cv_func_mmap_anon=no 217169689Skanelse 218169689Skan AC_CACHE_CHECK([whether read-only mmap of a plain file works], 219169689Skan gcc_cv_func_mmap_file, 220169689Skan [# Add a system to this blacklist if 221169689Skan # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a 222169689Skan # memory area containing the same data that you'd get if you applied 223169689Skan # read() to the same fd. The only system known to have a problem here 224169689Skan # is VMS, where text files have record structure. 225169689Skan case "$host_os" in 226169689Skan vms* | ultrix*) 227169689Skan gcc_cv_func_mmap_file=no ;; 228169689Skan *) 229169689Skan gcc_cv_func_mmap_file=yes;; 230169689Skan esac]) 231169689Skan AC_CACHE_CHECK([whether mmap from /dev/zero works], 232169689Skan gcc_cv_func_mmap_dev_zero, 233169689Skan [# Add a system to this blacklist if it has mmap() but /dev/zero 234169689Skan # does not exist, or if mmapping /dev/zero does not give anonymous 235169689Skan # zeroed pages with both the following properties: 236169689Skan # 1. If you map N consecutive pages in with one call, and then 237169689Skan # unmap any subset of those pages, the pages that were not 238169689Skan # explicitly unmapped remain accessible. 239169689Skan # 2. If you map two adjacent blocks of memory and then unmap them 240169689Skan # both at once, they must both go away. 241169689Skan # Systems known to be in this category are Windows (all variants), 242169689Skan # VMS, and Darwin. 243169689Skan case "$host_os" in 244169689Skan vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) 245169689Skan gcc_cv_func_mmap_dev_zero=no ;; 246169689Skan *) 247169689Skan gcc_cv_func_mmap_dev_zero=yes;; 248169689Skan esac]) 249169689Skan 250169689Skan # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. 251169689Skan AC_CACHE_CHECK([for MAP_ANON(YMOUS)], gcc_cv_decl_map_anon, 252169689Skan [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 253169689Skan[#include <sys/types.h> 254169689Skan#include <sys/mman.h> 255169689Skan#include <unistd.h> 256169689Skan 257169689Skan#ifndef MAP_ANONYMOUS 258169689Skan#define MAP_ANONYMOUS MAP_ANON 259169689Skan#endif 260169689Skan], 261169689Skan[int n = MAP_ANONYMOUS;])], 262169689Skan gcc_cv_decl_map_anon=yes, 263169689Skan gcc_cv_decl_map_anon=no)]) 264169689Skan 265169689Skan if test $gcc_cv_decl_map_anon = no; then 266169689Skan gcc_cv_func_mmap_anon=no 267169689Skan else 268169689Skan AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works], 269169689Skan gcc_cv_func_mmap_anon, 270169689Skan [# Add a system to this blacklist if it has mmap() and MAP_ANON or 271169689Skan # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) 272169689Skan # doesn't give anonymous zeroed pages with the same properties listed 273169689Skan # above for use of /dev/zero. 274169689Skan # Systems known to be in this category are Windows, VMS, and SCO Unix. 275169689Skan case "$host_os" in 276169689Skan vms* | cygwin* | pe | mingw* | sco* | udk* ) 277169689Skan gcc_cv_func_mmap_anon=no ;; 278169689Skan *) 279169689Skan gcc_cv_func_mmap_anon=yes;; 280169689Skan esac]) 281169689Skan fi 282169689Skanfi 283169689Skan 284169689Skanif test $gcc_cv_func_mmap_file = yes; then 285169689Skan AC_DEFINE(HAVE_MMAP_FILE, 1, 286169689Skan [Define if read-only mmap of a plain file works.]) 287169689Skanfi 288169689Skanif test $gcc_cv_func_mmap_dev_zero = yes; then 289169689Skan AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1, 290169689Skan [Define if mmap of /dev/zero works.]) 291169689Skanfi 292169689Skanif test $gcc_cv_func_mmap_anon = yes; then 293169689Skan AC_DEFINE(HAVE_MMAP_ANON, 1, 294169689Skan [Define if mmap with MAP_ANON(YMOUS) works.]) 295169689Skanfi 296169689Skan]) 297169689Skan 298169689Skandnl Locate a program and check that its version is acceptable. 299169689Skandnl AC_PROG_CHECK_VER(var, name, version-switch, 300169689Skandnl version-extract-regexp, version-glob) 301169689SkanAC_DEFUN([gcc_AC_CHECK_PROG_VER], 302169689Skan[AC_REQUIRE([gcc_AC_BUILD_EXEEXT]) 303169689SkanAC_CHECK_PROG([$1], [$2], [$2]) 304169689Skanif test -n "[$]$1"; then 305169689Skan # Found it, now check the version. 306169689Skan AC_CACHE_CHECK(for modern $2, gcc_cv_prog_$2_modern, 307169689Skan[changequote(<<,>>)dnl 308169689Skan ac_prog_version=`<<$>>$1 $3 2>&1 | 309169689Skan sed -n 's/^.*patsubst(<<$4>>,/,\/).*$/\1/p'` 310169689Skanchangequote([,])dnl 311169689Skan echo "configure:__oline__: version of $2 is $ac_prog_version" >&AS_MESSAGE_LOG_FD 312169689Skanchangequote(<<,>>)dnl 313169689Skan case $ac_prog_version in 314169689Skan '') gcc_cv_prog_$2_modern=no;; 315169689Skan <<$5>>) 316169689Skan gcc_cv_prog_$2_modern=yes;; 317169689Skan *) gcc_cv_prog_$2_modern=no;; 318169689Skan esac 319169689Skanchangequote([,])dnl 320169689Skan]) 321169689Skanelse 322169689Skan gcc_cv_prog_$2_modern=no 323169689Skanfi 324169689Skan]) 325169689Skan 326169689Skandnl Determine if enumerated bitfields are unsigned. ISO C says they can 327169689Skandnl be either signed or unsigned. 328169689Skandnl 329169689SkanAC_DEFUN([gcc_AC_C_ENUM_BF_UNSIGNED], 330169689Skan[AC_CACHE_CHECK(for unsigned enumerated bitfields, gcc_cv_enum_bf_unsigned, 331169689Skan[AC_RUN_IFELSE([AC_LANG_SOURCE([#include <stdlib.h> 332169689Skanenum t { BLAH = 128 } ; 333169689Skanstruct s_t { enum t member : 8; } s ; 334169689Skanint main(void) 335169689Skan{ 336169689Skan s.member = BLAH; 337169689Skan if (s.member < 0) exit(1); 338169689Skan exit(0); 339169689Skan 340169689Skan}])], gcc_cv_enum_bf_unsigned=yes, gcc_cv_enum_bf_unsigned=no, gcc_cv_enum_bf_unsigned=yes)]) 341169689Skanif test $gcc_cv_enum_bf_unsigned = yes; then 342169689Skan AC_DEFINE(ENUM_BITFIELDS_ARE_UNSIGNED, 1, 343169689Skan [Define if enumerated bitfields are treated as unsigned values.]) 344169689Skanfi]) 345169689Skan 346169689Skandnl Probe number of bits in a byte. 347169689Skandnl Note C89 requires CHAR_BIT >= 8. 348169689Skandnl 349169689SkanAC_DEFUN([gcc_AC_C_CHAR_BIT], 350169689Skan[AC_CACHE_CHECK(for CHAR_BIT, gcc_cv_decl_char_bit, 351169689Skan[AC_EGREP_CPP(found, 352169689Skan[#ifdef HAVE_LIMITS_H 353169689Skan#include <limits.h> 354169689Skan#endif 355169689Skan#ifdef CHAR_BIT 356169689Skanfound 357169689Skan#endif], gcc_cv_decl_char_bit=yes, gcc_cv_decl_char_bit=no) 358169689Skan]) 359169689Skanif test $gcc_cv_decl_char_bit = no; then 360169689Skan AC_CACHE_CHECK(number of bits in a byte, gcc_cv_c_nbby, 361169689Skan[i=8 362169689Skan gcc_cv_c_nbby= 363169689Skan while test $i -lt 65; do 364169689Skan AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, 365169689Skan [switch(0) { 366169689Skan case (unsigned char)((unsigned long)1 << $i) == ((unsigned long)1 << $i): 367169689Skan case (unsigned char)((unsigned long)1<<($i-1)) == ((unsigned long)1<<($i-1)): 368169689Skan ; }])], 369169689Skan [gcc_cv_c_nbby=$i; break]) 370169689Skan i=`expr $i + 1` 371169689Skan done 372169689Skan test -z "$gcc_cv_c_nbby" && gcc_cv_c_nbby=failed 373169689Skan]) 374169689Skanif test $gcc_cv_c_nbby = failed; then 375169689Skan AC_MSG_ERROR(cannot determine number of bits in a byte) 376169689Skanelse 377169689Skan AC_DEFINE_UNQUOTED(CHAR_BIT, $gcc_cv_c_nbby, 378169689Skan [Define as the number of bits in a byte, if \`limits.h' doesn't.]) 379169689Skanfi 380169689Skanfi]) 381169689Skan 382169689SkanAC_DEFUN([gcc_AC_INITFINI_ARRAY], 383169689Skan[AC_ARG_ENABLE(initfini-array, 384169689Skan [ --enable-initfini-array use .init_array/.fini_array sections], 385169689Skan [], [ 386169689SkanAC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support, 387169689Skan gcc_cv_initfini_array, [dnl 388169689Skan AC_RUN_IFELSE([AC_LANG_SOURCE([ 389169689Skanstatic int x = -1; 390169689Skanint main (void) { return x; } 391169689Skanint foo (void) { x = 0; } 392169689Skanint (*fp) (void) __attribute__ ((section (".init_array"))) = foo;])], 393169689Skan [gcc_cv_initfini_array=yes], [gcc_cv_initfini_array=no], 394169689Skan [gcc_cv_initfini_array=no])]) 395169689Skan enable_initfini_array=$gcc_cv_initfini_array 396169689Skan]) 397169689Skanif test $enable_initfini_array = yes; then 398169689Skan AC_DEFINE(HAVE_INITFINI_ARRAY, 1, 399169689Skan [Define .init_array/.fini_array sections are available and working.]) 400169689Skanfi]) 401169689Skan 402169689Skandnl # _gcc_COMPUTE_GAS_VERSION 403169689Skandnl # Used by gcc_GAS_VERSION_GTE_IFELSE 404169689Skandnl # 405169689Skandnl # WARNING: 406169689Skandnl # gcc_cv_as_gas_srcdir must be defined before this. 407169689Skandnl # This gross requirement will go away eventually. 408169689SkanAC_DEFUN([_gcc_COMPUTE_GAS_VERSION], 409169689Skan[gcc_cv_as_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd 410169689Skanfor f in $gcc_cv_as_bfd_srcdir/configure \ 411169689Skan $gcc_cv_as_gas_srcdir/configure \ 412169689Skan $gcc_cv_as_gas_srcdir/configure.in \ 413169689Skan $gcc_cv_as_gas_srcdir/Makefile.in ; do 414169689Skan gcc_cv_gas_version=`sed -n -e 's/^[[ ]]*\(VERSION=[[0-9]]*\.[[0-9]]*.*\)/\1/p' < $f` 415169689Skan if test x$gcc_cv_gas_version != x; then 416169689Skan break 417169689Skan fi 418169689Skandone 419169689Skangcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([[0-9]]*\)"` 420169689Skangcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[[0-9]]*\.\([[0-9]]*\)"` 421169689Skangcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)"` 422169689Skancase $gcc_cv_gas_patch_version in 423169689Skan "") gcc_cv_gas_patch_version="0" ;; 424169689Skanesac 425169689Skangcc_cv_gas_vers=`expr \( \( $gcc_cv_gas_major_version \* 1000 \) \ 426169689Skan + $gcc_cv_gas_minor_version \) \* 1000 \ 427169689Skan + $gcc_cv_gas_patch_version` 428169689Skan]) []dnl # _gcc_COMPUTE_GAS_VERSION 429169689Skan 430169689Skandnl # gcc_GAS_VERSION_GTE_IFELSE([elf,] major, minor, patchlevel, 431169689Skandnl # [command_if_true = :], [command_if_false = :]) 432169689Skandnl # Check to see if the version of GAS is greater than or 433169689Skandnl # equal to the specified version. 434169689Skandnl # 435169689Skandnl # The first ifelse() shortens the shell code if the patchlevel 436169689Skandnl # is unimportant (the usual case). The others handle missing 437169689Skandnl # commands. Note that the tests are structured so that the most 438169689Skandnl # common version number cases are tested first. 439169689SkanAC_DEFUN([_gcc_GAS_VERSION_GTE_IFELSE], 440169689Skan[ifelse([$1], elf, 441169689Skan [if test $in_tree_gas_is_elf = yes \ 442169689Skan &&], 443169689Skan [if]) test $gcc_cv_gas_vers -ge `expr \( \( $2 \* 1000 \) + $3 \) \* 1000 + $4` 444169689Skan then dnl 445169689Skanifelse([$5],,:,[$5])[]dnl 446169689Skanifelse([$6],,,[ 447169689Skan else $6]) 448169689Skanfi]) 449169689Skan 450169689SkanAC_DEFUN([gcc_GAS_VERSION_GTE_IFELSE], 451169689Skan[AC_REQUIRE([_gcc_COMPUTE_GAS_VERSION])dnl 452169689Skanifelse([$1], elf, [_gcc_GAS_VERSION_GTE_IFELSE($@)], 453169689Skan [_gcc_GAS_VERSION_GTE_IFELSE(,$@)])]) 454169689Skan 455169689Skandnl gcc_GAS_CHECK_FEATURE(description, cv, [[elf,]major,minor,patchlevel], 456169689Skandnl [extra switches to as], [assembler input], 457169689Skandnl [extra testing logic], [command if feature available]) 458169689Skandnl 459169689Skandnl Checks for an assembler feature. If we are building an in-tree 460169689Skandnl gas, the feature is available if the associated assembler version 461169689Skandnl is greater than or equal to major.minor.patchlevel. If not, then 462169689Skandnl ASSEMBLER INPUT is fed to the assembler and the feature is available 463169689Skandnl if assembly succeeds. If EXTRA TESTING LOGIC is not the empty string, 464169689Skandnl then it is run instead of simply setting CV to "yes" - it is responsible 465169689Skandnl for doing so, if appropriate. 466169689SkanAC_DEFUN([gcc_GAS_CHECK_FEATURE], 467169689Skan[AC_CACHE_CHECK([assembler for $1], [$2], 468169689Skan [[$2]=no 469169689Skan ifelse([$3],,,[dnl 470169689Skan if test $in_tree_gas = yes; then 471169689Skan gcc_GAS_VERSION_GTE_IFELSE($3, [[$2]=yes]) 472169689Skan el])if test x$gcc_cv_as != x; then 473169689Skan echo ifelse(m4_substr([$5],0,1),[$], "[$5]", '[$5]') > conftest.s 474169689Skan if AC_TRY_COMMAND([$gcc_cv_as $4 -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD]) 475169689Skan then 476169689Skan ifelse([$6],, [$2]=yes, [$6]) 477169689Skan else 478169689Skan echo "configure: failed program was" >&AS_MESSAGE_LOG_FD 479169689Skan cat conftest.s >&AS_MESSAGE_LOG_FD 480169689Skan fi 481169689Skan rm -f conftest.o conftest.s 482169689Skan fi]) 483169689Skanifelse([$7],,,[dnl 484169689Skanif test $[$2] = yes; then 485169689Skan $7 486169689Skanfi])]) 487169689Skan 488169689Skandnl GCC_TARGET_TEMPLATE(KEY) 489169689Skandnl ------------------------ 490169689Skandnl Define KEY as a valid configure key on the target machine. 491169689Skan 492169689Skanm4_define([GCC_TARGET_TEMPLATE], 493169689Skan[m4_define([GCC_TARGET_TEMPLATE($1)],[])]) 494169689Skan 495169689Skandnl AH_TEMPLATE(KEY, DESCRIPTION) 496169689Skandnl ----------------------------- 497169689Skandnl Issue an autoheader template for KEY, i.e., a comment composed of 498169689Skandnl DESCRIPTION (properly wrapped), and then #undef KEY. Redefinition 499169689Skandnl of the macro in autoheader.m4, to support definition of only a few 500169689Skandnl keys while compiling target libraries. 501169689Skan 502169689Skanm4_define([AH_TEMPLATE], 503169689Skan[AH_VERBATIM([$1],m4_text_wrap([$2 */], [ ], [/* ]) 504169689Skanm4_ifdef([GCC_TARGET_TEMPLATE($1)],[],[#ifndef USED_FOR_TARGET 505169689Skan])[#undef $1]m4_ifdef([GCC_TARGET_TEMPLATE($1)],[],[ 506169689Skan#endif 507169689Skan]))]) 508169689Skan 509169689Skandnl Make sure that build_exeext is looked for 510169689SkanAC_DEFUN([gcc_AC_BUILD_EXEEXT], [ 511169689Skanac_executable_extensions="$build_exeext"]) 512169689Skan 513