From 4b7c18f542918cbf8f33450cb47d3493dfe1c511 Mon Sep 17 00:00:00 2001 From: "James D. Mitchell" Date: Fri, 3 May 2024 10:37:43 +0100 Subject: [PATCH 01/15] Checkout files from mpan322/main --- .github/workflows/gap.yml | 133 + PackageInfo.g | 1 + configure~ | 7108 ++++++++++++++++++++++++++++++++ doc/display.xml | 640 ++- doc/main.xml | 60 + doc/z-chap9.xml | 15 +- etc/code-coverage-test-c.py | 151 + etc/code-coverage-test-gap.py | 2 +- gap/.null-ls_141605_display.gi | 484 +++ gap/deprecated.gd | 35 + gap/deprecated.gi | 116 + gap/display.gd | 71 +- gap/display.gi | 679 ++- init.g | 1 + read.g | 1 + tst/standard/display.tst | 700 ++++ 16 files changed, 9339 insertions(+), 858 deletions(-) create mode 100644 .github/workflows/gap.yml create mode 100755 configure~ create mode 100644 doc/main.xml create mode 100755 etc/code-coverage-test-c.py create mode 100644 gap/.null-ls_141605_display.gi create mode 100644 gap/deprecated.gd create mode 100644 gap/deprecated.gi create mode 100644 tst/standard/display.tst diff --git a/.github/workflows/gap.yml b/.github/workflows/gap.yml new file mode 100644 index 000000000..9ec6f1a19 --- /dev/null +++ b/.github/workflows/gap.yml @@ -0,0 +1,133 @@ +name: "GAP" +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + - stable-*.* + schedule: + # Every day at 3:30 AM UTC + - cron: '30 3 * * *' + +env: + DIGRAPHS_LIB: digraphs-lib-0.6 + +jobs: + test-unix: + name: "${{ matrix.os }}${{ matrix.ABI }} / GAP ${{ matrix.gap-branch }}" + runs-on: "${{ matrix.os }}-latest" + strategy: + fail-fast: false + matrix: + os: + - ubuntu + gap-branch: + - master + - stable-4.11 + - stable-4.12 + - stable-4.13 + ABI: [''] + pkgs-to-clone: + - NautyTracesInterface + + include: + - gap-branch: master + os: macos + pkgs-to-clone: "NautyTracesInterface" + - gap-branch: master + os: ubuntu + ABI: 32 + + steps: + - uses: actions/checkout@v4 + - name: "Install dependencies" + if: ${{ runner.os == 'macOS' }} + run: brew install automake + - name: "Install GAP and clone/compile necessary packages" + uses: gap-actions/setup-gap@v2 + with: + GAP_PKGS_TO_CLONE: "${{ matrix.pkgs-to-clone }} digraphs/graphviz" + GAP_PKGS_TO_BUILD: "io orb profiling grape NautyTracesInterface datastructures" + GAPBRANCH: ${{ matrix.gap-branch }} + ABI: ${{ matrix.ABI }} + - name: "Build Digraphs" + uses: gap-actions/build-pkg@v1 + with: + ABI: ${{ matrix.ABI }} + - name: "Install digraphs-lib" + run: | + curl --retry 5 -L -O "https://digraphs.github.io/Digraphs/${{ env.DIGRAPHS_LIB }}.tar.gz" + tar xf "${{ env.DIGRAPHS_LIB }}.tar.gz" + - name: "Run DigraphsTestInstall" + uses: gap-actions/run-pkg-tests@v2 + with: + GAP_TESTFILE: "tst/github_actions/install.g" + - name: "Run DigraphsTestStandard" + uses: gap-actions/run-pkg-tests@v2 + with: + GAP_TESTFILE: "tst/github_actions/standard.g" + - name: "Run DigraphsTestManualExamples" + uses: gap-actions/run-pkg-tests@v2 + with: + GAP_TESTFILE: "tst/github_actions/examples.g" + - name: "Run DigraphsTestExtreme" + uses: gap-actions/run-pkg-tests@v2 + with: + GAP_TESTFILE: "tst/github_actions/extreme.g" + - uses: gap-actions/process-coverage@v2 + - uses: codecov/codecov-action@v3 + + test-cygwin: + name: "cygwin / GAP master" + runs-on: windows-2019 + env: + CHERE_INVOKING: 1 + steps: + - uses: actions/checkout@v4 + - uses: gap-actions/setup-cygwin@v1 + - uses: gap-actions/setup-gap@cygwin-v2 + with: + GAP_PKGS_TO_BUILD: "io orb profiling grape datastructures" + GAP_PKGS_TO_CLONE: "digraphs/graphviz" + - uses: gap-actions/build-pkg@cygwin-v1 + - name: "Install digraphs-lib" + run: | + curl --retry 5 -L -O "https://digraphs.github.io/Digraphs/${{ env.DIGRAPHS_LIB }}.tar.gz" + tar xf "${{ env.DIGRAPHS_LIB }}.tar.gz" + - uses: gap-actions/run-pkg-tests@cygwin-v2 + - uses: gap-actions/process-coverage@cygwin-v2 + - uses: codecov/codecov-action@v3 + + with-external-planarity-bliss: + runs-on: "ubuntu-latest" + env: + GAPBRANCH: "stable-4.12" + ABI: 64 + PKG_CONFIG_PATH: "/home/runner/micromamba/envs/digraphs/lib/pkgconfig:/home/runner/micromamba/envs/digraphs/share/pkgconfig/" + LD_LIBRARY_PATH: "/home/runner/micromamba/envs/digraphs/lib" + CFLAGS: "-I/home/runner/micromamba/envs/digraphs/include" + LDFLAGS: "-L/home/runner/micromamba/envs/digraphs/lib" + defaults: + run: + shell: bash -l {0} + steps: + - uses: actions/checkout@v4 + - name: "Install micromamba environment from environment.yml . . ." + uses: mamba-org/setup-micromamba@v1 + with: + environment-file: environment.yml + cache-environment: true + - name: "Activate \"digraphs\" environment . . ." + run: micromamba activate digraphs + - name: "Install GAP and clone/compile necessary packages" + uses: gap-actions/setup-gap@v2 + with: + GAP_PKGS_TO_BUILD: "io orb profiling grape datastructures" + GAP_PKGS_TO_CLONE: "digraphs/graphviz" + - name: "Build Digraphs" + uses: gap-actions/build-pkg@v1 + with: + CONFIGFLAGS: --with-external-planarity --with-external-bliss + - name: "Run Digraphs package's tst/teststandard.g" + uses: gap-actions/run-pkg-tests@v2 diff --git a/PackageInfo.g b/PackageInfo.g index fc2385239..efef66b8e 100644 --- a/PackageInfo.g +++ b/PackageInfo.g @@ -571,6 +571,7 @@ Dependencies := rec( GAP := ">=4.11.0", NeededOtherPackages := [["IO", ">=4.5.1"], ["orb", ">=4.8.2"], + ["GraphViz", ">=0.0.0"], ["datastructures", ">=0.2.5"]], SuggestedOtherPackages := [["GAPDoc", ">=1.6.3"], ["GRAPE", ">=4.8.1"], diff --git a/configure~ b/configure~ new file mode 100755 index 000000000..cc7d180c9 --- /dev/null +++ b/configure~ @@ -0,0 +1,7108 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.72 for digraphs GAP package. +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) 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 + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in #( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='digraphs' +PACKAGE_TARNAME='digraphs' +PACKAGE_VERSION='GAP package' +PACKAGE_STRING='digraphs GAP package' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +ac_unique_file="src/digraphs.c" +ac_default_prefix='${abs_top_builddir}/../../bin/' +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +ac_subst_vars='LTLIBOBJS +LIBOBJS +WITH_INCLUDED_BLISS +PLANARITY_SUITE_DIR +WITH_INCLUDED_PLANARITY +WARNING_CFLAGS +WARNING_CXXFLAGS +SED +CODE_COVERAGE_LDFLAGS +CODE_COVERAGE_CXXFLAGS +CODE_COVERAGE_CFLAGS +ENABLE_STATS +KERNEL_DEBUG +GAP_LIBS +GAP_LDFLAGS +GAP_CFLAGS +GAP_CPPFLAGS +GAPROOT +GAPARCH +ac_ct_CXX +CXXFLAGS +CXX +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_gaproot +enable_debug +enable_stats +enable_code_coverage +enable_compile_warnings +with_external_planarity +with_external_bliss +with_intrinsics +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: '$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +'configure' configures digraphs GAP package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print 'checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for '--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/digraphs] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of digraphs GAP package:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-debug enable debug mode + --enable-stats enable stats mode + --enable-code-coverage Whether to enable code coverage support + --enable-compile-warnings + enable compiler warnings + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gaproot= specify root of GAP installation + --with-external-planarity + use external planarity + --with-external-bliss use external bliss + --without-intrinsics do not use compiler intrinsics even if available + + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + +Use these variables to override the choices made by 'configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +digraphs configure GAP package +generated by GNU Autoconf 2.72 + +Copyright (C) 2023 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link +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 digraphs $as_me GAP package, which was +generated by GNU Autoconf 2.72. 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" + done +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'" ;; + 2) + 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'" + ;; + esac + done +done +{ 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. ## +## ---------------- ##" + 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. ## +## ----------------- ##" + 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"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + 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"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + 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" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + 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 + . "$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;} +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;} + >$cache_file +fi + +# 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 +#include +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 (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; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* 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 + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// 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) +{ + // 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; + // Work around memory leak warnings. + free (ia); + + // 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; + +// 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; +} +" + +# 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 +#include + +// and 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 struct test_template +{ + T const val; + explicit test_template(T t) : val(t) {} + template T add(U u) { return static_cast(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 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 Ret eval(Fn f, Ret v) + { + return f(v); + } + + // for testing variadic templates and trailing return types + template auto sum(V first) -> V + { + return first; + } + template 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> v(test_template(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 " 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" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_config_headers="$ac_config_headers gen/pkgconfig.h:src/pkgconfig.h.in" + + + + +ac_config_commands="$ac_config_commands src/digraphs-config.h" + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in #( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in #( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +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 + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +printf %s "checking whether the compiler supports GNU C++... " >&6; } +if test ${ac_cv_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+y} +ac_save_CXXFLAGS=$CXXFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_g=yes +else case e in #( + e) CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + +else case e in #( + e) ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_cxx11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cxx_cxx11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX ;; +esac +fi + +if test "x$ac_cv_prog_cxx_cxx11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cxx_cxx11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; +esac +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 ;; +esac +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_cxx98+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cxx_cxx98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX ;; +esac +fi + +if test "x$ac_cv_prog_cxx_cxx98" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cxx_cxx98" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; +esac +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + # Make sure CDPATH is portably set to a sensible value + CDPATH=${ZSH_VERSION+.}: + + GAP_CPPFLAGS="" + + ###################################### + # Find the GAP root directory by + # checking for the sysinfo.gap file + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GAP root directory" >&5 +printf %s "checking for GAP root directory... " >&6; } + GAPROOT="../.." + + # Allow the user to specify the location of GAP + +# Check whether --with-gaproot was given. +if test ${with_gaproot+y} +then : + withval=$with_gaproot; GAPROOT="$withval" +fi + + + # Convert the path to absolute + GAPROOT=`cd $GAPROOT > /dev/null 2>&1 && pwd` + + if test -e ${GAPROOT}/sysinfo.gap; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GAPROOT}" >&5 +printf "%s\n" "${GAPROOT}" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 +printf "%s\n" "Not found" >&6; } + + echo "" + echo "********************************************************************" + echo " ERROR" + echo "" + echo " Cannot find your GAP installation. Please specify the location of" + echo " GAP's root directory using --with-gaproot=" + echo "" + echo " The GAP root directory (as far as this package is concerned) is" + echo " the one containing the file sysinfo.gap" + echo "********************************************************************" + echo "" + + as_fn_error $? "Unable to find GAP root directory" "$LINENO" 5 + fi + + ##################################### + # Now find the architecture + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GAP architecture" >&5 +printf %s "checking for GAP architecture... " >&6; } + GAPARCH="Unknown" + . $GAPROOT/sysinfo.gap + if test "x$GAParch" != "x"; then + GAPARCH=$GAParch + fi + + if test "x$GAPARCH" = "xUnknown" ; then + echo "" + echo "********************************************************************" + echo " ERROR" + echo "" + echo " Found a GAP installation at $GAPROOT but could not find" + echo " information about GAP's architecture in the file" + echo " ${GAPROOT}/sysinfo.gap ." + echo " This file should be present: please check your GAP installation." + echo "********************************************************************" + echo "" + + as_fn_error $? "Unable to find plausible GAParch information." "$LINENO" 5 + fi + + # require GAP >= 4.9 + if test "x$GAP_CPPFLAGS" = x; then + echo "" + echo "********************************************************************" + echo " ERROR" + echo "" + echo " This version of GAP is too old and not supported by this package." + echo "********************************************************************" + echo "" + as_fn_error $? "No GAP_CPPFLAGS is given" "$LINENO" 5 + fi + + + + + + + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + +# Check whether --enable-debug was given. +if test ${enable_debug+y} +then : + enableval=$enable_debug; +printf "%s\n" "#define KERNEL_DEBUG 1" >>confdefs.h + +else case e in #( + e) enable_debug=no + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable debug mode" >&5 +printf %s "checking whether to enable debug mode... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_debug" >&5 +printf "%s\n" "$enable_debug" >&6; } +KERNEL_DEBUG=$enable_debug + + +# Check whether --enable-stats was given. +if test ${enable_stats+y} +then : + enableval=$enable_stats; +printf "%s\n" "#define ENABLE_STATS 1" >>confdefs.h + +else case e in #( + e) enable_stats=no + ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable stats mode" >&5 +printf %s "checking whether to enable stats mode... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_stats" >&5 +printf "%s\n" "$enable_stats" >&6; } +ENABLE_STATS=$enable_debug + + +# Check whether --enable-code-coverage was given. +if test ${enable_code_coverage+y} +then : + enableval=$enable_code_coverage; +else case e in #( + e) enable_code_coverage=no ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with code coverage support" >&5 +printf %s "checking whether to build with code coverage support... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_code_coverage" >&5 +printf "%s\n" "$enable_code_coverage" >&6; } + +if test "$enable_code_coverage" = "yes" +then : + + CODE_COVERAGE_CFLAGS="-DNDEBUG -O0 -g --coverage" + CODE_COVERAGE_CXXFLAGS="-DNDEBUG -O0 -g --coverage" + CODE_COVERAGE_LDFLAGS="--coverage" + + + + +fi + + +# Enable compiler warnings + +# Check whether --enable-compile-warnings was given. +if test ${enable_compile_warnings+y} +then : + enableval=$enable_compile_warnings; enable_compile_warnings=yes +else case e in #( + e) enable_compile_warnings=no ;; +esac +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether enable compiler warnings" >&5 +printf %s "checking whether enable compiler warnings... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_compile_warnings" >&5 +printf "%s\n" "$enable_compile_warnings" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + 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 + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in #( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + +if test "x$enable_compile_warnings" != "xno" +then : + ax_enable_compile_warnings=yes + + + + + + + + + + # Variable names + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + # Always pass -Werror=unknown-warning-option to get Clang to fail on bad + # flags, otherwise they are always appended to the warn_cxxflags variable, + # and Clang warns on them for every compilation unit. + # If this is passed to GCC, it will explode, so the flag must be enabled + # conditionally. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -Werror=unknown-warning-option" >&5 +printf %s "checking whether C++ compiler accepts -Werror=unknown-warning-option... " >&6; } +if test ${ax_cv_check_cxxflags___Werror_unknown_warning_option+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS -Werror=unknown-warning-option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ax_cv_check_cxxflags___Werror_unknown_warning_option=yes +else case e in #( + e) ax_cv_check_cxxflags___Werror_unknown_warning_option=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags___Werror_unknown_warning_option" >&5 +printf "%s\n" "$ax_cv_check_cxxflags___Werror_unknown_warning_option" >&6; } +if test "x$ax_cv_check_cxxflags___Werror_unknown_warning_option" = xyes +then : + + ax_compiler_flags_test="-Werror=unknown-warning-option" + +else case e in #( + e) + ax_compiler_flags_test="" + ;; +esac +fi + + + # Check that -Wno-suggest-attribute=format is supported + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -Wno-suggest-attribute=format" >&5 +printf %s "checking whether C++ compiler accepts -Wno-suggest-attribute=format... " >&6; } +if test ${ax_cv_check_cxxflags___Wno_suggest_attribute_format+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS -Wno-suggest-attribute=format" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ax_cv_check_cxxflags___Wno_suggest_attribute_format=yes +else case e in #( + e) ax_cv_check_cxxflags___Wno_suggest_attribute_format=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags___Wno_suggest_attribute_format" >&5 +printf "%s\n" "$ax_cv_check_cxxflags___Wno_suggest_attribute_format" >&6; } +if test "x$ax_cv_check_cxxflags___Wno_suggest_attribute_format" = xyes +then : + + ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format" + +else case e in #( + e) + ax_compiler_no_suggest_attribute_flags="" + ;; +esac +fi + + + # Base flags + + + + +for flag in -fno-strict-aliasing -pedantic -Wold-style-cast ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cxxflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 +printf %s "checking whether C++ compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CXXFLAGS+y} +then : + + case " $WARNING_CXXFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains \$flag"; } >&5 + (: WARNING_CXXFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CXXFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CXXFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + + if test "$ax_enable_compile_warnings" != "no" +then : + + # "yes" flags + + + + +for flag in -Wall -Wextra -Wundef -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wformat=2 -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wredundant-decls -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wreturn-type -Wno-overloaded-virtual -Wswitch-enum -Wswitch-default ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cxxflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 +printf %s "checking whether C++ compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CXXFLAGS+y} +then : + + case " $WARNING_CXXFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains \$flag"; } >&5 + (: WARNING_CXXFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CXXFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CXXFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + +fi + if test "$ax_enable_compile_warnings" = "error" +then : + + # "error" flags; -Werror has to be appended unconditionally because + # it's not possible to test for + # + # suggest-attribute=format is disabled because it gives too many false + # positives + +if test ${WARNING_CXXFLAGS+y} +then : + + case " $WARNING_CXXFLAGS " in #( + *" -Werror "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains -Werror"; } >&5 + (: WARNING_CXXFLAGS already contains -Werror) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CXXFLAGS " -Werror" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CXXFLAGS=-Werror + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + + + + + + +for flag in $ax_compiler_no_suggest_attribute_flags ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cxxflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 +printf %s "checking whether C++ compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CXXFLAGS+y} +then : + + case " $WARNING_CXXFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains \$flag"; } >&5 + (: WARNING_CXXFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CXXFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CXXFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + +fi + + # In the flags below, when disabling specific flags, always add *both* + # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example) + # we enable -Werror, disable a flag, and a build bot passes CXXFLAGS=-Wall, + # which effectively turns that flag back on again as an error. + for flag in $WARNING_CXXFLAGS; do + case $flag in #( + -Wno-*=*) : + ;; #( + -Wno-*) : + + + + + +for flag in -Wno-error=$(printf "%s\n" $flag | $SED 's/^-Wno-//'); do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cxxflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 +printf %s "checking whether C++ compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CXXFLAGS+y} +then : + + case " $WARNING_CXXFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains \$flag"; } >&5 + (: WARNING_CXXFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CXXFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CXXFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 + (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + ;; #( + *) : + ;; +esac + done + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + # Substitute the variables + + + +fi + + +if test "x$enable_compile_warnings" != "xno" +then : + ax_enable_compile_warnings=yes + + + + + + + + + + # Variable names + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifndef __cplusplus + #error "no C++" + #endif +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_compiler_cxx=yes; +else case e in #( + e) ax_compiler_cxx=no; ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + + # Always pass -Werror=unknown-warning-option to get Clang to fail on bad + # flags, otherwise they are always appended to the warn_cflags variable, and + # Clang warns on them for every compilation unit. + # If this is passed to GCC, it will explode, so the flag must be enabled + # conditionally. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5 +printf %s "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; } +if test ${ax_cv_check_cflags___Werror_unknown_warning_option+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror=unknown-warning-option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___Werror_unknown_warning_option=yes +else case e in #( + e) ax_cv_check_cflags___Werror_unknown_warning_option=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5 +printf "%s\n" "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; } +if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes +then : + + ax_compiler_flags_test="-Werror=unknown-warning-option" + +else case e in #( + e) + ax_compiler_flags_test="" + ;; +esac +fi + + + # Check that -Wno-suggest-attribute=format is supported + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wno-suggest-attribute=format" >&5 +printf %s "checking whether C compiler accepts -Wno-suggest-attribute=format... " >&6; } +if test ${ax_cv_check_cflags___Wno_suggest_attribute_format+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Wno-suggest-attribute=format" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags___Wno_suggest_attribute_format=yes +else case e in #( + e) ax_cv_check_cflags___Wno_suggest_attribute_format=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wno_suggest_attribute_format" >&5 +printf "%s\n" "$ax_cv_check_cflags___Wno_suggest_attribute_format" >&6; } +if test "x$ax_cv_check_cflags___Wno_suggest_attribute_format" = xyes +then : + + ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format" + +else case e in #( + e) + ax_compiler_no_suggest_attribute_flags="" + ;; +esac +fi + + + # Base flags + + + + +for flag in -fno-strict-aliasing -pedantic ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CFLAGS+y} +then : + + case " $WARNING_CFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 + (: WARNING_CFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + + if test "$ax_enable_compile_warnings" != "no" +then : + + if test "$ax_compiler_cxx" = "no" ; then + # C-only flags. Warn in C++ + + + + +for flag in -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes -Wdeclaration-after-statement -Wimplicit-function-declaration -Wold-style-definition -Wjump-misses-init ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CFLAGS+y} +then : + + case " $WARNING_CFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 + (: WARNING_CFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + fi + + # "yes" flags + + + + +for flag in -Wall -Wextra -Wundef -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wformat=2 -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wredundant-decls -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wreturn-type -Wswitch-enum -Wswitch-default -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wrestrict -Wnull-dereference -Wdouble-promotion ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CFLAGS+y} +then : + + case " $WARNING_CFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 + (: WARNING_CFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + +fi + if test "$ax_enable_compile_warnings" = "error" +then : + + # "error" flags; -Werror has to be appended unconditionally because + # it's not possible to test for + # + # suggest-attribute=format is disabled because it gives too many false + # positives + +if test ${WARNING_CFLAGS+y} +then : + + case " $WARNING_CFLAGS " in #( + *" -Werror "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains -Werror"; } >&5 + (: WARNING_CFLAGS already contains -Werror) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CFLAGS " -Werror" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CFLAGS=-Werror + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + + + + + + +for flag in $ax_compiler_no_suggest_attribute_flags ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CFLAGS+y} +then : + + case " $WARNING_CFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 + (: WARNING_CFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + +fi + + # In the flags below, when disabling specific flags, always add *both* + # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example) + # we enable -Werror, disable a flag, and a build bot passes CFLAGS=-Wall, + # which effectively turns that flag back on again as an error. + for flag in $WARNING_CFLAGS; do + case $flag in #( + -Wno-*=*) : + ;; #( + -Wno-*) : + + + + + +for flag in -Wno-error=$(printf "%s\n" $flag | $SED 's/^-Wno-//'); do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else case e in #( + e) eval "$as_CACHEVAR=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags ;; +esac +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : + +if test ${WARNING_CFLAGS+y} +then : + + case " $WARNING_CFLAGS " in #( + *" $flag "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 + (: WARNING_CFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append WARNING_CFLAGS " $flag" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + WARNING_CFLAGS=$flag + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 + (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + +else case e in #( + e) : ;; +esac +fi + +done + + ;; #( + *) : + ;; +esac + done + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + # Substitute the variables + + + +fi + +# Check for system planarity suite + + + +# Check whether --with-external-planarity was given. +if test ${with_external_planarity+y} +then : + withval=$with_external_planarity; +else case e in #( + e) with_external_planarity=no ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use external planarity" >&5 +printf %s "checking whether to use external planarity... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_external_planarity" >&5 +printf "%s\n" "$with_external_planarity" >&6; } + if test "x$with_external_planarity" = xyes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for external libplanarity" >&5 +printf %s "checking for external libplanarity... " >&6; } + saved_LIBS="$LIBS" + LIBS="$LIBS -lplanarity" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #if defined(GP_PROJECTVERSION_MAJOR) && GP_PROJECTVERSION_MAJOR >= 4 + #else + #error too old + #endif + int main(void) { gp_InitGraph(0, 0); } + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found or too old" >&5 +printf "%s\n" "not found or too old" >&6; } + LIBS="$saved_LIBS" + with_external_planarity=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi + if test "x$with_external_planarity" = xno +then : + + WITH_INCLUDED_PLANARITY=yes + + +printf "%s\n" "#define WITH_INCLUDED_PLANARITY 1" >>confdefs.h + + +fi + +if test "x$with_external_planarity" = xno ; then + PLANARITY_SUITE_DIR=extern/edge-addition-planarity-suite-Version_4.0.0.0 + +fi + +# Check for system bliss suite +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + +# Check whether --with-external-bliss was given. +if test ${with_external_bliss+y} +then : + withval=$with_external_bliss; +else case e in #( + e) with_external_bliss=no ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use external bliss" >&5 +printf %s "checking whether to use external bliss... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_external_bliss" >&5 +printf "%s\n" "$with_external_bliss" >&6; } + if test "x$with_external_bliss" = xyes ; then + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bliss_add_edge in -lbliss" >&5 +printf %s "checking for bliss_add_edge in -lbliss... " >&6; } +if test ${ac_cv_lib_bliss_bliss_add_edge+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbliss $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char bliss_add_edge (void); +int +main (void) +{ +return bliss_add_edge (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bliss_bliss_add_edge=yes +else case e in #( + e) ac_cv_lib_bliss_bliss_add_edge=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bliss_bliss_add_edge" >&5 +printf "%s\n" "$ac_cv_lib_bliss_bliss_add_edge" >&6; } +if test "x$ac_cv_lib_bliss_bliss_add_edge" = xyes +then : + printf "%s\n" "#define HAVE_LIBBLISS 1" >>confdefs.h + + LIBS="-lbliss $LIBS" + +else case e in #( + e) as_fn_error $? "no external libbliss found" "$LINENO" 5 ;; +esac +fi + + + ac_fn_c_check_header_compile "$LINENO" "bliss/bliss_C.h" "ac_cv_header_bliss_bliss_C_h" "$ac_includes_default" +if test "x$ac_cv_header_bliss_bliss_C_h" = xyes +then : + +else case e in #( + e) as_fn_error $? "no external bliss headers found" "$LINENO" 5 ;; +esac +fi + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + fi + if test "x$with_external_bliss" = xno ; then + WITH_INCLUDED_BLISS=yes + + +printf "%s\n" "#define WITH_INCLUDED_BLISS 1" >>confdefs.h + + fi + + +# Check whether to use -mpopcnt and __builtin_ctzl + +# Check whether --with-intrinsics was given. +if test ${with_intrinsics+y} +then : + withval=$with_intrinsics; +fi + + +if test "x$with_intrinsics" = "xno" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiler intrinsics will not be used even if available" >&5 +printf "%s\n" "$as_me: compiler intrinsics will not be used even if available" >&6;} +fi + + + +if test "x$with_intrinsics" != "xno" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_ctzll" >&5 +printf %s "checking for __builtin_ctzll... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +__builtin_ctzll(0); + + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + have___builtin_ctzll=yes +else case e in #( + e) have___builtin_ctzll=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have___builtin_ctzll" >&5 +printf "%s\n" "$have___builtin_ctzll" >&6; } + if test yes = $have___builtin_ctzll +then : + +printf "%s\n" "#define HAVE___BUILTIN_CTZLL 1" >>confdefs.h + +fi +fi + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + 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=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) 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 + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by digraphs $as_me GAP package, which was +generated by GNU Autoconf 2.72. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +digraphs config.status GAP package +configured by $0, generated by GNU Autoconf 2.72, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2023 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +PACKAGE="$PACKAGE" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "gen/pkgconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS gen/pkgconfig.h:src/pkgconfig.h.in" ;; + "src/digraphs-config.h") CONFIG_COMMANDS="$CONFIG_COMMANDS src/digraphs-config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "src/digraphs-config.h":C) ac_prefix_conf_OUT=`echo src/digraphs-config.h` +ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e "y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:" -e "s/[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g"` +ac_prefix_conf_PKG=`echo digraphs` +ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e "y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:"` +ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e "y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:" -e "/^[0123456789]/s/^/_/"` +ac_prefix_conf_INP=`echo "gen/pkgconfig.h" | sed -e 's/ *//'` +if test ".$ac_prefix_conf_INP" = "."; then + for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue + case "$ac_file" in + *.h) ac_prefix_conf_INP=$ac_file ;; + *) + esac + test ".$ac_prefix_conf_INP" != "." && break + done +fi +if test ".$ac_prefix_conf_INP" = "."; then + case "$ac_prefix_conf_OUT" in + */*) ac_prefix_conf_INP=`basename "$ac_prefix_conf_OUT"` + ;; + *-*) ac_prefix_conf_INP=`echo "$ac_prefix_conf_OUT" | sed -e "s/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*-//"` + ;; + *) ac_prefix_conf_INP=config.h + ;; + esac +fi +if test -z "$ac_prefix_conf_PKG" ; then + as_fn_error $? "no prefix for _PREFIX_PKG_CONFIG_H" "$LINENO" 5 +else + if test ! -f "$ac_prefix_conf_INP" ; then if test -f "$srcdir/$ac_prefix_conf_INP" ; then + ac_prefix_conf_INP="$srcdir/$ac_prefix_conf_INP" + fi fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5 +printf "%s\n" "$as_me: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6;} + if test -f $ac_prefix_conf_INP ; then + printf "%s\n" "s/^#undef *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_]\\)/#undef $ac_prefix_conf_UPP""_\\1/" > conftest.prefix + printf "%s\n" "s/^#undef *\\([abcdefghijklmnopqrstuvwxyz]\\)/#undef $ac_prefix_conf_LOW""_\\1/" >> conftest.prefix + printf "%s\n" "s/^#define *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)\\(.*\\)/#ifndef $ac_prefix_conf_UPP""_\\1\\" >> conftest.prefix + printf "%s\n" "#define $ac_prefix_conf_UPP""_\\1\\2\\" >> conftest.prefix + printf "%s\n" "#endif/" >> conftest.prefix + printf "%s\n" "s/^#define *\\([abcdefghijklmnopqrstuvwxyz][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)\\(.*\\)/#ifndef $ac_prefix_conf_LOW""_\\1\\" >> conftest.prefix + printf "%s\n" "#define $ac_prefix_conf_LOW""_\\1\\2\\" >> conftest.prefix + printf "%s\n" "#endif/" >> conftest.prefix + # now executing _script on _DEF input to create _OUT output file + echo "#ifndef $ac_prefix_conf_DEF" >$tmp/pconfig.h + echo "#define $ac_prefix_conf_DEF 1" >>$tmp/pconfig.h + echo ' ' >>$tmp/pconfig.h + echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h + + sed -f conftest.prefix $ac_prefix_conf_INP >>$tmp/pconfig.h + echo ' ' >>$tmp/pconfig.h + echo '/* once:' $ac_prefix_conf_DEF '*/' >>$tmp/pconfig.h + echo "#endif" >>$tmp/pconfig.h + if cmp -s $ac_prefix_conf_OUT $tmp/pconfig.h 2>/dev/null; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_prefix_conf_OUT is unchanged" >&5 +printf "%s\n" "$as_me: $ac_prefix_conf_OUT is unchanged" >&6;} + else + ac_dir=`$as_dirname -- "$ac_prefix_conf_OUT" || +$as_expr X"$ac_prefix_conf_OUT" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_prefix_conf_OUT" : 'X\(//\)[^/]' \| \ + X"$ac_prefix_conf_OUT" : 'X\(//\)$' \| \ + X"$ac_prefix_conf_OUT" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_prefix_conf_OUT" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + rm -f "$ac_prefix_conf_OUT" + mv $tmp/pconfig.h "$ac_prefix_conf_OUT" + fi + else + as_fn_error $? "input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" "$LINENO" 5 + fi + rm -f conftest.* +fi + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/doc/display.xml b/doc/display.xml index df8da62f4..bd2fdadba 100644 --- a/doc/display.xml +++ b/doc/display.xml @@ -1,414 +1,220 @@ ############################################################################# ## #W display.xml -#Y Copyright (C) 2011-17 James D. Mitchell +#Y Copyright (C) 2014-24 James D. Mitchell ## ## Licensing information can be found in the README file of this package. ## ############################################################################# ## - -<#GAPDoc Label="Splash"> - - - Nothing. - - This function attempts to convert the string str into a pdf - document and open this document, i.e. to splash it all over your monitor.

- - The string str must correspond to a valid dot or - LaTeX text file and you must have have GraphViz and - pdflatex installed on your computer. For details about these file - formats, see https://www.latex-project.org and - https://www.graphviz.org.

- - This function is provided to allow convenient, immediate viewing of the - pictures produced by the function .

- - The optional second argument opts should be a record with - components corresponding to various options, given below. - - - path - - this should be a string representing the path to the directory where - you want Splash to do its work. The default value of this - option is "~/". - - - directory - - this should be a string representing the name of the directory in - path where you want Splash to do its work. This function - will create this directory if does not already exist.

- - The default value of this option is "tmp.viz" if the option - path is present, and the result of - is used otherwise. - - - filename - - this should be a string representing the name of the file where - str will be written. The default value of this option is - "vizpicture". - - - viewer - - this should be a string representing the name of the program which - should open the files produced by GraphViz or pdflatex. - - - type - - this option can be used to specify that the string str contains - a &LaTeX; or dot document. You can specify this option in - str directly by making the first line "%latex" or - "//dot". There is no default value for this option, this - option must be specified in str or in opt.type. - - - engine - - this option can be used to specify the GraphViz engine to use - to render a dot document. The valid choices are "dot", - "neato", "circo", "twopi", "fdp", - "sfdp", and "patchwork". Please refer to the - GraphViz documentation for details on these engines. - The default value for this option is "dot", and it - must be specified in opt.engine. - - - filetype - - this should be a string representing the type of file which - Splash should produce. For &LaTeX; files, this option is - ignored and the default value "pdf" is used. - - - - This function was written by Attila Egri-Nagy and Manuel Delgado with some - minor changes by J. D. Mitchell.

- Splash(DotDigraph(RandomDigraph(4))); -]]> - - -<#/GAPDoc> - <#GAPDoc Label="DotDigraph"> + + + A string. - DotDigraph produces a graphical representation of the digraph - digraph. Vertices are displayed as circles, numbered consistently - with digraph. Edges are displayed as arrowed lines between - vertices, with the arrowhead of each line pointing towards the range - of the edge.

- - DotColoredDigraph differs from DotDigraph only in - that the values in given in the two lists are used to color the vertices and - edges of the graph when displayed. The list for vertex colours should be - a list of length equal to the number of vertices, containing strings that - are accepted by the graphviz software, which is the one used for graph - representation. The list for edge colours should be a list of lists - with the same shape of the outneighbours of the digraph that contains strings - that correspond to colours accepted by the graphviz software. If the lists - are not the appropriate size, or have holes then the function will return - an error.

- - DotColoredEdgeLabelledDigraph differs from DotColoredDigraph - only in that the values given in the third list labels is used to - label the edges of the graph when displayed. The list labels should - be a list of equal length to the lists for vertex and edge colours. If the - lists are not the appropriate size, or have holes, then the function will - return an error.

- - DotVertexColoredDigraph differs from DotDigraph only in - that the values in given in the list are used to color the vertices - of the graph when displayed. The list for vertex colours should be - a list of length equal to the number of vertices, containing strings that - are accepted by the graphviz software, which is the one used for graph - representation. If the list is not the appropriate size, or has holes - then the function will return an error.

+ WARNING! As of v2.0.0 of &Digraphs; these functions are + deprecated in favour of: + + + + + and return + mutable &GAP; objects representing graphviz objects, which provide a + more flexible means of tailoring pictures of graphs and digraphs to your + needs. The function DotDigraph is synonymous with + AsString(GraphvizDigraph(D)). It is also possible to use + directly on the graphviz objects + returned by the function , i.e. + Splash(GraphvizDigraph(D)) does precisely the same thing as + Splash(DotDigraph(D)). + + +<#/GAPDoc> - DotEdgeColoredDigraph differs from DotDigraph only in - that the values in given in the list are used to color the vertices and - edges of the graph when displayed. The list for edge colours should be a list - of lists with the same shape of the outneighbours of the digraph that contains - strings that correspond to colours accepted by the graphviz software. If the - list is not the appropriate size, or has holes then the function will return - an error.

+<#GAPDoc Label="GraphvizDigraph"> + + + + A &graphviz; object. + + and return + mutable &GAP; objects representing graphviz objects, which provide a + flexible means of tailoring pictures of graphs and digraphs to your + needs. +

- DotVertexLabelledDigraph differs from DotDigraph only in - that the values in are used to label - the vertices in the produced picture rather than the numbers 1 to - the number of vertices of the digraph.

+ GraphvizDigraph and GraphvizGraph produce &graphviz; + objects representing the digraph D. Vertices are displayed as + circles, numbered consistently with D. For GraphvizDigraph, + edges are displayed as arrowed lines between vertices, with the arrowhead + of each line pointing towards the range of the edge. For + GraphvizGraph, edges are displayed without an arrowhead. +

- The output is in dot format (also known as GraphViz) - format. For details about this file format, and information about how to - display or edit this format see https://www.graphviz.org.

+ See the &graphviz; package documentation for more details. +

- The string returned by DotDigraph or - DotVertexLabelledDigraph can be written to a file using - the command .

+ See also - See also .

D := CompleteDigraph(4); - -gap> vertcolors := ["blue", "green", "red", "yellow"];; -gap> Print(DotVertexLabelledDigraph(D)); -//dot -digraph hgn{ -node [shape=circle] -1 [label="1"] -2 [label="2"] -3 [label="3"] -4 [label="4"] -1 -> 2 -1 -> 3 -1 -> 4 -2 -> 1 -2 -> 3 -2 -> 4 -3 -> 1 -3 -> 2 -3 -> 4 -4 -> 1 -4 -> 2 -4 -> 3 -} -gap> Print(DotVertexColoredDigraph(D, vertcolors)); -//dot -digraph hgn{ -node [shape=circle] -1[color=blue, style=filled] -2[color=green, style=filled] -3[color=red, style=filled] -4[color=yellow, style=filled] -1 -> 2 -1 -> 3 -1 -> 4 -2 -> 1 -2 -> 3 -2 -> 4 -3 -> 1 -3 -> 2 -3 -> 4 -4 -> 1 -4 -> 2 -4 -> 3 -} -gap> colors := ["lightblue", "pink", "purple"];; -gap> edgecolors := ListWithIdenticalEntries(4, colors);; -gap> Print(DotEdgeColoredDigraph(D, edgecolors)); -//dot -digraph hgn{ -node [shape=circle] -1 -2 -3 -4 -1 -> 2[color=lightblue] -1 -> 3[color=pink] -1 -> 4[color=purple] -2 -> 1[color=lightblue] -2 -> 3[color=pink] -2 -> 4[color=purple] -3 -> 1[color=lightblue] -3 -> 2[color=pink] -3 -> 4[color=purple] -4 -> 1[color=lightblue] -4 -> 2[color=pink] -4 -> 3[color=purple] -} -gap> Print(DotColoredDigraph(D, vertcolors, edgecolors)); -//dot -digraph hgn{ -node [shape=circle] -1[color=blue, style=filled] -2[color=green, style=filled] -3[color=red, style=filled] -4[color=yellow, style=filled] -1 -> 2[color=lightblue] -1 -> 3[color=pink] -1 -> 4[color=purple] -2 -> 1[color=lightblue] -2 -> 3[color=pink] -2 -> 4[color=purple] -3 -> 1[color=lightblue] -3 -> 2[color=pink] -3 -> 4[color=purple] -4 -> 1[color=lightblue] -4 -> 2[color=pink] -4 -> 3[color=purple] -} -gap> FileString("k4.dot", DotDigraph(D)); -133 -gap> D := Digraph([[2, 3], [1, 3], [1]]); - -gap> vertcolors := ["blue", "red", "green"];; -gap> edgecolors := [["orange", "yellow"], ["orange", -> "pink"], ["yellow"]];; -gap> Print(DotColoredDigraph(D, vertcolors, edgecolors)); -//dot -digraph hgn{ -node [shape=circle] -1[color=blue, style=filled] -2[color=red, style=filled] -3[color=green, style=filled] -1 -> 2[color=orange] -1 -> 3[color=yellow] -2 -> 1[color=orange] -2 -> 3[color=pink] -3 -> 1[color=yellow] -} -gap> FileString("digraph.dot", DotDigraph(D)); -82]]> - - - <#/GAPDoc> +gap> D := CompleteDigraph(IsMutable, 4); + +gap> gv := GraphvizGraph(D); + +gap> AsString(gv); +"//dot\ngraph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t2 -\ +- 1\n\t3 -- 1\n\t3 -- 2\n\t4 -- 1\n\t4 -- 2\n\t4 -- 3\n}\n" +gap> DigraphRemoveEdge(D, 1, 3); + +gap> gv := GraphvizDigraph(D); + +gap> AsString(gv); +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t1\ + -> 2\n\t1 -> 4\n\t2 -> 1\n\t2 -> 3\n\t2 -> 4\n\t3 -> 1\n\t3 -> 2\n\t3\ + -> 4\n\t4 -> 1\n\t4 -> 2\n\t4 -> 3\n}\n" +]]> + + +<#/GAPDoc> -<#GAPDoc Label="DotSymmetricDigraph"> +<#GAPDoc Label="GraphvizColoredDigraph"> - - - - - A string. + + + + + + + A &graphviz; object. - This function produces a graphical representation of the symmetric - digraph digraph. DotSymmetricDigraph will return an - error if digraph is not a symmetric digraph. See - .

- - The function DotSymmetricColoredDigraph differs from DotDigraph - only in that the values given in the two lists are used to color the vertices - and edges of the graph when displayed. The list for vertex colours should be - a list of length equal to the number of vertices, containing strings that - are accepted by the graphviz software, which is the one used for graph - representation. The list for edge colours should be a list of lists - with the same shape of the outneighbours of the digraph that contains strings - that correspond to colours accepted by the graphviz software. - If the list is not the appropriate size, or has holes then the function - will return an error.

- - The function DotSymmetricVertexColoredDigraph differs from DotDigraph - only in that the values in given in the list is used to color the vertices - of the graph when displayed. The list for vertex colours should be - a list of length equal to the number of vertices, containing strings that - are accepted by the graphviz software, which is the one used for graph - representation. If the list is not the appropriate size, or has holes - then the function will return an error.

+ These operations produce colored &graphviz; objects representing the + digraph D according to the specified colors. For all of these + functions valid colors are strings containing: + + RGB + + An RGB color code consisting of 6 hexadecimal digits preceded by + a #. For example, #ff00ff. + + GraphViz 2.4.11 X11 Color Scheme + + One of the color strings specified at: + http://graphviz.org/doc/info/colors.html + + - The function DotSymmetricEdgeColoredDigraph differs from DotDigraph - only in that the values given in the list are used to color the edges - of the graph when displayed. The list for edge colours should be - a list of lists with the same shape of the outneighbours, containing strings that - are accepted by the graphviz software, which is the one used for graph - representation. If the list is not the appropriate size, or has holes - then the function will return an error.

+ GraphvizVertexColoredDigraph and GraphvizVertexColoredGraph + requires its argument colors to be a list of length equal to the + number of vertices of D consisting of strings representing colors + as described above. +

- Vertices are displayed as circles, numbered consistently with - digraph. Since digraph is symmetric, for every non-loop - edge there is a complementary edge with opposite source and range. - DotSymmetricDigraph displays each pair of complementary edges - as a single line between the relevant vertices, with no arrowhead.

+ GraphvizEdgeColoredDigraph and GraphvizEdgeColoredGraph + requires its argument colors to be a list of lists with the same + shape of the out-neighbours of the digraph D consisting of strings + representing colors as described above. +

- The output is in dot format (also known as GraphViz) - format. For details about this file format, and information about how - to display or edit this format see - https://www.graphviz.org.

+ GraphvizColoredDigraph and GraphvizColoredGraph requires + its arguments: + + vert_colors + + to represent vertex colors as described for + GraphvizVertexColoredDigraph; + + edge_colors + + to represent edge colors as described for + GraphvizEdgeColoredDigraph; + + - The string returned by DotSymmetricDigraph can be written to a - file using the command .

+ See the &graphviz; package documentation for more details. +

+ See also D := Digraph([[2], [1, 3], [2]]); -gap> IsSymmetricDigraph(D); -true -gap> vertcolors := ["blue", "pink", "purple"];; -gap> edgecolors := [["green"], ["green", "red"], ["red"]];; -gap> Print(DotSymmetricColoredDigraph(D, vertcolors, edgecolors)); -//dot -graph hgn{ -node [shape=circle] - -1[color=blue, style=filled] -2[color=pink, style=filled] -3[color=purple, style=filled] -1 -- 2[color=green] -2 -- 3[color=red] -} -gap> Print(DotSymmetricVertexColoredDigraph(D, vertcolors)); -//dot -graph hgn{ -node [shape=circle] - -1[color=blue, style=filled] -2[color=pink, style=filled] -3[color=purple, style=filled] -1 -- 2 -2 -- 3 -} - -gap> Print(DotSymmetricEdgeColoredDigraph(D, edgecolors)); -//dot -graph hgn{ -node [shape=circle] - -1 -2 -3 -1 -- 2[color=green] -2 -- 3[color=red] -} +gap> vert_colors := ["blue", "pink", "purple"];; +gap> edge_colors := [["green"], ["green", "red"], ["red"]];; +gap> GraphvizVertexColoredDigraph(D, vert_colors); + +gap> GraphvizVertexColoredGraph(D, vert_colors); + +gap> GraphvizEdgeColoredDigraph(D, edge_colors); + +gap> GraphvizEdgeColoredGraph(D, edge_colors); + +gap> GraphvizColoredDigraph(D, vert_colors, edge_colors); + +gap> GraphvizColoredGraph(D, vert_colors, edge_colors); + ]]> -<#/GAPDoc> + <#/GAPDoc> <#GAPDoc Label="DotPartialOrderDigraph"> A string. - This function produces a graphical representation of a partial order - digraph digraph. DotPartialOrderDigraph will return an error - if digraph is not a partial order digraph. See .

+ WARNING! As of v2.0.0 of &Digraphs; these functions are + deprecated in favour of: + + + + This function return a mutable &GAP; object representing a graphviz + object, which provides a more flexible means of tailoring pictures of + graphs and digraphs to your needs. The Dot variants of these + functions are synonymous with, for example, + AsString(GraphvizDigraph(D)). It is also possible to use + directly on the graphviz objects + returned by the Graphviz variants of these functions, i.e. + Splash(GraphvizDigraph(D)) does precisely the same thing as + Splash(DotDigraph(D)). + + +<#/GAPDoc> - Since digraph is a partial order, it is both reflexive and - transitive. The output of DotPartialOrderDigraph is the - of the - of digraph.

+<#GAPDoc Label="GraphvizPartialOrderDigraph"> + + + A &graphviz; object. + + This function produces a &graphviz; object representing a partial order + digraph D. GraphvizPartialOrderDigraph will return an + error if D is not a partial order digraph. See .

- The output is in dot format (also known as GraphViz) - format. For details about this file format, and information about how - to display or edit this format see - https://www.graphviz.org.

+ Since D is a partial order, it is both reflexive and + transitive. The output of GraphvizPartialOrderDigraph is the + of the + of D.

- The string returned by DotPartialOrderDigraph can be written to a - file using the command .

+ See the &graphviz; package documentation for more details. +

+ See also poset := Digraph([[1, 4], [2], [2, 3, 4], [4]]); +gap> D := Digraph([[1, 4], [2], [2, 3, 4], [4]]); -gap> IsPartialOrderDigraph(poset); +gap> IsPartialOrderDigraph(D); true -gap> FileString("poset.dot", DotPartialOrderDigraph(poset)); -70]]> +gap> GraphvizPartialOrderDigraph(D); +]]> <#/GAPDoc> @@ -419,67 +225,119 @@ gap> FileString("poset.dot", DotPartialOrderDigraph(poset)); A string. - This function produces a graphical representation of a preorder - digraph digraph. DotPreorderDigraph will return an error - if digraph is not a preorder digraph. See WARNING! As of v2.0.0 of &Digraphs; these functions are + deprecated in favour of: + + + + + These functions return mutable &GAP; objects representing graphviz + objects, which provide a more flexible means of tailoring pictures of + graphs and digraphs to your needs. The Dot variants of these + functions are synonymous with, for example, + AsString(GraphvizDigraph(D)). It is also possible to use + directly on the graphviz objects + returned by the Graphviz variants of these functions, i.e. + Splash(GraphvizDigraph(D)) does precisely the same thing as + Splash(DotDigraph(D)). + + +<#/GAPDoc> + +<#GAPDoc Label="GraphvizPreorderDigraph"> + + + + A &graphviz; object. + + These functions produce &graphviz; objects representing a preorder + digraph D. These function will give an error + if D is not a preorder digraph. See .

A preorder digraph is reflexive and transitive but in general it is not anti-symmetric and may have strongly connected components containing more than one vertex. The - Q obtained by forming the quotient of digraph by the + Q obtained by forming the quotient of D by the partition of its vertices into the strongly connected components satisfies . Thus every vertex of - Q corresponds to a strongly connected component of digraph. - The output of DotPreorderDigraph displays the + Q corresponds to a strongly connected component of D. + The output of GraphvizPreorderDigraph displays the of Q with vertices displayed as rounded rectangles labelled by all of the vertices - of digraph in the corresponding strongly connected component.

+ of D in the corresponding strongly connected component. +

- The output is in dot format (also known as GraphViz) - format. For details about this file format, and information about how - to display or edit this format see - https://www.graphviz.org.

+ See the &graphviz; package documentation for more details. +

- The string returned by DotPreorderDigraph can be written to a - file using the command .

+ See also preset := Digraph([[1, 2, 4, 5], [1, 2, 4, 5], [3, 4], [4], +gap> D := Digraph([[1, 2, 4, 5], [1, 2, 4, 5], [3, 4], [4], > [1, 2, 4, 5]]); -gap> IsPreorderDigraph(preset); +gap> IsPreorderDigraph(D); true -gap> FileString("preset.dot", DotPreorderDigraph(preset)); -179]]> +gap> GraphvizPreorderDigraph(D); +]]> <#/GAPDoc> <#GAPDoc Label="DotHighlightedDigraph"> - + A string. - DotHighlightedDigraph produces a graphical representation of the - digraph digraph, where the vertices in the list verts, and - edges between them, are drawn with colour colour1 and all other - vertices and edges in digraph are drawn with colour colour2. - If colour1 and colour2 are not given then - DotHighlightedDigraph uses black and grey respectively.

+ WARNING! As of v2.0.0 of &Digraphs; these functions are + deprecated in favour of: + + + + + These functions return mutable &GAP; objects representing graphviz + objects, which provide a more flexible means of tailoring pictures of + graphs and digraphs to your needs. The Dot variants of these + functions are synonymous with, for example, + AsString(GraphvizDigraph(D)). It is also possible to use + directly on the graphviz objects + returned by the Graphviz variants of these functions, i.e. + Splash(GraphvizDigraph(D)) does precisely the same thing as + Splash(DotDigraph(D)). + + +<#/GAPDoc> - Note that DotHighlightedDigraph does not validate the colours - colour1 and colour2 - consult the GraphViz documentation to - see what is available. +<#GAPDoc Label="GraphvizHighlightedDigraph"> + + + + A &graphviz; object. + + These functions produce &graphviz; objects representing the digraph + D, where the vertices in the list verts, and edges + between them, are drawn with color color1 and all other vertices + and edges in D are drawn with color color2. If + color1 and color2 are not given, then these functions + use \"black\" and \"grey\" respectively. +

- See for more details on the output.

+ See and + for more details on the output. digraph := Digraph([[2, 3], [2], [1, 3]]); +gap> D := Digraph([[2, 3], [2], [1, 3]]); -gap> FileString("my_digraph.dot", DotHighlightedDigraph(digraph, -> [1, 2], "red", "black")); -264]]> +gap> GraphvizHighlightedDigraph(D, [1, 2], "red", "black"); + +gap> D := DigraphSymmetricClosure(D); + +gap> GraphvizHighlightedGraph(D, [1, 2], "red", "black"); +]]> <#/GAPDoc> diff --git a/doc/main.xml b/doc/main.xml new file mode 100644 index 000000000..e5c287f5a --- /dev/null +++ b/doc/main.xml @@ -0,0 +1,60 @@ +Digraphs"> + https://gap-packages.github.io/grapeGrape"> + https://digraphs.github.io/graphvizGraphviz"> + http://www.tcs.tkk.fi/Software/bliss/bliss"> + https://github.com/graph-algorithms/edge-addition-planarity-suiteedge-addition-planarity-suite"> + https://pallini.di.uniroma1.it/nauty"> + https://github.com/gap-packages/NautyTracesInterfaceNautyTracesInterface"> + + https://gap-packages.github.io/io/ +IO"> + + https://gap-packages.github.io/orb/ + Orb"> + https://github.com/gap-packages/datastructuresdatastructures"> + filt is present, then this should specify the category or representation the digraph being created will belong to. For example, if filt is , then the digraph being created will be mutable, if filt is , then the digraph will be immutable. If the optional first argument filt is not present, then is used by default.

"> + digraph is mutable, then the return value of this property is recomputed every time it is called.

"> + digraph is mutable, then the return value of this attribute is recomputed every time it is called.

"> + . In more detail, the vertices of the digraph are labelled by elements of the Cartesian product [1..m] x [1..n], where the first entry indexes the column (file) of the square in the chessboard, and the second entry indexes the row (rank) of the square. (Note that the files are traditionally indexed by the lowercase letters of the alphabet). The vertices are sorted in ascending order, first by row (second component) and then column (first component).

"> + m by n chessboard is a grid of m columns (‘files’) and n rows (‘ranks’) that intersect in squares. Orthogonally adjacent squares are alternately colored light and dark, with the square in the first rank and file being dark.

"> + <#Include Label="PKGVERSIONDATA"> + ]> + + +<#Include SYSTEM="z-title.xml"> + + + + + <#Include SYSTEM="z-chap0.xml"> + <#Include SYSTEM="z-chap1.xml"> + <#Include SYSTEM="z-chap2.xml"> + <#Include SYSTEM="z-chap3.xml"> + <#Include SYSTEM="z-chap4.xml"> + <#Include SYSTEM="z-chap5.xml"> + <#Include SYSTEM="z-chap6.xml"> + <#Include SYSTEM="z-chap8.xml"> + <#Include SYSTEM="z-chap9.xml"> + + +<#Include SYSTEM="z-appA.xml"> + + + + + diff --git a/doc/z-chap9.xml b/doc/z-chap9.xml index a3599c40a..28de1680f 100644 --- a/doc/z-chap9.xml +++ b/doc/z-chap9.xml @@ -1,11 +1,22 @@ Visualising and IO

Visualising a digraph - <#Include Label="Splash"> + <#Include Label="GraphvizDigraph"> <#Include Label="DotDigraph"> - <#Include Label="DotSymmetricDigraph"> + + <#Include Label="GraphvizColoredDigraph"> + <#Include Label="DotColoredDigraph"> + + <#Include Label="GraphvizVertexLabelledDigraph"> + <#Include Label="DotVertexLabelledDigraph"> + + <#Include Label="GraphvizPartialOrderDigraph"> <#Include Label="DotPartialOrderDigraph"> + + <#Include Label="GraphvizPreorderDigraph"> <#Include Label="DotPreorderDigraph"> + + <#Include Label="GraphvizHighlightedDigraph"> <#Include Label="DotHighlightedDigraph">
diff --git a/etc/code-coverage-test-c.py b/etc/code-coverage-test-c.py new file mode 100755 index 000000000..62cd03294 --- /dev/null +++ b/etc/code-coverage-test-c.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python +""" +""" + +# pylint: disable=invalid-name, broad-except + +import argparse +import tempfile +import subprocess +import sys +import os +import webbrowser + +from os.path import exists, isfile + +_ERR_PREFIX = '\033[31merror: ' + +def exec_string(string): + 'execute the string in a subprocess.' + try: + subprocess.check_call(string, shell=True) + except KeyboardInterrupt: + sys.exit('\033[31m\nKilled!\033[0m') + except (subprocess.CalledProcessError, OSError): + sys.exit(_ERR_PREFIX + 'executing:\n' + string + '\n failed!\033[0m') + +_PARSER = argparse.ArgumentParser(prog='code-coverage-test-c.py', + usage='%(prog)s [options]') +_PARSER.add_argument('files', nargs='+', type=str, + help='the test files you want to check code coverage for' + + '(must be at least one)') +_PARSER.add_argument('--gap-root', nargs='?', type=str, + help='the gap root directory (default: ~/gap)', + default='~/gap/') +_PARSER.add_argument('--pkg', nargs='?', type=str, + help='the package to profile (default: None)', + default=None) +_PARSER.add_argument('--build', dest='build', action='store_true', + help='rebuild GAP (default: False)') +_PARSER.set_defaults(build=False) +_PARSER.add_argument('--open', nargs='?', type=str, + help=('open the lcov html page for this file ' + + '(default: None)'), + default=None) +_PARSER.add_argument('--line', nargs='?', type=str, + help=('open the html page for the file specified by --open' + + ' at this line (default: None)'), + default=None) +_ARGS = _PARSER.parse_args() + +if not _ARGS.gap_root[-1] == '/': + _ARGS.gap_root += '/' + +_ARGS.gap_root = os.path.expanduser(_ARGS.gap_root) +if _ARGS.pkg != None: + _ARGS.pkg = _ARGS.gap_root + '/pkg/' + _ARGS.pkg + +if not (os.path.exists(_ARGS.gap_root) and os.path.isdir(_ARGS.gap_root)): + sys.exit('\033[31mcode-coverage-test-c.py: error: can\'t find gap root' + + ' directory!\033[0m') +if (_ARGS.pkg != None and not (os.path.exists(_ARGS.pkg) and + os.path.isdir(_ARGS.pkg))): + sys.exit('\033[31mcode-coverage-test-c.py: error: can\'t find the pkg' + + ' directory %s\033[0m' % _ARGS.pkg) +for f in _ARGS.files: + if not (os.path.exists(f) and os.path.isfile(f)): + sys.exit('\033[31mcode-coverage-test-c.py: error: ' + f + + ' does not exist!\033[0m') + +_DIR = tempfile.mkdtemp() +print('\033[35musing temporary directory: ' + _DIR + '\033[0m') + +_COMMANDS = 'echo "' +for f in _ARGS.files: + _COMMANDS += 'Test(\\"' + f + '\\");;' +_COMMANDS += '"' + +# TODO build if files changed since last build or built with the wrong flags, +# by looking in config.log + +# for source in : +# if time.ctime(os.path.getmtime(file)) + +if _ARGS.build: + cwd = os.getcwd() + os.chdir(_ARGS.gap_root) + exec_string('''rm -rf bin/ && \ + make clean && \ + ./configure CFLAGS="-O0 -g --coverage" \ + CXXFLAGS="-O0 -g --coverage" \ + LDFLAGS="-O0 -g --coverage" && \ + make -j8''') + if _ARGS.pkg != None: + os.chdir(_ARGS.pkg) + exec_string('rm -rf bin/ && \ + make clean && \ + ./configure CFLAGS="-O0 -g --coverage" \ + CXXFLAGS="-O0 -g --coverage" \ + LDFLAGS="-O0 -g --coverage" && \ + make -j8''') + os.chdir(cwd) + +pro1 = subprocess.Popen(_COMMANDS, stdout=subprocess.PIPE, shell=True) +_RUN_GAP = _ARGS.gap_root + 'bin/gap.sh -A -m 1g -T' + +try: + pro2 = subprocess.Popen(_RUN_GAP, + stdin=pro1.stdout, + shell=True) + pro2.wait() + print('') +except KeyboardInterrupt: + pro1.terminate() + pro1.wait() + pro2.terminate() + pro2.wait() + print('\033[31mKilled!\033[0m') + sys.exit(1) +except Exception: + sys.exit('\033[31mcode-coverage-test-c.py: error: something went wrong ' + + 'calling GAP!\033[0m''') +if _ARGS.pkg != None: + exec_string('lcov --capture --directory ' + _ARGS.pkg + + '/src --output-file ' + _DIR + '/lcov.info') +else: + exec_string('lcov --capture --directory ' + _ARGS.gap_root + + '/src --output-file ' + _DIR + '/lcov.info') + +exec_string('genhtml ' + _DIR + '/lcov.info --output-directory ' + _DIR + + '/lcov-out') + +filename = _DIR + '/lcov-out/' +if _ARGS.open: + filename += _ARGS.open + '.gcov.html' +else: + filename += '/index.html' + +if exists(filename) and isfile(filename): + if _ARGS.open and _ARGS.line: + filename += '#' + _ARGS.line + print('file://' + filename) + try: + webbrowser.get('chrome').open('file://' + filename, new=2) + except Exception: + webbrowser.open('file://' + filename, new=2) +else: + sys.exit('\n' + _ERR_PREFIX + 'Failed to open file://' + filename + + '\033[0m') + +print('\n\033[32mSUCCESS!\033[0m') +sys.exit(0) diff --git a/etc/code-coverage-test-gap.py b/etc/code-coverage-test-gap.py index f52bbdf31..11c6e5666 100755 --- a/etc/code-coverage-test-gap.py +++ b/etc/code-coverage-test-gap.py @@ -71,7 +71,7 @@ _GAP_COMMANDS.extend( [ "UncoverageLineByLine();;", - rf"LoadPackage(\"profiling\", false);;", + r"LoadPackage(\"profiling\", false);;", rf"filesdir := \"{getcwd()}{_PROFILE_DIR}\";;", rf"outdir := \"{_DIR}\";;", rf"x := ReadLineByLineProfile(\"{_DIR}/profile.gz\");;", diff --git a/gap/.null-ls_141605_display.gi b/gap/.null-ls_141605_display.gi new file mode 100644 index 000000000..2e58c5084 --- /dev/null +++ b/gap/.null-ls_141605_display.gi @@ -0,0 +1,484 @@ +############################################################################# +## +## display.gi +## Copyright (C) 2014-24 James D. Mitchell +## +## Licensing information can be found in the README file of this package. +## +############################################################################# +## + +# TODO: +# * add graph6 string or whatever as a comment at the start of the string +# * check JupyterInterface Splash function +# * for edge colored non-digraphs, should ensure that the edge colors are +# symmetric, i.e. the same colors for x -> y and y -> x + +<<<<<<< HEAD +BindGlobal("DIGRAPHS_ValidRGBValue", +function(str) + local l, chars, x, i; + l := Length(str); + x := 0; + chars := "0123456789ABCDEFabcdef"; + if l = 7 then + if str[1] = '#' then + for i in [2 .. l] do + if str[i] in chars then + x := x + 1; + fi; + od; + fi; + fi; + return x = (l - 1); +end); + +BindGlobal("DIGRAPHS_GraphvizColorsList", fail); + +BindGlobal("DIGRAPHS_GraphvizColors", +function() + local f; + if DIGRAPHS_GraphvizColorsList = fail then + f := IO_File(Concatenation(DIGRAPHS_Dir(), "/data/colors.p")); + MakeReadWriteGlobal("DIGRAPHS_GraphvizColorsList"); + DIGRAPHS_GraphvizColorsList := IO_Unpickle(f); + MakeReadOnlyGlobal("DIGRAPHS_GraphvizColorsList"); + IO_Close(f); + fi; + return DIGRAPHS_GraphvizColorsList; +end); + +BindGlobal("DIGRAPHS_ValidVertColors", +function(D, verts) + local v, sum, colors, col; + v := DigraphVertices(D); + sum := 0; + if Length(verts) <> Length(v) then + ErrorNoReturn("the number of vertex colors must be the same as the number", + " of vertices, expected ", Length(v), " but found ", Length(verts), ""); + fi; + colors := DIGRAPHS_GraphvizColors(); + if Length(verts) = Length(v) then + for col in verts do + if not IsString(col) then + ErrorNoReturn("expected a string"); + elif DIGRAPHS_ValidRGBValue(col) = false and + (col in colors) = false then + ErrorNoReturn("expected RGB Value or valid color name as defined", + " by GraphViz 2.44.1 X11 Color Scheme", + " http://graphviz.org/doc/info/colors.html"); + else + sum := sum + 1; + fi; + od; + if sum = Length(verts) then + return true; + fi; + fi; +end); + +BindGlobal("DIGRAPHS_ValidEdgeColors", +function(D, edge) + local out, l, counter, sum, colors, v, col; + out := OutNeighbours(D); + l := Length(edge); + counter := 0; + sum := 0; + colors := DIGRAPHS_GraphvizColors(); + if Length(edge) <> Length(out) then + ErrorNoReturn("the list of edge colors needs to have the", + " same shape as the out-neighbours of the digraph"); + else + for v in [1 .. l] do + sum := 0; + if Length(out[v]) <> Length(edge[v]) then + ErrorNoReturn("the list of edge colors needs to have the", + " same shape as the out-neighbours of the digraph"); + else + for col in edge[v] do + if not IsString(col) then + ErrorNoReturn("expected a string"); + elif DIGRAPHS_ValidRGBValue(col) = false and + (col in colors) = false then + ErrorNoReturn("expected RGB Value or valid color name as defined", + " by GraphViz 2.44.1 X11 Color Scheme", + " http://graphviz.org/doc/info/colors.html"); + else + sum := sum + 1; + fi; + od; + if sum = Length(edge[v]) then + counter := counter + 1; + fi; + fi; + od; + if counter = Length(edge) then + return true; + fi; + fi; +end); + +InstallMethod(DotDigraph, "for a digraph by out-neighbours", +[IsDigraphByOutNeighboursRep], +D -> DIGRAPHS_DotDigraph(D, [], [])); + +InstallMethod(DotColoredDigraph, +"for a digraph by out-neighbours and two lists", +[IsDigraphByOutNeighboursRep, IsList, IsList], +function(D, vert, edge) + local vert_func, edge_func; + if DIGRAPHS_ValidVertColors(D, vert) + and DIGRAPHS_ValidEdgeColors(D, edge) then + vert_func := i -> StringFormatted("[color={}, style=filled]", vert[i]); + edge_func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); + return DIGRAPHS_DotDigraph(D, [vert_func], [edge_func]); + fi; +end); + +InstallMethod(DotVertexColoredDigraph, +"for a digraph by out-neighbours and a list", +[IsDigraphByOutNeighboursRep, IsList], +function(D, vert) + local func; + if DIGRAPHS_ValidVertColors(D, vert) then + func := i -> StringFormatted("[color={}, style=filled]", vert[i]); + return DIGRAPHS_DotDigraph(D, [func], []); + fi; +end); + +InstallMethod(DotEdgeColoredDigraph, +"for a digraph by out-neighbours and a list", +[IsDigraphByOutNeighboursRep, IsList], +function(D, edge) + local func; + if DIGRAPHS_ValidEdgeColors(D, edge) then + func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); + return DIGRAPHS_DotDigraph(D, [], [func]); + fi; +end); + +InstallMethod(DotVertexLabelledDigraph, "for a digraph by out-neighbours", +======= +############################################################################# +# Graphs and digraphs +############################################################################# + +InstallOtherMethod(GraphvizDigraph, "for a digraph by out-neighbours", +>>>>>>> 51b65dbf (Checkout files from mpan322/main) +[IsDigraphByOutNeighboursRep], +function(D) + local gv, x, y; + gv := GraphvizDigraph("hgn"); + GraphvizSetAttr(gv, "node [shape=circle]"); + for x in DigraphVertices(D) do + GraphvizAddNode(gv, x); + od; + for x in DigraphVertices(D) do + for y in OutNeighboursOfVertexNC(D, x) do + GraphvizAddEdge(gv, x, y); + od; + od; + return gv; +end); + +InstallOtherMethod(GraphvizGraph, "for a digraph by out-neighbours", +[IsDigraphByOutNeighboursRep], +<<<<<<< HEAD +D -> DIGRAPHS_DotSymmetricDigraph(D, [], [])); + +InstallMethod(DotSymmetricColoredDigraph, +"for a digraph by out-neighbours and two lists", +[IsDigraphByOutNeighboursRep, IsList, IsList], +function(D, vert, edge) + local vert_func, edge_func; + if DIGRAPHS_ValidVertColors(D, vert) + and DIGRAPHS_ValidEdgeColors(D, edge) then + vert_func := i -> StringFormatted("[color={}, style=filled]", vert[i]); + edge_func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); + return DIGRAPHS_DotSymmetricDigraph(D, [vert_func], [edge_func]); +======= +function(D) + local gv, x, y; + if not IsSymmetricDigraph(D) then + ErrorNoReturn("the argument (a digraph) must be symmetric"); +>>>>>>> 51b65dbf (Checkout files from mpan322/main) + fi; + gv := GraphvizGraph("hgn"); + GraphvizSetAttr(gv, "node [shape=circle]"); + for x in DigraphVertices(D) do + GraphvizAddNode(gv, x); + od; + for x in DigraphVertices(D) do + for y in OutNeighboursOfVertexNC(D, x) do + if x > y then + GraphvizAddEdge(gv, x, y); + fi; + od; + od; + return gv; +end); + +############################################################################# +# Vertex coloured graphs and digraphs +############################################################################# + +InstallMethod(GraphvizVertexColoredDigraph, "for a digraph and a list", +[IsDigraph, IsList], +{D, colors} -> GraphvizSetNodeColors(GraphvizDigraph(D), colors)); + +InstallMethod(GraphvizVertexColoredGraph, "for a digraph and a list", +[IsDigraph, IsList], +# IsSymmetricDigraph checked by GraphvizGraph +{D, colors} -> GraphvizSetNodeColors(GraphvizGraph(D), colors)); + +############################################################################# +# Edge coloured graphs and digraphs +############################################################################# + +# This function is here rather than graphviz b/c otherwise if D has multiple +# edges we can't reliably get the corresponding graphviz edge from the head and +# tail of the edge from gv. +BindGlobal("DIGRAPHS_ErrorIfNotEdgeColoring", +function(D, colors) + local out, i; + + out := OutNeighbours(D); + if Length(colors) <> Length(out) then + ErrorFormatted("the 2nd argument (edge colors) must have ", + "the same number of entries as the 1st argument ", + "(a digraph) has nodes, expected {} but found {}", + Length(out), + Length(colors)); + fi; + for i in [1 .. Length(colors)] do + if not IsList(colors[i]) then + ErrorFormatted("the 2nd argument (edge colors) must be ", + "a list of lists, found {} in position {}", + TNAM_OBJ(colors[i]), + i); + elif Length(out[i]) <> Length(colors[i]) then + ErrorFormatted("the 2nd argument (edge colors) must have ", + "the same shape as the out neighbours of the 1st ", + "argument (a digraph), in position {} expected ", + "a list of length {} but found list of length {}", + i, + Length(out[i]), + Length(colors[i])); + fi; + Perform(colors[i], ErrorIfNotValidColor); + od; +end); + +BindGlobal("DIGRAPHS_AddEdgesAndColorsNC", +function(D, gv, colors) + local out, e, n, i; + + # This duplicates code in the GraphvizDigraph function because otherwise if D + # has multiple edges we can't reliably get the corresponding graphviz edge + # from the head and tail of the edge from gv. + out := OutNeighbours(D); + for n in DigraphVertices(D) do + for i in [1 .. Length(out[n])] do + if IsGraphvizDigraph(gv) or n > out[n][i] then + e := GraphvizAddEdge(gv, n, out[n][i]); + GraphvizSetAttr(e, "color", colors[n][i]); + fi; + od; + od; + return gv; +end); + +InstallMethod(GraphvizEdgeColoredDigraph, +"for a digraph by out-neighbours and a list", +[IsDigraphByOutNeighboursRep, IsList], +function(D, colors) + local gv; + DIGRAPHS_ErrorIfNotEdgeColoring(D, colors); + gv := GraphvizDigraph(NullDigraph(DigraphNrVertices(D))); + return DIGRAPHS_AddEdgesAndColorsNC(D, gv, colors); +end); + +InstallMethod(GraphvizEdgeColoredGraph, +"for a digraph by out-neighbours and a list", +[IsDigraphByOutNeighboursRep, IsList], +function(D, colors) + local gv; + if not IsSymmetricDigraph(D) then + ErrorNoReturn("the argument (a digraph) must be symmetric"); + fi; + DIGRAPHS_ErrorIfNotEdgeColoring(D, colors); + gv := GraphvizGraph(NullDigraph(DigraphNrVertices(D))); + return DIGRAPHS_AddEdgesAndColorsNC(D, gv, colors); +end); + +############################################################################# +# Vertex and edge coloured graphs and digraphs +############################################################################# + +InstallMethod(GraphvizColoredDigraph, +"for a digraph, list, and list", +[IsDigraph, IsList, IsList], +{D, n_colors, e_colors} -> GraphvizSetNodeColors( + GraphvizEdgeColoredDigraph(D, e_colors), + n_colors)); + +<<<<<<< HEAD + BindGlobal("Splash", + function(arg...) + local str, opt, path, dir, tdir, file, viewer, type, inn, filetype, out, + engine; +======= +InstallMethod(GraphvizColoredGraph, +"for a digraph, list, and list", +[IsDigraph, IsList, IsList], +# IsSymmetricDigraph checked by GraphvizEdgeColoredGraph +{D, n_colors, e_colors} -> GraphvizSetNodeColors( + GraphvizEdgeColoredGraph(D, e_colors), + n_colors)); +>>>>>>> 51b65dbf (Checkout files from mpan322/main) + +############################################################################# +# Vertex labelled graphs and digraphs +############################################################################# + +InstallMethod(GraphvizVertexLabelledDigraph, "for a digraph", +[IsDigraph], +D -> GraphvizSetNodeLabels(GraphvizDigraph(D), DigraphVertexLabels(D))); + +InstallMethod(GraphvizVertexLabelledGraph, "for a digraph", +[IsDigraph], +# symmetry checked in GraphvizGraph +D -> GraphvizSetNodeLabels(GraphvizGraph(D), DigraphVertexLabels(D))); + +############################################################################# +# Partial and preorder digraphs +############################################################################# + +InstallMethod(GraphvizPartialOrderDigraph, "for a partial order digraph", +[IsDigraph], +function(D) + if not IsPartialOrderDigraph(D) then + ErrorNoReturn("the argument (a digraph) must be a partial order"); + fi; + D := DigraphMutableCopyIfMutable(D); + return GraphvizDigraph(DigraphReflexiveTransitiveReduction(D)); +end); + +InstallMethod(GraphvizPreorderDigraph, "for a preorder digraph", +[IsDigraph], +function(D) + local comps, gv, label, node, nodes, c, x, e; + + if not IsPreorderDigraph(D) then + ErrorNoReturn("the argument (a digraph) must be a preorder"); + fi; + + # Quotient by the strongly connected components to get a partial order + # D and draw this without loops or edges implied by transitivity. + comps := DigraphStronglyConnectedComponents(D).comps; + D := DigraphMutableCopy(D); + DigraphRemoveAllMultipleEdges(QuotientDigraph(D, comps)); + DigraphReflexiveTransitiveReduction(D); + + gv := GraphvizDigraph("graphname"); + GraphvizSetAttr(gv, "node [shape=\"Mrecord\"]"); + GraphvizSetAttr(gv, "height=\"0.5\""); + GraphvizSetAttr(gv, "fixedsize=\"true\""); + GraphvizSetAttr(gv, "ranksep=\"1\""); + + for c in [1 .. Length(comps)] do + + label := "\""; + Append(label, String(comps[c][1])); + for x in comps[c]{[2 .. Length(comps[c])]} do + Append(label, "|"); + Append(label, String(x)); + od; + Append(label, "\""); + + node := GraphvizAddNode(gv, c); + GraphvizSetAttr(node, "label", label); + GraphvizSetAttr(node, "width", Float(Length(comps[c]) / 2)); + od; + + nodes := GraphvizNodes(gv); + for e in DigraphEdges(D) do + GraphvizAddEdge(gv, nodes[e[1]], nodes[e[2]]); + od; + + return gv; +end); + +############################################################################# +# Highlighted subdigraphs +############################################################################# + +BindGlobal("DIGRAPHS_GraphvizHighlight", +function(D, gv, hi_verts, hi, lo) + local node, color, out, nodes, edge, v, i, j; + + if IsMultiDigraph(D) then + ErrorNoReturn("the 1st argument (a digraph) must not have multiple edges"); + elif not IsSubset(DigraphVertices(D), hi_verts) then + ErrorNoReturn("the 2nd argument (list) must consist of vertices ", + "of the 1st argument (a digraph)"); + fi; + ErrorIfNotValidColor(hi); + ErrorIfNotValidColor(lo); + + GraphvizSetAttr(gv, "shape", "circle"); + + for v in DigraphVertices(D) do + node := GraphvizAddNode(gv, v); + if v in hi_verts then + color := hi; + else + color := lo; + fi; + GraphvizSetAttr(node, "color", color); + od; + + out := OutNeighbours(D); + nodes := GraphvizNodes(gv); + + for i in DigraphVertices(D) do + for j in out[i] do + if IsGraphvizDigraph(gv) or i > j then + edge := GraphvizAddEdge(gv, nodes[i], nodes[j]); + if i in hi_verts and j in hi_verts then + color := hi; + else + color := lo; + fi; + GraphvizSetAttr(edge, "color", color); + fi; + od; + od; + + return gv; +end); + +InstallMethod(GraphvizHighlightedDigraph, +"for a digraph by out-neighbours, list, and two strings", +[IsDigraphByOutNeighboursRep, IsList, IsString, IsString], +{D, hi_verts, hi, lo} -> +DIGRAPHS_GraphvizHighlight(D, GraphvizDigraph(), hi_verts, hi, lo)); + +InstallMethod(GraphvizHighlightedDigraph, "for a digraph and list", +[IsDigraph, IsList], +{D, list} -> GraphvizHighlightedDigraph(D, list, "black", "grey")); + +InstallMethod(GraphvizHighlightedGraph, +"for a digraph by out-neighbours, list, and two strings", +[IsDigraphByOutNeighboursRep, IsList, IsString, IsString], +function(D, hi_verts, hi, lo) + if not IsSymmetricDigraph(D) then + ErrorNoReturn("the argument (a digraph) must be symmetric"); + fi; + return DIGRAPHS_GraphvizHighlight(D, GraphvizGraph(), hi_verts, hi, lo); +end); + +InstallMethod(GraphvizHighlightedGraph, "for a digraph and list", +[IsDigraph, IsList], +# IsSymmetricDigraph checked in GraphvizHighlightedGraph +{D, list} -> GraphvizHighlightedGraph(D, list, "black", "grey")); diff --git a/gap/deprecated.gd b/gap/deprecated.gd new file mode 100644 index 000000000..d5b6c60c0 --- /dev/null +++ b/gap/deprecated.gd @@ -0,0 +1,35 @@ +############################################################################# +## +## deprecated.gd +## Copyright (C) 2024 James D. Mitchell +## +## Licensing information can be found in the README file of this package. +## +############################################################################# +## + +DeclareAttribute("DotDigraph", IsDigraph); +DeclareAttribute("DotSymmetricDigraph", IsDigraph); + +DeclareOperation("DotSymmetricVertexColoredDigraph", [IsDigraph, IsList]); +DeclareOperation("DotVertexColoredDigraph", [IsDigraph, IsList]); + +DeclareOperation("DotEdgeColoredDigraph", [IsDigraph, IsList]); +DeclareOperation("DotSymmetricEdgeColoredDigraph", [IsDigraph, IsList]); + +DeclareOperation("DotColoredDigraph", [IsDigraph, IsList, IsList]); +DeclareOperation("DotSymmetricColoredDigraph", [IsDigraph, IsList, IsList]); + +DeclareOperation("DotVertexLabelledDigraph", [IsDigraph]); + +DeclareAttribute("DotPartialOrderDigraph", IsDigraph); +DeclareAttribute("DotPreorderDigraph", IsDigraph); + +DeclareSynonym("DotQuasiorderDigraph", DotPreorderDigraph); + +DeclareOperation("DotHighlightedDigraph", [IsDigraph, IsList]); +DeclareOperation("DotHighlightedDigraph", + [IsDigraph, IsList, IsString, IsString]); +DeclareOperation("DotHighlightedGraph", [IsDigraph, IsList]); +DeclareOperation("DotHighlightedGraph", + [IsDigraph, IsList, IsString, IsString]); diff --git a/gap/deprecated.gi b/gap/deprecated.gi new file mode 100644 index 000000000..f2c800087 --- /dev/null +++ b/gap/deprecated.gi @@ -0,0 +1,116 @@ +############################################################################# +## +## deprecated.gi +## Copyright (C) 2024 James D. Mitchell +## +## Licensing information can be found in the README file of this package. +## +############################################################################# +## + +BindGlobal("_PrintDeprecated", function(old, arg...) + Info(InfoWarning, 1, "`", old, "` is deprecated and will be removed in v3", + " use `", Concatenation(List(arg, AsString)), "` instead!"); +end); + +InstallMethod(DotDigraph, "for a digraph", [IsDigraph], +function(D) + _PrintDeprecated("DotDigraph", "GraphvizDigraph"); + return AsString(GraphvizDigraph(D)); +end); + +InstallMethod(DotSymmetricDigraph, "for a digraph", [IsDigraph], +function(D) + _PrintDeprecated("DotSymmetricDigraph", "GraphvizGraph"); + return AsString(GraphvizGraph(D)); +end); + +InstallMethod(DotSymmetricVertexColoredDigraph, +"for a digraph and list of colors", +[IsDigraph, IsHomogeneousList], +function(D, colors) + _PrintDeprecated("DotSymmetricVertexColoredDigraph", + "GraphvizVertexColoredGraph"); + return AsString(GraphvizVertexColoredGraph(D, colors)); +end); + +InstallMethod(DotVertexColoredDigraph, "for a digraph and a list", +[IsDigraph, IsList], +function(D, colors) + _PrintDeprecated("DotVertexColoredDigraph", + "GraphvizVertexColoredDigraph"); + return AsString(GraphvizVertexColoredDigraph(D, colors)); +end); + +InstallMethod(DotSymmetricEdgeColoredDigraph, +"for a digraph and list of colors", +[IsDigraph, IsHomogeneousList], +function(D, colors) + _PrintDeprecated("DotSymmetricEdgeColoredDigraph", + "GraphvizEdgeColoredGraph"); + return AsString(GraphvizEdgeColoredGraph(D, colors)); +end); + +InstallMethod(DotEdgeColoredDigraph, "for a digraph and a list", +[IsDigraph, IsList], +function(D, colors) + _PrintDeprecated("DotEdgeColoredDigraph", + "GraphvizEdgeColoredDigraph"); + return AsString(GraphvizEdgeColoredDigraph(D, colors)); +end); + +InstallMethod(DotSymmetricColoredDigraph, +"for a digraph, vertex colors, and edge colors", +[IsDigraph, IsHomogeneousList, IsHomogeneousList], +function(D, n_colors, e_colors) + _PrintDeprecated("DotSymmetricColoredDigraph", + "GraphvizColoredGraph"); + return AsString(GraphvizColoredGraph(D, n_colors, e_colors)); +end); + +InstallMethod(DotColoredDigraph, +"for a digraph, vertex colors, and edge colors", +[IsDigraph, IsHomogeneousList, IsHomogeneousList], +function(D, n_colors, e_colors) + _PrintDeprecated("DotColoredDigraph", + "GraphvizColoredDigraph"); + return AsString(GraphvizColoredDigraph(D, n_colors, e_colors)); +end); + +InstallMethod(DotVertexLabelledDigraph, "for a digraph", [IsDigraph], +function(D) + _PrintDeprecated("DotVertexLabelledDigraph", + "GraphvizVertexLabelledDigraph"); + return AsString(GraphvizVertexLabelledDigraph(D)); +end); + +InstallMethod(DotPartialOrderDigraph, "for a digraph", [IsDigraph], +function(D) + _PrintDeprecated("DotPartialOrderDigraph", + "GraphvizPartialOrderDigraph"); + return AsString(GraphvizPartialOrderDigraph(D)); +end); + +InstallMethod(DotPreorderDigraph, "for a digraph", [IsDigraph], +function(D) + _PrintDeprecated("DotPreorderDigraph", + "GraphvizPreorderDigraph"); + return AsString(GraphvizPreorderDigraph(D)); +end); + +InstallMethod(DotHighlightedDigraph, +"for a digraph, list, and two strings", +[IsDigraph, IsList, IsString, IsString], +function(D, hi_verts, hi, lo) + _PrintDeprecated("DotHighlightedDigraph", + "GraphvizHighlightedDigraph"); + return AsString(GraphvizHighlightedDigraph(D, hi_verts, hi, lo)); +end); + +InstallMethod(DotHighlightedDigraph, "for a digraph and list", +[IsDigraph, IsList], +function(D, list) + _PrintDeprecated("DotHighlightedDigraph", + "GraphvizHighlightedDigraph"); + return AsString(GraphvizHighlightedDigraph(D, list, "black", "grey")); +end); diff --git a/gap/display.gd b/gap/display.gd index 5e0f381e5..93a9c937a 100644 --- a/gap/display.gd +++ b/gap/display.gd @@ -1,4 +1,4 @@ -############################################################################# +############################################################################ ## ## display.gd ## Copyright (C) 2017-19 James D. Mitchell @@ -8,20 +8,57 @@ ############################################################################# ## -DeclareAttribute("DotDigraph", IsDigraph); -DeclareOperation("DotColoredDigraph", [IsDigraph, IsList, IsList]); -DeclareOperation("DotColoredEdgeLabelledDigraph", - [IsDigraph, IsList, IsList, IsList]); -DeclareOperation("DotVertexColoredDigraph", [IsDigraph, IsList]); -DeclareOperation("DotEdgeColoredDigraph", [IsDigraph, IsList]); -DeclareOperation("DotVertexLabelledDigraph", [IsDigraph]); -DeclareAttribute("DotSymmetricDigraph", IsDigraph); -DeclareOperation("DotSymmetricColoredDigraph", [IsDigraph, IsList, IsList]); -DeclareOperation("DotSymmetricVertexColoredDigraph", [IsDigraph, IsList]); -DeclareOperation("DotSymmetricEdgeColoredDigraph", [IsDigraph, IsList]); -DeclareAttribute("DotPartialOrderDigraph", IsDigraph); -DeclareAttribute("DotPreorderDigraph", IsDigraph); -DeclareSynonym("DotQuasiorderDigraph", DotPreorderDigraph); -DeclareOperation("DotHighlightedDigraph", [IsDigraph, IsList]); -DeclareOperation("DotHighlightedDigraph", +############################################################################# +# Graphs and digraphs +############################################################################# + +DeclareOperation("GraphvizDigraph", [IsDigraph]); +DeclareOperation("GraphvizGraph", [IsDigraph]); + +############################################################################# +# Vertex coloured graphs and digraphs +############################################################################# + +DeclareOperation("GraphvizVertexColoredDigraph", [IsDigraph, IsList]); +DeclareOperation("GraphvizVertexColoredGraph", [IsDigraph, IsList]); + +############################################################################# +# Edge coloured graphs and digraphs +############################################################################# + +DeclareOperation("GraphvizEdgeColoredDigraph", [IsDigraph, IsList]); +DeclareOperation("GraphvizEdgeColoredGraph", [IsDigraph, IsList]); + +############################################################################# +# Vertex and edge coloured graphs and digraphs +############################################################################# + +DeclareOperation("GraphvizColoredDigraph", [IsDigraph, IsList, IsList]); +DeclareOperation("GraphvizColoredGraph", [IsDigraph, IsList, IsList]); + +############################################################################# +# Vertex labelled graphs and digraphs +############################################################################# + +DeclareOperation("GraphvizVertexLabelledDigraph", [IsDigraph]); +DeclareOperation("GraphvizVertexLabelledGraph", [IsDigraph]); + +############################################################################# +# Partial and preorder digraphs +############################################################################# + +DeclareAttribute("GraphvizPartialOrderDigraph", IsDigraph); +DeclareAttribute("GraphvizPreorderDigraph", IsDigraph); + +DeclareSynonym("GraphvizQuasiorderDigraph", GraphvizPreorderDigraph); + +############################################################################# +# Highlighted subdigraphs +############################################################################# + +DeclareOperation("GraphvizHighlightedDigraph", [IsDigraph, IsList]); +DeclareOperation("GraphvizHighlightedDigraph", + [IsDigraph, IsList, IsString, IsString]); +DeclareOperation("GraphvizHighlightedGraph", [IsDigraph, IsList]); +DeclareOperation("GraphvizHighlightedGraph", [IsDigraph, IsList, IsString, IsString]); diff --git a/gap/display.gi b/gap/display.gi index 64c230d33..fe7acd3eb 100644 --- a/gap/display.gi +++ b/gap/display.gi @@ -1,531 +1,316 @@ ############################################################################# ## ## display.gi -## Copyright (C) 2014-21 James D. Mitchell +## Copyright (C) 2014-24 James D. Mitchell ## ## Licensing information can be found in the README file of this package. ## ############################################################################# ## -# AN's code, adapted by WW - -BindGlobal("DIGRAPHS_DotDigraph", -function(D, node_funcs, edge_funcs) - local str, out, i, func, j, l; - str := "//dot\n"; - Append(str, "digraph hgn{\n"); - Append(str, "node [shape=circle]\n"); - for i in DigraphVertices(D) do - Append(str, StringFormatted("{}", i)); - for func in node_funcs do - Append(str, func(i)); - od; - Append(str, "\n"); + +# TODO: +# * add graph6 string or whatever as a comment at the start of the string +# * check JupyterInterface Splash function +# * for edge colored non-digraphs, should ensure that the edge colors are +# symmetric, i.e. the same colors for x -> y and y -> x + +############################################################################# +# Graphs and digraphs +############################################################################# + +InstallOtherMethod(GraphvizDigraph, "for a digraph by out-neighbours", +[IsDigraphByOutNeighboursRep], +function(D) + local gv, x, y; + gv := GraphvizDigraph("hgn"); + GraphvizSetAttr(gv, "node [shape=circle]"); + for x in DigraphVertices(D) do + GraphvizAddNode(gv, x); od; - out := OutNeighbours(D); - for i in DigraphVertices(D) do - l := Length(out[i]); - for j in [1 .. l] do - Append(str, StringFormatted("{} -> {}", i, out[i][j])); - for func in edge_funcs do - Append(str, func(i, j)); - od; - Append(str, "\n"); + for x in DigraphVertices(D) do + for y in OutNeighboursOfVertexNC(D, x) do + GraphvizAddEdge(gv, x, y); od; od; - Append(str, "}\n"); - return str; -end); - -BindGlobal("DIGRAPHS_ValidRGBValue", -function(str) - local l, chars, x, i; - l := Length(str); - x := 0; - chars := "0123456789ABCDEFabcdef"; - if l = 7 then - if str[1] = '#' then - for i in [2 .. l] do - if str[i] in chars then - x := x + 1; - fi; - od; - fi; - fi; - return x = (l - 1); -end); - -BindGlobal("DIGRAPHS_GraphvizColorsList", fail); - -BindGlobal("DIGRAPHS_GraphvizColors", -function() - local f; - if DIGRAPHS_GraphvizColorsList = fail then - f := IO_File(Concatenation(DIGRAPHS_Dir(), "/data/colors.p")); - MakeReadWriteGlobal("DIGRAPHS_GraphvizColorsList"); - DIGRAPHS_GraphvizColorsList := IO_Unpickle(f); - MakeReadOnlyGlobal("DIGRAPHS_GraphvizColorsList"); - IO_Close(f); - fi; - return DIGRAPHS_GraphvizColorsList; + return gv; end); -BindGlobal("DIGRAPHS_ValidVertColors", -function(D, verts) - local v, sum, colors, col; - v := DigraphVertices(D); - sum := 0; - if Length(verts) <> Length(v) then - ErrorNoReturn("the number of vertex colors must be the same as the number", - " of vertices, expected ", Length(v), " but found ", Length(verts), ""); +InstallOtherMethod(GraphvizGraph, "for a digraph by out-neighbours", +[IsDigraphByOutNeighboursRep], +function(D) + local gv, x, y; + if not IsSymmetricDigraph(D) then + ErrorNoReturn("the argument (a digraph) must be symmetric"); fi; - colors := DIGRAPHS_GraphvizColors(); - if Length(verts) = Length(v) then - for col in verts do - if not IsString(col) then - ErrorNoReturn("expected a string"); - elif DIGRAPHS_ValidRGBValue(col) = false and - (col in colors) = false then - ErrorNoReturn("expected RGB Value or valid color name as defined", - " by GraphViz 2.44.1 X11 Color Scheme", - " http://graphviz.org/doc/info/colors.html"); - else - sum := sum + 1; + gv := GraphvizGraph("hgn"); + GraphvizSetAttr(gv, "node [shape=circle]"); + for x in DigraphVertices(D) do + GraphvizAddNode(gv, x); + od; + for x in DigraphVertices(D) do + for y in OutNeighboursOfVertexNC(D, x) do + if x > y then + GraphvizAddEdge(gv, x, y); fi; od; - if sum = Length(verts) then - return true; - fi; - fi; + od; + return gv; end); -BindGlobal("DIGRAPHS_ValidEdgeColors", -function(D, edge) - local out, l, counter, sum, colors, v, col; - out := OutNeighbours(D); - l := Length(edge); - counter := 0; - sum := 0; - colors := DIGRAPHS_GraphvizColors(); - if Length(edge) <> Length(out) then - ErrorNoReturn("the list of edge colors needs to have the", - " same shape as the out-neighbours of the digraph"); - else - for v in [1 .. l] do - sum := 0; - if Length(out[v]) <> Length(edge[v]) then - ErrorNoReturn("the list of edge colors needs to have the", - " same shape as the out-neighbours of the digraph"); - else - for col in edge[v] do - if not IsString(col) then - ErrorNoReturn("expected a string"); - elif DIGRAPHS_ValidRGBValue(col) = false and - (col in colors) = false then - ErrorNoReturn("expected RGB Value or valid color name as defined", - " by GraphViz 2.44.1 X11 Color Scheme", - " http://graphviz.org/doc/info/colors.html"); - else - sum := sum + 1; - fi; - od; - if sum = Length(edge[v]) then - counter := counter + 1; - fi; - fi; - od; - if counter = Length(edge) then - return true; - fi; - fi; -end); +############################################################################# +# Vertex coloured graphs and digraphs +############################################################################# -InstallMethod(DotDigraph, "for a digraph by out-neighbours", -[IsDigraphByOutNeighboursRep], -D -> DIGRAPHS_DotDigraph(D, [], [])); - -InstallMethod(DotColoredDigraph, -"for a digraph by out-neighbours and two lists", -[IsDigraphByOutNeighboursRep, IsList, IsList], -function(D, vert, edge) - local vert_func, edge_func; - if DIGRAPHS_ValidVertColors(D, vert) - and DIGRAPHS_ValidEdgeColors(D, edge) then - vert_func := i -> StringFormatted("[color={}, style=filled]", vert[i]); - edge_func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); - return DIGRAPHS_DotDigraph(D, [vert_func], [edge_func]); - fi; -end); +InstallMethod(GraphvizVertexColoredDigraph, "for a digraph and a list", +[IsDigraph, IsList], +{D, colors} -> GraphvizSetNodeColors(GraphvizDigraph(D), colors)); -InstallMethod(DotColoredEdgeLabelledDigraph, -"for a digraph by out-neighbours and three lists", -[IsDigraphByOutNeighboursRep, IsList, IsList, IsList], -function(D, vert, edge, weight) - local vert_func, edge_func; - # See https://graphs.grevian.org/example - if DIGRAPHS_ValidVertColors(D, vert) - and DIGRAPHS_ValidEdgeColors(D, edge) then - vert_func := i -> StringFormatted("[color={}, style=filled]", vert[i]); - edge_func := {i, j} -> StringFormatted("[color={}, label={}]", - edge[i][j], weight[i][j]); - return DIGRAPHS_DotDigraph(D, [vert_func], [edge_func]); - fi; -end); +InstallMethod(GraphvizVertexColoredGraph, "for a digraph and a list", +[IsDigraph, IsList], +# IsSymmetricDigraph checked by GraphvizGraph +{D, colors} -> GraphvizSetNodeColors(GraphvizGraph(D), colors)); -InstallMethod(DotVertexColoredDigraph, -"for a digraph by out-neighbours and a list", -[IsDigraphByOutNeighboursRep, IsList], -function(D, vert) - local func; - if DIGRAPHS_ValidVertColors(D, vert) then - func := i -> StringFormatted("[color={}, style=filled]", vert[i]); - return DIGRAPHS_DotDigraph(D, [func], []); - fi; -end); +############################################################################# +# Edge coloured graphs and digraphs +############################################################################# -InstallMethod(DotEdgeColoredDigraph, -"for a digraph by out-neighbours and a list", -[IsDigraphByOutNeighboursRep, IsList], -function(D, edge) - local func; - if DIGRAPHS_ValidEdgeColors(D, edge) then - func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); - return DIGRAPHS_DotDigraph(D, [], [func]); +# This function is here rather than graphviz b/c otherwise if D has multiple +# edges we can't reliably get the corresponding graphviz edge from the head and +# tail of the edge from gv. +BindGlobal("DIGRAPHS_ErrorIfNotEdgeColoring", +function(D, colors) + local out, i; + + out := OutNeighbours(D); + if Length(colors) <> Length(out) then + ErrorFormatted("the 2nd argument (edge colors) must have ", + "the same number of entries as the 1st argument ", + "(a digraph) has nodes, expected {} but found {}", + Length(out), + Length(colors)); fi; + for i in [1 .. Length(colors)] do + if not IsList(colors[i]) then + ErrorFormatted("the 2nd argument (edge colors) must be ", + "a list of lists, found {} in position {}", + TNAM_OBJ(colors[i]), + i); + elif Length(out[i]) <> Length(colors[i]) then + ErrorFormatted("the 2nd argument (edge colors) must have ", + "the same shape as the out neighbours of the 1st ", + "argument (a digraph), in position {} expected ", + "a list of length {} but found list of length {}", + i, + Length(out[i]), + Length(colors[i])); + fi; + Perform(colors[i], ErrorIfNotValidColor); + od; end); -InstallMethod(DotVertexLabelledDigraph, "for a digraph by out-neighbours", -[IsDigraphByOutNeighboursRep], -function(D) - local func; - func := i -> StringFormatted(" [label=\"{}\"]", DigraphVertexLabel(D, i)); - return DIGRAPHS_DotDigraph(D, [func], []); -end); +BindGlobal("DIGRAPHS_AddEdgesAndColorsNC", +function(D, gv, colors) + local out, e, n, i; -BindGlobal("DIGRAPHS_DotSymmetricDigraph", -function(D, node_funcs, edge_funcs) - local out, str, i, j, func; - if not IsSymmetricDigraph(D) then - ErrorNoReturn("the argument must be a symmetric digraph,"); - fi; - out := OutNeighbours(D); - str := "//dot\n"; - Append(str, "graph hgn{\n"); - Append(str, "node [shape=circle]\n\n"); - for i in DigraphVertices(D) do - Append(str, StringFormatted("{}", i)); - for func in node_funcs do - Append(str, func(i)); - od; - Append(str, "\n"); - od; - for i in DigraphVertices(D) do - for j in [1 .. Length(out[i])] do - if out[i][j] >= i then - Append(str, StringFormatted("{} -- {}", i, out[i][j])); - for func in edge_funcs do - Append(str, func(i, j)); - od; - Append(str, "\n"); + # This duplicates code in the GraphvizDigraph function because otherwise if D + # has multiple edges we can't reliably get the corresponding graphviz edge + # from the head and tail of the edge from gv. + out := OutNeighbours(D); + for n in DigraphVertices(D) do + for i in [1 .. Length(out[n])] do + if IsGraphvizDigraph(gv) or n > out[n][i] then + e := GraphvizAddEdge(gv, n, out[n][i]); + GraphvizSetAttr(e, "color", colors[n][i]); fi; od; od; - Append(str, "}\n"); - return str; -end); - -InstallMethod(DotSymmetricDigraph, "for a digraph by out-neighbours", -[IsDigraphByOutNeighboursRep], -D -> DIGRAPHS_DotSymmetricDigraph(D, [], [])); - -InstallMethod(DotSymmetricColoredDigraph, -"for a digraph by out-neighbours and two lists", -[IsDigraphByOutNeighboursRep, IsList, IsList], -function(D, vert, edge) - local vert_func, edge_func; - if DIGRAPHS_ValidVertColors(D, vert) - and DIGRAPHS_ValidEdgeColors(D, edge) then - vert_func := i -> StringFormatted("[color={}, style=filled]", vert[i]); - edge_func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); - return DIGRAPHS_DotSymmetricDigraph(D, [vert_func], [edge_func]); - fi; + return gv; end); -InstallMethod(DotSymmetricVertexColoredDigraph, +InstallMethod(GraphvizEdgeColoredDigraph, "for a digraph by out-neighbours and a list", [IsDigraphByOutNeighboursRep, IsList], -function(D, vert) - local func; - if DIGRAPHS_ValidVertColors(D, vert) then - func := i -> StringFormatted ("[color={}, style=filled]", vert[i]); - return DIGRAPHS_DotSymmetricDigraph(D, [func], []); - fi; +function(D, colors) + local gv; + DIGRAPHS_ErrorIfNotEdgeColoring(D, colors); + gv := GraphvizDigraph(NullDigraph(DigraphNrVertices(D))); + return DIGRAPHS_AddEdgesAndColorsNC(D, gv, colors); end); -InstallMethod(DotSymmetricEdgeColoredDigraph, +InstallMethod(GraphvizEdgeColoredGraph, "for a digraph by out-neighbours and a list", [IsDigraphByOutNeighboursRep, IsList], -function(D, edge) - local func; - if DIGRAPHS_ValidEdgeColors(D, edge) then - func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); - return DIGRAPHS_DotSymmetricDigraph(D, [], [func]); +function(D, colors) + local gv; + if not IsSymmetricDigraph(D) then + ErrorNoReturn("the argument (a digraph) must be symmetric"); fi; + DIGRAPHS_ErrorIfNotEdgeColoring(D, colors); + gv := GraphvizGraph(NullDigraph(DigraphNrVertices(D))); + return DIGRAPHS_AddEdgesAndColorsNC(D, gv, colors); end); -# AN's code - -if not IsBound(Splash) then # This function is written by A. Egri-Nagy - BindGlobal("VizViewers", - ["xpdf", "xdg-open", "open", "evince", "okular", "gv"]); - - BindGlobal("Splash", - function(arg...) - local str, opt, path, dir, tdir, file, viewer, type, inn, filetype, out, - engine; - - if not IsString(arg[1]) then - ErrorNoReturn("the 1st argument must be a string,"); - fi; - str := arg[1]; - - opt := rec(); - if IsBound(arg[2]) and IsRecord(arg[2]) then - opt := arg[2]; - elif IsBound(arg[2]) then - ErrorNoReturn("the 2nd argument must be a record,"); - fi; - - # path - path := UserHomeExpand("~/"); # default - if IsBound(opt.path) then - path := opt.path; - fi; - - # directory - if IsBound(opt.directory) then - if not opt.directory in DirectoryContents(path) then - Exec(Concatenation("mkdir ", path, opt.directory)); - fi; - dir := Concatenation(path, opt.directory, "/"); - elif IsBound(opt.path) then - if not "tmp.viz" in DirectoryContents(path) then - tdir := Directory(Concatenation(path, "/", "tmp.viz")); - dir := Filename(tdir, ""); - fi; - else - tdir := DirectoryTemporary(); - dir := Filename(tdir, ""); - fi; - - # file - file := "vizpicture"; # default - if IsBound(opt.filename) then - file := opt.filename; - fi; +############################################################################# +# Vertex and edge coloured graphs and digraphs +############################################################################# - # viewer - if IsBound(opt.viewer) then - viewer := opt.viewer; - if not IsString(viewer) then - ErrorNoReturn("the option `viewer` must be a string, not an ", - TNAM_OBJ(viewer), ","); - elif Filename(DirectoriesSystemPrograms(), viewer) = fail then - ErrorNoReturn("the viewer \"", viewer, "\" specified in the option ", - "`viewer` is not available,"); - fi; - else - viewer := First(VizViewers, x -> - Filename(DirectoriesSystemPrograms(), x) <> fail); - if viewer = fail then - ErrorNoReturn("none of the default viewers ", VizViewers, - " is available, please specify an available viewer", - " in the options record component `viewer`,"); - fi; - fi; +InstallMethod(GraphvizColoredDigraph, +"for a digraph, list, and list", +[IsDigraph, IsList, IsList], +{D, n_colors, e_colors} -> GraphvizSetNodeColors( + GraphvizEdgeColoredDigraph(D, e_colors), + n_colors)); + +InstallMethod(GraphvizColoredGraph, +"for a digraph, list, and list", +[IsDigraph, IsList, IsList], +# IsSymmetricDigraph checked by GraphvizEdgeColoredGraph +{D, n_colors, e_colors} -> GraphvizSetNodeColors( + GraphvizEdgeColoredGraph(D, e_colors), + n_colors)); - # type - if IsBound(opt.type) and (opt.type = "latex" or opt.type = "dot") then - type := opt.type; - elif Length(str) >= 6 and str{[1 .. 6]} = "%latex" then - type := "latex"; - elif Length(str) >= 5 and str{[1 .. 5]} = "//dot" then - type := "dot"; - else - ErrorNoReturn("the component \"type\" of the 2nd argument ", - " must be \"dot\" or \"latex\","); - fi; - if type = "latex" then - inn := Concatenation(dir, file, ".tex"); - else # type = "dot" - inn := Concatenation(dir, file, ".dot"); - fi; +############################################################################# +# Vertex labelled graphs and digraphs +############################################################################# - # output type and name - filetype := "pdf"; # default - if IsBound(opt.filetype) and IsString(opt.filetype) and type <> "latex" then - filetype := opt.filetype; - fi; - out := Concatenation(dir, file, ".", filetype); - - # engine - engine := "dot"; # default - if IsBound(opt.engine) then - engine := opt.engine; - if not engine in ["dot", "neato", "twopi", "circo", - "fdp", "sfdp", "patchwork"] then - ErrorNoReturn("the component \"engine\" of the 2nd argument ", - " must be one of: \"dot\", \"neato\", ", - "\"twopi\", \"circo\", \"fdp\", \"sfdp\", ", - "or \"patchwork\""); - fi; - fi; +InstallMethod(GraphvizVertexLabelledDigraph, "for a digraph", +[IsDigraph], +D -> GraphvizSetNodeLabels(GraphvizDigraph(D), DigraphVertexLabels(D))); - # Write and compile the file - FileString(inn, str); - if type = "latex" then - # Requires GAP >= 4.11: - # Exec(StringFormatted("cd {}; pdflatex {} 2>/dev/null 1>/dev/null", dir); - Exec(Concatenation("cd ", dir, ";", - "pdflatex -interaction=nonstopmode ", - file, - " 2>/dev/null 1>/dev/null")); - else # type = "dot" - # Requires GAP >= 4.11: - # Exec(StringFormatted("{} -T {} {} -o {}", engine, filetype, inn, out)); - Exec(Concatenation(engine, " -T", filetype, " ", inn, " -o ", out)); - fi; - Exec(Concatenation(viewer, " ", out, " 2>/dev/null 1>/dev/null &")); - end); -fi; +InstallMethod(GraphvizVertexLabelledGraph, "for a digraph", +[IsDigraph], +# symmetry checked in GraphvizGraph +D -> GraphvizSetNodeLabels(GraphvizGraph(D), DigraphVertexLabels(D))); -# CR's code +############################################################################# +# Partial and preorder digraphs +############################################################################# -InstallMethod(DotPartialOrderDigraph, "for a partial order digraph", +InstallMethod(GraphvizPartialOrderDigraph, "for a partial order digraph", [IsDigraph], function(D) if not IsPartialOrderDigraph(D) then - ErrorNoReturn("the argument must be a partial order digraph,"); + ErrorNoReturn("the argument (a digraph) must be a partial order"); fi; D := DigraphMutableCopyIfMutable(D); - return DotDigraph(DigraphReflexiveTransitiveReduction(D)); + return GraphvizDigraph(DigraphReflexiveTransitiveReduction(D)); end); -InstallMethod(DotPreorderDigraph, "for a preorder digraph", +InstallMethod(GraphvizPreorderDigraph, "for a preorder digraph", [IsDigraph], function(D) - local comps, quo, red, str, c, x, e; + local comps, gv, label, node, nodes, c, x, e; + if not IsPreorderDigraph(D) then - ErrorNoReturn("the argument must be a preorder digraph,"); + ErrorNoReturn("the argument (a digraph) must be a preorder"); fi; # Quotient by the strongly connected components to get a partial order # D and draw this without loops or edges implied by transitivity. - D := DigraphMutableCopyIfMutable(D); - comps := DigraphStronglyConnectedComponents(D).comps; - quo := DigraphRemoveAllMultipleEdges(QuotientDigraph(D, comps)); - red := DigraphReflexiveTransitiveReduction(quo); + comps := DigraphStronglyConnectedComponents(D).comps; + D := DigraphMutableCopy(D); + DigraphRemoveAllMultipleEdges(QuotientDigraph(D, comps)); + DigraphReflexiveTransitiveReduction(D); - str := "//dot\n"; - Append(str, "digraph graphname {\n"); - Append(str, "node [shape=Mrecord, height=0.5, fixedsize=true]"); - Append(str, "ranksep=1;\n"); + gv := GraphvizDigraph("graphname"); + GraphvizSetAttr(gv, "node [shape=\"Mrecord\"]"); + GraphvizSetAttr(gv, "height=\"0.5\""); + GraphvizSetAttr(gv, "fixedsize=\"true\""); + GraphvizSetAttr(gv, "ranksep=\"1\""); - # Each vertex of the quotient D is labelled by its preimage. for c in [1 .. Length(comps)] do - Append(str, String(c)); - Append(str, " [label=\""); - Append(str, String(comps[c][1])); + + label := "\""; + Append(label, String(comps[c][1])); for x in comps[c]{[2 .. Length(comps[c])]} do - Append(str, "|"); - Append(str, String(x)); + Append(label, "|"); + Append(label, String(x)); od; - Append(str, "\", width="); - Append(str, String(Float(Length(comps[c]) / 2))); - Append(str, "]\n"); + Append(label, "\""); + + node := GraphvizAddNode(gv, c); + GraphvizSetAttr(node, "label", label); + GraphvizSetAttr(node, "width", Float(Length(comps[c]) / 2)); od; - # Add the edges of the quotient D. - for e in DigraphEdges(red) do - Append(str, Concatenation(String(e[1]), " -> ", String(e[2]), "\n")); + nodes := GraphvizNodes(gv); + for e in DigraphEdges(D) do + GraphvizAddEdge(gv, nodes[e[1]], nodes[e[2]]); od; - Append(str, "}"); - return str; + return gv; end); -InstallMethod(DotHighlightedDigraph, "for a digraph and list", -[IsDigraph, IsList], -{D, list} -> DotHighlightedDigraph(D, list, "black", "grey")); - -InstallMethod(DotHighlightedDigraph, -"for a digraph by out-neighbours, list, and two strings", -[IsDigraphByOutNeighboursRep, IsList, IsString, IsString], -function(D, highverts, highcolour, lowcolour) - local lowverts, out, str, i, j; - - if not IsSubset(DigraphVertices(D), highverts) then - ErrorNoReturn("the 2nd argument must be a list of vertices ", - "of the 1st argument ,"); - elif IsEmpty(highcolour) then - ErrorNoReturn("the 3rd argument must be a string ", - "containing the name of a colour,"); - elif IsEmpty(lowcolour) then - ErrorNoReturn("the 4th argument must be a string ", - "containing the name of a colour,"); - fi; - - lowverts := Difference(DigraphVertices(D), highverts); - out := OutNeighbours(D); - str := "//dot\n"; - - Append(str, "digraph hgn{\n"); - - Append(str, "subgraph lowverts{\n"); - Append(str, Concatenation("node [shape=circle, color=", - lowcolour, - "]\n edge [color=", - lowcolour, - "]\n")); +############################################################################# +# Highlighted subdigraphs +############################################################################# - for i in lowverts do - Append(str, Concatenation(String(i), "\n")); - od; +BindGlobal("DIGRAPHS_GraphvizHighlight", +function(D, gv, hi_verts, hi, lo) + local node, color, out, nodes, edge, v, i, j; - Append(str, "}\n"); + if IsMultiDigraph(D) then + ErrorNoReturn("the 1st argument (a digraph) must not have multiple edges"); + elif not IsSubset(DigraphVertices(D), hi_verts) then + ErrorNoReturn("the 2nd argument (list) must consist of vertices ", + "of the 1st argument (a digraph)"); + fi; + ErrorIfNotValidColor(hi); + ErrorIfNotValidColor(lo); - Append(str, "subgraph highverts{\n"); - Append(str, Concatenation("node [shape=circle, color=", - highcolour, - "]\n edge [color=", - highcolour, - "]\n")); + GraphvizSetAttr(gv, "shape", "circle"); - for i in highverts do - Append(str, Concatenation(String(i), "\n")); + for v in DigraphVertices(D) do + node := GraphvizAddNode(gv, v); + if v in hi_verts then + color := hi; + else + color := lo; + fi; + GraphvizSetAttr(node, "color", color); od; - Append(str, "}\n"); - - Append(str, "subgraph lowverts{\n"); - for i in lowverts do - for j in out[i] do - Append(str, Concatenation(String(i), " -> ", String(j), "\n")); - od; - od; - Append(str, "}\n"); + out := OutNeighbours(D); + nodes := GraphvizNodes(gv); - Append(str, "subgraph highverts{\n"); - for i in highverts do + for i in DigraphVertices(D) do for j in out[i] do - Append(str, Concatenation(String(i), " -> ", String(j))); - if j in lowverts then - Append(str, Concatenation(" [color=", lowcolour, "]")); + if IsGraphvizDigraph(gv) or i > j then + edge := GraphvizAddEdge(gv, nodes[i], nodes[j]); + if i in hi_verts and j in hi_verts then + color := hi; + else + color := lo; + fi; + GraphvizSetAttr(edge, "color", color); fi; - Append(str, "\n"); od; od; - Append(str, "}\n}\n"); - return str; + return gv; end); + +InstallMethod(GraphvizHighlightedDigraph, +"for a digraph by out-neighbours, list, and two strings", +[IsDigraphByOutNeighboursRep, IsList, IsString, IsString], +{D, hi_verts, hi, lo} -> +DIGRAPHS_GraphvizHighlight(D, GraphvizDigraph(), hi_verts, hi, lo)); + +InstallMethod(GraphvizHighlightedDigraph, "for a digraph and list", +[IsDigraph, IsList], +{D, list} -> GraphvizHighlightedDigraph(D, list, "black", "grey")); + +InstallMethod(GraphvizHighlightedGraph, +"for a digraph by out-neighbours, list, and two strings", +[IsDigraphByOutNeighboursRep, IsList, IsString, IsString], +function(D, hi_verts, hi, lo) + if not IsSymmetricDigraph(D) then + ErrorNoReturn("the argument (a digraph) must be symmetric"); + fi; + return DIGRAPHS_GraphvizHighlight(D, GraphvizGraph(), hi_verts, hi, lo); +end); + +InstallMethod(GraphvizHighlightedGraph, "for a digraph and list", +[IsDigraph, IsList], +# IsSymmetricDigraph checked in GraphvizHighlightedGraph +{D, list} -> GraphvizHighlightedGraph(D, list, "black", "grey")); diff --git a/init.g b/init.g index 20ed2f3dd..b61165fc4 100644 --- a/init.g +++ b/init.g @@ -64,5 +64,6 @@ ReadPackage("digraphs", "gap/cliques.gd"); ReadPackage("digraphs", "gap/planar.gd"); ReadPackage("digraphs", "gap/examples.gd"); ReadPackage("digraphs", "gap/weights.gd"); +ReadPackage("digraphs", "gap/deprecated.gd"); DeclareInfoClass("InfoDigraphs"); diff --git a/read.g b/read.g index 40ae189c5..50f8815c5 100644 --- a/read.g +++ b/read.g @@ -47,3 +47,4 @@ ReadPackage("digraphs", "gap/cliques.gi"); ReadPackage("digraphs", "gap/planar.gi"); ReadPackage("digraphs", "gap/examples.gi"); ReadPackage("digraphs", "gap/weights.gi"); +ReadPackage("digraphs", "gap/deprecated.gi"); diff --git a/tst/standard/display.tst b/tst/standard/display.tst new file mode 100644 index 000000000..0b30d3e74 --- /dev/null +++ b/tst/standard/display.tst @@ -0,0 +1,700 @@ +############################################################################# +## +#W standard/display.tst +#Y Copyright (C) 2014-24 James D. Mitchell +## +## Licensing information can be found in the README file of this package. +## +############################################################################# +## +gap> START_TEST("Digraphs package: standard/display.tst"); +gap> LoadPackage("digraphs", false);; + +# +gap> DIGRAPHS_StartTest(); + +# Display and PrintString and String +gap> Digraph([]); + +gap> Digraph([[]]); + +gap> Digraph([[1]]); + +gap> Digraph([[2], []]); + +gap> gr := Digraph([[1, 2], [2], []]); + +gap> PrintString(gr); +"DigraphFromDigraph6String(\"&Bq?\")" +gap> String(gr); +"DigraphFromDigraph6String(\"&Bq?\")" +gap> gr := Digraph([[2], [1], [], [3]]); + +gap> PrintString(gr); +"DigraphFromDigraph6String(\"&CQ?G\")" +gap> String(gr); +"DigraphFromDigraph6String(\"&CQ?G\")" +gap> r := rec(DigraphVertices := [1, 2, 3], +> DigraphSource := [1, 2], +> DigraphRange := [2, 3]);; +gap> gr := Digraph(r); + +gap> PrintString(gr); +"ChainDigraph(3)" +gap> String(gr); +"ChainDigraph(3)" + +# DotDigraph and DotSymmetricDigraph +gap> r := rec(DigraphVertices := [1 .. 3], DigraphSource := [1, 1, 1, 1], +> DigraphRange := [1, 2, 2, 3]);; +gap> gr := Digraph(r); + +gap> dot := DotDigraph(gr);; +gap> dot{[1 .. 50]}; +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3" +gap> dot{[51 .. 75]}; +"\n\t1 -> 1\n\t1 -> 2\n\t1 -> 2\n" +gap> r := rec(DigraphVertices := [1 .. 8], +> DigraphSource := [1, 1, 2, 2, 3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 7, 7, 7, 7, 7, 8, +> 8], +> DigraphRange := [6, 7, 1, 6, 5, 1, 4, 8, 1, 3, 6, 6, 7, 7, 1, 4, 4, 5, 7, 5, +> 6]);; +gap> gr1 := Digraph(r); + +gap> DotDigraph(gr1){[50 .. 109]}; +"3\n\t4\n\t5\n\t6\n\t7\n\t8\n\t1 -> 6\n\t1 -> 7\n\t2 -> 1\n\t2 -> 6\n\t3 -> 5\ +\n\t4 " +gap> adj := [[2], [1, 3], [2, 3, 4], [3]]; +[ [ 2 ], [ 1, 3 ], [ 2, 3, 4 ], [ 3 ] ] +gap> gr2 := Digraph(adj); + +gap> DotDigraph(gr2){[11 .. 75]}; +"aph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t1 -> 2\n\t2 -> 1\n\t\ +2 ->" +gap> DotSymmetricDigraph(gr2){[12 .. 70]}; +" hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t2 -- 1\n\t3 -- 2\n\t4" +gap> DotSymmetricDigraph(gr1); +Error, the argument (a digraph) must be symmetric + +#DotColoredDigraph and DotSymmetriColoredDigraph +# TODO fix the colors here! +gap> D := CompleteDigraph(4); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; vertcolors[2] := "red";; +gap> vertcolors[3] := "green";; vertcolors[4] := "yellow";; +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; edgecolors[4] := [];; +gap> edgecolors[1][1] := "lightblue";; +gap> edgecolors[1][2] := "pink";; +gap> edgecolors[1][3] := "purple";; +gap> edgecolors[2][1] := "lightblue";; +gap> edgecolors[2][2] := "pink";; +gap> edgecolors[2][3] := "purple";; +gap> edgecolors[3][1] := "lightblue";; +gap> edgecolors[3][2] := "pink";; +gap> edgecolors[3][3] := "purple";; +gap> edgecolors[4][1] := "lightblue";; +gap> edgecolors[4][2] := "pink";; +gap> edgecolors[4][3] := "purple";; +gap> DotColoredDigraph(D, vertcolors, edgecolors){[1 .. 30]}; +"//dot\ndigraph hgn {\n\tnode [sha" +gap> D := Digraph([[2], [1, 3], [2]]); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; +gap> vertcolors[2] := "pink";; +gap> vertcolors[3] := "purple";; +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; +gap> edgecolors[1][1] := "green";; +gap> edgecolors[2][1] := "green";; +gap> edgecolors[3][1] := "red";; edgecolors[2][2] := "red";; +gap> DotSymmetricColoredDigraph(D, vertcolors, edgecolors); +"//dot\ngraph hgn {\n\tnode [shape=circle] \n\t1 [color=blue, style=filled]\n\ +\t2 [color=pink, style=filled]\n\t3 [color=purple, style=filled]\n\t2 -- 1 [co\ +lor=green]\n\t3 -- 2 [color=red]\n}\n" +gap> D := Digraph([[2, 3], [1, 3], [1]]); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; vertcolors[2] := "red";; +gap> vertcolors[3] := "green";; +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; +gap> edgecolors[1][1] := "orange";; edgecolors[1][2] := "yellow";; +gap> edgecolors[2][1] := "orange";; edgecolors[2][2] := "pink";; +gap> edgecolors[3][1] := "yellow";; +gap> DotColoredDigraph(D, vertcolors, edgecolors); +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1 [color=blue, style=filled]\ +\n\t2 [color=red, style=filled]\n\t3 [color=green, style=filled]\n\t1 -> 2 [co\ +lor=orange]\n\t1 -> 3 [color=yellow]\n\t2 -> 1 [color=orange]\n\t2 -> 3 [color\ +=pink]\n\t3 -> 1 [color=yellow]\n}\n" +gap> D := Digraph(IsMutableDigraph, [[2, 3], [1, 3], [1]]); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; vertcolors[2] := "red";; +gap> vertcolors[3] := "green";; +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; +gap> edgecolors[1][1] := "orange";; edgecolors[1][2] := "yellow";; +gap> edgecolors[2][1] := "orange";; edgecolors[2][2] := "pink";; +gap> edgecolors[3][1] := "yellow";; +gap> DotColoredDigraph(D, vertcolors, edgecolors);; +gap> D; + +gap> D := Digraph([[2, 4], [1, 3], [2], [1]]); + +gap> vertcolors := ["blue", "red", "green", "yellow"];; +gap> edgecolors := ListWithIdenticalEntries(3, +> ["orange", "orange", "orange"]);; +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotSymmetricColoredDigraph(D, vertcolors, edgecolors); +Error, the 2nd argument (edge colors) must have the same number of entries as \ +the 1st argument (a digraph) has nodes, expected 4 but found 3 +#@else +gap> DotSymmetricColoredDigraph(D, vertcolors, edgecolors); +Error, the 2nd argument (edge colors) must have the same number of entries as \ +the 1st\ + argument (a digraph) has nodes, expected 4 but found 3 +#@fi +gap> D := Digraph(IsMutableDigraph, [[2, 4], [1, 3], [2], [1]]); + +gap> vertcolors := ["blue", "red", "green", "yellow"];; +gap> edgecolors := ListWithIdenticalEntries(3, +> ["orange", "orange", "orange"]);; +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotSymmetricColoredDigraph(D, vertcolors, edgecolors); +Error, the 2nd argument (edge colors) must have the same number of entries as \ +the 1st argument (a digraph) has nodes, expected 4 but found 3 +#@else +gap> DotSymmetricColoredDigraph(D, vertcolors, edgecolors); +Error, the 2nd argument (edge colors) must have the same number of entries as \ +the 1st\ + argument (a digraph) has nodes, expected 4 but found 3 +#@fi +gap> D; + +gap> D := CompleteDigraph(4);; +gap> vertcolors := ["blue", "banana", "green", "yellow"];; +gap> edgecolors := ListWithIdenticalEntries(4, +> ["lightblue", "pink", "purple"]);; +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, invalid color "banana" (list (string)), valid colors are RGB values or \ +names from the GraphViz 2.44.1 X11 Color Scheme http://graphviz.org/doc/info/c\ +olors.html +#@else +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, invalid color "banana" (list (string)), valid colors are RGB values or \ +names from the GraphViz 2.44.1 X11 Color Sch\ +eme http://graphviz.org/doc/info/colors.html +#@fi +gap> D := CompleteDigraph(4); + +gap> vertcolors := ["blue", "red", "green"];; +gap> edgecolors := ListWithIdenticalEntries(4, +> ["lightblue", "pink", "purple"]);; +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, the number of node colors must be the same as the number of nodes, expe\ +cted 4 but found 3 +#@else +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, the number of node colors must be the same as the number of nodes, expe\ +cted 4 but found 3 +#@fi +gap> D := CompleteDigraph(4); + +gap> vertcolors := [2, 1, 1, 3];; +gap> edgecolors := ListWithIdenticalEntries(4, +> ["lightblue", "pink", "purple"]);; +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, invalid color 2 (integer), valid colors are RGB values or names from th\ +e GraphViz 2.44.1 X11 Color Scheme http://graphviz.org/doc/info/colors.html +#@else +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, invalid color 2 (integer), valid colors are RGB values or names from th\ +e GraphViz 2.44.1 X11 Color Sch\ +eme http://graphviz.org/doc/info/colors.html +#@fi +gap> D := CompleteDigraph(4); + +gap> vertcolors := ["#AB3487", "#DF4738", "#4BF234", "#AF34C9"];; +gap> edgecolors := ListWithIdenticalEntries(4, +> ["lightblue", "pink", "purple"]);; +gap> Print(DotColoredDigraph(D, vertcolors, edgecolors)); +//dot +digraph hgn { + node [shape=circle] + 1 [color="#AB3487", style=filled] + 2 [color="#DF4738", style=filled] + 3 [color="#4BF234", style=filled] + 4 [color="#AF34C9", style=filled] + 1 -> 2 [color=lightblue] + 1 -> 3 [color=pink] + 1 -> 4 [color=purple] + 2 -> 1 [color=lightblue] + 2 -> 3 [color=pink] + 2 -> 4 [color=purple] + 3 -> 1 [color=lightblue] + 3 -> 2 [color=pink] + 3 -> 4 [color=purple] + 4 -> 1 [color=lightblue] + 4 -> 2 [color=pink] + 4 -> 3 [color=purple] +} +gap> D := CompleteDigraph(4); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; vertcolors[2] := "red";; +gap> vertcolors[3] := "green";; vertcolors[4] := "yellow";; +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; edgecolors[4] := [];; +gap> edgecolors[1][1] := "banana";; +gap> edgecolors[1][2] := "pink";; +gap> edgecolors[1][3] := "purple";; +gap> edgecolors[2][1] := "lightblue";; +gap> edgecolors[2][2] := "pink";; +gap> edgecolors[2][3] := "purple";; +gap> edgecolors[3][1] := "cherry";; +gap> edgecolors[3][2] := "pink";; +gap> edgecolors[3][3] := "purple";; +gap> edgecolors[4][1] := "lightblue";; +gap> edgecolors[4][2] := "pink";; +gap> edgecolors[4][3] := "purple";; +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, invalid color "banana" (list (string)), valid colors are RGB values or \ +names from the GraphViz 2.44.1 X11 Color Scheme http://graphviz.org/doc/info/c\ +olors.html +#@else +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, invalid color "banana" (list (string)), valid colors are RGB values or \ +names from the GraphViz 2.44.1 X11 Color Sch\ +eme http://graphviz.org/doc/info/colors.html +#@fi +gap> D := CompleteDigraph(4); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; vertcolors[2] := "red";; +gap> vertcolors[3] := "green";; vertcolors[4] := "yellow";; +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; edgecolors[4] := [];; +gap> edgecolors[1][1] := "lightblue";; +gap> edgecolors[1][2] := "pink";; +gap> edgecolors[1][3] := "purple";; +gap> edgecolors[2][1] := "lightblue";; +gap> edgecolors[2][2] := "pink";; +gap> edgecolors[2][3] := "purple";; +gap> edgecolors[3][1] := "lightblue";; +gap> edgecolors[3][2] := "pink";; +gap> edgecolors[3][3] := "purple";; +gap> edgecolors[4][1] := "lightblue";; +gap> edgecolors[4][2] := "pink";; +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, the 2nd argument (edge colors) must have the same shape as the out neig\ +hbours of the 1st argument (a digraph), in position 4 expected a list of lengt\ +h 3 but found list of length 2 +#@else +gap> DotColoredDigraph(D, vertcolors, edgecolors); +Error, the 2nd argument (edge colors) must have the same shape as the out neig\ +hbours \ +of the 1st argument (a digraph), in position 4 expected a list of length 3 but\ + found list of length 2 +#@fi + +# DotVertexColoredDigraph +gap> D := CompleteDigraph(4); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; vertcolors[2] := "red";; +gap> vertcolors[3] := "green";; vertcolors[4] := "yellow";; +gap> Print(DotVertexColoredDigraph(D, vertcolors)); +//dot +digraph hgn { + node [shape=circle] + 1 [color=blue, style=filled] + 2 [color=red, style=filled] + 3 [color=green, style=filled] + 4 [color=yellow, style=filled] + 1 -> 2 + 1 -> 3 + 1 -> 4 + 2 -> 1 + 2 -> 3 + 2 -> 4 + 3 -> 1 + 3 -> 2 + 3 -> 4 + 4 -> 1 + 4 -> 2 + 4 -> 3 +} +gap> D := EmptyDigraph(3); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; vertcolors[2] := "red";; +gap> vertcolors[3] := "green";; +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; +gap> DotVertexColoredDigraph(D, vertcolors); +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1 [color=blue, style=filled]\ +\n\t2 [color=red, style=filled]\n\t3 [color=green, style=filled]\n}\n" + +# DotEdgeColoredDigraph +gap> D := CompleteDigraph(4); + +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; edgecolors[4] := [];; +gap> edgecolors[1][1] := "lightblue";; +gap> edgecolors[1][2] := "pink";; +gap> edgecolors[1][3] := "purple";; +gap> edgecolors[2][1] := "lightblue";; +gap> edgecolors[2][2] := "pink";; +gap> edgecolors[2][3] := "purple";; +gap> edgecolors[3][1] := "lightblue";; +gap> edgecolors[3][2] := "pink";; +gap> edgecolors[3][3] := "purple";; +gap> edgecolors[4][1] := "lightblue";; +gap> edgecolors[4][2] := "pink";; +gap> edgecolors[4][3] := "purple";; +gap> DotEdgeColoredDigraph(D, edgecolors); +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t1 -> 2 [c\ +olor=lightblue]\n\t1 -> 3 [color=pink]\n\t1 -> 4 [color=purple]\n\t2 -> 1 [col\ +or=lightblue]\n\t2 -> 3 [color=pink]\n\t2 -> 4 [color=purple]\n\t3 -> 1 [color\ +=lightblue]\n\t3 -> 2 [color=pink]\n\t3 -> 4 [color=purple]\n\t4 -> 1 [color=l\ +ightblue]\n\t4 -> 2 [color=pink]\n\t4 -> 3 [color=purple]\n}\n" +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotEdgeColoredDigraph(CycleDigraph(3), []); +Error, the 2nd argument (edge colors) must have the same number of entries as \ +the 1st argument (a digraph) has nodes, expected 3 but found 0 +gap> DotEdgeColoredDigraph(CycleDigraph(3), [[fail, fail], [fail], [fail]]); +Error, the 2nd argument (edge colors) must have the same shape as the out neig\ +hbours of the 1st argument (a digraph), in position 1 expected a list of lengt\ +h 1 but found list of length 2 +#@else +gap> DotEdgeColoredDigraph(CycleDigraph(3), []); +Error, the 2nd argument (edge colors) must have the same number of entries as \ +the 1st\ + argument (a digraph) has nodes, expected 3 but found 0 +#@fi +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotEdgeColoredDigraph(CycleDigraph(3), [[fail], [fail], [fail]]); +Error, invalid color fail (boolean or fail), valid colors are RGB values or na\ +mes from the GraphViz 2.44.1 X11 Color Scheme http://graphviz.org/doc/info/col\ +ors.html +#@else +gap> DotEdgeColoredDigraph(CycleDigraph(3), [[fail], [fail], [fail]]); +Error, invalid color fail (boolean or fail), valid colors are RGB values or na\ +mes from the GraphViz 2.44.1 X11 Color Sch\ +eme http://graphviz.org/doc/info/colors.html +#@fi + +# DotSymmetricVertexColoredDigraph +gap> D := Digraph([[2], [1, 3], [2]]); + +gap> vertcolors := [];; +gap> vertcolors[1] := "blue";; +gap> vertcolors[2] := "pink";; +gap> vertcolors[3] := "purple";; +gap> DotSymmetricVertexColoredDigraph(D, vertcolors); +"//dot\ngraph hgn {\n\tnode [shape=circle] \n\t1 [color=blue, style=filled]\n\ +\t2 [color=pink, style=filled]\n\t3 [color=purple, style=filled]\n\t2 -- 1\n\t\ +3 -- 2\n}\n" + +# DotSymmetricEdgeColoredDigraph +gap> D := Digraph([[2], [1, 3], [2]]); + +gap> edgecolors := [];; +gap> edgecolors[1] := [];; edgecolors[2] := [];; +gap> edgecolors[3] := [];; +gap> edgecolors[1][1] := "green";; edgecolors[2][1] := "green";; +gap> edgecolors[2][2] := "red";; edgecolors[3][1] := "red";; +gap> DotSymmetricEdgeColoredDigraph(D, edgecolors); +"//dot\ngraph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t2 -- 1 [color=gr\ +een]\n\t3 -- 2 [color=red]\n}\n" + +# DotVertexLabelledDigraph +gap> r := rec(DigraphVertices := [1 .. 3], DigraphSource := [1, 1, 1, 1], +> DigraphRange := [1, 2, 2, 3]);; +gap> gr := Digraph(r); + +gap> dot := DotVertexLabelledDigraph(gr);; +gap> dot; +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1 [label=1]\n\t2 [label=2]\n\ +\t3 [label=3]\n\t1 -> 1\n\t1 -> 2\n\t1 -> 2\n\t1 -> 3\n}\n" +gap> SetDigraphVertexLabel(gr, 1, 2); +gap> dot := DotVertexLabelledDigraph(gr);; +gap> dot; +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1 [label=2]\n\t2 [label=2]\n\ +\t3 [label=3]\n\t1 -> 1\n\t1 -> 2\n\t1 -> 2\n\t1 -> 3\n}\n" + +# Splash +gap> Splash(1); +Error, the 1st argument must be a string or graphviz graph, found integer +gap> Splash("string", 0); +Error, the 2nd argument must be a record, +gap> Splash("string"); +Error, the component "type" of the 2nd argument must be "dot" or "\ +latex", +gap> Splash("string", rec(path := "~/", filename := "filename")); +Error, the component "type" of the 2nd argument must be "dot" or "\ +latex", +gap> Splash("string", rec(viewer := "bad")); +Error, the viewer "bad" specified in the option `viewer` is not available +gap> Splash("string", rec(type := "dot", engine := "dott")); +Error, the component "engine" of the 2nd argument must be one of: "\ +dot", "neato", "twopi", "circo", "fdp", "sfdp", or "patchwork" +gap> tmpdir := Filename(DirectoryTemporary(), "");; +gap> Splash("string", +> rec(path := tmpdir, +> directory := "digraphs_temporary_directory")); +Error, the component "type" of the 2nd argument must be "dot" or "\ +latex", +gap> Splash("%latex", rec(filetype := "latex", engine := fail)); +Error, the component "engine" of the 2nd argument must be one of: "\ +dot", "neato", "twopi", "circo", "fdp", "sfdp", or "patchwork" +gap> Splash("//dot", rec(filetype := "pdf", engine := fail)); +Error, the component "engine" of the 2nd argument must be one of: "\ +dot", "neato", "twopi", "circo", "fdp", "sfdp", or "patchwork" +gap> MakeReadWriteGlobal("VizViewers"); +gap> VizViewers_backup := ShallowCopy(VizViewers);; +gap> VizViewers := ["nonexistent-viewer"];; +gap> Splash("//dot"); +Error, none of the default viewers [ "nonexistent-viewer" + ] is available, please specify an available viewer in the options record comp\ +onent `viewer`, +gap> VizViewers := VizViewers_backup;; +gap> MakeReadOnlyGlobal("VizViewers"); + +# DotPartialOrderDigraph +gap> gr := Digraph([[1], [1, 2], [1, 3], [1, 4], [1 .. 5], [1 .. 6], +> [1, 2, 3, 4, 5, 7], [1, 8]]);; +gap> Print(DotPartialOrderDigraph(gr)); +//dot +digraph hgn { + node [shape=circle] + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 2 -> 1 + 3 -> 1 + 4 -> 1 + 5 -> 2 + 5 -> 3 + 5 -> 4 + 6 -> 5 + 7 -> 5 + 8 -> 1 +} +gap> gr := Digraph([[1], [2], [1, 3], [2, 4], [1, 2, 3, 4, 5], [1, 2, 3, 6]]);; +gap> Print(DotPartialOrderDigraph(gr)); +//dot +digraph hgn { + node [shape=circle] + 1 + 2 + 3 + 4 + 5 + 6 + 3 -> 1 + 4 -> 2 + 5 -> 3 + 5 -> 4 + 6 -> 3 + 6 -> 2 +} +gap> gr := Digraph([[1], []]);; +gap> DotPartialOrderDigraph(gr); +Error, the argument (a digraph) must be a partial order + +# DotPreorderDigraph and DotQuasiorderDigraph +gap> DotPreorderDigraph(CompleteDigraph(5)); +Error, the argument (a digraph) must be a preorder +gap> gr := Digraph([[1], [1, 2], [1, 3], [1, 4], [1 .. 5], [1 .. 6], +> [1, 2, 3, 4, 5, 7], [1, 8]]);; +gap> Print(DotPreorderDigraph(gr), "\n"); +//dot +digraph graphname { + node [shape="Mrecord"] height="0.5" fixedsize="true" ranksep="1" + 1 [label="1", width=0.5] + 2 [label="2", width=0.5] + 3 [label="3", width=0.5] + 4 [label="4", width=0.5] + 5 [label="5", width=0.5] + 6 [label="6", width=0.5] + 7 [label="7", width=0.5] + 8 [label="8", width=0.5] + 2 -> 1 + 3 -> 1 + 4 -> 1 + 5 -> 2 + 5 -> 3 + 5 -> 4 + 6 -> 5 + 7 -> 5 + 8 -> 1 +} + +gap> gr := Concatenation("&X_?_A]|^Vr[nHpmVcy~zy[A????_???G??B]nhtmvcwvJq\\^~", +> "|m??_AEx]Rb[nHo??__vJy[??A??O_aV~^Zb]njo???_???GZdxMLy}n_");; +gap> gr := DigraphFromDigraph6String(gr);; +gap> Print(DotPreorderDigraph(gr){[1 .. 94]}, "\n"); +//dot +digraph graphname { + node [shape="Mrecord"] height="0.5" fixedsize="true" ranksep="1" + +gap> gr := DigraphDisjointUnion(CompleteDigraph(10), +> CompleteDigraph(5), +> CycleDigraph(2));; +gap> gr := DigraphReflexiveTransitiveClosure(DigraphAddEdge(gr, [10, 11]));; +gap> IsPreorderDigraph(gr); +true +gap> Print(DotPreorderDigraph(gr), "\n"); +//dot +digraph graphname { + node [shape="Mrecord"] height="0.5" fixedsize="true" ranksep="1" + 1 [label="11|12|13|14|15", width=2.5] + 2 [label="1|2|3|4|5|6|7|8|9|10", width=5.] + 3 [label="16|17", width=1.] + 2 -> 1 +} + + +# DotHighlightedDigraph +gap> gr := Digraph([[2, 3], [2], [1, 3]]); + +gap> Print(DotHighlightedDigraph(gr, [1, 2], "red", "black")); +//dot +digraph { + shape=circle + 1 [color=red] + 2 [color=red] + 3 [color=black] + 1 -> 2 [color=red] + 1 -> 3 [color=black] + 2 -> 2 [color=red] + 3 -> 1 [color=black] + 3 -> 3 [color=black] +} +gap> D := CycleDigraph(5);; +gap> DotHighlightedDigraph(D, [10], "black", "grey"); +Error, the 2nd argument (list) must consist of vertices of the 1st argument (a\ + digraph) +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotHighlightedDigraph(D, [1], "", "grey"); +Error, invalid color "" (list (string)), valid colors are RGB values or names \ +from the GraphViz 2.44.1 X11 Color Scheme http://graphviz.org/doc/info/colors.\ +html +#@else +gap> DotHighlightedDigraph(D, [1], "", "grey"); +Error, invalid color "" (list (string)), valid colors are RGB values or names \ +from the GraphViz 2.44.1 X11 Color Sch\ +eme http://graphviz.org/doc/info/colors.html +#@fi +#@if CompareVersionNumbers(GAPInfo.Version, "4.12.0") +gap> DotHighlightedDigraph(D, [1], "black", ""); +Error, invalid color "" (list (string)), valid colors are RGB values or names \ +from the GraphViz 2.44.1 X11 Color Scheme http://graphviz.org/doc/info/colors.\ +html +#@else +gap> DotHighlightedDigraph(D, [1], "black", ""); +Error, invalid color "" (list (string)), valid colors are RGB values or names \ +from the GraphViz 2.44.1 X11 Color Sch\ +eme http://graphviz.org/doc/info/colors.html +#@fi +gap> Print(DotHighlightedDigraph(D, Filtered(DigraphVertices(D), IsEvenInt))); +//dot +digraph { + shape=circle + 1 [color=grey] + 2 [color=black] + 3 [color=grey] + 4 [color=black] + 5 [color=grey] + 1 -> 2 [color=grey] + 2 -> 3 [color=grey] + 3 -> 4 [color=grey] + 4 -> 5 [color=grey] + 5 -> 1 [color=grey] +} + +# Splash +gap> Splash(DotDigraph(RandomDigraph(10)), rec(viewer := 1)); +Error, the option `viewer` must be a string, not an integer +gap> Splash(DotDigraph(RandomDigraph(10)), rec(viewer := "asdfasfa")); +Error, the viewer "asdfasfa" specified in the option `viewer` is not available + +# Test errors +gap> GraphvizEdgeColoredGraph(ChainDigraph(3), ["blue"]); +Error, the argument (a digraph) must be symmetric +gap> D := DigraphSymmetricClosure(ChainDigraph(3));; +gap> GraphvizVertexLabelledGraph(D); + +gap> GraphvizEdgeColoredGraph(D, List(DigraphVertices(D), ReturnFail)); +Error, the 2nd argument (edge colors) must be a list of lists, found boolean o\ +r fail in position 1 +gap> GraphvizHighlightedDigraph(D, [2]); + +gap> GraphvizHighlightedGraph(D, [2]); + +gap> Print(AsString(last)); +//dot +graph { + shape=circle + 1 [color=grey] + 2 [color=black] + 3 [color=grey] + 2 -- 1 [color=grey] + 3 -- 2 [color=grey] +} +gap> GraphvizHighlightedGraph(D, [1, 2], "red", "blue"); + +gap> Print(AsString(last)); +//dot +graph { + shape=circle + 1 [color=red] + 2 [color=red] + 3 [color=blue] + 2 -- 1 [color=red] + 3 -- 2 [color=blue] +} +gap> GraphvizHighlightedGraph(ChainDigraph(3), [1, 2], "red", "blue"); +Error, the argument (a digraph) must be symmetric +gap> D := Digraph([[], [1, 1]]);; +gap> GraphvizHighlightedDigraph(D, [2]); +Error, the 1st argument (a digraph) must not have multiple edges + +# DIGRAPHS_UnbindVariables +gap> Unbind(D); +gap> Unbind(adj); +gap> Unbind(backup); +gap> Unbind(dot); +gap> Unbind(edgecolors); +gap> Unbind(gr); +gap> Unbind(gr1); +gap> Unbind(gr2); +gap> Unbind(r); +gap> Unbind(tmpdir); +gap> Unbind(vertcolors); + +# +gap> DIGRAPHS_StopTest(); +gap> STOP_TEST("Digraphs package: standard/display.tst", 0); From fb0ae5fd72f57d1f53dfc99041876bdd63fe15c9 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Wed, 27 Aug 2025 11:51:18 +0200 Subject: [PATCH 02/15] TMP --- doc/main.xml | 75 ++--- gap/.null-ls_141605_display.gi | 484 --------------------------------- 2 files changed, 21 insertions(+), 538 deletions(-) delete mode 100644 gap/.null-ls_141605_display.gi diff --git a/doc/main.xml b/doc/main.xml index e5c287f5a..61d5d1686 100644 --- a/doc/main.xml +++ b/doc/main.xml @@ -1,60 +1,27 @@ -Digraphs"> - https://gap-packages.github.io/grapeGrape"> - https://digraphs.github.io/graphvizGraphviz"> - http://www.tcs.tkk.fi/Software/bliss/bliss"> - https://github.com/graph-algorithms/edge-addition-planarity-suiteedge-addition-planarity-suite"> - https://pallini.di.uniroma1.it/nauty"> - https://github.com/gap-packages/NautyTracesInterfaceNautyTracesInterface"> - - https://gap-packages.github.io/io/ -IO"> - - https://gap-packages.github.io/orb/ - Orb"> - https://github.com/gap-packages/datastructuresdatastructures"> - filt is present, then this should specify the category or representation the digraph being created will belong to. For example, if filt is , then the digraph being created will be mutable, if filt is , then the digraph will be immutable. If the optional first argument filt is not present, then is used by default.

"> - digraph is mutable, then the return value of this property is recomputed every time it is called.

"> - digraph is mutable, then the return value of this attribute is recomputed every time it is called.

"> - . In more detail, the vertices of the digraph are labelled by elements of the Cartesian product [1..m] x [1..n], where the first entry indexes the column (file) of the square in the chessboard, and the second entry indexes the row (rank) of the square. (Note that the files are traditionally indexed by the lowercase letters of the alphabet). The vertices are sorted in ascending order, first by row (second component) and then column (first component).

"> - m by n chessboard is a grid of m columns (‘files’) and n rows (‘ranks’) that intersect in squares. Orthogonally adjacent squares are alternately colored light and dark, with the square in the first rank and file being dark.

"> - <#Include Label="PKGVERSIONDATA"> - ]> - - -<#Include SYSTEM="z-title.xml"> + + + +] +> + +<#Include SYSTEM "title.xml"> - - <#Include SYSTEM="z-chap0.xml"> - <#Include SYSTEM="z-chap1.xml"> - <#Include SYSTEM="z-chap2.xml"> - <#Include SYSTEM="z-chap3.xml"> - <#Include SYSTEM="z-chap4.xml"> - <#Include SYSTEM="z-chap5.xml"> - <#Include SYSTEM="z-chap6.xml"> - <#Include SYSTEM="z-chap8.xml"> - <#Include SYSTEM="z-chap9.xml"> +<#Include SYSTEM "z-chap0.xml"> +<#Include SYSTEM "z-chap1.xml"> +<#Include SYSTEM "z-chap2.xml"> +<#Include SYSTEM "z-chap3.xml"> +<#Include SYSTEM "z-chap4.xml"> +<#Include SYSTEM "z-chap5.xml"> +<#Include SYSTEM "z-chap6.xml"> +<#Include SYSTEM "z-chap8.xml"> +<#Include SYSTEM "z-chap9.xml"> +<#Include SYSTEM "_AutoDocMainFile.xml"> - -<#Include SYSTEM="z-appA.xml"> - - +<#Include SYSTEM "z-appA.xml"> + - diff --git a/gap/.null-ls_141605_display.gi b/gap/.null-ls_141605_display.gi deleted file mode 100644 index 2e58c5084..000000000 --- a/gap/.null-ls_141605_display.gi +++ /dev/null @@ -1,484 +0,0 @@ -############################################################################# -## -## display.gi -## Copyright (C) 2014-24 James D. Mitchell -## -## Licensing information can be found in the README file of this package. -## -############################################################################# -## - -# TODO: -# * add graph6 string or whatever as a comment at the start of the string -# * check JupyterInterface Splash function -# * for edge colored non-digraphs, should ensure that the edge colors are -# symmetric, i.e. the same colors for x -> y and y -> x - -<<<<<<< HEAD -BindGlobal("DIGRAPHS_ValidRGBValue", -function(str) - local l, chars, x, i; - l := Length(str); - x := 0; - chars := "0123456789ABCDEFabcdef"; - if l = 7 then - if str[1] = '#' then - for i in [2 .. l] do - if str[i] in chars then - x := x + 1; - fi; - od; - fi; - fi; - return x = (l - 1); -end); - -BindGlobal("DIGRAPHS_GraphvizColorsList", fail); - -BindGlobal("DIGRAPHS_GraphvizColors", -function() - local f; - if DIGRAPHS_GraphvizColorsList = fail then - f := IO_File(Concatenation(DIGRAPHS_Dir(), "/data/colors.p")); - MakeReadWriteGlobal("DIGRAPHS_GraphvizColorsList"); - DIGRAPHS_GraphvizColorsList := IO_Unpickle(f); - MakeReadOnlyGlobal("DIGRAPHS_GraphvizColorsList"); - IO_Close(f); - fi; - return DIGRAPHS_GraphvizColorsList; -end); - -BindGlobal("DIGRAPHS_ValidVertColors", -function(D, verts) - local v, sum, colors, col; - v := DigraphVertices(D); - sum := 0; - if Length(verts) <> Length(v) then - ErrorNoReturn("the number of vertex colors must be the same as the number", - " of vertices, expected ", Length(v), " but found ", Length(verts), ""); - fi; - colors := DIGRAPHS_GraphvizColors(); - if Length(verts) = Length(v) then - for col in verts do - if not IsString(col) then - ErrorNoReturn("expected a string"); - elif DIGRAPHS_ValidRGBValue(col) = false and - (col in colors) = false then - ErrorNoReturn("expected RGB Value or valid color name as defined", - " by GraphViz 2.44.1 X11 Color Scheme", - " http://graphviz.org/doc/info/colors.html"); - else - sum := sum + 1; - fi; - od; - if sum = Length(verts) then - return true; - fi; - fi; -end); - -BindGlobal("DIGRAPHS_ValidEdgeColors", -function(D, edge) - local out, l, counter, sum, colors, v, col; - out := OutNeighbours(D); - l := Length(edge); - counter := 0; - sum := 0; - colors := DIGRAPHS_GraphvizColors(); - if Length(edge) <> Length(out) then - ErrorNoReturn("the list of edge colors needs to have the", - " same shape as the out-neighbours of the digraph"); - else - for v in [1 .. l] do - sum := 0; - if Length(out[v]) <> Length(edge[v]) then - ErrorNoReturn("the list of edge colors needs to have the", - " same shape as the out-neighbours of the digraph"); - else - for col in edge[v] do - if not IsString(col) then - ErrorNoReturn("expected a string"); - elif DIGRAPHS_ValidRGBValue(col) = false and - (col in colors) = false then - ErrorNoReturn("expected RGB Value or valid color name as defined", - " by GraphViz 2.44.1 X11 Color Scheme", - " http://graphviz.org/doc/info/colors.html"); - else - sum := sum + 1; - fi; - od; - if sum = Length(edge[v]) then - counter := counter + 1; - fi; - fi; - od; - if counter = Length(edge) then - return true; - fi; - fi; -end); - -InstallMethod(DotDigraph, "for a digraph by out-neighbours", -[IsDigraphByOutNeighboursRep], -D -> DIGRAPHS_DotDigraph(D, [], [])); - -InstallMethod(DotColoredDigraph, -"for a digraph by out-neighbours and two lists", -[IsDigraphByOutNeighboursRep, IsList, IsList], -function(D, vert, edge) - local vert_func, edge_func; - if DIGRAPHS_ValidVertColors(D, vert) - and DIGRAPHS_ValidEdgeColors(D, edge) then - vert_func := i -> StringFormatted("[color={}, style=filled]", vert[i]); - edge_func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); - return DIGRAPHS_DotDigraph(D, [vert_func], [edge_func]); - fi; -end); - -InstallMethod(DotVertexColoredDigraph, -"for a digraph by out-neighbours and a list", -[IsDigraphByOutNeighboursRep, IsList], -function(D, vert) - local func; - if DIGRAPHS_ValidVertColors(D, vert) then - func := i -> StringFormatted("[color={}, style=filled]", vert[i]); - return DIGRAPHS_DotDigraph(D, [func], []); - fi; -end); - -InstallMethod(DotEdgeColoredDigraph, -"for a digraph by out-neighbours and a list", -[IsDigraphByOutNeighboursRep, IsList], -function(D, edge) - local func; - if DIGRAPHS_ValidEdgeColors(D, edge) then - func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); - return DIGRAPHS_DotDigraph(D, [], [func]); - fi; -end); - -InstallMethod(DotVertexLabelledDigraph, "for a digraph by out-neighbours", -======= -############################################################################# -# Graphs and digraphs -############################################################################# - -InstallOtherMethod(GraphvizDigraph, "for a digraph by out-neighbours", ->>>>>>> 51b65dbf (Checkout files from mpan322/main) -[IsDigraphByOutNeighboursRep], -function(D) - local gv, x, y; - gv := GraphvizDigraph("hgn"); - GraphvizSetAttr(gv, "node [shape=circle]"); - for x in DigraphVertices(D) do - GraphvizAddNode(gv, x); - od; - for x in DigraphVertices(D) do - for y in OutNeighboursOfVertexNC(D, x) do - GraphvizAddEdge(gv, x, y); - od; - od; - return gv; -end); - -InstallOtherMethod(GraphvizGraph, "for a digraph by out-neighbours", -[IsDigraphByOutNeighboursRep], -<<<<<<< HEAD -D -> DIGRAPHS_DotSymmetricDigraph(D, [], [])); - -InstallMethod(DotSymmetricColoredDigraph, -"for a digraph by out-neighbours and two lists", -[IsDigraphByOutNeighboursRep, IsList, IsList], -function(D, vert, edge) - local vert_func, edge_func; - if DIGRAPHS_ValidVertColors(D, vert) - and DIGRAPHS_ValidEdgeColors(D, edge) then - vert_func := i -> StringFormatted("[color={}, style=filled]", vert[i]); - edge_func := {i, j} -> StringFormatted("[color={}]", edge[i][j]); - return DIGRAPHS_DotSymmetricDigraph(D, [vert_func], [edge_func]); -======= -function(D) - local gv, x, y; - if not IsSymmetricDigraph(D) then - ErrorNoReturn("the argument (a digraph) must be symmetric"); ->>>>>>> 51b65dbf (Checkout files from mpan322/main) - fi; - gv := GraphvizGraph("hgn"); - GraphvizSetAttr(gv, "node [shape=circle]"); - for x in DigraphVertices(D) do - GraphvizAddNode(gv, x); - od; - for x in DigraphVertices(D) do - for y in OutNeighboursOfVertexNC(D, x) do - if x > y then - GraphvizAddEdge(gv, x, y); - fi; - od; - od; - return gv; -end); - -############################################################################# -# Vertex coloured graphs and digraphs -############################################################################# - -InstallMethod(GraphvizVertexColoredDigraph, "for a digraph and a list", -[IsDigraph, IsList], -{D, colors} -> GraphvizSetNodeColors(GraphvizDigraph(D), colors)); - -InstallMethod(GraphvizVertexColoredGraph, "for a digraph and a list", -[IsDigraph, IsList], -# IsSymmetricDigraph checked by GraphvizGraph -{D, colors} -> GraphvizSetNodeColors(GraphvizGraph(D), colors)); - -############################################################################# -# Edge coloured graphs and digraphs -############################################################################# - -# This function is here rather than graphviz b/c otherwise if D has multiple -# edges we can't reliably get the corresponding graphviz edge from the head and -# tail of the edge from gv. -BindGlobal("DIGRAPHS_ErrorIfNotEdgeColoring", -function(D, colors) - local out, i; - - out := OutNeighbours(D); - if Length(colors) <> Length(out) then - ErrorFormatted("the 2nd argument (edge colors) must have ", - "the same number of entries as the 1st argument ", - "(a digraph) has nodes, expected {} but found {}", - Length(out), - Length(colors)); - fi; - for i in [1 .. Length(colors)] do - if not IsList(colors[i]) then - ErrorFormatted("the 2nd argument (edge colors) must be ", - "a list of lists, found {} in position {}", - TNAM_OBJ(colors[i]), - i); - elif Length(out[i]) <> Length(colors[i]) then - ErrorFormatted("the 2nd argument (edge colors) must have ", - "the same shape as the out neighbours of the 1st ", - "argument (a digraph), in position {} expected ", - "a list of length {} but found list of length {}", - i, - Length(out[i]), - Length(colors[i])); - fi; - Perform(colors[i], ErrorIfNotValidColor); - od; -end); - -BindGlobal("DIGRAPHS_AddEdgesAndColorsNC", -function(D, gv, colors) - local out, e, n, i; - - # This duplicates code in the GraphvizDigraph function because otherwise if D - # has multiple edges we can't reliably get the corresponding graphviz edge - # from the head and tail of the edge from gv. - out := OutNeighbours(D); - for n in DigraphVertices(D) do - for i in [1 .. Length(out[n])] do - if IsGraphvizDigraph(gv) or n > out[n][i] then - e := GraphvizAddEdge(gv, n, out[n][i]); - GraphvizSetAttr(e, "color", colors[n][i]); - fi; - od; - od; - return gv; -end); - -InstallMethod(GraphvizEdgeColoredDigraph, -"for a digraph by out-neighbours and a list", -[IsDigraphByOutNeighboursRep, IsList], -function(D, colors) - local gv; - DIGRAPHS_ErrorIfNotEdgeColoring(D, colors); - gv := GraphvizDigraph(NullDigraph(DigraphNrVertices(D))); - return DIGRAPHS_AddEdgesAndColorsNC(D, gv, colors); -end); - -InstallMethod(GraphvizEdgeColoredGraph, -"for a digraph by out-neighbours and a list", -[IsDigraphByOutNeighboursRep, IsList], -function(D, colors) - local gv; - if not IsSymmetricDigraph(D) then - ErrorNoReturn("the argument (a digraph) must be symmetric"); - fi; - DIGRAPHS_ErrorIfNotEdgeColoring(D, colors); - gv := GraphvizGraph(NullDigraph(DigraphNrVertices(D))); - return DIGRAPHS_AddEdgesAndColorsNC(D, gv, colors); -end); - -############################################################################# -# Vertex and edge coloured graphs and digraphs -############################################################################# - -InstallMethod(GraphvizColoredDigraph, -"for a digraph, list, and list", -[IsDigraph, IsList, IsList], -{D, n_colors, e_colors} -> GraphvizSetNodeColors( - GraphvizEdgeColoredDigraph(D, e_colors), - n_colors)); - -<<<<<<< HEAD - BindGlobal("Splash", - function(arg...) - local str, opt, path, dir, tdir, file, viewer, type, inn, filetype, out, - engine; -======= -InstallMethod(GraphvizColoredGraph, -"for a digraph, list, and list", -[IsDigraph, IsList, IsList], -# IsSymmetricDigraph checked by GraphvizEdgeColoredGraph -{D, n_colors, e_colors} -> GraphvizSetNodeColors( - GraphvizEdgeColoredGraph(D, e_colors), - n_colors)); ->>>>>>> 51b65dbf (Checkout files from mpan322/main) - -############################################################################# -# Vertex labelled graphs and digraphs -############################################################################# - -InstallMethod(GraphvizVertexLabelledDigraph, "for a digraph", -[IsDigraph], -D -> GraphvizSetNodeLabels(GraphvizDigraph(D), DigraphVertexLabels(D))); - -InstallMethod(GraphvizVertexLabelledGraph, "for a digraph", -[IsDigraph], -# symmetry checked in GraphvizGraph -D -> GraphvizSetNodeLabels(GraphvizGraph(D), DigraphVertexLabels(D))); - -############################################################################# -# Partial and preorder digraphs -############################################################################# - -InstallMethod(GraphvizPartialOrderDigraph, "for a partial order digraph", -[IsDigraph], -function(D) - if not IsPartialOrderDigraph(D) then - ErrorNoReturn("the argument (a digraph) must be a partial order"); - fi; - D := DigraphMutableCopyIfMutable(D); - return GraphvizDigraph(DigraphReflexiveTransitiveReduction(D)); -end); - -InstallMethod(GraphvizPreorderDigraph, "for a preorder digraph", -[IsDigraph], -function(D) - local comps, gv, label, node, nodes, c, x, e; - - if not IsPreorderDigraph(D) then - ErrorNoReturn("the argument (a digraph) must be a preorder"); - fi; - - # Quotient by the strongly connected components to get a partial order - # D and draw this without loops or edges implied by transitivity. - comps := DigraphStronglyConnectedComponents(D).comps; - D := DigraphMutableCopy(D); - DigraphRemoveAllMultipleEdges(QuotientDigraph(D, comps)); - DigraphReflexiveTransitiveReduction(D); - - gv := GraphvizDigraph("graphname"); - GraphvizSetAttr(gv, "node [shape=\"Mrecord\"]"); - GraphvizSetAttr(gv, "height=\"0.5\""); - GraphvizSetAttr(gv, "fixedsize=\"true\""); - GraphvizSetAttr(gv, "ranksep=\"1\""); - - for c in [1 .. Length(comps)] do - - label := "\""; - Append(label, String(comps[c][1])); - for x in comps[c]{[2 .. Length(comps[c])]} do - Append(label, "|"); - Append(label, String(x)); - od; - Append(label, "\""); - - node := GraphvizAddNode(gv, c); - GraphvizSetAttr(node, "label", label); - GraphvizSetAttr(node, "width", Float(Length(comps[c]) / 2)); - od; - - nodes := GraphvizNodes(gv); - for e in DigraphEdges(D) do - GraphvizAddEdge(gv, nodes[e[1]], nodes[e[2]]); - od; - - return gv; -end); - -############################################################################# -# Highlighted subdigraphs -############################################################################# - -BindGlobal("DIGRAPHS_GraphvizHighlight", -function(D, gv, hi_verts, hi, lo) - local node, color, out, nodes, edge, v, i, j; - - if IsMultiDigraph(D) then - ErrorNoReturn("the 1st argument (a digraph) must not have multiple edges"); - elif not IsSubset(DigraphVertices(D), hi_verts) then - ErrorNoReturn("the 2nd argument (list) must consist of vertices ", - "of the 1st argument (a digraph)"); - fi; - ErrorIfNotValidColor(hi); - ErrorIfNotValidColor(lo); - - GraphvizSetAttr(gv, "shape", "circle"); - - for v in DigraphVertices(D) do - node := GraphvizAddNode(gv, v); - if v in hi_verts then - color := hi; - else - color := lo; - fi; - GraphvizSetAttr(node, "color", color); - od; - - out := OutNeighbours(D); - nodes := GraphvizNodes(gv); - - for i in DigraphVertices(D) do - for j in out[i] do - if IsGraphvizDigraph(gv) or i > j then - edge := GraphvizAddEdge(gv, nodes[i], nodes[j]); - if i in hi_verts and j in hi_verts then - color := hi; - else - color := lo; - fi; - GraphvizSetAttr(edge, "color", color); - fi; - od; - od; - - return gv; -end); - -InstallMethod(GraphvizHighlightedDigraph, -"for a digraph by out-neighbours, list, and two strings", -[IsDigraphByOutNeighboursRep, IsList, IsString, IsString], -{D, hi_verts, hi, lo} -> -DIGRAPHS_GraphvizHighlight(D, GraphvizDigraph(), hi_verts, hi, lo)); - -InstallMethod(GraphvizHighlightedDigraph, "for a digraph and list", -[IsDigraph, IsList], -{D, list} -> GraphvizHighlightedDigraph(D, list, "black", "grey")); - -InstallMethod(GraphvizHighlightedGraph, -"for a digraph by out-neighbours, list, and two strings", -[IsDigraphByOutNeighboursRep, IsList, IsString, IsString], -function(D, hi_verts, hi, lo) - if not IsSymmetricDigraph(D) then - ErrorNoReturn("the argument (a digraph) must be symmetric"); - fi; - return DIGRAPHS_GraphvizHighlight(D, GraphvizGraph(), hi_verts, hi, lo); -end); - -InstallMethod(GraphvizHighlightedGraph, "for a digraph and list", -[IsDigraph, IsList], -# IsSymmetricDigraph checked in GraphvizHighlightedGraph -{D, list} -> GraphvizHighlightedGraph(D, list, "black", "grey")); From de7db4ef754796968bf48cfe0ee542f0378e600a Mon Sep 17 00:00:00 2001 From: Wilf Wilson Date: Fri, 3 Oct 2025 14:40:17 +0100 Subject: [PATCH 03/15] Remove some files --- .github/workflows/gap.yml | 133 -------------------------------------- doc/main.xml | 27 -------- 2 files changed, 160 deletions(-) delete mode 100644 .github/workflows/gap.yml delete mode 100644 doc/main.xml diff --git a/.github/workflows/gap.yml b/.github/workflows/gap.yml deleted file mode 100644 index 9ec6f1a19..000000000 --- a/.github/workflows/gap.yml +++ /dev/null @@ -1,133 +0,0 @@ -name: "GAP" -on: - workflow_dispatch: - pull_request: - push: - branches: - - main - - stable-*.* - schedule: - # Every day at 3:30 AM UTC - - cron: '30 3 * * *' - -env: - DIGRAPHS_LIB: digraphs-lib-0.6 - -jobs: - test-unix: - name: "${{ matrix.os }}${{ matrix.ABI }} / GAP ${{ matrix.gap-branch }}" - runs-on: "${{ matrix.os }}-latest" - strategy: - fail-fast: false - matrix: - os: - - ubuntu - gap-branch: - - master - - stable-4.11 - - stable-4.12 - - stable-4.13 - ABI: [''] - pkgs-to-clone: - - NautyTracesInterface - - include: - - gap-branch: master - os: macos - pkgs-to-clone: "NautyTracesInterface" - - gap-branch: master - os: ubuntu - ABI: 32 - - steps: - - uses: actions/checkout@v4 - - name: "Install dependencies" - if: ${{ runner.os == 'macOS' }} - run: brew install automake - - name: "Install GAP and clone/compile necessary packages" - uses: gap-actions/setup-gap@v2 - with: - GAP_PKGS_TO_CLONE: "${{ matrix.pkgs-to-clone }} digraphs/graphviz" - GAP_PKGS_TO_BUILD: "io orb profiling grape NautyTracesInterface datastructures" - GAPBRANCH: ${{ matrix.gap-branch }} - ABI: ${{ matrix.ABI }} - - name: "Build Digraphs" - uses: gap-actions/build-pkg@v1 - with: - ABI: ${{ matrix.ABI }} - - name: "Install digraphs-lib" - run: | - curl --retry 5 -L -O "https://digraphs.github.io/Digraphs/${{ env.DIGRAPHS_LIB }}.tar.gz" - tar xf "${{ env.DIGRAPHS_LIB }}.tar.gz" - - name: "Run DigraphsTestInstall" - uses: gap-actions/run-pkg-tests@v2 - with: - GAP_TESTFILE: "tst/github_actions/install.g" - - name: "Run DigraphsTestStandard" - uses: gap-actions/run-pkg-tests@v2 - with: - GAP_TESTFILE: "tst/github_actions/standard.g" - - name: "Run DigraphsTestManualExamples" - uses: gap-actions/run-pkg-tests@v2 - with: - GAP_TESTFILE: "tst/github_actions/examples.g" - - name: "Run DigraphsTestExtreme" - uses: gap-actions/run-pkg-tests@v2 - with: - GAP_TESTFILE: "tst/github_actions/extreme.g" - - uses: gap-actions/process-coverage@v2 - - uses: codecov/codecov-action@v3 - - test-cygwin: - name: "cygwin / GAP master" - runs-on: windows-2019 - env: - CHERE_INVOKING: 1 - steps: - - uses: actions/checkout@v4 - - uses: gap-actions/setup-cygwin@v1 - - uses: gap-actions/setup-gap@cygwin-v2 - with: - GAP_PKGS_TO_BUILD: "io orb profiling grape datastructures" - GAP_PKGS_TO_CLONE: "digraphs/graphviz" - - uses: gap-actions/build-pkg@cygwin-v1 - - name: "Install digraphs-lib" - run: | - curl --retry 5 -L -O "https://digraphs.github.io/Digraphs/${{ env.DIGRAPHS_LIB }}.tar.gz" - tar xf "${{ env.DIGRAPHS_LIB }}.tar.gz" - - uses: gap-actions/run-pkg-tests@cygwin-v2 - - uses: gap-actions/process-coverage@cygwin-v2 - - uses: codecov/codecov-action@v3 - - with-external-planarity-bliss: - runs-on: "ubuntu-latest" - env: - GAPBRANCH: "stable-4.12" - ABI: 64 - PKG_CONFIG_PATH: "/home/runner/micromamba/envs/digraphs/lib/pkgconfig:/home/runner/micromamba/envs/digraphs/share/pkgconfig/" - LD_LIBRARY_PATH: "/home/runner/micromamba/envs/digraphs/lib" - CFLAGS: "-I/home/runner/micromamba/envs/digraphs/include" - LDFLAGS: "-L/home/runner/micromamba/envs/digraphs/lib" - defaults: - run: - shell: bash -l {0} - steps: - - uses: actions/checkout@v4 - - name: "Install micromamba environment from environment.yml . . ." - uses: mamba-org/setup-micromamba@v1 - with: - environment-file: environment.yml - cache-environment: true - - name: "Activate \"digraphs\" environment . . ." - run: micromamba activate digraphs - - name: "Install GAP and clone/compile necessary packages" - uses: gap-actions/setup-gap@v2 - with: - GAP_PKGS_TO_BUILD: "io orb profiling grape datastructures" - GAP_PKGS_TO_CLONE: "digraphs/graphviz" - - name: "Build Digraphs" - uses: gap-actions/build-pkg@v1 - with: - CONFIGFLAGS: --with-external-planarity --with-external-bliss - - name: "Run Digraphs package's tst/teststandard.g" - uses: gap-actions/run-pkg-tests@v2 diff --git a/doc/main.xml b/doc/main.xml deleted file mode 100644 index 61d5d1686..000000000 --- a/doc/main.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - -] -> - -<#Include SYSTEM "title.xml"> - - -<#Include SYSTEM "z-chap0.xml"> -<#Include SYSTEM "z-chap1.xml"> -<#Include SYSTEM "z-chap2.xml"> -<#Include SYSTEM "z-chap3.xml"> -<#Include SYSTEM "z-chap4.xml"> -<#Include SYSTEM "z-chap5.xml"> -<#Include SYSTEM "z-chap6.xml"> -<#Include SYSTEM "z-chap8.xml"> -<#Include SYSTEM "z-chap9.xml"> -<#Include SYSTEM "_AutoDocMainFile.xml"> - -<#Include SYSTEM "z-appA.xml"> - - - From faae0a0ae4b518ab4f52c7dff80f6615fc603fb8 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 15:57:06 +0100 Subject: [PATCH 04/15] Fix in 2026 --- PackageInfo.g | 2 +- gap/weights.gi | 2 ++ tst/standard/display.tst | 12 ++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/PackageInfo.g b/PackageInfo.g index efef66b8e..10edf45a1 100644 --- a/PackageInfo.g +++ b/PackageInfo.g @@ -571,7 +571,7 @@ Dependencies := rec( GAP := ">=4.11.0", NeededOtherPackages := [["IO", ">=4.5.1"], ["orb", ">=4.8.2"], - ["GraphViz", ">=0.0.0"], + ["GraphvizForGAP", ">=0.0.0"], ["datastructures", ">=0.2.5"]], SuggestedOtherPackages := [["GAPDoc", ">=1.6.3"], ["GRAPE", ">=4.8.1"], diff --git a/gap/weights.gi b/gap/weights.gi index dc1081fcf..ad4169783 100644 --- a/gap/weights.gi +++ b/gap/weights.gi @@ -905,6 +905,8 @@ DIGRAPHS_RandomEdgeWeightedDigraphFilt); # 7. Drawing edge weighted digraphs ############################################################################# +# TODO move these to display.gi + InstallMethod(DotEdgeWeightedDigraph, "for a digraph", [IsDigraph], digraph -> DotEdgeWeightedDigraph(digraph, [[], []], rec())); diff --git a/tst/standard/display.tst b/tst/standard/display.tst index 0b30d3e74..a8fc3fabe 100644 --- a/tst/standard/display.tst +++ b/tst/standard/display.tst @@ -431,19 +431,19 @@ gap> gr := Digraph(r); gap> dot := DotVertexLabelledDigraph(gr);; gap> dot; -"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1 [label=1]\n\t2 [label=2]\n\ -\t3 [label=3]\n\t1 -> 1\n\t1 -> 2\n\t1 -> 2\n\t1 -> 3\n}\n" +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1 [label=\"1\"]\n\t2 [label=\ +\"2\"]\n\t3 [label=\"3\"]\n\t1 -> 1\n\t1 -> 2\n\t1 -> 2\n\t1 -> 3\n}\n" gap> SetDigraphVertexLabel(gr, 1, 2); gap> dot := DotVertexLabelledDigraph(gr);; gap> dot; -"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1 [label=2]\n\t2 [label=2]\n\ -\t3 [label=3]\n\t1 -> 1\n\t1 -> 2\n\t1 -> 2\n\t1 -> 3\n}\n" +"//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1 [label=\"2\"]\n\t2 [label=\ +\"2\"]\n\t3 [label=\"3\"]\n\t1 -> 1\n\t1 -> 2\n\t1 -> 2\n\t1 -> 3\n}\n" # Splash gap> Splash(1); Error, the 1st argument must be a string or graphviz graph, found integer gap> Splash("string", 0); -Error, the 2nd argument must be a record, +Error, the 2nd argument must be a record gap> Splash("string"); Error, the component "type" of the 2nd argument must be "dot" or "\ latex", @@ -646,7 +646,7 @@ gap> GraphvizEdgeColoredGraph(ChainDigraph(3), ["blue"]); Error, the argument (a digraph) must be symmetric gap> D := DigraphSymmetricClosure(ChainDigraph(3));; gap> GraphvizVertexLabelledGraph(D); - + gap> GraphvizEdgeColoredGraph(D, List(DigraphVertices(D), ReturnFail)); Error, the 2nd argument (edge colors) must be a list of lists, found boolean o\ r fail in position 1 From 2eff586906246509d57d071f60cb7b3258789981 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 16:00:32 +0100 Subject: [PATCH 05/15] Update year --- gap/display.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gap/display.gd b/gap/display.gd index 93a9c937a..e22f7e794 100644 --- a/gap/display.gd +++ b/gap/display.gd @@ -1,7 +1,7 @@ ############################################################################ ## ## display.gd -## Copyright (C) 2017-19 James D. Mitchell +## Copyright (C) 2017-26 James D. Mitchell ## ## Licensing information can be found in the README file of this package. ## From 894d1f7698193af42b1a9c5262226d7029b3b2c6 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 16:30:47 +0100 Subject: [PATCH 06/15] Update after rebase Assisted-by: Codex OpenAI --- doc/display.xml | 295 ++++++++++++++++++++++++++------------- doc/weights.xml | 3 +- doc/z-chap9.xml | 3 + gap/deprecated.gd | 3 + gap/deprecated.gi | 11 +- gap/display.gd | 8 ++ gap/display.gi | 23 +++ tst/standard/weights.tst | 88 ++++++------ 8 files changed, 291 insertions(+), 143 deletions(-) diff --git a/doc/display.xml b/doc/display.xml index bd2fdadba..06e821d07 100644 --- a/doc/display.xml +++ b/doc/display.xml @@ -10,14 +10,6 @@ <#GAPDoc Label="DotDigraph"> - A string. @@ -25,66 +17,70 @@ WARNING! As of v2.0.0 of &Digraphs; these functions are deprecated in favour of: - - + + - and return - mutable &GAP; objects representing graphviz objects, which provide a - more flexible means of tailoring pictures of graphs and digraphs to your - needs. The function DotDigraph is synonymous with - AsString(GraphvizDigraph(D)). It is also possible to use - directly on the graphviz objects - returned by the function , i.e. - Splash(GraphvizDigraph(D)) does precisely the same thing as - Splash(DotDigraph(D)). - - + They return the strings + AsString(GraphvizDigraph(D)) and + AsString(GraphvizGraph(D)), respectively. + DotSymmetricDigraph requires D to be symmetric. + + <#/GAPDoc> <#GAPDoc Label="GraphvizDigraph"> - - - A &graphviz; object. + + + A &GRAPHVIZFORGAP; object. - and return + and return mutable &GAP; objects representing graphviz objects, which provide a flexible means of tailoring pictures of graphs and digraphs to your needs.

- GraphvizDigraph and GraphvizGraph produce &graphviz; + GraphvizDigraph and GraphvizGraph produce &GRAPHVIZFORGAP; objects representing the digraph D. Vertices are displayed as circles, numbered consistently with D. For GraphvizDigraph, edges are displayed as arrowed lines between vertices, with the arrowhead of each line pointing towards the range of the edge. For GraphvizGraph, edges are displayed without an arrowhead. + GraphvizGraph requires D to be symmetric; see + .

- See the &graphviz; package documentation for more details. + To display the result, use + . Its documentation + describes the optional record controlling the output directory, + filename, viewer, rendering engine, and file type. + Splash(GraphvizDigraph(D)); +]]> + To write the Graphviz source to a file, use + FileString("digraph.dot", AsString(GraphvizDigraph(D))); + see .

- See also - D := CompleteDigraph(IsMutable, 4); gap> gv := GraphvizGraph(D); - + gap> AsString(gv); "//dot\ngraph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t2 -\ - 1\n\t3 -- 1\n\t3 -- 2\n\t4 -- 1\n\t4 -- 2\n\t4 -- 3\n}\n" gap> DigraphRemoveEdge(D, 1, 3); gap> gv := GraphvizDigraph(D); - + gap> AsString(gv); "//dot\ndigraph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t1\ -> 2\n\t1 -> 4\n\t2 -> 1\n\t2 -> 3\n\t2 -> 4\n\t3 -> 1\n\t3 -> 2\n\t3\ -> 4\n\t4 -> 1\n\t4 -> 2\n\t4 -> 3\n}\n" ]]> - - + + <#/GAPDoc> <#GAPDoc Label="GraphvizColoredDigraph"> @@ -95,11 +91,12 @@ gap> AsString(gv); - A &graphviz; object. + A &GRAPHVIZFORGAP; object. - These operations produce colored &graphviz; objects representing the - digraph D according to the specified colors. For all of these - functions valid colors are strings containing: + These operations produce colored &GRAPHVIZFORGAP; objects representing + the digraph D according to the specified colors. The variants ending + in Graph require D to be symmetric. + For all of these functions valid colors are strings containing: RGB @@ -114,19 +111,19 @@ gap> AsString(gv); GraphvizVertexColoredDigraph and GraphvizVertexColoredGraph - requires its argument colors to be a list of length equal to the + require their argument colors to be a list of length equal to the number of vertices of D consisting of strings representing colors as described above.

GraphvizEdgeColoredDigraph and GraphvizEdgeColoredGraph - requires its argument colors to be a list of lists with the same + require their argument colors to be a list of lists with the same shape of the out-neighbours of the digraph D consisting of strings representing colors as described above.

- GraphvizColoredDigraph and GraphvizColoredGraph requires - its arguments: + GraphvizColoredDigraph and GraphvizColoredGraph require + their arguments: vert_colors @@ -140,31 +137,155 @@ gap> AsString(gv); - See the &graphviz; package documentation for more details. + See the &GRAPHVIZFORGAP; package documentation for more details.

- See also + See also D := Digraph([[2], [1, 3], [2]]); gap> vert_colors := ["blue", "pink", "purple"];; gap> edge_colors := [["green"], ["green", "red"], ["red"]];; gap> GraphvizVertexColoredDigraph(D, vert_colors); - + gap> GraphvizVertexColoredGraph(D, vert_colors); - + gap> GraphvizEdgeColoredDigraph(D, edge_colors); - + gap> GraphvizEdgeColoredGraph(D, edge_colors); - + gap> GraphvizColoredDigraph(D, vert_colors, edge_colors); - + gap> GraphvizColoredGraph(D, vert_colors, edge_colors); - + ]]> - <#/GAPDoc> +<#/GAPDoc> + +<#GAPDoc Label="DotColoredDigraph"> + + + + + + + + A string. + + WARNING! As of v2.0.0 of &Digraphs; these functions are + deprecated in favour of the following operations, respectively: + + + + + + + + + Each takes the same arguments as its replacement and returns + AsString applied to the resulting &GRAPHVIZFORGAP; object. + For example, + DotColoredDigraph(D, vert_colors, edge_colors) returns + AsString(GraphvizColoredDigraph(D, vert_colors, edge_colors)). + The DotSymmetric variants require D to be symmetric. + + +<#/GAPDoc> + +<#GAPDoc Label="GraphvizVertexLabelledDigraph"> + + + + A &GRAPHVIZFORGAP; object. + + These operations produce the same pictures as + and , + respectively, using to label the + vertices instead of their numbers. Labels are converted to strings. + GraphvizVertexLabelledGraph requires D to be symmetric. +

+ + Use to set the vertex labels. + The resulting object can be displayed using + . + D := Digraph([[2], [1]]);; +gap> SetDigraphVertexLabels(D, ["left", "right"]); +gap> GraphvizVertexLabelledDigraph(D); + +gap> GraphvizVertexLabelledGraph(D); + +]]> + + +<#/GAPDoc> + +<#GAPDoc Label="DotVertexLabelledDigraph"> + + + A string. + + WARNING! As of v2.0.0 of &Digraphs; this function is + deprecated in favour of: + + + + It returns + AsString(GraphvizVertexLabelledDigraph(D)), using + as the vertex labels. + + +<#/GAPDoc> + +<#GAPDoc Label="GraphvizColoredEdgeLabelledDigraph"> + + + A &GRAPHVIZFORGAP; object. + + This operation produces the same picture as + , with labels on the edges. + The arguments vert_colors and edge_colors specify colors + as described there. The argument labels must be a list of lists + with the same shape as OutNeighbours(D): + labels[i][j] labels the edge from vertex i to + OutNeighbours(D)[i][j]. +

+ + See also for displaying edge + weights and highlighting a path. + D := Digraph([[2], [3], []]);; +gap> vert_colors := ["blue", "red", "green"];; +gap> edge_colors := [["black"], ["black"], []];; +gap> labels := [[5], [7], []];; +gap> GraphvizColoredEdgeLabelledDigraph(D, vert_colors, +> edge_colors, labels); + +]]> + + +<#/GAPDoc> + +<#GAPDoc Label="DotColoredEdgeLabelledDigraph"> + + + A string. + + WARNING! As of v2.0.0 of &Digraphs; this function is + deprecated in favour of: + + + + It takes the same arguments and returns + AsString(GraphvizColoredEdgeLabelledDigraph(D, vert_colors, + edge_colors, labels)). In particular, both edge_colors and + labels have the same shape as OutNeighbours(D). + + +<#/GAPDoc> <#GAPDoc Label="DotPartialOrderDigraph"> @@ -174,17 +295,10 @@ gap> GraphvizColoredGraph(D, vert_colors, edge_colors); WARNING! As of v2.0.0 of &Digraphs; these functions are deprecated in favour of: - + - This function return a mutable &GAP; object representing a graphviz - object, which provides a more flexible means of tailoring pictures of - graphs and digraphs to your needs. The Dot variants of these - functions are synonymous with, for example, - AsString(GraphvizDigraph(D)). It is also possible to use - directly on the graphviz objects - returned by the Graphviz variants of these functions, i.e. - Splash(GraphvizDigraph(D)) does precisely the same thing as - Splash(DotDigraph(D)). + It returns + AsString(GraphvizPartialOrderDigraph(digraph)). <#/GAPDoc> @@ -192,29 +306,29 @@ gap> GraphvizColoredGraph(D, vert_colors, edge_colors); <#GAPDoc Label="GraphvizPartialOrderDigraph"> - A &graphviz; object. + A &GRAPHVIZFORGAP; object. - This function produces a &graphviz; object representing a partial order - digraph D. GraphvizPartialOrderDigraph will return an + This function produces a &GRAPHVIZFORGAP; object representing a partial + order digraph D. GraphvizPartialOrderDigraph will return an error if D is not a partial order digraph. See .

Since D is a partial order, it is both reflexive and transitive. The output of GraphvizPartialOrderDigraph is the - of the + of the of D.

- See the &graphviz; package documentation for more details. + See the &GRAPHVIZFORGAP; package documentation for more details.

- See also + See also D := Digraph([[1, 4], [2], [2, 3, 4], [4]]); gap> IsPartialOrderDigraph(D); true gap> GraphvizPartialOrderDigraph(D); -]]> +]]> <#/GAPDoc> @@ -228,18 +342,11 @@ gap> GraphvizPartialOrderDigraph(D); WARNING! As of v2.0.0 of &Digraphs; these functions are deprecated in favour of: - - + + - These functions return mutable &GAP; objects representing graphviz - objects, which provide a more flexible means of tailoring pictures of - graphs and digraphs to your needs. The Dot variants of these - functions are synonymous with, for example, - AsString(GraphvizDigraph(D)). It is also possible to use - directly on the graphviz objects - returned by the Graphviz variants of these functions, i.e. - Splash(GraphvizDigraph(D)) does precisely the same thing as - Splash(DotDigraph(D)). + They return + AsString(GraphvizPreorderDigraph(digraph)). <#/GAPDoc> @@ -248,10 +355,10 @@ gap> GraphvizPartialOrderDigraph(D); - A &graphviz; object. + A &GRAPHVIZFORGAP; object. - These functions produce &graphviz; objects representing a preorder - digraph D. These function will give an error + These functions produce &GRAPHVIZFORGAP; objects representing a preorder + digraph D. These functions will give an error if D is not a preorder digraph. See .

@@ -268,10 +375,10 @@ gap> GraphvizPartialOrderDigraph(D); of D in the corresponding strongly connected component.

- See the &graphviz; package documentation for more details. + See the &GRAPHVIZFORGAP; package documentation for more details.

- See also + See also D := Digraph([[1, 2, 4, 5], [1, 2, 4, 5], [3, 4], [4], @@ -280,7 +387,7 @@ gap> D := Digraph([[1, 2, 4, 5], [1, 2, 4, 5], [3, 4], [4], gap> IsPreorderDigraph(D); true gap> GraphvizPreorderDigraph(D); -]]> +]]> <#/GAPDoc> @@ -297,15 +404,9 @@ gap> GraphvizPreorderDigraph(D); - These functions return mutable &GAP; objects representing graphviz - objects, which provide a more flexible means of tailoring pictures of - graphs and digraphs to your needs. The Dot variants of these - functions are synonymous with, for example, - AsString(GraphvizDigraph(D)). It is also possible to use - directly on the graphviz objects - returned by the Graphviz variants of these functions, i.e. - Splash(GraphvizDigraph(D)) does precisely the same thing as - Splash(DotDigraph(D)). + It takes the same arguments as GraphvizHighlightedDigraph + and returns AsString applied to the resulting &GRAPHVIZFORGAP; + object. The default colors are "black" and "grey". <#/GAPDoc> @@ -316,17 +417,17 @@ gap> GraphvizPreorderDigraph(D); Arg="D, verts [, color1, color2]"/> - A &graphviz; object. + A &GRAPHVIZFORGAP; object. - These functions produce &graphviz; objects representing the digraph + These functions produce &GRAPHVIZFORGAP; objects representing the digraph D, where the vertices in the list verts, and edges between them, are drawn with color color1 and all other vertices and edges in D are drawn with color color2. If color1 and color2 are not given, then these functions - use \"black\" and \"grey\" respectively. + use "black" and "grey" respectively.

- See and + See and for more details on the output. RandomUniqueEdgeWeightedDigraph(IsEulerianDigraph, 5, 1 / 3); specified, or if no colors argument is given, the default value will be used.

- The output of this operation can be passed to to + The output of this operation can be passed to + to attempt to display it graphically on the computer's screen.

<#Include Label="DotVertexLabelledDigraph"> + <#Include Label="GraphvizColoredEdgeLabelledDigraph"> + <#Include Label="DotColoredEdgeLabelledDigraph"> + <#Include Label="GraphvizPartialOrderDigraph"> <#Include Label="DotPartialOrderDigraph"> diff --git a/gap/deprecated.gd b/gap/deprecated.gd index d5b6c60c0..bbfa4ed96 100644 --- a/gap/deprecated.gd +++ b/gap/deprecated.gd @@ -33,3 +33,6 @@ DeclareOperation("DotHighlightedDigraph", DeclareOperation("DotHighlightedGraph", [IsDigraph, IsList]); DeclareOperation("DotHighlightedGraph", [IsDigraph, IsList, IsString, IsString]); + +DeclareOperation("DotColoredEdgeLabelledDigraph", + [IsDigraph, IsList, IsList, IsList]); diff --git a/gap/deprecated.gi b/gap/deprecated.gi index f2c800087..2b01910a1 100644 --- a/gap/deprecated.gi +++ b/gap/deprecated.gi @@ -10,7 +10,7 @@ BindGlobal("_PrintDeprecated", function(old, arg...) Info(InfoWarning, 1, "`", old, "` is deprecated and will be removed in v3", - " use `", Concatenation(List(arg, AsString)), "` instead!"); + " use `", Concatenation(List(arg, String)), "` instead!"); end); InstallMethod(DotDigraph, "for a digraph", [IsDigraph], @@ -114,3 +114,12 @@ function(D, list) "GraphvizHighlightedDigraph"); return AsString(GraphvizHighlightedDigraph(D, list, "black", "grey")); end); + +InstallMethod(DotColoredEdgeLabelledDigraph, +"for a digraph by out-neighbours and three lists", +[IsDigraphByOutNeighboursRep, IsList, IsList, IsList], +function(D, vert, edge, weight) + _PrintDeprecated("DotColoredEdgeLabelledDigraph", + "GraphvizColoredEdgeLabelledDigraph"); + return AsString(GraphvizColoredEdgeLabelledDigraph(D, vert, edge, weight)); +end); diff --git a/gap/display.gd b/gap/display.gd index e22f7e794..7b7566eb7 100644 --- a/gap/display.gd +++ b/gap/display.gd @@ -43,6 +43,14 @@ DeclareOperation("GraphvizColoredGraph", [IsDigraph, IsList, IsList]); DeclareOperation("GraphvizVertexLabelledDigraph", [IsDigraph]); DeclareOperation("GraphvizVertexLabelledGraph", [IsDigraph]); +############################################################################# +# Edge labelled graphs and digraphs +############################################################################# + +DeclareOperation("GraphvizColoredEdgeLabelledDigraph", +[IsDigraph, IsList, IsList, IsList]); +# TODO impl DeclareOperation("GraphvizColoredEdgeLabelledGraph", [IsDigraph]); + ############################################################################# # Partial and preorder digraphs ############################################################################# diff --git a/gap/display.gi b/gap/display.gi index fe7acd3eb..0639a6645 100644 --- a/gap/display.gi +++ b/gap/display.gi @@ -182,6 +182,29 @@ InstallMethod(GraphvizVertexLabelledGraph, "for a digraph", # symmetry checked in GraphvizGraph D -> GraphvizSetNodeLabels(GraphvizGraph(D), DigraphVertexLabels(D))); +############################################################################# +# Edge labelled graphs and digraphs +############################################################################# + +InstallMethod(GraphvizColoredEdgeLabelledDigraph, +"for a digraph, vertex colors, edge colors, and edge labels", +[IsDigraph, IsList, IsList, IsList], +function(D, n_colors, e_colors, weights) + local gv, head, tail, edge, pos; + + gv := GraphvizColoredDigraph(D, n_colors, e_colors); + for edge in GraphvizEdges(gv) do + # TODO the next two lines are a bit fragile + head := Int(GraphvizName(GraphvizHead(edge))); + tail := Int(GraphvizName(GraphvizTail(edge))); + + # TODO the next line is not amazing + pos := Position(OutNeighboursOfVertex(D, head), tail); + GraphvizSetAttr(edge, "label", weights[head][pos]); + od; + return gv; +end); + ############################################################################# # Partial and preorder digraphs ############################################################################# diff --git a/tst/standard/weights.tst b/tst/standard/weights.tst index 036dac4d0..55bad0d5f 100644 --- a/tst/standard/weights.tst +++ b/tst/standard/weights.tst @@ -511,19 +511,19 @@ true gap> gr := EdgeWeightedDigraph([[2], []], [[10], []]);; gap> Print(DotEdgeWeightedDigraph(gr)); //dot -digraph hgn{ -node [shape=circle] -1[color=gray, style=filled] -2[color=gray, style=filled] -1 -> 2[color=black, label=10] +digraph hgn { + node [shape=circle] + 1 [color=gray, style=filled] + 2 [color=gray, style=filled] + 1 -> 2 [color=black, label=10] } gap> Print(DotEdgeWeightedDigraph(gr, rec(vert := "orange"))); //dot -digraph hgn{ -node [shape=circle] -1[color=orange, style=filled] -2[color=orange, style=filled] -1 -> 2[color=black, label=10] +digraph hgn { + node [shape=circle] + 1 [color=orange, style=filled] + 2 [color=orange, style=filled] + 1 -> 2 [color=black, label=10] } # Cycle example @@ -532,18 +532,18 @@ gap> path := DigraphPath(gr, 3, 1); [ [ 3, 4, 5, 1 ], [ 1, 1, 1 ] ] gap> Print(DotEdgeWeightedDigraph(gr, path, rec(highlight := "red"))); //dot -digraph hgn{ -node [shape=circle] -1[color=lightpink, style=filled] -2[color=gray, style=filled] -3[color=yellowgreen, style=filled] -4[color=gray, style=filled] -5[color=gray, style=filled] -1 -> 2[color=black, label=10] -2 -> 3[color=black, label=4] -3 -> 4[color=red, label=8] -4 -> 5[color=red, label=2] -5 -> 1[color=red, label=8] +digraph hgn { + node [shape=circle] + 1 [color=lightpink, style=filled] + 2 [color=gray, style=filled] + 3 [color=yellowgreen, style=filled] + 4 [color=gray, style=filled] + 5 [color=gray, style=filled] + 1 -> 2 [color=black, label=10] + 2 -> 3 [color=black, label=4] + 3 -> 4 [color=red, label=8] + 4 -> 5 [color=red, label=2] + 5 -> 1 [color=red, label=8] } # Large example @@ -555,28 +555,28 @@ gap> path := EdgeWeightedDigraphShortestPath(gr, 1, 2); [ [ 1, 7, 6, 2 ], [ 2, 1, 2 ] ] gap> Print(DotEdgeWeightedDigraph(gr, path)); //dot -digraph hgn{ -node [shape=circle] -1[color=yellowgreen, style=filled] -2[color=lightpink, style=filled] -3[color=gray, style=filled] -4[color=gray, style=filled] -5[color=gray, style=filled] -6[color=gray, style=filled] -7[color=gray, style=filled] -1 -> 5[color=black, label=8] -1 -> 7[color=blue, label=4] -2 -> 5[color=black, label=12] -3 -> 1[color=black, label=11] -3 -> 3[color=black, label=2] -3 -> 6[color=black, label=10] -4 -> 1[color=black, label=3] -4 -> 3[color=black, label=7] -5 -> 4[color=black, label=9] -5 -> 5[color=black, label=13] -6 -> 1[color=black, label=1] -6 -> 2[color=blue, label=6] -7 -> 6[color=blue, label=5] +digraph hgn { + node [shape=circle] + 1 [color=yellowgreen, style=filled] + 2 [color=lightpink, style=filled] + 3 [color=gray, style=filled] + 4 [color=gray, style=filled] + 5 [color=gray, style=filled] + 6 [color=gray, style=filled] + 7 [color=gray, style=filled] + 1 -> 5 [color=black, label=8] + 1 -> 7 [color=blue, label=4] + 2 -> 5 [color=black, label=12] + 3 -> 1 [color=black, label=11] + 3 -> 3 [color=black, label=2] + 3 -> 6 [color=black, label=10] + 4 -> 1 [color=black, label=3] + 4 -> 3 [color=black, label=7] + 5 -> 4 [color=black, label=9] + 5 -> 5 [color=black, label=13] + 6 -> 1 [color=black, label=1] + 6 -> 2 [color=blue, label=6] + 7 -> 6 [color=blue, label=5] } # Bad arguments From fd5c7a473c172460dc1ef86ecc2088f1261449f3 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 17:14:32 +0100 Subject: [PATCH 07/15] Deprecate functionality added after this PR was opened --- configure~ | 7108 -------------------------------------- doc/display.xml | 86 + doc/weights.xml | 67 - doc/z-chap5.xml | 1 - doc/z-chap9.xml | 3 + gap/deprecated.gd | 5 + gap/deprecated.gi | 37 + gap/display.gd | 9 + gap/display.gi | 67 + gap/weights.gd | 5 - gap/weights.gi | 57 - tst/standard/weights.tst | 2 +- 12 files changed, 208 insertions(+), 7239 deletions(-) delete mode 100755 configure~ diff --git a/configure~ b/configure~ deleted file mode 100755 index cc7d180c9..000000000 --- a/configure~ +++ /dev/null @@ -1,7108 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for digraphs GAP package. -# -# -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, -# Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - -# The user is always right. -if ${PATH_SEPARATOR+false} :; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) 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 - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else case e in #( - e) case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ) -then : - -else case e in #( - e) exitcode=1; echo positional parameters were not saved. ;; -esac -fi -test x\$exitcode = x0 || exit 1 -blah=\$(echo \$(echo blah)) -test x\"\$blah\" = xblah || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null -then : - as_have_required=yes -else case e in #( - e) as_have_required=no ;; -esac -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null -then : - -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$as_shell as_have_required=yes - if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null -then : - break 2 -fi -fi - done;; - esac - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else case e in #( - e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi ;; -esac -fi - - - if test "x$CONFIG_SHELL" != x -then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno -then : - printf "%s\n" "$0: This script requires a shell more modern than all" - printf "%s\n" "$0: the shells that I found on your system." - if test ${ZSH_VERSION+y} ; then - printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" - printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." - else - printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi ;; -esac -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else case e in #( - e) as_fn_append () - { - eval $1=\$$1\$2 - } ;; -esac -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else case e in #( - e) as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } ;; -esac -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - t clear - :clear - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated - -# Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='digraphs' -PACKAGE_TARNAME='digraphs' -PACKAGE_VERSION='GAP package' -PACKAGE_STRING='digraphs GAP package' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -ac_unique_file="src/digraphs.c" -ac_default_prefix='${abs_top_builddir}/../../bin/' -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_STDIO_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif -#ifdef HAVE_STRING_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_c_list= -ac_subst_vars='LTLIBOBJS -LIBOBJS -WITH_INCLUDED_BLISS -PLANARITY_SUITE_DIR -WITH_INCLUDED_PLANARITY -WARNING_CFLAGS -WARNING_CXXFLAGS -SED -CODE_COVERAGE_LDFLAGS -CODE_COVERAGE_CXXFLAGS -CODE_COVERAGE_CFLAGS -ENABLE_STATS -KERNEL_DEBUG -GAP_LIBS -GAP_LDFLAGS -GAP_CFLAGS -GAP_CPPFLAGS -GAPROOT -GAPARCH -ac_ct_CXX -CXXFLAGS -CXX -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -runstatedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -with_gaproot -enable_debug -enable_stats -enable_code_coverage -enable_compile_warnings -with_external_planarity -with_external_bliss -with_intrinsics -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: '$ac_option' -Try '$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: '$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: '$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -'configure' configures digraphs GAP package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print 'checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for '--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or '..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, 'make install' will install all the files in -'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify -an installation prefix other than '$ac_default_prefix' using '--prefix', -for instance '--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/digraphs] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of digraphs GAP package:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-debug enable debug mode - --enable-stats enable stats mode - --enable-code-coverage Whether to enable code coverage support - --enable-compile-warnings - enable compiler warnings - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gaproot= specify root of GAP installation - --with-external-planarity - use external planarity - --with-external-bliss use external bliss - --without-intrinsics do not use compiler intrinsics even if available - - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CXX C++ compiler command - CXXFLAGS C++ compiler flags - -Use these variables to override the choices made by 'configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for configure.gnu first; this name is used for a wrapper for - # Metaconfig's "Configure" on case-insensitive file systems. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -digraphs configure GAP package -generated by GNU Autoconf 2.72 - -Copyright (C) 2023 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - } -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - } -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link -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 digraphs $as_me GAP package, which was -generated by GNU Autoconf 2.72. 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" - done -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'" ;; - 2) - 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'" - ;; - esac - done -done -{ 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. ## -## ---------------- ##" - 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. ## -## ----------------- ##" - 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"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - printf "%s\n" "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - 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"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - printf "%s\n" "## ----------- ## -## confdefs.h. ## -## ----------- ##" - 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" -else - ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -fi - -for ac_site_file in $ac_site_files -do - 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 - . "$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;} -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;} - >$cache_file -fi - -# 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 -#include -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 (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; -} - -/* C89 style stringification. */ -#define noexpand_stringify(a) #a -const char *stringified = noexpand_stringify(arbitrary+token=sequence); - -/* C89 style token pasting. Exercises some of the corner cases that - e.g. old MSVC gets wrong, but not very hard. */ -#define noexpand_concat(a,b) a##b -#define expand_concat(a,b) noexpand_concat(a,b) -extern int vA; -extern int vbee; -#define aye A -#define bee B -int *pvA = &expand_concat(v,aye); -int *pvbee = &noexpand_concat(v,bee); - -/* 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 - -// See if C++-style comments work. - -#include -extern int puts (const char *); -extern int printf (const char *, ...); -extern int dprintf (int, const char *, ...); -extern void *malloc (size_t); -extern void free (void *); - -// 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) -{ - // 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; - // Work around memory leak warnings. - free (ia); - - // 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; - -// 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; -} -" - -# 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 -#include - -// and 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 struct test_template -{ - T const val; - explicit test_template(T t) : val(t) {} - template T add(U u) { return static_cast(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 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 Ret eval(Fn f, Ret v) - { - return f(v); - } - - // for testing variadic templates and trailing return types - template auto sum(V first) -> V - { - return first; - } - template 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> v(test_template(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 " 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" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' - and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_config_headers="$ac_config_headers gen/pkgconfig.h:src/pkgconfig.h.in" - - - - -ac_config_commands="$ac_config_commands src/digraphs-config.h" - - - - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" - fi -fi -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "clang", so it can be a program name with args. -set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi - - -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See 'config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -printf %s "checking whether the C compiler works... " >&6; } -ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. -# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an '-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else case e in #( - e) ac_file='' ;; -esac -fi -if test -z "$ac_file" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See 'config.log' for more details" "$LINENO" 5; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -printf %s "checking for C compiler default output file name... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -printf "%s\n" "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -printf %s "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) -# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will -# work properly (i.e., refer to 'conftest.exe'), while it won't with -# 'rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See 'config.log' for more details" "$LINENO" 5; } ;; -esac -fi -rm -f conftest conftest$ac_cv_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -printf "%s\n" "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -FILE *f = fopen ("conftest.out", "w"); - if (!f) - return 1; - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -printf %s "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot run C compiled programs. -If you meant to cross compile, use '--host'. -See 'config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -printf "%s\n" "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext \ - conftest.o conftest.obj conftest.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -printf %s "checking for suffix of object files... " >&6; } -if test ${ac_cv_objext+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See 'config.log' for more details" "$LINENO" 5; } ;; -esac -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -printf "%s\n" "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+y} -ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -else case e in #( - e) CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else case e in #( - e) ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c11=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c99_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c99" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c99" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c89" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c89" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 ;; -esac -fi -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CXX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -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 - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 -printf %s "checking whether the compiler supports GNU C++... " >&6; } -if test ${ac_cv_cxx_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+y} -ac_save_CXXFLAGS=$CXXFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -printf %s "checking whether $CXX accepts -g... " >&6; } -if test ${ac_cv_prog_cxx_g+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_g=yes -else case e in #( - e) CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - -else case e in #( - e) ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } -if test $ac_test_CXXFLAGS; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_prog_cxx_stdcxx=no -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 -printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx11=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program -_ACEOF -for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx11" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_prog_cxx_stdcxx=cxx11 ;; -esac -fi -fi -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 -printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx98+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cxx_cxx98=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program -_ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx98=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX ;; -esac -fi - -if test "x$ac_cv_prog_cxx_cxx98" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cxx_cxx98" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx98" ;; -esac -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 - ac_prog_cxx_stdcxx=cxx98 ;; -esac -fi -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - # Make sure CDPATH is portably set to a sensible value - CDPATH=${ZSH_VERSION+.}: - - GAP_CPPFLAGS="" - - ###################################### - # Find the GAP root directory by - # checking for the sysinfo.gap file - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GAP root directory" >&5 -printf %s "checking for GAP root directory... " >&6; } - GAPROOT="../.." - - # Allow the user to specify the location of GAP - -# Check whether --with-gaproot was given. -if test ${with_gaproot+y} -then : - withval=$with_gaproot; GAPROOT="$withval" -fi - - - # Convert the path to absolute - GAPROOT=`cd $GAPROOT > /dev/null 2>&1 && pwd` - - if test -e ${GAPROOT}/sysinfo.gap; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GAPROOT}" >&5 -printf "%s\n" "${GAPROOT}" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 -printf "%s\n" "Not found" >&6; } - - echo "" - echo "********************************************************************" - echo " ERROR" - echo "" - echo " Cannot find your GAP installation. Please specify the location of" - echo " GAP's root directory using --with-gaproot=" - echo "" - echo " The GAP root directory (as far as this package is concerned) is" - echo " the one containing the file sysinfo.gap" - echo "********************************************************************" - echo "" - - as_fn_error $? "Unable to find GAP root directory" "$LINENO" 5 - fi - - ##################################### - # Now find the architecture - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GAP architecture" >&5 -printf %s "checking for GAP architecture... " >&6; } - GAPARCH="Unknown" - . $GAPROOT/sysinfo.gap - if test "x$GAParch" != "x"; then - GAPARCH=$GAParch - fi - - if test "x$GAPARCH" = "xUnknown" ; then - echo "" - echo "********************************************************************" - echo " ERROR" - echo "" - echo " Found a GAP installation at $GAPROOT but could not find" - echo " information about GAP's architecture in the file" - echo " ${GAPROOT}/sysinfo.gap ." - echo " This file should be present: please check your GAP installation." - echo "********************************************************************" - echo "" - - as_fn_error $? "Unable to find plausible GAParch information." "$LINENO" 5 - fi - - # require GAP >= 4.9 - if test "x$GAP_CPPFLAGS" = x; then - echo "" - echo "********************************************************************" - echo " ERROR" - echo "" - echo " This version of GAP is too old and not supported by this package." - echo "********************************************************************" - echo "" - as_fn_error $? "No GAP_CPPFLAGS is given" "$LINENO" 5 - fi - - - - - - - - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - -# Check whether --enable-debug was given. -if test ${enable_debug+y} -then : - enableval=$enable_debug; -printf "%s\n" "#define KERNEL_DEBUG 1" >>confdefs.h - -else case e in #( - e) enable_debug=no - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable debug mode" >&5 -printf %s "checking whether to enable debug mode... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_debug" >&5 -printf "%s\n" "$enable_debug" >&6; } -KERNEL_DEBUG=$enable_debug - - -# Check whether --enable-stats was given. -if test ${enable_stats+y} -then : - enableval=$enable_stats; -printf "%s\n" "#define ENABLE_STATS 1" >>confdefs.h - -else case e in #( - e) enable_stats=no - ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable stats mode" >&5 -printf %s "checking whether to enable stats mode... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_stats" >&5 -printf "%s\n" "$enable_stats" >&6; } -ENABLE_STATS=$enable_debug - - -# Check whether --enable-code-coverage was given. -if test ${enable_code_coverage+y} -then : - enableval=$enable_code_coverage; -else case e in #( - e) enable_code_coverage=no ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with code coverage support" >&5 -printf %s "checking whether to build with code coverage support... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_code_coverage" >&5 -printf "%s\n" "$enable_code_coverage" >&6; } - -if test "$enable_code_coverage" = "yes" -then : - - CODE_COVERAGE_CFLAGS="-DNDEBUG -O0 -g --coverage" - CODE_COVERAGE_CXXFLAGS="-DNDEBUG -O0 -g --coverage" - CODE_COVERAGE_LDFLAGS="--coverage" - - - - -fi - - -# Enable compiler warnings - -# Check whether --enable-compile-warnings was given. -if test ${enable_compile_warnings+y} -then : - enableval=$enable_compile_warnings; enable_compile_warnings=yes -else case e in #( - e) enable_compile_warnings=no ;; -esac -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether enable compiler warnings" >&5 -printf %s "checking whether enable compiler warnings... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_compile_warnings" >&5 -printf "%s\n" "$enable_compile_warnings" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -printf %s "checking for a sed that does not truncate output... " >&6; } -if test ${ac_cv_path_SED+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - 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 - for ac_prog in sed gsed - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in #( -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -#( -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -printf "%s\n" "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - - -if test "x$enable_compile_warnings" != "xno" -then : - ax_enable_compile_warnings=yes - - - - - - - - - - # Variable names - - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - # Always pass -Werror=unknown-warning-option to get Clang to fail on bad - # flags, otherwise they are always appended to the warn_cxxflags variable, - # and Clang warns on them for every compilation unit. - # If this is passed to GCC, it will explode, so the flag must be enabled - # conditionally. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -Werror=unknown-warning-option" >&5 -printf %s "checking whether C++ compiler accepts -Werror=unknown-warning-option... " >&6; } -if test ${ax_cv_check_cxxflags___Werror_unknown_warning_option+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CXXFLAGS - CXXFLAGS="$CXXFLAGS -Werror=unknown-warning-option" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ax_cv_check_cxxflags___Werror_unknown_warning_option=yes -else case e in #( - e) ax_cv_check_cxxflags___Werror_unknown_warning_option=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CXXFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags___Werror_unknown_warning_option" >&5 -printf "%s\n" "$ax_cv_check_cxxflags___Werror_unknown_warning_option" >&6; } -if test "x$ax_cv_check_cxxflags___Werror_unknown_warning_option" = xyes -then : - - ax_compiler_flags_test="-Werror=unknown-warning-option" - -else case e in #( - e) - ax_compiler_flags_test="" - ;; -esac -fi - - - # Check that -Wno-suggest-attribute=format is supported - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -Wno-suggest-attribute=format" >&5 -printf %s "checking whether C++ compiler accepts -Wno-suggest-attribute=format... " >&6; } -if test ${ax_cv_check_cxxflags___Wno_suggest_attribute_format+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CXXFLAGS - CXXFLAGS="$CXXFLAGS -Wno-suggest-attribute=format" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ax_cv_check_cxxflags___Wno_suggest_attribute_format=yes -else case e in #( - e) ax_cv_check_cxxflags___Wno_suggest_attribute_format=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CXXFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags___Wno_suggest_attribute_format" >&5 -printf "%s\n" "$ax_cv_check_cxxflags___Wno_suggest_attribute_format" >&6; } -if test "x$ax_cv_check_cxxflags___Wno_suggest_attribute_format" = xyes -then : - - ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format" - -else case e in #( - e) - ax_compiler_no_suggest_attribute_flags="" - ;; -esac -fi - - - # Base flags - - - - -for flag in -fno-strict-aliasing -pedantic -Wold-style-cast ; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cxxflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 -printf %s "checking whether C++ compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CXXFLAGS - CXXFLAGS="$CXXFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CXXFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CXXFLAGS+y} -then : - - case " $WARNING_CXXFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains \$flag"; } >&5 - (: WARNING_CXXFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CXXFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CXXFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - - if test "$ax_enable_compile_warnings" != "no" -then : - - # "yes" flags - - - - -for flag in -Wall -Wextra -Wundef -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wformat=2 -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wredundant-decls -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wreturn-type -Wno-overloaded-virtual -Wswitch-enum -Wswitch-default ; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cxxflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 -printf %s "checking whether C++ compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CXXFLAGS - CXXFLAGS="$CXXFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CXXFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CXXFLAGS+y} -then : - - case " $WARNING_CXXFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains \$flag"; } >&5 - (: WARNING_CXXFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CXXFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CXXFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - -fi - if test "$ax_enable_compile_warnings" = "error" -then : - - # "error" flags; -Werror has to be appended unconditionally because - # it's not possible to test for - # - # suggest-attribute=format is disabled because it gives too many false - # positives - -if test ${WARNING_CXXFLAGS+y} -then : - - case " $WARNING_CXXFLAGS " in #( - *" -Werror "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains -Werror"; } >&5 - (: WARNING_CXXFLAGS already contains -Werror) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CXXFLAGS " -Werror" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CXXFLAGS=-Werror - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - - - - - - -for flag in $ax_compiler_no_suggest_attribute_flags ; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cxxflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 -printf %s "checking whether C++ compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CXXFLAGS - CXXFLAGS="$CXXFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CXXFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CXXFLAGS+y} -then : - - case " $WARNING_CXXFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains \$flag"; } >&5 - (: WARNING_CXXFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CXXFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CXXFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - -fi - - # In the flags below, when disabling specific flags, always add *both* - # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example) - # we enable -Werror, disable a flag, and a build bot passes CXXFLAGS=-Wall, - # which effectively turns that flag back on again as an error. - for flag in $WARNING_CXXFLAGS; do - case $flag in #( - -Wno-*=*) : - ;; #( - -Wno-*) : - - - - - -for flag in -Wno-error=$(printf "%s\n" $flag | $SED 's/^-Wno-//'); do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cxxflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 -printf %s "checking whether C++ compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CXXFLAGS - CXXFLAGS="$CXXFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CXXFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CXXFLAGS+y} -then : - - case " $WARNING_CXXFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS already contains \$flag"; } >&5 - (: WARNING_CXXFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CXXFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CXXFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CXXFLAGS=\"\$WARNING_CXXFLAGS\""; } >&5 - (: WARNING_CXXFLAGS="$WARNING_CXXFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - ;; #( - *) : - ;; -esac - done - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - # Substitute the variables - - - -fi - - -if test "x$enable_compile_warnings" != "xno" -then : - ax_enable_compile_warnings=yes - - - - - - - - - - # Variable names - - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #ifndef __cplusplus - #error "no C++" - #endif -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_compiler_cxx=yes; -else case e in #( - e) ax_compiler_cxx=no; ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - # Always pass -Werror=unknown-warning-option to get Clang to fail on bad - # flags, otherwise they are always appended to the warn_cflags variable, and - # Clang warns on them for every compilation unit. - # If this is passed to GCC, it will explode, so the flag must be enabled - # conditionally. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5 -printf %s "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; } -if test ${ax_cv_check_cflags___Werror_unknown_warning_option+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Werror=unknown-warning-option" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___Werror_unknown_warning_option=yes -else case e in #( - e) ax_cv_check_cflags___Werror_unknown_warning_option=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5 -printf "%s\n" "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; } -if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes -then : - - ax_compiler_flags_test="-Werror=unknown-warning-option" - -else case e in #( - e) - ax_compiler_flags_test="" - ;; -esac -fi - - - # Check that -Wno-suggest-attribute=format is supported - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wno-suggest-attribute=format" >&5 -printf %s "checking whether C compiler accepts -Wno-suggest-attribute=format... " >&6; } -if test ${ax_cv_check_cflags___Wno_suggest_attribute_format+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -Wno-suggest-attribute=format" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___Wno_suggest_attribute_format=yes -else case e in #( - e) ax_cv_check_cflags___Wno_suggest_attribute_format=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wno_suggest_attribute_format" >&5 -printf "%s\n" "$ax_cv_check_cflags___Wno_suggest_attribute_format" >&6; } -if test "x$ax_cv_check_cflags___Wno_suggest_attribute_format" = xyes -then : - - ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format" - -else case e in #( - e) - ax_compiler_no_suggest_attribute_flags="" - ;; -esac -fi - - - # Base flags - - - - -for flag in -fno-strict-aliasing -pedantic ; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -printf %s "checking whether C compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CFLAGS+y} -then : - - case " $WARNING_CFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 - (: WARNING_CFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - - if test "$ax_enable_compile_warnings" != "no" -then : - - if test "$ax_compiler_cxx" = "no" ; then - # C-only flags. Warn in C++ - - - - -for flag in -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes -Wdeclaration-after-statement -Wimplicit-function-declaration -Wold-style-definition -Wjump-misses-init ; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -printf %s "checking whether C compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CFLAGS+y} -then : - - case " $WARNING_CFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 - (: WARNING_CFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - fi - - # "yes" flags - - - - -for flag in -Wall -Wextra -Wundef -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wformat=2 -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wredundant-decls -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wreturn-type -Wswitch-enum -Wswitch-default -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wrestrict -Wnull-dereference -Wdouble-promotion ; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -printf %s "checking whether C compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CFLAGS+y} -then : - - case " $WARNING_CFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 - (: WARNING_CFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - -fi - if test "$ax_enable_compile_warnings" = "error" -then : - - # "error" flags; -Werror has to be appended unconditionally because - # it's not possible to test for - # - # suggest-attribute=format is disabled because it gives too many false - # positives - -if test ${WARNING_CFLAGS+y} -then : - - case " $WARNING_CFLAGS " in #( - *" -Werror "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains -Werror"; } >&5 - (: WARNING_CFLAGS already contains -Werror) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CFLAGS " -Werror" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CFLAGS=-Werror - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - - - - - - -for flag in $ax_compiler_no_suggest_attribute_flags ; do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -printf %s "checking whether C compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CFLAGS+y} -then : - - case " $WARNING_CFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 - (: WARNING_CFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - -fi - - # In the flags below, when disabling specific flags, always add *both* - # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example) - # we enable -Werror, disable a flag, and a build bot passes CFLAGS=-Wall, - # which effectively turns that flag back on again as an error. - for flag in $WARNING_CFLAGS; do - case $flag in #( - -Wno-*=*) : - ;; #( - -Wno-*) : - - - - - -for flag in -Wno-error=$(printf "%s\n" $flag | $SED 's/^-Wno-//'); do - as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | sed "$as_sed_sh"` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -printf %s "checking whether C compiler accepts $flag... " >&6; } -if eval test \${$as_CACHEVAR+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$as_CACHEVAR=yes" -else case e in #( - e) eval "$as_CACHEVAR=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags ;; -esac -fi -eval ac_res=\$$as_CACHEVAR - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes" -then : - -if test ${WARNING_CFLAGS+y} -then : - - case " $WARNING_CFLAGS " in #( - *" $flag "*) : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS already contains \$flag"; } >&5 - (: WARNING_CFLAGS already contains $flag) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } ;; #( - *) : - - as_fn_append WARNING_CFLAGS " $flag" - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac - -else case e in #( - e) - WARNING_CFLAGS=$flag - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARNING_CFLAGS=\"\$WARNING_CFLAGS\""; } >&5 - (: WARNING_CFLAGS="$WARNING_CFLAGS") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; -esac -fi - -else case e in #( - e) : ;; -esac -fi - -done - - ;; #( - *) : - ;; -esac - done - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - # Substitute the variables - - - -fi - -# Check for system planarity suite - - - -# Check whether --with-external-planarity was given. -if test ${with_external_planarity+y} -then : - withval=$with_external_planarity; -else case e in #( - e) with_external_planarity=no ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use external planarity" >&5 -printf %s "checking whether to use external planarity... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_external_planarity" >&5 -printf "%s\n" "$with_external_planarity" >&6; } - if test "x$with_external_planarity" = xyes -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for external libplanarity" >&5 -printf %s "checking for external libplanarity... " >&6; } - saved_LIBS="$LIBS" - LIBS="$LIBS -lplanarity" - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #if defined(GP_PROJECTVERSION_MAJOR) && GP_PROJECTVERSION_MAJOR >= 4 - #else - #error too old - #endif - int main(void) { gp_InitGraph(0, 0); } - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else case e in #( - e) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found or too old" >&5 -printf "%s\n" "not found or too old" >&6; } - LIBS="$saved_LIBS" - with_external_planarity=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - -fi - if test "x$with_external_planarity" = xno -then : - - WITH_INCLUDED_PLANARITY=yes - - -printf "%s\n" "#define WITH_INCLUDED_PLANARITY 1" >>confdefs.h - - -fi - -if test "x$with_external_planarity" = xno ; then - PLANARITY_SUITE_DIR=extern/edge-addition-planarity-suite-Version_4.0.0.0 - -fi - -# Check for system bliss suite -ac_header= ac_cache= -for ac_item in $ac_header_c_list -do - if test $ac_cache; then - ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" - if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h - fi - ac_header= ac_cache= - elif test $ac_header; then - ac_cache=$ac_item - else - ac_header=$ac_item - fi -done - - - - - - - - -if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes -then : - -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - -fi - - -# Check whether --with-external-bliss was given. -if test ${with_external_bliss+y} -then : - withval=$with_external_bliss; -else case e in #( - e) with_external_bliss=no ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use external bliss" >&5 -printf %s "checking whether to use external bliss... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_external_bliss" >&5 -printf "%s\n" "$with_external_bliss" >&6; } - if test "x$with_external_bliss" = xyes ; then - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bliss_add_edge in -lbliss" >&5 -printf %s "checking for bliss_add_edge in -lbliss... " >&6; } -if test ${ac_cv_lib_bliss_bliss_add_edge+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lbliss $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char bliss_add_edge (void); -int -main (void) -{ -return bliss_add_edge (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_bliss_bliss_add_edge=yes -else case e in #( - e) ac_cv_lib_bliss_bliss_add_edge=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bliss_bliss_add_edge" >&5 -printf "%s\n" "$ac_cv_lib_bliss_bliss_add_edge" >&6; } -if test "x$ac_cv_lib_bliss_bliss_add_edge" = xyes -then : - printf "%s\n" "#define HAVE_LIBBLISS 1" >>confdefs.h - - LIBS="-lbliss $LIBS" - -else case e in #( - e) as_fn_error $? "no external libbliss found" "$LINENO" 5 ;; -esac -fi - - - ac_fn_c_check_header_compile "$LINENO" "bliss/bliss_C.h" "ac_cv_header_bliss_bliss_C_h" "$ac_includes_default" -if test "x$ac_cv_header_bliss_bliss_C_h" = xyes -then : - -else case e in #( - e) as_fn_error $? "no external bliss headers found" "$LINENO" 5 ;; -esac -fi - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - fi - if test "x$with_external_bliss" = xno ; then - WITH_INCLUDED_BLISS=yes - - -printf "%s\n" "#define WITH_INCLUDED_BLISS 1" >>confdefs.h - - fi - - -# Check whether to use -mpopcnt and __builtin_ctzl - -# Check whether --with-intrinsics was given. -if test ${with_intrinsics+y} -then : - withval=$with_intrinsics; -fi - - -if test "x$with_intrinsics" = "xno" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiler intrinsics will not be used even if available" >&5 -printf "%s\n" "$as_me: compiler intrinsics will not be used even if available" >&6;} -fi - - - -if test "x$with_intrinsics" != "xno" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_ctzll" >&5 -printf %s "checking for __builtin_ctzll... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -__builtin_ctzll(0); - - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - have___builtin_ctzll=yes -else case e in #( - e) have___builtin_ctzll=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have___builtin_ctzll" >&5 -printf "%s\n" "$have___builtin_ctzll" >&6; } - if test yes = $have___builtin_ctzll -then : - -printf "%s\n" "#define HAVE___BUILTIN_CTZLL 1" >>confdefs.h - -fi -fi - -ac_config_files="$ac_config_files Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - 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=\ *) - # 'set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -printf "%s\n" "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - -# The user is always right. -if ${PATH_SEPARATOR+false} :; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) 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 - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else case e in #( - e) as_fn_append () - { - eval $1=\$$1\$2 - } ;; -esac -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else case e in #( - e) as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } ;; -esac -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated - -# Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by digraphs $as_me GAP package, which was -generated by GNU Autoconf 2.72. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -'$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` -ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config='$ac_cs_config_escaped' -ac_cs_version="\\ -digraphs config.status GAP package -configured by $0, generated by GNU Autoconf 2.72, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2023 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - printf "%s\n" "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - printf "%s\n" "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: '$1' -Try '$0 --help' for more information.";; - --help | --hel | -h ) - printf "%s\n" "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: '$1' -Try '$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - printf "%s\n" "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -PACKAGE="$PACKAGE" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "gen/pkgconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS gen/pkgconfig.h:src/pkgconfig.h.in" ;; - "src/digraphs-config.h") CONFIG_COMMANDS="$CONFIG_COMMANDS src/digraphs-config.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files - test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers - test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to '$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with './config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with './config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script 'defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain ':'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is 'configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -printf "%s\n" "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`printf "%s\n" "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when '$srcdir' = '.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - printf "%s\n" "/* $configure_input */" >&1 \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - printf "%s\n" "/* $configure_input */" >&1 \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi - ;; - - :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -printf "%s\n" "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "src/digraphs-config.h":C) ac_prefix_conf_OUT=`echo src/digraphs-config.h` -ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e "y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:" -e "s/[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g"` -ac_prefix_conf_PKG=`echo digraphs` -ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e "y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:"` -ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e "y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:" -e "/^[0123456789]/s/^/_/"` -ac_prefix_conf_INP=`echo "gen/pkgconfig.h" | sed -e 's/ *//'` -if test ".$ac_prefix_conf_INP" = "."; then - for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue - case "$ac_file" in - *.h) ac_prefix_conf_INP=$ac_file ;; - *) - esac - test ".$ac_prefix_conf_INP" != "." && break - done -fi -if test ".$ac_prefix_conf_INP" = "."; then - case "$ac_prefix_conf_OUT" in - */*) ac_prefix_conf_INP=`basename "$ac_prefix_conf_OUT"` - ;; - *-*) ac_prefix_conf_INP=`echo "$ac_prefix_conf_OUT" | sed -e "s/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*-//"` - ;; - *) ac_prefix_conf_INP=config.h - ;; - esac -fi -if test -z "$ac_prefix_conf_PKG" ; then - as_fn_error $? "no prefix for _PREFIX_PKG_CONFIG_H" "$LINENO" 5 -else - if test ! -f "$ac_prefix_conf_INP" ; then if test -f "$srcdir/$ac_prefix_conf_INP" ; then - ac_prefix_conf_INP="$srcdir/$ac_prefix_conf_INP" - fi fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5 -printf "%s\n" "$as_me: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6;} - if test -f $ac_prefix_conf_INP ; then - printf "%s\n" "s/^#undef *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_]\\)/#undef $ac_prefix_conf_UPP""_\\1/" > conftest.prefix - printf "%s\n" "s/^#undef *\\([abcdefghijklmnopqrstuvwxyz]\\)/#undef $ac_prefix_conf_LOW""_\\1/" >> conftest.prefix - printf "%s\n" "s/^#define *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)\\(.*\\)/#ifndef $ac_prefix_conf_UPP""_\\1\\" >> conftest.prefix - printf "%s\n" "#define $ac_prefix_conf_UPP""_\\1\\2\\" >> conftest.prefix - printf "%s\n" "#endif/" >> conftest.prefix - printf "%s\n" "s/^#define *\\([abcdefghijklmnopqrstuvwxyz][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)\\(.*\\)/#ifndef $ac_prefix_conf_LOW""_\\1\\" >> conftest.prefix - printf "%s\n" "#define $ac_prefix_conf_LOW""_\\1\\2\\" >> conftest.prefix - printf "%s\n" "#endif/" >> conftest.prefix - # now executing _script on _DEF input to create _OUT output file - echo "#ifndef $ac_prefix_conf_DEF" >$tmp/pconfig.h - echo "#define $ac_prefix_conf_DEF 1" >>$tmp/pconfig.h - echo ' ' >>$tmp/pconfig.h - echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h - - sed -f conftest.prefix $ac_prefix_conf_INP >>$tmp/pconfig.h - echo ' ' >>$tmp/pconfig.h - echo '/* once:' $ac_prefix_conf_DEF '*/' >>$tmp/pconfig.h - echo "#endif" >>$tmp/pconfig.h - if cmp -s $ac_prefix_conf_OUT $tmp/pconfig.h 2>/dev/null; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_prefix_conf_OUT is unchanged" >&5 -printf "%s\n" "$as_me: $ac_prefix_conf_OUT is unchanged" >&6;} - else - ac_dir=`$as_dirname -- "$ac_prefix_conf_OUT" || -$as_expr X"$ac_prefix_conf_OUT" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_prefix_conf_OUT" : 'X\(//\)[^/]' \| \ - X"$ac_prefix_conf_OUT" : 'X\(//\)$' \| \ - X"$ac_prefix_conf_OUT" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_prefix_conf_OUT" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - rm -f "$ac_prefix_conf_OUT" - mv $tmp/pconfig.h "$ac_prefix_conf_OUT" - fi - else - as_fn_error $? "input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" "$LINENO" 5 - fi - rm -f conftest.* -fi - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - diff --git a/doc/display.xml b/doc/display.xml index 06e821d07..69e3e6794 100644 --- a/doc/display.xml +++ b/doc/display.xml @@ -442,3 +442,89 @@ gap> GraphvizHighlightedGraph(D, [1, 2], "red", "black"); <#/GAPDoc> + +<#GAPDoc Label="GraphvizEdgeWeightedDigraph"> + + + A string. + + These operations produces &GRAPHVIZFORGAP; objects representing the + edge-weighted digraph digraph, in dot format. Its output will + be similar to that of , but the diagram will + also show the weights of the digraph's edges.

+ + If the optional argument path is specified, it should be a list of + lists describing a path in digraph, in the format described in . If specified, the path's edges will be highlighted in + the diagram, as will its start and end vertices.

+ + If the optional argument colors is specified, it should be a record + containing any of the following components: + + + + vert: the colour of ordinary vertices (default "grey"); + + + edge: the colour of ordinary edges (default "black"); + + + highlight: the colour of any edges on path, if any + (default "blue"); + + + source: the colour of the first vertex in path, if any + (default "yellowgreen"); + + + dest: the colour of the final vertex in path, if any + (default "lightpink"). + + + + Each value in the record should be a string representing a colour + understood by the GraphViz software. For details about this format, + see https://www.graphviz.org. If any of the above components are + not specified, or if no colors argument is given, the default value + will be used.

+ + The output of this operation can be passed to + to + attempt to display it graphically on the computer's screen.

+ + gr := EdgeWeightedDigraph([[2], [3], []], [[10], [15], []]);; +gap> path := EdgeWeightedDigraphShortestPath(gr, 2, 3); +[ [ 2, 3 ], [ 1 ] ] +gap> Print(AsString(GraphvizEdgeWeightedDigraph(gr, path))); +//dot +digraph hgn { + node [shape=circle] + 1 [color=gray, style=filled] + 2 [color=yellowgreen, style=filled] + 3 [color=lightpink, style=filled] + 1 -> 2 [color=black, label=10] + 2 -> 3 [color=blue, label=15] +} +]]> + + +<#/GAPDoc> + +<#GAPDoc Label="DotEdgeWeightedDigraph"> + + + A string. + + WARNING! As of v2.0.0 of &Digraphs; these functions are + deprecated in favour of: + + . + + + DotEdgeWeightedDigraph takes the same arguments as GraphvizHighlightedDigraph + and returns AsString applied to the resulting &GRAPHVIZFORGAP; + object. + + +<#/GAPDoc> diff --git a/doc/weights.xml b/doc/weights.xml index 475ad6c3b..b42c261cb 100644 --- a/doc/weights.xml +++ b/doc/weights.xml @@ -365,70 +365,3 @@ gap> RandomUniqueEdgeWeightedDigraph(IsEulerianDigraph, 5, 1 / 3); <#/GAPDoc> -<#GAPDoc Label="DotEdgeWeightedDigraph"> - - - A string. - - This operation produces a graphical representation of the edge-weighted - digraph digraph, in dot format. Its output will be similar to - that of , but the diagram will also show the weights - of the digraph's edges.

- - If the optional argument path is specified, it should be a list of - lists describing a path in digraph, in the format described in . If specified, the path's edges will be highlighted in - the diagram, as will its start and end vertices.

- - If the optional argument colors is specified, it should be a record - containing any of the following components: - - - - vert: the colour of ordinary vertices (default "grey"); - - - edge: the colour of ordinary edges (default "black"); - - - highlight: the colour of any edges on path, if any - (default "blue"); - - - source: the colour of the first vertex in path, if any - (default "yellowgreen"); - - - dest: the colour of the final vertex in path, if any - (default "lightpink"). - - - - Each value in the record should be a string representing a colour understood - by the GraphViz software. For details about this format, see - https://www.graphviz.org. If any of the above components are not - specified, or if no colors argument is given, the default value will - be used.

- - The output of this operation can be passed to - to - attempt to display it graphically on the computer's screen.

- - gr := EdgeWeightedDigraph([[2], [3], []], [[10], [15], []]); - -gap> path := EdgeWeightedDigraphShortestPath(g, 2, 3); -[ [ 2, 3 ], [ 1 ] ] -gap> Print(DotEdgeWeightedDigraph(gr, path)); -//dot -digraph hgn{ -node [shape=circle] -1[color=gray, style=filled] -2[color=yellowgreen, style=filled] -3[color=lightpink, style=filled] -1 -> 2[color=black, label=10] -2 -> 3[color=blue, label=15] -}]]> - - -<#/GAPDoc> diff --git a/doc/z-chap5.xml b/doc/z-chap5.xml index 491deb4c8..b97a694b3 100644 --- a/doc/z-chap5.xml +++ b/doc/z-chap5.xml @@ -35,7 +35,6 @@ <#Include Label="DigraphMinimumCut"> <#Include Label="DigraphMinimumCutSet"> <#Include Label="RandomUniqueEdgeWeightedDigraph"> - <#Include Label="DotEdgeWeightedDigraph">

Orders diff --git a/doc/z-chap9.xml b/doc/z-chap9.xml index c63d6f7a1..682fd0c04 100644 --- a/doc/z-chap9.xml +++ b/doc/z-chap9.xml @@ -21,6 +21,9 @@ <#Include Label="GraphvizHighlightedDigraph"> <#Include Label="DotHighlightedDigraph"> + + <#Include Label="GraphvizEdgeWeightedDigraph"> + <#Include Label="DotEdgeWeightedDigraph">
Reading and writing digraphs to a file diff --git a/gap/deprecated.gd b/gap/deprecated.gd index bbfa4ed96..2e2e3e6f2 100644 --- a/gap/deprecated.gd +++ b/gap/deprecated.gd @@ -36,3 +36,8 @@ DeclareOperation("DotHighlightedGraph", DeclareOperation("DotColoredEdgeLabelledDigraph", [IsDigraph, IsList, IsList, IsList]); + +DeclareOperation("DotEdgeWeightedDigraph", [IsDigraph]); +DeclareOperation("DotEdgeWeightedDigraph", [IsDigraph, IsList]); +DeclareOperation("DotEdgeWeightedDigraph", [IsDigraph, IsRecord]); +DeclareOperation("DotEdgeWeightedDigraph", [IsDigraph, IsList, IsRecord]); diff --git a/gap/deprecated.gi b/gap/deprecated.gi index 2b01910a1..f344b127e 100644 --- a/gap/deprecated.gi +++ b/gap/deprecated.gi @@ -123,3 +123,40 @@ function(D, vert, edge, weight) "GraphvizColoredEdgeLabelledDigraph"); return AsString(GraphvizColoredEdgeLabelledDigraph(D, vert, edge, weight)); end); + +############################################################################# +# Weighted digraphs +############################################################################# + +InstallMethod(DotEdgeWeightedDigraph, "for a digraph", +[IsDigraph], +function(digraph) + _PrintDeprecated("DotEdgeWeightedDigraph", + "GraphvizEdgeWeightedDigraph"); + return AsString(GraphvizEdgeWeightedDigraph(digraph)); +end); + +InstallMethod(DotEdgeWeightedDigraph, "for a digraph and a list", +[IsDigraph, IsList], +function(digraph, path) + _PrintDeprecated("DotEdgeWeightedDigraph", + "GraphvizEdgeWeightedDigraph"); + return AsString(GraphvizEdgeWeightedDigraph(digraph, path)); +end); + +InstallMethod(DotEdgeWeightedDigraph, "for a digraph and a record", +[IsDigraph, IsRecord], +function(digraph, colors) + _PrintDeprecated("DotEdgeWeightedDigraph", + "GraphvizEdgeWeightedDigraph"); + return AsString(GraphvizEdgeWeightedDigraph(digraph, colors)); +end); + +InstallMethod(DotEdgeWeightedDigraph, "for a digraph, a list, and a record", +[IsDigraph, IsList, IsRecord], +function(digraph, path, colors) + _PrintDeprecated("DotEdgeWeightedDigraph", + "GraphvizEdgeWeightedDigraph"); + return AsString(GraphvizEdgeWeightedDigraph( + digraph, path, colors)); +end); diff --git a/gap/display.gd b/gap/display.gd index 7b7566eb7..d904d9e65 100644 --- a/gap/display.gd +++ b/gap/display.gd @@ -70,3 +70,12 @@ DeclareOperation("GraphvizHighlightedDigraph", DeclareOperation("GraphvizHighlightedGraph", [IsDigraph, IsList]); DeclareOperation("GraphvizHighlightedGraph", [IsDigraph, IsList, IsString, IsString]); + +############################################################################# +# Weighted digraphs +############################################################################# + +DeclareOperation("GraphvizEdgeWeightedDigraph", [IsDigraph]); +DeclareOperation("GraphvizEdgeWeightedDigraph", [IsDigraph, IsList]); +DeclareOperation("GraphvizEdgeWeightedDigraph", [IsDigraph, IsRecord]); +DeclareOperation("GraphvizEdgeWeightedDigraph", [IsDigraph, IsList, IsRecord]); diff --git a/gap/display.gi b/gap/display.gi index 0639a6645..8cb91d18c 100644 --- a/gap/display.gi +++ b/gap/display.gi @@ -186,6 +186,8 @@ D -> GraphvizSetNodeLabels(GraphvizGraph(D), DigraphVertexLabels(D))); # Edge labelled graphs and digraphs ############################################################################# +# TODO maybe don't include this? + InstallMethod(GraphvizColoredEdgeLabelledDigraph, "for a digraph, vertex colors, edge colors, and edge labels", [IsDigraph, IsList, IsList, IsList], @@ -337,3 +339,68 @@ InstallMethod(GraphvizHighlightedGraph, "for a digraph and list", [IsDigraph, IsList], # IsSymmetricDigraph checked in GraphvizHighlightedGraph {D, list} -> GraphvizHighlightedGraph(D, list, "black", "grey")); + +############################################################################# +# Weighted digraphs +############################################################################# + +InstallMethod(GraphvizEdgeWeightedDigraph, "for a digraph", +[IsDigraph], +digraph -> GraphvizEdgeWeightedDigraph(digraph, [[], []], rec())); + +InstallMethod(GraphvizEdgeWeightedDigraph, "for a digraph and a list", +[IsDigraph, IsList], +{digraph, path} -> GraphvizEdgeWeightedDigraph(digraph, path, rec())); + +InstallMethod(GraphvizEdgeWeightedDigraph, "for a digraph and a record", +[IsDigraph, IsRecord], +{digraph, colors} -> GraphvizEdgeWeightedDigraph(digraph, [[], []], colors)); + +# TODO JDM is not completely sure this is implemented in the spirit of the +# other functions in this file. + +InstallMethod(GraphvizEdgeWeightedDigraph, +"for a digraph, a list, and a record", +[IsDigraph, IsList, IsRecord], +function(digraph, path, colors) + local default_colors, edge, vert, source, dest, name, vertColours, + edgeColours, path_verts, path_edge_indices, path_length, i; + + # Use default colours for any that aren't specified + default_colors := rec(highlight := "blue", + edge := "black", + vert := "gray", + source := "yellowgreen", + dest := "lightpink"); + for name in RecNames(colors) do + if IsBound(default_colors.(name)) then + default_colors.(name) := colors.(name); + else + Error("the 3rd argument contains unsupported option ", + "named '", name, "'"); + fi; + od; + colors := default_colors; + + # fill with basic colours + vertColours := ListWithIdenticalEntries(DigraphNrVertices(digraph), + colors.vert); + edgeColours := List(OutNeighbours(digraph), + outs_u -> List(outs_u, _ -> colors.edge)); + + # highlight the path + path_verts := path[1]; + path_edge_indices := path[2]; + path_length := Length(path_edge_indices); + if not IsEmpty(path_verts) then + for i in [1 .. path_length] do + edgeColours[path_verts[i]][path_edge_indices[i]] := colors.highlight; + od; + vertColours[path_verts[1]] := colors.source; + vertColours[path_verts[path_length + 1]] := colors.dest; + fi; + + # draw with the weights as labels + return GraphvizColoredEdgeLabelledDigraph(digraph, + vertColours, edgeColours, EdgeWeights(digraph)); +end); diff --git a/gap/weights.gd b/gap/weights.gd index 423950b61..4bcacf378 100644 --- a/gap/weights.gd +++ b/gap/weights.gd @@ -54,8 +54,3 @@ DeclareOperation("RandomUniqueEdgeWeightedDigraph", DeclareOperation("RandomUniqueEdgeWeightedDigraph", [IsFunction, IsPosInt, IsRat]); -# 7. Drawing edge weighted digraphs -DeclareOperation("DotEdgeWeightedDigraph", [IsDigraph]); -DeclareOperation("DotEdgeWeightedDigraph", [IsDigraph, IsList]); -DeclareOperation("DotEdgeWeightedDigraph", [IsDigraph, IsRecord]); -DeclareOperation("DotEdgeWeightedDigraph", [IsDigraph, IsList, IsRecord]); diff --git a/gap/weights.gi b/gap/weights.gi index ad4169783..93030fe01 100644 --- a/gap/weights.gi +++ b/gap/weights.gi @@ -905,60 +905,3 @@ DIGRAPHS_RandomEdgeWeightedDigraphFilt); # 7. Drawing edge weighted digraphs ############################################################################# -# TODO move these to display.gi - -InstallMethod(DotEdgeWeightedDigraph, "for a digraph", -[IsDigraph], -digraph -> DotEdgeWeightedDigraph(digraph, [[], []], rec())); - -InstallMethod(DotEdgeWeightedDigraph, "for a digraph and a list", -[IsDigraph, IsList], -{digraph, path} -> DotEdgeWeightedDigraph(digraph, path, rec())); - -InstallMethod(DotEdgeWeightedDigraph, "for a digraph and a record", -[IsDigraph, IsRecord], -{digraph, colors} -> DotEdgeWeightedDigraph(digraph, [[], []], colors)); - -InstallMethod(DotEdgeWeightedDigraph, "for a digraph, a list, and a record", -[IsDigraph, IsList, IsRecord], -function(digraph, path, colors) - local default_colors, edge, vert, source, dest, name, vertColours, - edgeColours, path_verts, path_edge_indices, path_length, i; - - # Use default colours for any that aren't specified - default_colors := rec(highlight := "blue", - edge := "black", - vert := "gray", - source := "yellowgreen", - dest := "lightpink"); - for name in RecNames(colors) do - if IsBound(default_colors.(name)) then - default_colors.(name) := colors.(name); - else - Error("3rd arg contains unsupported option named '", name, "'"); - fi; - od; - colors := default_colors; - - # fill with basic colours - vertColours := ListWithIdenticalEntries(DigraphNrVertices(digraph), - colors.vert); - edgeColours := List(OutNeighbours(digraph), - outs_u -> List(outs_u, _ -> colors.edge)); - - # highlight the path - path_verts := path[1]; - path_edge_indices := path[2]; - path_length := Length(path_edge_indices); - if not IsEmpty(path_verts) then - for i in [1 .. path_length] do - edgeColours[path_verts[i]][path_edge_indices[i]] := colors.highlight; - od; - vertColours[path_verts[1]] := colors.source; - vertColours[path_verts[path_length + 1]] := colors.dest; - fi; - - # draw with the weights as labels - return DotColoredEdgeLabelledDigraph(digraph, vertColours, edgeColours, - EdgeWeights(digraph)); -end); diff --git a/tst/standard/weights.tst b/tst/standard/weights.tst index 55bad0d5f..3fa664282 100644 --- a/tst/standard/weights.tst +++ b/tst/standard/weights.tst @@ -585,7 +585,7 @@ gap> DotEdgeWeightedDigraph( > [[1, 2], [3, 4], [5, 6]], > rec(vert := "blue", mrblobby := "pink") > ); -Error, 3rd arg contains unsupported option named 'mrblobby' +Error, the 3rd argument contains unsupported option named 'mrblobby' # gap> DIGRAPHS_StopTest(); From 118aab2a3b4ed9bab4c98ebd9578f7dd8c6bb4b8 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 17:19:05 +0100 Subject: [PATCH 08/15] Remove etc/code-coverage-test-c.py --- etc/code-coverage-test-c.py | 151 ------------------------------------ 1 file changed, 151 deletions(-) delete mode 100755 etc/code-coverage-test-c.py diff --git a/etc/code-coverage-test-c.py b/etc/code-coverage-test-c.py deleted file mode 100755 index 62cd03294..000000000 --- a/etc/code-coverage-test-c.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env python -""" -""" - -# pylint: disable=invalid-name, broad-except - -import argparse -import tempfile -import subprocess -import sys -import os -import webbrowser - -from os.path import exists, isfile - -_ERR_PREFIX = '\033[31merror: ' - -def exec_string(string): - 'execute the string in a subprocess.' - try: - subprocess.check_call(string, shell=True) - except KeyboardInterrupt: - sys.exit('\033[31m\nKilled!\033[0m') - except (subprocess.CalledProcessError, OSError): - sys.exit(_ERR_PREFIX + 'executing:\n' + string + '\n failed!\033[0m') - -_PARSER = argparse.ArgumentParser(prog='code-coverage-test-c.py', - usage='%(prog)s [options]') -_PARSER.add_argument('files', nargs='+', type=str, - help='the test files you want to check code coverage for' - + '(must be at least one)') -_PARSER.add_argument('--gap-root', nargs='?', type=str, - help='the gap root directory (default: ~/gap)', - default='~/gap/') -_PARSER.add_argument('--pkg', nargs='?', type=str, - help='the package to profile (default: None)', - default=None) -_PARSER.add_argument('--build', dest='build', action='store_true', - help='rebuild GAP (default: False)') -_PARSER.set_defaults(build=False) -_PARSER.add_argument('--open', nargs='?', type=str, - help=('open the lcov html page for this file ' + - '(default: None)'), - default=None) -_PARSER.add_argument('--line', nargs='?', type=str, - help=('open the html page for the file specified by --open' + - ' at this line (default: None)'), - default=None) -_ARGS = _PARSER.parse_args() - -if not _ARGS.gap_root[-1] == '/': - _ARGS.gap_root += '/' - -_ARGS.gap_root = os.path.expanduser(_ARGS.gap_root) -if _ARGS.pkg != None: - _ARGS.pkg = _ARGS.gap_root + '/pkg/' + _ARGS.pkg - -if not (os.path.exists(_ARGS.gap_root) and os.path.isdir(_ARGS.gap_root)): - sys.exit('\033[31mcode-coverage-test-c.py: error: can\'t find gap root' + - ' directory!\033[0m') -if (_ARGS.pkg != None and not (os.path.exists(_ARGS.pkg) and - os.path.isdir(_ARGS.pkg))): - sys.exit('\033[31mcode-coverage-test-c.py: error: can\'t find the pkg' + - ' directory %s\033[0m' % _ARGS.pkg) -for f in _ARGS.files: - if not (os.path.exists(f) and os.path.isfile(f)): - sys.exit('\033[31mcode-coverage-test-c.py: error: ' + f + - ' does not exist!\033[0m') - -_DIR = tempfile.mkdtemp() -print('\033[35musing temporary directory: ' + _DIR + '\033[0m') - -_COMMANDS = 'echo "' -for f in _ARGS.files: - _COMMANDS += 'Test(\\"' + f + '\\");;' -_COMMANDS += '"' - -# TODO build if files changed since last build or built with the wrong flags, -# by looking in config.log - -# for source in : -# if time.ctime(os.path.getmtime(file)) - -if _ARGS.build: - cwd = os.getcwd() - os.chdir(_ARGS.gap_root) - exec_string('''rm -rf bin/ && \ - make clean && \ - ./configure CFLAGS="-O0 -g --coverage" \ - CXXFLAGS="-O0 -g --coverage" \ - LDFLAGS="-O0 -g --coverage" && \ - make -j8''') - if _ARGS.pkg != None: - os.chdir(_ARGS.pkg) - exec_string('rm -rf bin/ && \ - make clean && \ - ./configure CFLAGS="-O0 -g --coverage" \ - CXXFLAGS="-O0 -g --coverage" \ - LDFLAGS="-O0 -g --coverage" && \ - make -j8''') - os.chdir(cwd) - -pro1 = subprocess.Popen(_COMMANDS, stdout=subprocess.PIPE, shell=True) -_RUN_GAP = _ARGS.gap_root + 'bin/gap.sh -A -m 1g -T' - -try: - pro2 = subprocess.Popen(_RUN_GAP, - stdin=pro1.stdout, - shell=True) - pro2.wait() - print('') -except KeyboardInterrupt: - pro1.terminate() - pro1.wait() - pro2.terminate() - pro2.wait() - print('\033[31mKilled!\033[0m') - sys.exit(1) -except Exception: - sys.exit('\033[31mcode-coverage-test-c.py: error: something went wrong ' - + 'calling GAP!\033[0m''') -if _ARGS.pkg != None: - exec_string('lcov --capture --directory ' + _ARGS.pkg + - '/src --output-file ' + _DIR + '/lcov.info') -else: - exec_string('lcov --capture --directory ' + _ARGS.gap_root + - '/src --output-file ' + _DIR + '/lcov.info') - -exec_string('genhtml ' + _DIR + '/lcov.info --output-directory ' + _DIR + - '/lcov-out') - -filename = _DIR + '/lcov-out/' -if _ARGS.open: - filename += _ARGS.open + '.gcov.html' -else: - filename += '/index.html' - -if exists(filename) and isfile(filename): - if _ARGS.open and _ARGS.line: - filename += '#' + _ARGS.line - print('file://' + filename) - try: - webbrowser.get('chrome').open('file://' + filename, new=2) - except Exception: - webbrowser.open('file://' + filename, new=2) -else: - sys.exit('\n' + _ERR_PREFIX + 'Failed to open file://' + filename + - '\033[0m') - -print('\n\033[32mSUCCESS!\033[0m') -sys.exit(0) From 86a5724a0f840346113d67710026fe922a51dc1f Mon Sep 17 00:00:00 2001 From: Codex OpenAI Date: Tue, 29 Sep 2026 17:28:05 +0100 Subject: [PATCH 09/15] Fix GraphvizColoredEdgeLabelledDigraph for parallel edges --- gap/display.gi | 20 +++++++++++--------- tst/standard/weights.tst | 7 +++++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gap/display.gi b/gap/display.gi index 8cb91d18c..d230e9db7 100644 --- a/gap/display.gi +++ b/gap/display.gi @@ -192,17 +192,19 @@ InstallMethod(GraphvizColoredEdgeLabelledDigraph, "for a digraph, vertex colors, edge colors, and edge labels", [IsDigraph, IsList, IsList, IsList], function(D, n_colors, e_colors, weights) - local gv, head, tail, edge, pos; + local gv, out, edge, v, i; - gv := GraphvizColoredDigraph(D, n_colors, e_colors); - for edge in GraphvizEdges(gv) do - # TODO the next two lines are a bit fragile - head := Int(GraphvizName(GraphvizHead(edge))); - tail := Int(GraphvizName(GraphvizTail(edge))); + DIGRAPHS_ErrorIfNotEdgeColoring(D, e_colors); + gv := GraphvizVertexColoredDigraph( + NullDigraph(DigraphNrVertices(D)), n_colors); + out := OutNeighbours(D); - # TODO the next line is not amazing - pos := Position(OutNeighboursOfVertex(D, head), tail); - GraphvizSetAttr(edge, "label", weights[head][pos]); + for v in DigraphVertices(D) do + for i in [1 .. Length(out[v])] do + edge := GraphvizAddEdge(gv, v, out[v][i]); + GraphvizSetAttr(edge, "color", e_colors[v][i]); + GraphvizSetAttr(edge, "label", weights[v][i]); + od; od; return gv; end); diff --git a/tst/standard/weights.tst b/tst/standard/weights.tst index 3fa664282..8963587c9 100644 --- a/tst/standard/weights.tst +++ b/tst/standard/weights.tst @@ -526,6 +526,13 @@ digraph hgn { 1 -> 2 [color=black, label=10] } +# Parallel edges and loops retain distinct weights when highlighting a path. +gap> gr := EdgeWeightedDigraph([[1, 2, 1, 2], []], [[3, 10, 7, 20], []]);; +gap> path := [[1, 2], [4]];; +gap> List(GraphvizEdges(GraphvizEdgeWeightedDigraph(gr, path)), +> e -> [GraphvizAttrs(e)["color"], GraphvizAttrs(e)["label"]]); +[ [ "black", "3" ], [ "black", "10" ], [ "black", "7" ], [ "blue", "20" ] ] + # Cycle example gap> gr := EdgeWeightedDigraph(CycleDigraph(5), [[10], [4], [8], [2], [8]]);; gap> path := DigraphPath(gr, 3, 1); From db8333983b8046e77d827cd2a8108d28d903b390 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 17:30:47 +0100 Subject: [PATCH 10/15] Retain loops in graphs --- gap/display.gi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gap/display.gi b/gap/display.gi index d230e9db7..66b70d2b5 100644 --- a/gap/display.gi +++ b/gap/display.gi @@ -49,7 +49,7 @@ function(D) od; for x in DigraphVertices(D) do for y in OutNeighboursOfVertexNC(D, x) do - if x > y then + if x >= y then GraphvizAddEdge(gv, x, y); fi; od; @@ -118,7 +118,7 @@ function(D, gv, colors) out := OutNeighbours(D); for n in DigraphVertices(D) do for i in [1 .. Length(out[n])] do - if IsGraphvizDigraph(gv) or n > out[n][i] then + if IsGraphvizDigraph(gv) or n >= out[n][i] then e := GraphvizAddEdge(gv, n, out[n][i]); GraphvizSetAttr(e, "color", colors[n][i]); fi; @@ -302,7 +302,7 @@ function(D, gv, hi_verts, hi, lo) for i in DigraphVertices(D) do for j in out[i] do - if IsGraphvizDigraph(gv) or i > j then + if IsGraphvizDigraph(gv) or i >= j then edge := GraphvizAddEdge(gv, nodes[i], nodes[j]); if i in hi_verts and j in hi_verts then color := hi; From b274e5364dcbe38d122e296a342fcfd0df4db4c2 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 17:32:13 +0100 Subject: [PATCH 11/15] Bump GAP to 4.12 --- PackageInfo.g | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PackageInfo.g b/PackageInfo.g index 10edf45a1..0f4be548b 100644 --- a/PackageInfo.g +++ b/PackageInfo.g @@ -568,7 +568,7 @@ PackageDoc := rec( ), Dependencies := rec( - GAP := ">=4.11.0", + GAP := ">=4.12.0", NeededOtherPackages := [["IO", ">=4.5.1"], ["orb", ">=4.8.2"], ["GraphvizForGAP", ">=0.0.0"], From da4fd0c019bc06b78c0caa246be0bebce4035f2a Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 17:34:38 +0100 Subject: [PATCH 12/15] Reenable highlighting multidigraphs --- gap/display.gi | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/gap/display.gi b/gap/display.gi index 66b70d2b5..833754a4c 100644 --- a/gap/display.gi +++ b/gap/display.gi @@ -276,9 +276,7 @@ BindGlobal("DIGRAPHS_GraphvizHighlight", function(D, gv, hi_verts, hi, lo) local node, color, out, nodes, edge, v, i, j; - if IsMultiDigraph(D) then - ErrorNoReturn("the 1st argument (a digraph) must not have multiple edges"); - elif not IsSubset(DigraphVertices(D), hi_verts) then + if not IsSubset(DigraphVertices(D), hi_verts) then ErrorNoReturn("the 2nd argument (list) must consist of vertices ", "of the 1st argument (a digraph)"); fi; From 602ee1048e39da2ffe870662d4e31034ba52ab52 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Tue, 29 Sep 2026 17:39:47 +0100 Subject: [PATCH 13/15] Update test output --- doc/display.xml | 2 +- tst/standard/display.tst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/display.xml b/doc/display.xml index 69e3e6794..26d16200d 100644 --- a/doc/display.xml +++ b/doc/display.xml @@ -438,7 +438,7 @@ gap> GraphvizHighlightedDigraph(D, [1, 2], "red", "black"); gap> D := DigraphSymmetricClosure(D); gap> GraphvizHighlightedGraph(D, [1, 2], "red", "black"); -]]> +]]> <#/GAPDoc> diff --git a/tst/standard/display.tst b/tst/standard/display.tst index a8fc3fabe..a6d09ee31 100644 --- a/tst/standard/display.tst +++ b/tst/standard/display.tst @@ -72,7 +72,7 @@ gap> DotDigraph(gr2){[11 .. 75]}; "aph hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t1 -> 2\n\t2 -> 1\n\t\ 2 ->" gap> DotSymmetricDigraph(gr2){[12 .. 70]}; -" hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t2 -- 1\n\t3 -- 2\n\t4" +" hgn {\n\tnode [shape=circle] \n\t1\n\t2\n\t3\n\t4\n\t2 -- 1\n\t3 -- 2\n\t3" gap> DotSymmetricDigraph(gr1); Error, the argument (a digraph) must be symmetric @@ -680,7 +680,7 @@ gap> GraphvizHighlightedGraph(ChainDigraph(3), [1, 2], "red", "blue"); Error, the argument (a digraph) must be symmetric gap> D := Digraph([[], [1, 1]]);; gap> GraphvizHighlightedDigraph(D, [2]); -Error, the 1st argument (a digraph) must not have multiple edges + # DIGRAPHS_UnbindVariables gap> Unbind(D); From a4377b834461bc8705296cdc0a5ed3bf2e8c4936 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Wed, 30 Sep 2026 09:16:27 +0100 Subject: [PATCH 14/15] ci: remove gap-4.11 special case --- .github/workflows/ubuntu.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 5cce2c273..f0d4dd244 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -41,11 +41,6 @@ jobs: pkgs-to-clone: https://github.com/digraphs/graphviz.git https://github.com/gap-packages/NautyTracesInterface.git pkgs-to-build: io orb datastructures profiling grape NautyTracesInterface - - gap-version: v4.11 # Note: NautyTracesInterface requires GAP 4.12 - mode: default # There wouldn't be much point testing GAP v4.11 with only needed packages. The only difference is whether Grape is loaded. - pkgs-to-clone: https://github.com/digraphs/graphviz.git - pkgs-to-build: io* orb* datastructures* profiling* grape* - steps: - uses: actions/checkout@v7 - name: Output g++ version . . . From 17baf4091bb7b9ac1f6dece98eb20699f9f5e099 Mon Sep 17 00:00:00 2001 From: Codex OpenAI Date: Wed, 30 Sep 2026 09:50:15 +0100 Subject: [PATCH 15/15] ci: fix manuaul.yml --- .github/workflows/manual.yml | 7 +++++++ README.md | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index f487b0287..1f4bf16e6 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -38,7 +38,14 @@ jobs: - uses: gap-actions/setup-gap@v3 with: gap-version: latest + - name: Build GraphvizForGAP manual . . . + run: | + git clone https://github.com/digraphs/graphviz.git "${GAPROOT}/pkg/graphviz" + cd "${GAPROOT}/pkg/graphviz" + NOPDF=1 $GAP makedoc.g - uses: gap-actions/build-pkg-docs@v2 + with: + use-latex: true - name: Upload compiled manuals . . . uses: actions/upload-artifact@v7 with: diff --git a/README.md b/README.md index ac6707a7b..21fdbab41 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ For questions, remarks, suggestions, and issues please use the ## Installation It is assumed that you have a working copy of [GAP][] with version number -4.11.0 or higher. The most up-to-date version of GAP, and instructions on how +4.12.0 or higher. The most up-to-date version of GAP, and instructions on how to install it, can be obtained from the [main GAP webpage](https://www.gap-system.org).