Skip to content
Snippets Groups Projects
configure 988 KiB
Newer Older
  • Learn to ignore specific revisions
  • {
    static int test_array [1 - 2 * !(($2) <= $ac_mid)];
    
    David M. Lee's avatar
    David M. Lee committed
    test_array [0] = 0;
    return test_array [0];
    
    if ac_fn_c_try_compile "$LINENO"
    then :
    
      ac_hi=$ac_mid
    
      as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
    fi
    
    rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
    
    done
    case $ac_lo in #((
    ?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
    '') ac_retval=1 ;;
    esac
      else
        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    /* end confdefs.h.  */
    $4
    
    static long int longval (void) { return $2; }
    static unsigned long int ulongval (void) { return $2; }
    
    #include <stdio.h>
    #include <stdlib.h>
    int
    
    {
    
      FILE *f = fopen ("conftest.val", "w");
      if (! f)
        return 1;
      if (($2) < 0)
        {
          long int i = longval ();
          if (i != ($2))
    	return 1;
          fprintf (f, "%ld", i);
        }
      else
        {
          unsigned long int i = ulongval ();
          if (i != ($2))
    	return 1;
          fprintf (f, "%lu", i);
        }
      /* Do not output a trailing newline, as this causes \r\n confusion
         on some platforms.  */
      return ferror (f) || fclose (f) != 0;
    
      ;
      return 0;
    }
    _ACEOF
    
    if ac_fn_c_try_run "$LINENO"
    then :
    
      echo >>conftest.val; read $3 <conftest.val; ac_retval=0
    
      ac_retval=1
    fi
    rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
      conftest.$ac_objext conftest.beam conftest.$ac_ext
    rm -f conftest.val
    
      fi
    
    David M. Lee's avatar
    David M. Lee committed
      eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
    
      as_fn_set_status $ac_retval
    
    } # ac_fn_c_compute_int
    
    ac_configure_args_raw=
    for ac_arg
    do
      case $ac_arg in
      *\'*)
        ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
      esac
      as_fn_append ac_configure_args_raw " '$ac_arg'"
    done
    
    case $ac_configure_args_raw in
      *$as_nl*)
        ac_safe_unquote= ;;
      *)
        ac_unsafe_z='|&;<>()$`\\"*?[ ''	' # This string ends in space, tab.
        ac_unsafe_a="$ac_unsafe_z#~"
        ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
        ac_configure_args_raw=`      printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
    esac
    
    
    cat >config.log <<_ACEOF
    This file contains any messages produced by compilers while
    running configure, to aid debugging if configure makes a mistake.
    
    It was created by asterisk $as_me trunk, which was
    
    generated by GNU Autoconf 2.71.  Invocation command line was
    
      $ $0$ac_configure_args_raw
    
    
    _ACEOF
    exec 5>>config.log
    {
    cat <<_ASUNAME
    ## --------- ##
    ## Platform. ##
    ## --------- ##
    
    hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
    uname -m = `(uname -m) 2>/dev/null || echo unknown`
    uname -r = `(uname -r) 2>/dev/null || echo unknown`
    uname -s = `(uname -s) 2>/dev/null || echo unknown`
    uname -v = `(uname -v) 2>/dev/null || echo unknown`
    
    /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
    /bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
    
    /bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
    /usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
    /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
    /usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
    /bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
    /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
    /bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
    
    _ASUNAME
    
    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
    for as_dir in $PATH
    do
      IFS=$as_save_IFS
    
      case $as_dir in #(((
        '') as_dir=./ ;;
        */) ;;
        *) as_dir=$as_dir/ ;;
      esac
        printf "%s\n" "PATH: $as_dir"
    
    IFS=$as_save_IFS
    
    } >&5
    
    cat >&5 <<_ACEOF
    
    
    ## ----------- ##
    ## Core tests. ##
    ## ----------- ##
    
    _ACEOF
    
    
    # Keep a trace of the command line.
    # Strip out --no-create and --no-recursion so they do not pile up.
    # Strip out --silent because we don't want to record it for future runs.
    # Also quote any args containing shell meta-characters.
    # Make two passes to allow for proper duplicate-argument suppression.
    ac_configure_args=
    ac_configure_args0=
    ac_configure_args1=
    ac_must_keep_next=false
    for ac_pass in 1 2
    do
      for ac_arg
      do
        case $ac_arg in
        -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
        -q | -quiet | --quiet | --quie | --qui | --qu | --q \
        | -silent | --silent | --silen | --sile | --sil)
          continue ;;
        *\'*)
    
          ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
    
        esac
        case $ac_pass in
    
        1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
    
          as_fn_append ac_configure_args1 " '$ac_arg'"
    
          if test $ac_must_keep_next = true; then
    	ac_must_keep_next=false # Got value, back to normal.
          else
    	case $ac_arg in
    	  *=* | --config-cache | -C | -disable-* | --disable-* \
    	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
    	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
    	  | -with-* | --with-* | -without-* | --without-* | --x)
    	    case "$ac_configure_args0 " in
    	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
    	    esac
    	    ;;
    	  -* ) ac_must_keep_next=true ;;
    	esac
          fi
    
          as_fn_append ac_configure_args " '$ac_arg'"
    
    { ac_configure_args0=; unset ac_configure_args0;}
    { ac_configure_args1=; unset ac_configure_args1;}
    
    
    # When interrupted or exit'd, cleanup temporary files, and complete
    # config.log.  We remove comments because anyway the quotes in there
    # would cause problems or look ugly.
    # WARNING: Use '\'' to represent an apostrophe within the trap.
    # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
    trap 'exit_status=$?
    
      # Sanitize IFS.
      IFS=" ""	$as_nl"
    
      # Save into config.log some information that might help in debugging.
      {
        echo
    
    
        printf "%s\n" "## ---------------- ##
    
    ## Cache variables. ##
    
    David M. Lee's avatar
    David M. Lee committed
    ## ---------------- ##"
    
        echo
        # The following way of writing the cache mishandles newlines in values,
    (
      for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
        eval ac_val=\$$ac_var
        case $ac_val in #(
        *${as_nl}*)
          case $ac_var in #(
    
          *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
    printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
    
          esac
          case $ac_var in #(
          _ | IFS | as_nl) ;; #(
    
          BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
    
          *) { eval $ac_var=; unset $ac_var;} ;;
    
          esac ;;
        esac
      done
      (set) 2>&1 |
        case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
        *${as_nl}ac_space=\ *)
          sed -n \
    	"s/'\''/'\''\\\\'\'''\''/g;
    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
          ;; #(
        *)
          sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
          ;;
        esac |
        sort
    )
        echo
    
    
        printf "%s\n" "## ----------------- ##
    
    ## Output variables. ##
    
    David M. Lee's avatar
    David M. Lee committed
    ## ----------------- ##"
    
        echo
        for ac_var in $ac_subst_vars
        do
          eval ac_val=\$$ac_var
          case $ac_val in
    
          *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
    
          printf "%s\n" "$ac_var='\''$ac_val'\''"
    
        done | sort
        echo
    
        if test -n "$ac_subst_files"; then
    
          printf "%s\n" "## ------------------- ##
    
    ## File substitutions. ##
    
    David M. Lee's avatar
    David M. Lee committed
    ## ------------------- ##"
    
          echo
          for ac_var in $ac_subst_files
          do
    	eval ac_val=\$$ac_var
    	case $ac_val in
    
    	*\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
    
    	printf "%s\n" "$ac_var='\''$ac_val'\''"
    
          done | sort
          echo
        fi
    
        if test -s confdefs.h; then
    
          printf "%s\n" "## ----------- ##
    
    ## confdefs.h. ##
    
    David M. Lee's avatar
    David M. Lee committed
    ## ----------- ##"
    
          echo
          cat confdefs.h
          echo
        fi
        test "$ac_signal" != 0 &&
    
          printf "%s\n" "$as_me: caught signal $ac_signal"
        printf "%s\n" "$as_me: exit $exit_status"
    
      } >&5
      rm -f core *.core core.conftest.* &&
        rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
        exit $exit_status
    ' 0
    for ac_signal in 1 2 13 15; do
    
      trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
    
    done
    ac_signal=0
    
    # confdefs.h avoids OS command line length limits that DEFS can exceed.
    rm -f -r conftest* confdefs.h
    
    
    printf "%s\n" "/* confdefs.h */" > confdefs.h
    
    # Predefined preprocessor variables.
    
    
    printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
    
    printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
    
    printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
    
    printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
    
    printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
    
    printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
    
    
    # Let the site file select an alternate cache file if it wants to.
    
    # Prefer an explicitly selected file to automatically selected ones.
    
    if test -n "$CONFIG_SITE"; then
    
      ac_site_files="$CONFIG_SITE"
    
    elif test "x$prefix" != xNONE; then
    
      ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
    
      ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
    
    
    for ac_site_file in $ac_site_files
    
      case $ac_site_file in #(
      */*) :
         ;; #(
      *) :
        ac_site_file=./$ac_site_file ;;
    esac
      if test -f "$ac_site_file" && test -r "$ac_site_file"; then
        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
    printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
    
        sed 's/^/| /' "$ac_site_file" >&5
    
    David M. Lee's avatar
    David M. Lee committed
        . "$ac_site_file" \
    
          || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
    printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
    
    David M. Lee's avatar
    David M. Lee committed
    as_fn_error $? "failed to load site script $ac_site_file
    See \`config.log' for more details" "$LINENO" 5; }
    
      fi
    done
    
    if test -r "$cache_file"; then
    
      # Some versions of bash will fail to source /dev/null (special files
      # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
      if test /dev/null != "$cache_file" && test -f "$cache_file"; then
    
        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
    printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
    
        case $cache_file in
          [\\/]* | ?:[\\/]* ) . "$cache_file";;
          *)                      . "./$cache_file";;
        esac
      fi
    else
    
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
    printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
    
    # Test code for whether the C compiler supports C89 (global declarations)
    ac_c_conftest_c89_globals='
    /* Does the compiler advertise C89 conformance?
       Do not test the value of __STDC__, because some compilers set it to 0
       while being otherwise adequately conformant. */
    #if !defined __STDC__
    # error "Compiler does not advertise C89 conformance"
    #endif
    
    #include <stddef.h>
    #include <stdarg.h>
    struct stat;
    /* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
    struct buf { int x; };
    struct buf * (*rcsopen) (struct buf *, struct stat *, int);
    static char *e (p, i)
         char **p;
         int i;
    {
      return p[i];
    }
    static char *f (char * (*g) (char **, int), char **p, ...)
    {
      char *s;
      va_list v;
      va_start (v,p);
      s = g (p, va_arg (v,int));
      va_end (v);
      return s;
    }
    
    /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
       function prototypes and stuff, but not \xHH hex character constants.
       These do not provoke an error unfortunately, instead are silently treated
       as an "x".  The following induces an error, until -std is added to get
       proper ANSI mode.  Curiously \x00 != x always comes out true, for an
       array size at least.  It is necessary to write \x00 == 0 to get something
       that is true only with -std.  */
    int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
    
    /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
       inside strings and character constants.  */
    #define FOO(x) '\''x'\''
    int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
    
    int test (int i, double x);
    struct s1 {int (*f) (int a);};
    struct s2 {int (*f) (double a);};
    int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
                   int, int);'
    
    # Test code for whether the C compiler supports C89 (body of main).
    ac_c_conftest_c89_main='
    ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
    '
    
    # Test code for whether the C compiler supports C99 (global declarations)
    ac_c_conftest_c99_globals='
    // Does the compiler advertise C99 conformance?
    #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
    # error "Compiler does not advertise C99 conformance"
    #endif
    
    #include <stdbool.h>
    extern int puts (const char *);
    extern int printf (const char *, ...);
    extern int dprintf (int, const char *, ...);
    extern void *malloc (size_t);
    
    // Check varargs macros.  These examples are taken from C99 6.10.3.5.
    // dprintf is used instead of fprintf to avoid needing to declare
    // FILE and stderr.
    #define debug(...) dprintf (2, __VA_ARGS__)
    #define showlist(...) puts (#__VA_ARGS__)
    #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
    static void
    test_varargs_macros (void)
    {
      int x = 1234;
      int y = 5678;
      debug ("Flag");
      debug ("X = %d\n", x);
      showlist (The first, second, and third items.);
      report (x>y, "x is %d but y is %d", x, y);
    }
    
    // Check long long types.
    #define BIG64 18446744073709551615ull
    #define BIG32 4294967295ul
    #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
    #if !BIG_OK
      #error "your preprocessor is broken"
    #endif
    #if BIG_OK
    #else
      #error "your preprocessor is broken"
    #endif
    static long long int bignum = -9223372036854775807LL;
    static unsigned long long int ubignum = BIG64;
    
    struct incomplete_array
    {
      int datasize;
      double data[];
    };
    
    struct named_init {
      int number;
      const wchar_t *name;
      double average;
    };
    
    typedef const char *ccp;
    
    static inline int
    test_restrict (ccp restrict text)
    {
      // See if C++-style comments work.
      // Iterate through items via the restricted pointer.
      // Also check for declarations in for loops.
      for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
        continue;
      return 0;
    }
    
    // Check varargs and va_copy.
    static bool
    test_varargs (const char *format, ...)
    {
      va_list args;
      va_start (args, format);
      va_list args_copy;
      va_copy (args_copy, args);
    
      const char *str = "";
      int number = 0;
      float fnumber = 0;
    
      while (*format)
        {
          switch (*format++)
    	{
    	case '\''s'\'': // string
    	  str = va_arg (args_copy, const char *);
    	  break;
    	case '\''d'\'': // int
    	  number = va_arg (args_copy, int);
    	  break;
    	case '\''f'\'': // float
    	  fnumber = va_arg (args_copy, double);
    	  break;
    	default:
    	  break;
    	}
        }
      va_end (args_copy);
      va_end (args);
    
      return *str && number && fnumber;
    }
    '
    
    # Test code for whether the C compiler supports C99 (body of main).
    ac_c_conftest_c99_main='
      // Check bool.
      _Bool success = false;
      success |= (argc != 0);
    
      // Check restrict.
      if (test_restrict ("String literal") == 0)
        success = true;
      char *restrict newvar = "Another string";
    
      // Check varargs.
      success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
      test_varargs_macros ();
    
      // Check flexible array members.
      struct incomplete_array *ia =
        malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
      ia->datasize = 10;
      for (int i = 0; i < ia->datasize; ++i)
        ia->data[i] = i * 1.234;
    
      // Check named initializers.
      struct named_init ni = {
        .number = 34,
        .name = L"Test wide string",
        .average = 543.34343,
      };
    
      ni.number = 58;
    
      int dynamic_array[ni.number];
      dynamic_array[0] = argv[0][0];
      dynamic_array[ni.number - 1] = 543;
    
      // work around unused variable warnings
      ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
    	 || dynamic_array[ni.number - 1] != 543);
    '
    
    # Test code for whether the C compiler supports C11 (global declarations)
    ac_c_conftest_c11_globals='
    // Does the compiler advertise C11 conformance?
    #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
    # error "Compiler does not advertise C11 conformance"
    #endif
    
    // Check _Alignas.
    char _Alignas (double) aligned_as_double;
    char _Alignas (0) no_special_alignment;
    extern char aligned_as_int;
    char _Alignas (0) _Alignas (int) aligned_as_int;
    
    // Check _Alignof.
    enum
    {
      int_alignment = _Alignof (int),
      int_array_alignment = _Alignof (int[100]),
      char_alignment = _Alignof (char)
    };
    _Static_assert (0 < -_Alignof (int), "_Alignof is signed");
    
    // Check _Noreturn.
    int _Noreturn does_not_return (void) { for (;;) continue; }
    
    // Check _Static_assert.
    struct test_static_assert
    {
      int x;
      _Static_assert (sizeof (int) <= sizeof (long int),
                      "_Static_assert does not work in struct");
      long int y;
    };
    
    // Check UTF-8 literals.
    #define u8 syntax error!
    char const utf8_literal[] = u8"happens to be ASCII" "another string";
    
    // Check duplicate typedefs.
    typedef long *long_ptr;
    typedef long int *long_ptr;
    typedef long_ptr long_ptr;
    
    3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000
    // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
    struct anonymous
    {
      union {
        struct { int i; int j; };
        struct { int k; long int l; } w;
      };
      int m;
    } v1;
    '
    
    # Test code for whether the C compiler supports C11 (body of main).
    ac_c_conftest_c11_main='
      _Static_assert ((offsetof (struct anonymous, i)
    		   == offsetof (struct anonymous, w.k)),
    		  "Anonymous union alignment botch");
      v1.i = 2;
      v1.w.k = 5;
      ok |= v1.i != 5;
    '
    
    # Test code for whether the C compiler supports C11 (complete).
    ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
    ${ac_c_conftest_c99_globals}
    ${ac_c_conftest_c11_globals}
    
    int
    main (int argc, char **argv)
    {
      int ok = 0;
      ${ac_c_conftest_c89_main}
      ${ac_c_conftest_c99_main}
      ${ac_c_conftest_c11_main}
      return ok;
    }
    "
    
    # Test code for whether the C compiler supports C99 (complete).
    ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
    ${ac_c_conftest_c99_globals}
    
    int
    main (int argc, char **argv)
    {
      int ok = 0;
      ${ac_c_conftest_c89_main}
      ${ac_c_conftest_c99_main}
      return ok;
    }
    "
    
    # Test code for whether the C compiler supports C89 (complete).
    ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
    
    int
    main (int argc, char **argv)
    {
      int ok = 0;
      ${ac_c_conftest_c89_main}
      return ok;
    }
    "
    
    as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
    as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
    as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
    as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
    as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
    as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
    as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
    as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
    as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
    as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
    as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
    # Test code for whether the C++ compiler supports C++98 (global declarations)
    ac_cxx_conftest_cxx98_globals='
    // Does the compiler advertise C++98 conformance?
    #if !defined __cplusplus || __cplusplus < 199711L
    # error "Compiler does not advertise C++98 conformance"
    #endif
    
    // These inclusions are to reject old compilers that
    // lack the unsuffixed header files.
    #include <cstdlib>
    #include <exception>
    
    // <cassert> and <cstring> are *not* freestanding headers in C++98.
    extern void assert (int);
    namespace std {
      extern int strcmp (const char *, const char *);
    }
    
    // Namespaces, exceptions, and templates were all added after "C++ 2.0".
    using std::exception;
    using std::strcmp;
    
    namespace {
    
    void test_exception_syntax()
    {
      try {
        throw "test";
      } catch (const char *s) {
        // Extra parentheses suppress a warning when building autoconf itself,
        // due to lint rules shared with more typical C programs.
        assert (!(strcmp) (s, "test"));
      }
    }
    
    template <typename T> struct test_template
    {
      T const val;
      explicit test_template(T t) : val(t) {}
      template <typename U> T add(U u) { return static_cast<T>(u) + val; }
    };
    
    } // anonymous namespace
    '
    
    # Test code for whether the C++ compiler supports C++98 (body of main)
    ac_cxx_conftest_cxx98_main='
      assert (argc);
      assert (! argv[0]);
    {
      test_exception_syntax ();
      test_template<double> tt (2.0);
      assert (tt.add (4) == 6.0);
      assert (true && !false);
    }
    '
    
    # Test code for whether the C++ compiler supports C++11 (global declarations)
    ac_cxx_conftest_cxx11_globals='
    // Does the compiler advertise C++ 2011 conformance?
    #if !defined __cplusplus || __cplusplus < 201103L
    # error "Compiler does not advertise C++11 conformance"
    #endif
    
    namespace cxx11test
    {
      constexpr int get_val() { return 20; }
    
      struct testinit
      {
        int i;
        double d;
      };
    
      class delegate
      {
      public:
        delegate(int n) : n(n) {}
        delegate(): delegate(2354) {}
    
        virtual int getval() { return this->n; };
      protected:
        int n;
      };
    
      class overridden : public delegate
      {
      public:
        overridden(int n): delegate(n) {}
        virtual int getval() override final { return this->n * 2; }
      };
    
      class nocopy
      {
      public:
        nocopy(int i): i(i) {}
        nocopy() = default;
        nocopy(const nocopy&) = delete;
        nocopy & operator=(const nocopy&) = delete;
      private:
        int i;
      };
    
      // for testing lambda expressions
      template <typename Ret, typename Fn> Ret eval(Fn f, Ret v)
      {
        return f(v);
      }
    
      // for testing variadic templates and trailing return types
      template <typename V> auto sum(V first) -> V
      {
        return first;
      }
      template <typename V, typename... Args> auto sum(V first, Args... rest) -> V
      {
        return first + sum(rest...);
      }
    }
    '
    
    # Test code for whether the C++ compiler supports C++11 (body of main)
    ac_cxx_conftest_cxx11_main='
    {
      // Test auto and decltype
      auto a1 = 6538;
      auto a2 = 48573953.4;
      auto a3 = "String literal";
    
      int total = 0;
      for (auto i = a3; *i; ++i) { total += *i; }
    
      decltype(a2) a4 = 34895.034;
    }
    {
      // Test constexpr
      short sa[cxx11test::get_val()] = { 0 };
    }
    {
      // Test initializer lists
      cxx11test::testinit il = { 4323, 435234.23544 };
    }
    {
      // Test range-based for
      int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3,
                     14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
      for (auto &x : array) { x += 23; }
    }
    {
      // Test lambda expressions
      using cxx11test::eval;
      assert (eval ([](int x) { return x*2; }, 21) == 42);
      double d = 2.0;
      assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0);
      assert (d == 5.0);
      assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0);
      assert (d == 5.0);
    }
    {
      // Test use of variadic templates
      using cxx11test::sum;
      auto a = sum(1);
      auto b = sum(1, 2);
      auto c = sum(1.0, 2.0, 3.0);
    }
    {
      // Test constructor delegation
      cxx11test::delegate d1;
      cxx11test::delegate d2();
      cxx11test::delegate d3(45);
    }
    {
      // Test override and final
      cxx11test::overridden o1(55464);
    }
    {
      // Test nullptr
      char *c = nullptr;
    }
    {
      // Test template brackets
      test_template<::test_template<int>> v(test_template<int>(12));
    }
    {
      // Unicode literals
      char const *utf8 = u8"UTF-8 string \u2500";
      char16_t const *utf16 = u"UTF-8 string \u2500";
      char32_t const *utf32 = U"UTF-32 string \u2500";
    }
    '
    
    # Test code for whether the C compiler supports C++11 (complete).
    ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals}
    ${ac_cxx_conftest_cxx11_globals}
    
    int
    main (int argc, char **argv)
    {
      int ok = 0;
      ${ac_cxx_conftest_cxx98_main}
      ${ac_cxx_conftest_cxx11_main}
      return ok;
    }
    "
    
    # Test code for whether the C compiler supports C++98 (complete).
    ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals}
    int
    main (int argc, char **argv)
    {
      int ok = 0;
      ${ac_cxx_conftest_cxx98_main}
      return ok;
    }
    "
    
    as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"
    as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H"
    as_fn_append ac_func_c_list " getpagesize HAVE_GETPAGESIZE"
    as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H"
    as_fn_append ac_header_c_list " sys/socket.h sys_socket_h HAVE_SYS_SOCKET_H"
    as_fn_append ac_header_c_list " utime.h utime_h HAVE_UTIME_H"
    as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF"
    
    # Auxiliary files required by this configure script.
    ac_aux_files="install-sh config.guess config.sub"
    
    # Locations in which to look for auxiliary files.
    ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.."
    
    # Search for a directory containing all of the required auxiliary files,
    # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
    # If we don't find one directory that contains all the files we need,
    # we report the set of missing files from the *first* directory in
    # $ac_aux_dir_candidates and give up.
    ac_missing_aux_files=""
    ac_first_candidate=:
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
    as_found=false
    for as_dir in $ac_aux_dir_candidates
    do
      IFS=$as_save_IFS
      case $as_dir in #(((
        '') as_dir=./ ;;
        */) ;;
        *) as_dir=$as_dir/ ;;
      esac
      as_found=:
    
      printf "%s\n" "$as_me:${as_lineno-$LINENO}:  trying $as_dir" >&5
      ac_aux_dir_found=yes
      ac_install_sh=
      for ac_aux in $ac_aux_files
      do
        # As a special case, if "install-sh" is required, that requirement
        # can be satisfied by any of "install-sh", "install.sh", or "shtool",
        # and $ac_install_sh is set appropriately for whichever one is found.
        if test x"$ac_aux" = x"install-sh"
        then
          if test -f "${as_dir}install-sh"; then
            printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}install-sh found" >&5
            ac_install_sh="${as_dir}install-sh -c"
          elif test -f "${as_dir}install.sh"; then
            printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}install.sh found" >&5
            ac_install_sh="${as_dir}install.sh -c"
          elif test -f "${as_dir}shtool"; then
            printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}shtool found" >&5
            ac_install_sh="${as_dir}shtool install -c"
          else
            ac_aux_dir_found=no
            if $ac_first_candidate; then
              ac_missing_aux_files="${ac_missing_aux_files} install-sh"
            else
              break
            fi
          fi
        else
          if test -f "${as_dir}${ac_aux}"; then
            printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}${ac_aux} found" >&5
          else
            ac_aux_dir_found=no
            if $ac_first_candidate; then
              ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
            else
              break
            fi
          fi
        fi
      done
      if test "$ac_aux_dir_found" = yes; then
        ac_aux_dir="$as_dir"
        break
      fi
      ac_first_candidate=false
    
      as_found=false
    done
    IFS=$as_save_IFS
    if $as_found
    then :
    
    else $as_nop
      as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
    fi
    
    
    # These three variables are undocumented and unsupported,
    # and are intended to be withdrawn in a future Autoconf release.
    # They can cause serious problems if a builder's source tree is in a directory