From 8a42226350bbcd0ab73f5f0fa62e75c69f5f912e Mon Sep 17 00:00:00 2001 From: Robert van Engelen Date: Thu, 18 Apr 2024 13:32:26 -0400 Subject: [PATCH] released 1.0 - refactored autotools usage - updated manual page - changed default accuracy to 4 from 5 - loads a .ugrep-indexer configuration file from the working or home directory - outputs current indexing settings/options - improved final indexing stats reporting - option --check when used with --quiet is now quiet --- Makefile.in | 15 +- README.md | 10 +- aclocal.m4 | 40 +- bin/win32/ugrep-indexer.exe | Bin 595968 -> 601088 bytes bin/win64/ugrep-indexer.exe | Bin 684544 -> 688128 bytes config.h.in | 10 + configure | 2994 ++++++++++++++++++++++---------- configure.ac | 10 +- lzma/C/Makefile.am | 48 +- lzma/C/Makefile.in | 70 +- m4/ax_cxx_compile_stdcxx_11.m4 | 39 - m4/ax_pthread.m4 | 522 ++++++ man.sh | 112 +- man/ugrep-indexer.1 | 121 +- src/Makefile.am | 2 +- src/Makefile.in | 32 +- src/input.cpp | 2 +- src/{ => reflex}/input.h | 0 src/{ => reflex}/utf8.h | 0 src/ugrep-indexer.cpp | 630 ++++--- 20 files changed, 3328 insertions(+), 1329 deletions(-) delete mode 100644 m4/ax_cxx_compile_stdcxx_11.m4 create mode 100644 m4/ax_pthread.m4 rename src/{ => reflex}/input.h (100%) rename src/{ => reflex}/utf8.h (100%) diff --git a/Makefile.in b/Makefile.in index a1021e0..11b29c9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -98,8 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_brotlilib.m4 \ $(top_srcdir)/m4/ax_check_zlib.m4 \ $(top_srcdir)/m4/ax_check_zstdlib.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ - $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ @@ -233,9 +232,9 @@ am__relativize = \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best -DIST_TARGETS = dist-gzip +DIST_ARCHIVES = $(distdir).tar.xz +DIST_TARGETS = dist-xz # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print @@ -253,6 +252,7 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ @@ -265,9 +265,11 @@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ +EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXTRA_CFLAGS = @EXTRA_CFLAGS@ +GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -291,9 +293,12 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLATFORM = @PLATFORM@ +PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CXX = @PTHREAD_CXX@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -310,6 +315,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -631,7 +637,6 @@ dist-bzip2: distdir dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) - dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) diff --git a/README.md b/README.md index 64d3004..087ad3c 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ mounting again to clear FS cache to record the effect of indexing: src/ugrep.cpp Searched 1317 files in 28 directories in 0.0487 seconds with 8 threads: 1 matching (0.07593%) - Skipped 1316 of 1317 files with indexes not matching any search patterns + Skipped 1316 of 1317 files with non-matching indexes There is always some variance in the elapsed time with 0.0487 seconds the best time of four search runs that produced a search time range of 0.0487 (21x speed @@ -107,7 +107,7 @@ Indexed search is still a lot faster by 12x than non-indexed for this example, with 16 files actually searched (15 false positives): Searched 1317 files in 28 directories in 0.0722 seconds with 8 threads: 1 matching (0.07593%) - Skipped 1301 of 1317 files with indexes not matching any search patterns + Skipped 1301 of 1317 files with non-matching indexes Regex patterns that are more complex than this example may have a higher false positive rate naturally, which is the rate of files that are considered @@ -149,8 +149,8 @@ slightly longer search times: | `-8` | 0 | unch | | `-9` | 0 | unch | -Accucacy `-5` is the default, which tends to work very well to search with -regex patterns of modest complexity. +Accuracy `-4` is the default (from `-5` previously in older releases), which +tends to work very well to search with regex patterns of modest complexity. One word of caution. There is always a tiny bit of overhead to check the indexes. This means that if all files are already cached in RAM, because files @@ -255,7 +255,7 @@ files. The size of the index files depends on the specified accuracy, with `-0` the lowest (small index files) and `-9` the highest (large index files). The -default accuracy is `-5`. See the next Q for details on the impact of accuracy +default accuracy is `-4`. See the next Q for details on the impact of accuracy on indexing size versus search speed. Indexing *never follows symbolic links to directories*, because symbolically diff --git a/aclocal.m4 b/aclocal.m4 index a071ced..3f85835 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -20,44 +20,6 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# =========================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_REQUIRE_DEFINED(MACRO) -# -# DESCRIPTION -# -# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have -# been defined and thus are available for use. This avoids random issues -# where a macro isn't expanded. Instead the configure script emits a -# non-fatal: -# -# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found -# -# It's like AC_REQUIRE except it doesn't expand the required macro. -# -# Here's an example: -# -# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) -# -# LICENSE -# -# Copyright (c) 2014 Mike Frysinger -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 2 - -AC_DEFUN([AX_REQUIRE_DEFINED], [dnl - m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) -])dnl AX_REQUIRE_DEFINED - # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation @@ -1254,4 +1216,4 @@ m4_include([m4/ax_check_lzmalib.m4]) m4_include([m4/ax_check_zlib.m4]) m4_include([m4/ax_check_zstdlib.m4]) m4_include([m4/ax_cxx_compile_stdcxx.m4]) -m4_include([m4/ax_cxx_compile_stdcxx_11.m4]) +m4_include([m4/ax_pthread.m4]) diff --git a/bin/win32/ugrep-indexer.exe b/bin/win32/ugrep-indexer.exe index c091a8631e776fe0e9c43a4a055b5431f0178763..f7159c64d686064512bb1201ca9435b31ad8a57e 100755 GIT binary patch delta 115854 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
nZ3xHPX>@Cnkj$E-E=llpP@CkM@G|VK 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 z%0D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 diff --git a/bin/win64/ugrep-indexer.exe b/bin/win64/ugrep-indexer.exe index cf3c187bfa551f2f1a39567ba7d604160e1f1af3..1a9e857b6820083d6bc4238b406d7e9244edc8ec 100755 GIT binary patch delta 141742 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 delta 137748 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

Ds$*hpm(Zzl_?6+_Su~n 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 header file, and it defines `DIR'. */ #undef HAVE_NDIR_H +/* Define if you have POSIX threads libraries and header files. */ +#undef HAVE_PTHREAD + +/* Have PTHREAD_PRIO_INHERIT. */ +#undef HAVE_PTHREAD_PRIO_INHERIT + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -111,6 +117,10 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +#undef PTHREAD_CREATE_JOINABLE + /* Define to 1 if all of the C90 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ diff --git a/configure b/configure index 3a6267a..c50f17e 100755 --- a/configure +++ b/configure @@ -1,6 +1,8 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for ugrep-indexer 0.9. +# Generated by GNU Autoconf 2.71 for ugrep-indexer 1.0.0. +# +# Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, @@ -182,7 +184,8 @@ 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 \"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 @@ -266,10 +269,11 @@ 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." + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: https://github.com/Genivia/ugrep-indexer/issues about +$0: your system, including any error possibly output before +$0: this message. Then install a modern shell, or manually +$0: run the script under such a shell if you do have one." fi exit 1 fi @@ -608,11 +612,11 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ugrep-indexer' -PACKAGE_TARNAME='ugrep-indexer' -PACKAGE_VERSION='0.9' -PACKAGE_STRING='ugrep-indexer 0.9' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' +PACKAGE_TARNAME='ugrep' +PACKAGE_VERSION='1.0.0' +PACKAGE_STRING='ugrep-indexer 1.0.0' +PACKAGE_BUGREPORT='https://github.com/Genivia/ugrep-indexer/issues' +PACKAGE_URL='https://ugrep.com' # Factoring default headers for most tests. ac_includes_default="\ @@ -650,30 +654,37 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS -PTHREAD_LIBS -PTHREAD_CFLAGS EXTRA_CFLAGS ENABLE_7ZIP_FALSE ENABLE_7ZIP_TRUE PLATFORM -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build LN_S RANLIB +ac_ct_AR +AR +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CXX +PTHREAD_CC +ax_pthread_config +EGREP +GREP +CPP +SED am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC -ac_ct_AR -AR +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build HAVE_CXX11 am__fastdepCXX_FALSE am__fastdepCXX_TRUE @@ -785,7 +796,8 @@ LIBS CPPFLAGS CCC CC -CFLAGS' +CFLAGS +CPP' # Initialize some variables set by options. @@ -1334,7 +1346,7 @@ 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 ugrep-indexer 0.9 to adapt to many kinds of systems. +\`configure' configures ugrep-indexer 1.0.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1383,7 +1395,7 @@ Fine tuning of the installation directories: --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/ugrep-indexer] + --docdir=DIR documentation root [DATAROOTDIR/doc/ugrep] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] @@ -1405,7 +1417,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ugrep-indexer 0.9:";; + short | recursive ) echo "Configuration of ugrep-indexer 1.0.0:";; esac cat <<\_ACEOF @@ -1459,11 +1471,13 @@ Some influential environment variables: you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags + CPP C preprocessor 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. +Report bugs to . +ugrep-indexer home page: . _ACEOF ac_status=$? fi @@ -1527,7 +1541,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ugrep-indexer configure 0.9 +ugrep-indexer configure 1.0.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1689,6 +1703,130 @@ printf "%s\n" "$ac_res" >&6; } } # ac_fn_cxx_check_member +# 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 $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_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 $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +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_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +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_cpp conftest.$ac_ext") 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; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -1779,92 +1917,6 @@ printf "%s\n" "$ac_res" >&6; } } # ac_fn_cxx_check_type -# 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 $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_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 $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -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 @@ -1921,7 +1973,7 @@ 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 ugrep-indexer $as_me 0.9, which was +It was created by ugrep-indexer $as_me 1.0.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -2408,15 +2460,6 @@ main (int argc, char **argv) } " -as_fn_append ac_header_cxx_list " stdio.h stdio_h HAVE_STDIO_H" -as_fn_append ac_header_cxx_list " stdlib.h stdlib_h HAVE_STDLIB_H" -as_fn_append ac_header_cxx_list " string.h string_h HAVE_STRING_H" -as_fn_append ac_header_cxx_list " inttypes.h inttypes_h HAVE_INTTYPES_H" -as_fn_append ac_header_cxx_list " stdint.h stdint_h HAVE_STDINT_H" -as_fn_append ac_header_cxx_list " strings.h strings_h HAVE_STRINGS_H" -as_fn_append ac_header_cxx_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" -as_fn_append ac_header_cxx_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" -as_fn_append ac_header_cxx_list " unistd.h unistd_h HAVE_UNISTD_H" # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? @@ -2725,9 +2768,18 @@ main (int argc, char **argv) } " +as_fn_append ac_header_cxx_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_cxx_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_cxx_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_cxx_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_cxx_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_cxx_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_cxx_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_cxx_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_cxx_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. -ac_aux_files="config.guess config.sub compile ar-lib missing install-sh" +ac_aux_files="ar-lib compile config.guess config.sub missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." @@ -3405,8 +3457,8 @@ fi # Define the identity of the package. - PACKAGE='ugrep-indexer' - VERSION='0.9' + PACKAGE='ugrep' + VERSION='1.0.0' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -4932,129 +4984,106 @@ fi -ac_header= ac_cache= -for ac_item in $ac_header_cxx_list -do - if test $ac_cache; then - ac_fn_cxx_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 -ac_fn_cxx_check_member "$LINENO" "struct stat" "st_atim" "ac_cv_member_struct_stat_st_atim" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_atim" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM 1" >>confdefs.h - - -fi -ac_fn_cxx_check_member "$LINENO" "struct stat" "st_mtim" "ac_cv_member_struct_stat_st_mtim" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_mtim" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIM 1" >>confdefs.h + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 -fi -ac_fn_cxx_check_member "$LINENO" "struct stat" "st_ctim" "ac_cv_member_struct_stat_st_ctim" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_ctim" = xyes +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_CTIM 1" >>confdefs.h - + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi - -ac_fn_cxx_check_member "$LINENO" "struct stat" "st_atimespec" "ac_cv_member_struct_stat_st_atimespec" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_atimespec" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMESPEC 1" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -fi -ac_fn_cxx_check_member "$LINENO" "struct stat" "st_mtimespec" "ac_cv_member_struct_stat_st_mtimespec" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_mtimespec" = xyes +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIMESPEC 1" >>confdefs.h - - + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi -ac_fn_cxx_check_member "$LINENO" "struct stat" "st_ctimespec" "ac_cv_member_struct_stat_st_ctimespec" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_ctimespec" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_CTIMESPEC 1" >>confdefs.h - fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes -then : -else $as_nop -printf "%s\n" "#define size_t unsigned int" >>confdefs.h -fi -ac_fn_cxx_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -if test "x$ac_cv_type_ssize_t" = xyes -then : -else $as_nop -printf "%s\n" "#define ssize_t int" >>confdefs.h -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 -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 +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_CXX+y} +if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. + 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 @@ -5067,7 +5096,7 @@ do 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" + 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 @@ -5077,33 +5106,29 @@ IFS=$as_save_IFS fi 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; } +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 "$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 +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_CXX+y} +if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + 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 @@ -5116,7 +5141,7 @@ do 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" + 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 @@ -5126,21 +5151,17 @@ IFS=$as_save_IFS fi 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; } +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_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" + if test "x$ac_ct_CC" = x; then + CC="" else case $cross_compiling:$ac_tool_warned in yes:) @@ -5148,88 +5169,418 @@ yes:) 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 - + CC=$ac_ct_CC fi +else + CC="$ac_cv_prog_CC" 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} +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 $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} + 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 +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 $as_nop + 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 +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 $as_nop + 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 +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 $as_nop + 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 +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 $as_nop + 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 +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 $as_nop + 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 +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 + +{ 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 $as_nop + 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" +if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu +ac_cv_c_compiler_gnu=$ac_compiler_gnu 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 +{ 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 - GXX=yes + GCC=yes else - GXX= + GCC= 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} +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 $as_nop - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" + 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. */ @@ -5241,11 +5592,11 @@ main (void) return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" +if ac_fn_c_try_compile "$LINENO" then : - ac_cv_prog_cxx_g=yes + ac_cv_prog_cc_g=yes else $as_nop - CXXFLAGS="" + CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5257,12 +5608,12 @@ main (void) return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" +if ac_fn_c_try_compile "$LINENO" then : else $as_nop - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5274,125 +5625,171 @@ main (void) return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" +if ac_fn_c_try_compile "$LINENO" then : - ac_cv_prog_cxx_g=yes + ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag + ac_c_werror_flag=$ac_save_c_werror_flag 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" +{ 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 - CXXFLAGS="-g" + CFLAGS="-g" fi else - if test "$GXX" = yes; then - CXXFLAGS="-O2" + if test "$GCC" = yes; then + CFLAGS="-O2" else - CXXFLAGS= + CFLAGS= fi fi -ac_prog_cxx_stdcxx=no -if test x$ac_prog_cxx_stdcxx = xno +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = 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_11+y} + { 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 $as_nop - ac_cv_prog_cxx_11=no -ac_save_CXX=$CXX + ac_cv_prog_cc_c11=no +ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program +$ac_c_conftest_c11_program _ACEOF -for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +for ac_arg in '' -std=gnu11 do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" then : - ac_cv_prog_cxx_cxx11=$ac_arg + ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break + test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext -CXX=$ac_save_CXX +CC=$ac_save_CC fi -if test "x$ac_cv_prog_cxx_cxx11" = xno +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 $as_nop - if test "x$ac_cv_prog_cxx_cxx11" = x + 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 $as_nop - { 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" + { 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" fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_prog_cxx_stdcxx=cxx11 + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 fi fi -if test x$ac_prog_cxx_stdcxx = xno +if test x$ac_prog_cc_stdc = 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_98+y} + { 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 $as_nop - ac_cv_prog_cxx_98=no -ac_save_CXX=$CXX + ac_cv_prog_cc_c99=no +ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program +$ac_c_conftest_c99_program _ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" + 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 +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 $as_nop + 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 $as_nop + { 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" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +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 $as_nop + 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_cxx_cxx98=$ac_arg + ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break + test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext -CXX=$ac_save_CXX +CC=$ac_save_CC fi -if test "x$ac_cv_prog_cxx_cxx98" = xno +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 $as_nop - if test "x$ac_cv_prog_cxx_cxx98" = x + 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 $as_nop - { 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" + { 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" fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 - ac_prog_cxx_stdcxx=cxx98 + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 fi fi @@ -5402,11 +5799,72 @@ 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 -depcc="$CXX" am_compiler_list= + + 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 whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +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 + + +depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } -if test ${am_cv_CXX_dependencies_compiler_type+y} +if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop @@ -5430,7 +5888,7 @@ else $as_nop # directory. mkdir sub - am_cv_CXX_dependencies_compiler_type=none + am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi @@ -5503,59 +5961,658 @@ else $as_nop # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode + am_cv_CC_dependencies_compiler_type=$depmode break fi fi done - cd .. - rm -rf conftest.dir + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +{ 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 $as_nop + 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 + +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 + + +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 how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { 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 $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +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 + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_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$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_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" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "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_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_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_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_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$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_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" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "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_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_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_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else - am_cv_CXX_dependencies_compiler_type=none + ac_cv_path_EGREP=$EGREP fi + fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= + + + + + +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 + +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + if test "x$PTHREAD_CC" != "x" +then : + CC="$PTHREAD_CC" +fi + if test "x$PTHREAD_CXX" != "x" +then : + CXX="$PTHREAD_CXX" +fi + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 +printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } + 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. */ +char pthread_join (); +int +main (void) +{ +return pthread_join (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_pthread_ok=yes +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: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" fi +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) +case $host_os in + freebsd*) + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + hpux*) -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 + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 +printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} +fi +rm -rf conftest* + + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" + ;; +esac + +# Are we compiling with Clang? + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 +printf %s "checking whether $CC is Clang... " >&6; } +if test ${ax_cv_PTHREAD_CLANG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 +then : + ax_cv_PTHREAD_CLANG=yes +fi +rm -rf conftest* + + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + +if test "x$GCC" = "xyes" +then : + ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags" +fi + +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +if test "x$ax_pthread_clang" = "xyes" +then : + ax_pthread_flags="-pthread,-lpthread -pthread" +fi + + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +if test "x$ax_pthread_check_macro" = "x--" +then : + ax_pthread_check_cond=0 +else $as_nop + ax_pthread_check_cond="!defined($ax_pthread_check_macro)" +fi + + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +printf %s "checking whether pthreads work without any flags... " >&6; } + ;; + + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 +printf %s "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } + ;; + + -*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 +printf %s "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + # Extract the first word of "pthread-config", so it can be a program name with args. +set dummy pthread-config; 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} +if test ${ac_cv_prog_ax_pthread_config+y} then : printf %s "(cached) " >&6 else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. + if test -n "$ax_pthread_config"; then + ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -5568,7 +6625,7 @@ do 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" + ac_cv_prog_ax_pthread_config="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5576,89 +6633,352 @@ done done IFS=$as_save_IFS + test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" fi 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; } +ax_pthread_config=$ac_cv_prog_ax_pthread_config +if test -n "$ax_pthread_config"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 +printf "%s\n" "$ax_pthread_config" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi + if test "x$ax_pthread_config" = "xno" +then : + continue +fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 +printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } + static void *start_routine(void *a) { return a; } +int +main (void) +{ +pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_pthread_ok=yes 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} +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xyes" +then : + break +fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 +printf %s "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } +if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} then : printf %s "(cached) " >&6 else $as_nop - 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 + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`printf "%s\n" "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + if test "x$ax_pthread_try" = "xunknown" +then : + break +fi + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_link="$ax_pthread_2step_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + if test "x$ax_pthread_try" = "x" +then : + ax_pthread_try=no +fi + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +printf %s "checking for joinable pthread attribute... " >&6; } +if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +int attr = $ax_pthread_attr; return attr /* ; */ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + done + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 +printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } + if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes" +then : + +printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR" >>confdefs.h + + ax_pthread_joinable_attr_defined=yes + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 +printf %s "checking whether more special flags are required for pthreads... " >&6; } +if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $host_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 +printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } + if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes" +then : + PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes +fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 +printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } +if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +int i = PTHREAD_PRIO_INHERIT; + return i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_PTHREAD_PRIO_INHERIT=yes +else $as_nop + ax_cv_PTHREAD_PRIO_INHERIT=no fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + 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; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 +printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } + if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes" +then : + +printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h + + ax_pthread_prio_inherit_defined=yes + 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" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $host_os in + aix*) + case "x/$CC" in #( + x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) : + #handle absolute path differently from PATH based program lookup + case "x$CC" in #( + x/*) : + + if as_fn_executable_p ${CC}_r +then : + PTHREAD_CC="${CC}_r" +fi + if test "x${CXX}" != "x" +then : + if as_fn_executable_p ${CXX}_r +then : + PTHREAD_CXX="${CXX}_r" +fi 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 + for ac_prog in ${CC}_r +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_CC+y} +if test ${ac_cv_prog_PTHREAD_CC+y} then : printf %s "(cached) " >&6 else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -5671,7 +6991,7 @@ do 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" + ac_cv_prog_PTHREAD_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5681,31 +7001,35 @@ IFS=$as_save_IFS fi 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; } +PTHREAD_CC=$ac_cv_prog_PTHREAD_CC +if test -n "$PTHREAD_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +printf "%s\n" "$PTHREAD_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 + test -n "$PTHREAD_CC" && break +done +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" + + if test "x${CXX}" != "x" +then : + for ac_prog in ${CXX}_r +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_CC+y} +if test ${ac_cv_prog_PTHREAD_CXX+y} then : printf %s "(cached) " >&6 else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. + if test -n "$PTHREAD_CXX"; then + ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. else - ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do @@ -5717,11 +7041,7 @@ do 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" + ac_cv_prog_PTHREAD_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5729,155 +7049,184 @@ 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 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; } +PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX +if test -n "$PTHREAD_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 +printf "%s\n" "$PTHREAD_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi + test -n "$PTHREAD_CXX" && break +done +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + +fi + + ;; +esac + ;; #( + *) : + ;; +esac + ;; + esac + 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 $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + +printf "%s\n" "#define HAVE_PTHREAD 1" >>confdefs.h + + : else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH + ax_pthread_ok=no + +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 + + + +ac_header= ac_cache= +for ac_item in $ac_header_cxx_list 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 + if test $ac_cache; then + ac_fn_cxx_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 - done -IFS=$as_save_IFS + + + + + + + + +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 +ac_fn_cxx_check_member "$LINENO" "struct stat" "st_atim" "ac_cv_member_struct_stat_st_atim" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_atim" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM 1" >>confdefs.h + + 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 +ac_fn_cxx_check_member "$LINENO" "struct stat" "st_mtim" "ac_cv_member_struct_stat_st_mtim" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_mtim" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIM 1" >>confdefs.h - 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} +ac_fn_cxx_check_member "$LINENO" "struct stat" "st_ctim" "ac_cv_member_struct_stat_st_ctim" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_ctim" = xyes then : - printf %s "(cached) " >&6 -else $as_nop - 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 + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_CTIM 1" >>confdefs.h + fi + +ac_fn_cxx_check_member "$LINENO" "struct stat" "st_atimespec" "ac_cv_member_struct_stat_st_atimespec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_atimespec" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMESPEC 1" >>confdefs.h + + 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; } +ac_fn_cxx_check_member "$LINENO" "struct stat" "st_mtimespec" "ac_cv_member_struct_stat_st_mtimespec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_mtimespec" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIMESPEC 1" >>confdefs.h + + fi +ac_fn_cxx_check_member "$LINENO" "struct stat" "st_ctimespec" "ac_cv_member_struct_stat_st_ctimespec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_ctimespec" = xyes +then : +printf "%s\n" "#define HAVE_STRUCT_STAT_ST_CTIMESPEC 1" >>confdefs.h - 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 + +ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + 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 + +ac_fn_cxx_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define ssize_t int" >>confdefs.h + +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 +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_CC+y} +if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. + 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 @@ -5890,7 +7239,7 @@ do 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" + 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 @@ -5900,29 +7249,33 @@ IFS=$as_save_IFS fi 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; } +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 "$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 +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_CC+y} +if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + 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 @@ -5935,7 +7288,7 @@ do 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" + 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 @@ -5945,17 +7298,21 @@ IFS=$as_save_IFS fi 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; } +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 - if test "x$ac_ct_CC" = x; then - CC="" + + 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:) @@ -5963,25 +7320,17 @@ yes:) printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - CC=$ac_ct_CC + CXX=$ac_ct_CXX fi -else - CC="$ac_cv_prog_CC" fi + 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 +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 +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;; @@ -6002,9 +7351,9 @@ printf "%s\n" "$ac_try_echo"; } >&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_c_compiler_gnu+y} +{ 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 $as_nop @@ -6022,37 +7371,37 @@ main (void) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" +if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu 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 +{ 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 - GCC=yes + GXX=yes else - GCC= + GXX= 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} +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 $as_nop - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" + 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. */ @@ -6064,11 +7413,11 @@ main (void) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" +if ac_fn_cxx_try_compile "$LINENO" then : - ac_cv_prog_cc_g=yes + ac_cv_prog_cxx_g=yes else $as_nop - CFLAGS="" + CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6080,12 +7429,12 @@ main (void) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" +if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6097,246 +7446,139 @@ main (void) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" +if ac_fn_cxx_try_compile "$LINENO" then : - ac_cv_prog_cc_g=yes + ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag + ac_cxx_werror_flag=$ac_save_cxx_werror_flag 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" +{ 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 - CFLAGS="-g" + CXXFLAGS="-g" fi else - if test "$GCC" = yes; then - CFLAGS="-O2" + if test "$GXX" = yes; then + CXXFLAGS="-O2" else - CFLAGS= + CXXFLAGS= 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 $as_nop - 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 -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 $as_nop - 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 $as_nop - { 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" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 -fi -fi -if test x$ac_prog_cc_stdc = xno +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = 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} + { 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_11+y} then : printf %s "(cached) " >&6 else $as_nop - ac_cv_prog_cc_c99=no -ac_save_CC=$CC + ac_cv_prog_cxx_11=no +ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_c_conftest_c99_program +$ac_cxx_conftest_cxx11_program _ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" then : - ac_cv_prog_cc_c99=$ac_arg + ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext -CC=$ac_save_CC +CXX=$ac_save_CXX fi -if test "x$ac_cv_prog_cc_c99" = xno +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 $as_nop - if test "x$ac_cv_prog_cc_c99" = x + 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 $as_nop - { 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" + { 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" fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 fi fi -if test x$ac_prog_cc_stdc = xno +if test x$ac_prog_cxx_stdcxx = 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} + { 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_98+y} then : printf %s "(cached) " >&6 else $as_nop - ac_cv_prog_cc_c89=no -ac_save_CC=$CC + ac_cv_prog_cxx_98=no +ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_c_conftest_c89_program +$ac_cxx_conftest_cxx98_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" then : - ac_cv_prog_cc_c89=$ac_arg + ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c89" != "xno" && break + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext -CC=$ac_save_CC +CXX=$ac_save_CXX fi -if test "x$ac_cv_prog_cc_c89" = xno +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 $as_nop - if test "x$ac_cv_prog_cc_c89" = x + 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 $as_nop - { 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" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 -fi + { 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" 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=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 whether $CC understands -c and -o together" >&5 -printf %s "checking whether $CC understands -c and -o together... " >&6; } -if test ${am_cv_prog_cc_c_o+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" 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 -depcc="$CC" am_compiler_list= +depcc="$CXX" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } -if test ${am_cv_CC_dependencies_compiler_type+y} +if test ${am_cv_CXX_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop @@ -6360,7 +7602,7 @@ else $as_nop # directory. mkdir sub - am_cv_CC_dependencies_compiler_type=none + am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi @@ -6433,7 +7675,7 @@ else $as_nop # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode + am_cv_CXX_dependencies_compiler_type=$depmode break fi fi @@ -6442,27 +7684,26 @@ else $as_nop cd .. rm -rf conftest.dir else - am_cv_CC_dependencies_compiler_type=none + am_cv_CXX_dependencies_compiler_type=none fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= fi - if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" do @@ -6763,80 +8004,6 @@ fi - # Make sure we can run config.sub. -$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -printf %s "checking build system type... " >&6; } -if test ${ac_cv_build+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -printf "%s\n" "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -printf %s "checking host system type... " >&6; } -if test ${ac_cv_host+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -printf "%s\n" "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - PLATFORM=${host} @@ -7820,10 +8987,6 @@ fi -PTHREAD_CFLAGS="" - -PTHREAD_LIBS="-lpthread" - ac_config_files="$ac_config_files Makefile src/Makefile lzma/C/Makefile" @@ -7961,14 +9124,14 @@ if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_7ZIP_TRUE}" && test -z "${ENABLE_7ZIP_FALSE}"; then as_fn_error $? "conditional \"ENABLE_7ZIP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -8363,7 +9526,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ugrep-indexer $as_me 0.9, which was +This file was extended by ugrep-indexer $as_me 1.0.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8423,7 +9586,8 @@ $config_headers Configuration commands: $config_commands -Report bugs to the package provider." +Report bugs to . +ugrep-indexer home page: ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` @@ -8431,7 +9595,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -ugrep-indexer config.status 0.9 +ugrep-indexer config.status 1.0.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index b133c9c..5429363 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ -AC_INIT([ugrep-indexer],[0.9]) -AM_INIT_AUTOMAKE([foreign]) +AC_INIT([ugrep-indexer],[1.0.0],[https://github.com/Genivia/ugrep-indexer/issues],[ugrep],[https://ugrep.com]) +AM_INIT_AUTOMAKE([foreign subdir-objects dist-xz no-dist-gzip]) AC_CONFIG_HEADERS([config.h]) AC_COPYRIGHT([Copyright (C) 2023 Robert van Engelen, Genivia Inc.]) @@ -10,12 +10,14 @@ AC_CONFIG_MACRO_DIR([m4]) : ${CFLAGS="-Wall -Wextra -Wunused -O2"} AC_LANG([C++]) -AX_CXX_COMPILE_STDCXX_11([ext], [mandatory]) +AX_CXX_COMPILE_STDCXX([11],[ext],[mandatory]) AC_HEADER_DIRENT AC_STRUCT_DIRENT_D_INO AC_STRUCT_DIRENT_D_TYPE +AX_PTHREAD + AC_CHECK_MEMBERS([struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim]) AC_CHECK_MEMBERS([struct stat.st_atimespec, struct stat.st_mtimespec, struct stat.st_ctimespec]) @@ -79,8 +81,6 @@ fi AM_CONDITIONAL([ENABLE_7ZIP],[test "x$with_7zip" = "xyes"]) AC_SUBST(EXTRA_CFLAGS) -AC_SUBST([PTHREAD_CFLAGS], [""]) -AC_SUBST([PTHREAD_LIBS], ["-lpthread"]) AC_CONFIG_FILES([Makefile src/Makefile lzma/C/Makefile]) diff --git a/lzma/C/Makefile.am b/lzma/C/Makefile.am index 5501636..4ce3a49 100644 --- a/lzma/C/Makefile.am +++ b/lzma/C/Makefile.am @@ -1,3 +1,47 @@ noinst_LIBRARIES = libviiz.a -libviiz_a_CPPFLAGS = -DZ7_PPMD_SUPPORT -DZ7_EXTRACT_ONLY -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -libviiz_a_SOURCES = viizip.h viizip.c 7z.h 7zAlloc.h 7zBuf.h 7zCrc.h 7zFile.h 7zTypes.h Bcj2.h Bra.h Compiler.h CpuArch.h Delta.h Lzma2Dec.h LzmaDec.h Ppmd.h Ppmd7.h Precomp.h RotateDefs.h 7zAlloc.c 7zArcIn.c 7zBuf.c 7zBuf2.c 7zCrc.c 7zCrcOpt.c 7zDec.c 7zFile.c 7zStream.c Bcj2.c Bra.c Bra86.c BraIA64.c CpuArch.c Delta.c Lzma2Dec.c LzmaDec.c Ppmd7.c Ppmd7Dec.c +libviiz_a_CPPFLAGS = \ + -DZ7_PPMD_SUPPORT \ + -DZ7_EXTRACT_ONLY \ + -DNDEBUG \ + -D_REENTRANT \ + -D_FILE_OFFSET_BITS=64 \ + -D_LARGEFILE_SOURCE +libviiz_a_SOURCES = \ + viizip.h \ + viizip.c \ + 7z.h \ + 7zAlloc.h \ + 7zBuf.h \ + 7zCrc.h \ + 7zFile.h \ + 7zTypes.h \ + Bcj2.h \ + Bra.h \ + Compiler.h \ + CpuArch.h \ + Delta.h \ + Lzma2Dec.h \ + LzmaDec.h \ + Ppmd.h \ + Ppmd7.h \ + Precomp.h \ + RotateDefs.h \ + 7zAlloc.c \ + 7zArcIn.c \ + 7zBuf.c \ + 7zBuf2.c \ + 7zCrc.c \ + 7zCrcOpt.c \ + 7zDec.c \ + 7zFile.c \ + 7zStream.c \ + Bcj2.c \ + Bra.c \ + Bra86.c \ + BraIA64.c \ + CpuArch.c \ + Delta.c \ + Lzma2Dec.c \ + LzmaDec.c \ + Ppmd7.c \ + Ppmd7Dec.c diff --git a/lzma/C/Makefile.in b/lzma/C/Makefile.in index 3f3d47c..1993f52 100644 --- a/lzma/C/Makefile.in +++ b/lzma/C/Makefile.in @@ -98,8 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_brotlilib.m4 \ $(top_srcdir)/m4/ax_check_zlib.m4 \ $(top_srcdir)/m4/ax_check_zstdlib.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ - $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -213,6 +212,7 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ @@ -225,9 +225,11 @@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ +EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXTRA_CFLAGS = @EXTRA_CFLAGS@ +GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -251,9 +253,12 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLATFORM = @PLATFORM@ +PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CXX = @PTHREAD_CXX@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -270,6 +275,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -312,8 +318,54 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libviiz.a -libviiz_a_CPPFLAGS = -DZ7_PPMD_SUPPORT -DZ7_EXTRACT_ONLY -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -libviiz_a_SOURCES = viizip.h viizip.c 7z.h 7zAlloc.h 7zBuf.h 7zCrc.h 7zFile.h 7zTypes.h Bcj2.h Bra.h Compiler.h CpuArch.h Delta.h Lzma2Dec.h LzmaDec.h Ppmd.h Ppmd7.h Precomp.h RotateDefs.h 7zAlloc.c 7zArcIn.c 7zBuf.c 7zBuf2.c 7zCrc.c 7zCrcOpt.c 7zDec.c 7zFile.c 7zStream.c Bcj2.c Bra.c Bra86.c BraIA64.c CpuArch.c Delta.c Lzma2Dec.c LzmaDec.c Ppmd7.c Ppmd7Dec.c +libviiz_a_CPPFLAGS = \ + -DZ7_PPMD_SUPPORT \ + -DZ7_EXTRACT_ONLY \ + -DNDEBUG \ + -D_REENTRANT \ + -D_FILE_OFFSET_BITS=64 \ + -D_LARGEFILE_SOURCE + +libviiz_a_SOURCES = \ + viizip.h \ + viizip.c \ + 7z.h \ + 7zAlloc.h \ + 7zBuf.h \ + 7zCrc.h \ + 7zFile.h \ + 7zTypes.h \ + Bcj2.h \ + Bra.h \ + Compiler.h \ + CpuArch.h \ + Delta.h \ + Lzma2Dec.h \ + LzmaDec.h \ + Ppmd.h \ + Ppmd7.h \ + Precomp.h \ + RotateDefs.h \ + 7zAlloc.c \ + 7zArcIn.c \ + 7zBuf.c \ + 7zBuf2.c \ + 7zCrc.c \ + 7zCrcOpt.c \ + 7zDec.c \ + 7zFile.c \ + 7zStream.c \ + Bcj2.c \ + Bra.c \ + Bra86.c \ + BraIA64.c \ + CpuArch.c \ + Delta.c \ + Lzma2Dec.c \ + LzmaDec.c \ + Ppmd7.c \ + Ppmd7Dec.c + all: all-am .SUFFIXES: @@ -390,15 +442,17 @@ $(am__depfiles_remade): am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` diff --git a/m4/ax_cxx_compile_stdcxx_11.m4 b/m4/ax_cxx_compile_stdcxx_11.m4 deleted file mode 100644 index 1733fd8..0000000 --- a/m4/ax_cxx_compile_stdcxx_11.m4 +++ /dev/null @@ -1,39 +0,0 @@ -# ============================================================================= -# https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html -# ============================================================================= -# -# SYNOPSIS -# -# AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional]) -# -# DESCRIPTION -# -# Check for baseline language coverage in the compiler for the C++11 -# standard; if necessary, add switches to CXX and CXXCPP to enable -# support. -# -# This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX -# macro with the version set to C++11. The two optional arguments are -# forwarded literally as the second and third argument respectively. -# Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for -# more information. If you want to use this macro, you also need to -# download the ax_cxx_compile_stdcxx.m4 file. -# -# LICENSE -# -# Copyright (c) 2008 Benjamin Kosnik -# Copyright (c) 2012 Zack Weinberg -# Copyright (c) 2013 Roy Stogner -# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov -# Copyright (c) 2015 Paul Norman -# Copyright (c) 2015 Moritz Klammler -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 18 - -AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX]) -AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])]) diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4 new file mode 100644 index 0000000..9f35d13 --- /dev/null +++ b/m4/ax_pthread.m4 @@ -0,0 +1,522 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_pthread.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro figures out how to build C programs using POSIX threads. It +# sets the PTHREAD_LIBS output variable to the threads library and linker +# flags, and the PTHREAD_CFLAGS output variable to any special C compiler +# flags that are needed. (The user can also force certain compiler +# flags/libs to be tested by setting these environment variables.) +# +# Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is +# needed for multi-threaded programs (defaults to the value of CC +# respectively CXX otherwise). (This is necessary on e.g. AIX to use the +# special cc_r/CC_r compiler alias.) +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also to link with them as well. For example, you might link with +# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# +# If you are only building threaded programs, you may wish to use these +# variables in your default LIBS, CFLAGS, and CC: +# +# LIBS="$PTHREAD_LIBS $LIBS" +# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" +# CC="$PTHREAD_CC" +# CXX="$PTHREAD_CXX" +# +# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant +# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to +# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# +# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the +# PTHREAD_PRIO_INHERIT symbol is defined when compiling with +# PTHREAD_CFLAGS. +# +# ACTION-IF-FOUND is a list of shell commands to run if a threads library +# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it +# is not found. If ACTION-IF-FOUND is not specified, the default action +# will define HAVE_PTHREAD. +# +# Please let the authors know if this macro fails on any platform, or if +# you have any other suggestions or comments. This macro was based on work +# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help +# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by +# Alejandro Forero Cuervo to the autoconf macro repository. We are also +# grateful for the helpful feedback of numerous users. +# +# Updated for Autoconf 2.68 by Daniel Richard G. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2011 Daniel Richard G. +# Copyright (c) 2019 Marc Stevens +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 31 + +AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) +AC_DEFUN([AX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_SED]) +AC_LANG_PUSH([C]) +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) + AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) + AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) + AC_MSG_RESULT([$ax_pthread_ok]) + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case $host_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], + [ +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + ], + [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" + ;; +esac + +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) + +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +AS_IF([test "x$ax_pthread_clang" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread"]) + + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) + + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } + static void *start_routine(void *a) { return a; }], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */])], + [ax_pthread_ok=yes], + []) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + AC_MSG_RESULT([$ax_pthread_ok]) + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_CACHE_CHECK([for joinable pthread attribute], + [ax_cv_PTHREAD_JOINABLE_ATTR], + [ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [int attr = $ax_pthread_attr; return attr /* ; */])], + [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], + []) + done + ]) + AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes"], + [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], + [$ax_cv_PTHREAD_JOINABLE_ATTR], + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + ax_pthread_joinable_attr_defined=yes + ]) + + AC_CACHE_CHECK([whether more special flags are required for pthreads], + [ax_cv_PTHREAD_SPECIAL_FLAGS], + [ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $host_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ]) + AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"], + [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes]) + + AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], + [ax_cv_PTHREAD_PRIO_INHERIT], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[int i = PTHREAD_PRIO_INHERIT; + return i;]])], + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) + ]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"], + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) + ax_pthread_prio_inherit_defined=yes + ]) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $host_os in + aix*) + AS_CASE(["x/$CC"], + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#handle absolute path differently from PATH based program lookup + AS_CASE(["x$CC"], + [x/*], + [ + AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) + AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) + ], + [ + AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) + AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) + ] + ) + ]) + ;; + esac + fi +fi + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) +AC_SUBST([PTHREAD_CC]) +AC_SUBST([PTHREAD_CXX]) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) + : +else + ax_pthread_ok=no + $2 +fi +AC_LANG_POP +])dnl AX_PTHREAD diff --git a/man.sh b/man.sh index 4b3831f..d8f8e0d 100755 --- a/man.sh +++ b/man.sh @@ -17,34 +17,92 @@ cat >> man/ugrep-indexer.1 << 'END' .SH NAME \fBugrep-indexer\fR -- file indexer to accelerate recursive searching .SH SYNOPSIS -.B ugrep-indexer [\fIPATH\fR] [\fB-0\fR...\fB9\fR] [\fB-c\fR|\fB-d\fR|\fB-f\fR] [\fB-I\fR] [\fB-q\fR] [\fB-S\fR] [\fB-s\fR] [\fB-X\fR] [\fB-z\fR] +.B ugrep-indexer [\fB-0\fR...\fB9\fR] [\fB-c\fR|\fB-d\fR|\fB-f\fR] [\fB-I\fR] [\fB-q\fR] [\fB-S\fR] [\fB-s\fR] [\fB-X\fR] [\fB-z\fR] [\fIPATH\fR] .SH DESCRIPTION -The \fBugrep-indexer\fR utility recursively indexes files to accelerate ugrep -recursive searches with \fBugrep\fR option \fB--index\fR. +The \fBugrep-indexer\fR utility recursively indexes files to accelerate +recursive searching with the \fBug --index\fR \fIPATTERN\fR commands: +.IP +$ \fBugrep-indexer\fR [\fB-I\fR] [\fB-z\fR] +.IP + ... +.IP +$ \fBug\fR \fB--index\fR [\fB-I\fR] [\fB-z\fR] [\fB-r\fR|\fB-R\fR] \fIOPTIONS\fR \fIPATTERN\fR +.IP +$ \fBugrep\fR \fB--index\fR [\fB-I\fR] [\fB-z\fR] [\fB-r\fR|\fB-R\fR] \fIOPTIONS\fR \fIPATTERN\fR +.PP +where option \fB-I\fR or \fB--ignore-binary\fR ignores binary files, which is +recommended to limit indexing storage overhead and to reduce search time. +Option \fB-z\fR or \fB--decompress\fR indexes and searches archives and +compressed files. +.PP +Indexing speeds up searching file systems that are large and cold (not recently +cached in RAM) and file systems that are generally slow to search. Note that +indexing may not speed up searching few files or recursively searching fast +file systems. +.PP +Searching with \fBug --index\fR is safe and never skips modified files that may +match after indexing; the \fBug --index\fR \fIPATTERN\fR command always +searches files and directories that were added or modified after indexing. +When option \fB--stats\fR is used with \fBug --index\fR, a search report is +produced showing the number of files skipped not matching any indexes and the +number of files and directories that were added or modified after indexing. +Note that searching with \fBug --index\fR may significantly increase the +start-up time when complex regex patterns are specified that contain large +Unicode character classes combined with `*' or `+' repeats, which should be +avoided. +.PP +\fBugrep-indexer\fR stores a hidden index file in each directory indexed. The +size of an index file depends on the number of files indexed and the specified +indexing accuracy. Higher accuracy produces larger index files to improve +search performance by reducing false positives (a false positive is a match +prediction for a file when the file does not match the regex pattern.) .PP -An optional \fIPATH\fR may be specified to the root of the directory tree to -index. The default is to recursively index the working directory tree. +\fBugrep-indexer\fR accepts an optional \fIPATH\fR to the root of the directory +tree to index. The default is to index the working directory tree. .PP -Indexes are incrementally updated unless option \fB-f\fR or \fB--force\fR is -specified. +\fBugrep-indexer\fR incrementally updates indexes. To force reindexing, +specify option \fB-f\fR or \fB--force\fR. Indexes are deleted with option +\fB-d\fR or \fB--delete\fR. .PP -When option \fB-I\fR or \fB--ignore-binary\fR is specified, binary files are -ignored and not indexed. Searching with `ugrep --index' still searches binary -files unless ugrep option \fB-I\fR or \fB--ignore-binary\fR is specified also. +\fBugrep-indexer\fR may be stopped and restarted to continue indexing at any +time. Incomplete index files do not cause errors. .PP -Archives and compressed files are incrementally indexed only when option -\fB-z\fR or \fB--decompress\fR is specified. Otherwise, archives and -compressed files are indexed as binary files, or are ignored with option -\fB-I\fR or \fB--ignore-binary\fR. +ASCII, UTF-8, UTF-16 and UTF-32 files are indexed and searched as text files +unless their UTF encoding is invalid. Files with other encodings are indexed +as binary files and can be searched with non-Unicode regex patterns using +\fBug --index \fB-U\fR. .PP -To create an indexing log file, specify option \fB-v\fR or \fB--verbose\fR and -redirect standard output to a log file. All messages are sent to standard -output. +When \fBugrep-indexer\fR option \fB-I\fR or \fB--ignore-binary\fR is specified, +binary files are ignored and not indexed. Avoid searching these non-indexed +binary files with \fBug --index -I\fR using option \fB-I\fR. +.PP +\fBugrep-indexer\fR option \fB-X\fR or \fB--ignore-files\fR respects gitignore +rules. Likewise, avoid searching non-indexed ignored files with \fBug --index +--ignore-files\fR using option \fB--ignore-files\fR. +.PP +Archives and compressed files are indexed with \fBugrep-indexer\fR option +\fB-z\fR or \fB--decompress\fR. Otherwise, archives and compressed files are +indexed as binary files or are ignored with option \fB-I\fR or +\fB--ignore-binary\fR. Note that once an archive or compressed file is indexed +as a binary file, it will not be reindexed with option \fB-z\fR to index the +contents of the archive or compressed file. Only files that are modified after +indexing are reindexed, which is determined by comparing time stamps. +.PP +Symlinked files are indexed with \fBugrep-indexer\fR option \fB-S\fR or +\fB--dereference-files\fR. Symlinks to directories are never followed. +.PP +To save a log file of the indexing process, specify option \fB-v\fR or +\fB--verbose\fR and redirect standard output to a log file. All messages and +warnings are sent to standard output and captured by the log file. +.PP +A .ugrep-indexer configuration file with configuration options is loaded when +present in the working directory or in the home directory. A configuration +option consists of the name of a long option and its argument when applicable. .PP The following options are available: END src/ugrep-indexer --help \ -| tail -n+24 \ +| tail -n+28 \ | sed -e 's/\([^\\]\)\\/\1\\\\/g' \ | sed \ -e '/^$/ d' \ @@ -96,12 +154,12 @@ index files and directories matching the globs in .gitignore: $ ugrep-indexer -f -z -I -v -S -X .PP Same, but decrease index file storage to a minimum by decreasing indexing -accuracy from 5 (default) to 0: +accuracy from 4 (the default) to 0: .IP $ ugrep-indexer -f -0 -z -I -v -S -X .PP -Increase search performance by increasing the indexing accuracy from 5 -(default) to 7 at a cost of larger index files: +Increase search performance by increasing the indexing accuracy from 4 +(the default) to 7 at a cost of larger index files: .IP $ ugrep-indexer -f7zIvSX .PP @@ -109,16 +167,16 @@ Recursively delete all hidden ._UG#_Store index files to restore the directory tree to non-indexed: .IP $ ugrep-indexer -d +.SH COPYRIGHT +Copyright (c) 2021-2024 Robert A. van Engelen +.PP +\fBugrep-indexer\fR is released under the BSD\-3 license. All parts of the +software have reasonable copyright terms permitting free redistribution. This +includes the ability to reuse all or parts of the ugrep source tree. .SH BUGS Report bugs at: .IP https://github.com/Genivia/ugrep-indexer/issues -.PP -.SH LICENSE -\fBugrep\fR and \fBugrep-indexer\fR are released under the BSD\-3 license. All -parts of the software have reasonable copyright terms permitting free -redistribution. This includes the ability to reuse all or parts of the ugrep -and ugrep-indexer source tree. END man man/ugrep-indexer.1 | sed 's/.//g' > man.txt diff --git a/man/ugrep-indexer.1 b/man/ugrep-indexer.1 index cc426fd..73eb450 100644 --- a/man/ugrep-indexer.1 +++ b/man/ugrep-indexer.1 @@ -1,30 +1,88 @@ -.TH UGREP-INDEXER "1" "February 29, 2024" "ugrep-indexer 0.9.6" "User Commands" +.TH UGREP-INDEXER "1" "April 18, 2024" "ugrep-indexer 1.0.0" "User Commands" .SH NAME \fBugrep-indexer\fR -- file indexer to accelerate recursive searching .SH SYNOPSIS -.B ugrep-indexer [\fIPATH\fR] [\fB-0\fR...\fB9\fR] [\fB-c\fR|\fB-d\fR|\fB-f\fR] [\fB-I\fR] [\fB-q\fR] [\fB-S\fR] [\fB-s\fR] [\fB-X\fR] [\fB-z\fR] +.B ugrep-indexer [\fB-0\fR...\fB9\fR] [\fB-c\fR|\fB-d\fR|\fB-f\fR] [\fB-I\fR] [\fB-q\fR] [\fB-S\fR] [\fB-s\fR] [\fB-X\fR] [\fB-z\fR] [\fIPATH\fR] .SH DESCRIPTION -The \fBugrep-indexer\fR utility recursively indexes files to accelerate ugrep -recursive searches with \fBugrep\fR option \fB--index\fR. +The \fBugrep-indexer\fR utility recursively indexes files to accelerate +recursive searching with the \fBug --index\fR \fIPATTERN\fR commands: +.IP +$ \fBugrep-indexer\fR [\fB-I\fR] [\fB-z\fR] +.IP + ... +.IP +$ \fBug\fR \fB--index\fR [\fB-I\fR] [\fB-z\fR] [\fB-r\fR|\fB-R\fR] \fIOPTIONS\fR \fIPATTERN\fR +.IP +$ \fBugrep\fR \fB--index\fR [\fB-I\fR] [\fB-z\fR] [\fB-r\fR|\fB-R\fR] \fIOPTIONS\fR \fIPATTERN\fR +.PP +where option \fB-I\fR or \fB--ignore-binary\fR ignores binary files, which is +recommended to limit indexing storage overhead and to reduce search time. +Option \fB-z\fR or \fB--decompress\fR indexes and searches archives and +compressed files. +.PP +Indexing speeds up searching file systems that are large and cold (not recently +cached in RAM) and file systems that are generally slow to search. Note that +indexing may not speed up searching few files or recursively searching fast +file systems. +.PP +Searching with \fBug --index\fR is safe and never skips modified files that may +match after indexing; the \fBug --index\fR \fIPATTERN\fR command always +searches files and directories that were added or modified after indexing. +When option \fB--stats\fR is used with \fBug --index\fR, a search report is +produced showing the number of files skipped not matching any indexes and the +number of files and directories that were added or modified after indexing. +Note that searching with \fBug --index\fR may significantly increase the +start-up time when complex regex patterns are specified that contain large +Unicode character classes combined with `*' or `+' repeats, which should be +avoided. +.PP +\fBugrep-indexer\fR stores a hidden index file in each directory indexed. The +size of an index file depends on the number of files indexed and the specified +indexing accuracy. Higher accuracy produces larger index files to improve +search performance by reducing false positives (a false positive is a match +prediction for a file when the file does not match the regex pattern.) .PP -An optional \fIPATH\fR may be specified to the root of the directory tree to -index. The default is to recursively index the working directory tree. +\fBugrep-indexer\fR accepts an optional \fIPATH\fR to the root of the directory +tree to index. The default is to index the working directory tree. .PP -Indexes are incrementally updated unless option \fB-f\fR or \fB--force\fR is -specified. +\fBugrep-indexer\fR incrementally updates indexes. To force reindexing, +specify option \fB-f\fR or \fB--force\fR. Indexes are deleted with option +\fB-d\fR or \fB--delete\fR. .PP -When option \fB-I\fR or \fB--ignore-binary\fR is specified, binary files are -ignored and not indexed. Searching with `ugrep --index' still searches binary -files unless ugrep option \fB-I\fR or \fB--ignore-binary\fR is specified also. +\fBugrep-indexer\fR may be stopped and restarted to continue indexing at any +time. Incomplete index files do not cause errors. .PP -Archives and compressed files are incrementally indexed only when option -\fB-z\fR or \fB--decompress\fR is specified. Otherwise, archives and -compressed files are indexed as binary files, or are ignored with option -\fB-I\fR or \fB--ignore-binary\fR. +ASCII, UTF-8, UTF-16 and UTF-32 files are indexed and searched as text files +unless their UTF encoding is invalid. Files with other encodings are indexed +as binary files and can be searched with non-Unicode regex patterns using +\fBug --index \fB-U\fR. .PP -To create an indexing log file, specify option \fB-v\fR or \fB--verbose\fR and -redirect standard output to a log file. All messages are sent to standard -output. +When \fBugrep-indexer\fR option \fB-I\fR or \fB--ignore-binary\fR is specified, +binary files are ignored and not indexed. Avoid searching these non-indexed +binary files with \fBug --index -I\fR using option \fB-I\fR. +.PP +\fBugrep-indexer\fR option \fB-X\fR or \fB--ignore-files\fR respects gitignore +rules. Likewise, avoid searching non-indexed ignored files with \fBug --index +--ignore-files\fR using option \fB--ignore-files\fR. +.PP +Archives and compressed files are indexed with \fBugrep-indexer\fR option +\fB-z\fR or \fB--decompress\fR. Otherwise, archives and compressed files are +indexed as binary files or are ignored with option \fB-I\fR or +\fB--ignore-binary\fR. Note that once an archive or compressed file is indexed +as a binary file, it will not be reindexed with option \fB-z\fR to index the +contents of the archive or compressed file. Only files that are modified after +indexing are reindexed, which is determined by comparing time stamps. +.PP +Symlinked files are indexed with \fBugrep-indexer\fR option \fB-S\fR or +\fB--dereference-files\fR. Symlinks to directories are never followed. +.PP +To save a log file of the indexing process, specify option \fB-v\fR or +\fB--verbose\fR and redirect standard output to a log file. All messages and +warnings are sent to standard output and captured by the log file. +.PP +A .ugrep-indexer configuration file with configuration options is loaded when +present in the working directory or in the home directory. A configuration +option consists of the name of a long option and its argument when applicable. .PP The following options are available: .TP @@ -34,7 +92,7 @@ storage overhead at the cost of a higher rate of false positive pattern matches (more noise). A high accuracy reduces the rate of false positive regex pattern matches (less noise) at the cost of an increased indexing storage overhead. An accuracy between 2 and 7 -is recommended. The default accuracy is 5. +is recommended. The default accuracy is 4. .TP \fB\-.\fR, \fB\-\-hidden\fR Index hidden files and directories. @@ -69,11 +127,12 @@ their error messages and warnings are suppressed. Display version and exit. .TP \fB\-v\fR, \fB\-\-verbose\fR -Produce verbose output. Indexed files are indicated with an A for -archive, C for compressed, B for binary or I for ignored binary. +Produce verbose output. Files are marked A for archive, C for +compressed, and B for binary or I for ignored binary. Deletions +are marked D. .TP \fB\-X\fR, \fB\-\-ignore\-files\fR[=\fIFILE\fR] -Do not index files and directories matching the globs in a FILE +Do not index files and directories matching the globs in FILE encountered during indexing. The default FILE is `.gitignore'. This option may be repeated to specify additional files. .TP @@ -127,12 +186,12 @@ index files and directories matching the globs in .gitignore: $ ugrep-indexer -f -z -I -v -S -X .PP Same, but decrease index file storage to a minimum by decreasing indexing -accuracy from 5 (default) to 0: +accuracy from 4 (the default) to 0: .IP $ ugrep-indexer -f -0 -z -I -v -S -X .PP -Increase search performance by increasing the indexing accuracy from 5 -(default) to 7 at a cost of larger index files: +Increase search performance by increasing the indexing accuracy from 4 +(the default) to 7 at a cost of larger index files: .IP $ ugrep-indexer -f7zIvSX .PP @@ -140,13 +199,13 @@ Recursively delete all hidden ._UG#_Store index files to restore the directory tree to non-indexed: .IP $ ugrep-indexer -d +.SH COPYRIGHT +Copyright (c) 2021-2024 Robert A. van Engelen +.PP +\fBugrep-indexer\fR is released under the BSD\-3 license. All parts of the +software have reasonable copyright terms permitting free redistribution. This +includes the ability to reuse all or parts of the ugrep source tree. .SH BUGS Report bugs at: .IP https://github.com/Genivia/ugrep-indexer/issues -.PP -.SH LICENSE -\fBugrep\fR and \fBugrep-indexer\fR are released under the BSD\-3 license. All -parts of the software have reasonable copyright terms permitting free -redistribution. This includes the ability to reuse all or parts of the ugrep -and ugrep-indexer source tree. diff --git a/src/Makefile.am b/src/Makefile.am index ec9426e..bf758f0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ bin_PROGRAMS = ugrep-indexer ugrep_indexer_CPPFLAGS = $(EXTRA_CFLAGS) -DPLATFORM=\"$(PLATFORM)\" -ugrep_indexer_SOURCES = ugrep-indexer.cpp glob.hpp glob.cpp input.h input.cpp utf8.h zopen.h zopen.c zstream.hpp +ugrep_indexer_SOURCES = ugrep-indexer.cpp glob.hpp glob.cpp reflex/input.h input.cpp reflex/utf8.h zopen.h zopen.c zstream.hpp zthread.hpp ugrep_indexer_LDADD = $(PTHREAD_LIBS) diff --git a/src/Makefile.in b/src/Makefile.in index 477f5cd..c6afd8c 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -99,8 +99,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_brotlilib.m4 \ $(top_srcdir)/m4/ax_check_zlib.m4 \ $(top_srcdir)/m4/ax_check_zstdlib.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ - $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -202,6 +201,7 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ @@ -214,9 +214,11 @@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ +EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ EXTRA_CFLAGS = @EXTRA_CFLAGS@ +GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -240,9 +242,12 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLATFORM = @PLATFORM@ +PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CXX = @PTHREAD_CXX@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -259,6 +264,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -301,7 +307,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ugrep_indexer_CPPFLAGS = $(EXTRA_CFLAGS) -DPLATFORM=\"$(PLATFORM)\" -ugrep_indexer_SOURCES = ugrep-indexer.cpp glob.hpp glob.cpp input.h input.cpp utf8.h zopen.h zopen.c zstream.hpp +ugrep_indexer_SOURCES = ugrep-indexer.cpp glob.hpp glob.cpp reflex/input.h input.cpp reflex/utf8.h zopen.h zopen.c zstream.hpp zthread.hpp ugrep_indexer_LDADD = $(PTHREAD_LIBS) all: all-am @@ -401,15 +407,17 @@ $(am__depfiles_remade): am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @@ -429,15 +437,17 @@ ugrep_indexer-zopen.obj: zopen.c @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ugrep_indexer_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ugrep_indexer-zopen.obj `if test -f 'zopen.c'; then $(CYGPATH_W) 'zopen.c'; else $(CYGPATH_W) '$(srcdir)/zopen.c'; fi` .cpp.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` diff --git a/src/input.cpp b/src/input.cpp index 14ce248..ac63c15 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -34,7 +34,7 @@ @copyright (c) BSD-3 License - see LICENSE.txt */ -#include "input.h" +#include "reflex/input.h" #include #include #include diff --git a/src/input.h b/src/reflex/input.h similarity index 100% rename from src/input.h rename to src/reflex/input.h diff --git a/src/utf8.h b/src/reflex/utf8.h similarity index 100% rename from src/utf8.h rename to src/reflex/utf8.h diff --git a/src/ugrep-indexer.cpp b/src/ugrep-indexer.cpp index 876f3b0..2e19f4b 100644 --- a/src/ugrep-indexer.cpp +++ b/src/ugrep-indexer.cpp @@ -34,11 +34,15 @@ @copyright (c) BSD-3 License - see LICENSE.txt */ -#define UGREP_INDEXER_VERSION "0.9.6" +// DO NOT ALTER THIS LINE: updated by makemake.sh and we need it physically here for MSVC++ build from source +#define UGREP_VERSION "1.0.0" // use a task-parallel thread to decompress the stream into a pipe to search, also handles nested archives #define WITH_DECOMPRESSION_THREAD +// ignore hidden files and directories in archives, but ugrep will never find them! +// #define WITH_SKIP_HIDDEN_ARCHIVES + // check if we are compiling for a windows OS, but not Cygwin or MinGW #if (defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__BORLANDC__)) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__MINGW64__) # define OS_WIN @@ -162,6 +166,10 @@ inline uint64_t file_size(const WIN32_FIND_DATAW& ffd) # include "config.h" #endif +#if defined(HAVE_F_RDAHEAD) +# include +#endif + #define PATHSEPCHR '/' #define PATHSEPSTR "/" @@ -208,6 +216,21 @@ inline uint64_t file_size(const struct stat& buf) #endif +// platform -- see configure.ac +#if !defined(PLATFORM) +# if defined(OS_WIN) +# if defined(_WIN64) +# define PLATFORM "WIN64" +# elif defined(_WIN32) +# define PLATFORM "WIN32" +# else +# define PLATFORM "WIN" +# endif +# else +# define PLATFORM "" +# endif +#endif + // use zlib, libbz2, liblzma for option -z #ifdef HAVE_LIBZ # include "zstream.hpp" @@ -216,8 +239,9 @@ inline uint64_t file_size(const struct stat& buf) #endif #endif -#include "input.h" +#include "reflex/input.h" #include "glob.hpp" +#include #include #include #include @@ -237,6 +261,13 @@ inline uint64_t file_size(const struct stat& buf) // default --ignore-files=FILE argument #define DEFAULT_IGNORE_FILE ".gitignore" +// convert accuracy 0 to 9 to noise level 10% to 80% rounded up +inline unsigned noise_percentage(int accuracy) +{ + float percentage = 10.0 + 70.0 * (9 - accuracy) / 9.0; + return 100 - static_cast(100.0 - percentage); +} + typedef std::vector StrVec; // fixed constant strings @@ -247,7 +278,7 @@ const char ugrep_index_file_magic[5] = "UG#\x03"; const char *arg_pathname = NULL; // command-line options -int flag_accuracy = 5; // -0 ... -9 (--accuracy) default is -5 +int flag_accuracy = 4; // -0 ... -9 (--accuracy) default is -4 bool flag_check = false; // -c (--check) bool flag_decompress = false; // -z (--decompress) bool flag_delete = false; // -d (--delete) @@ -257,10 +288,14 @@ bool flag_hidden = false; // -. (--hidden) bool flag_ignore_binary = false; // -I (--ignore-binary) bool flag_no_messages = false; // -s (--no-messages) bool flag_quiet = false; // -q (--quiet) +bool flag_usage_warnings = false; // internal flag bool flag_verbose = false; // -v (--verbose) size_t flag_zmax = 1; // --zmax StrVec flag_ignore_files; // -X (--ignore-files) +// count warnings +size_t warnings = 0; + // ignore (exclude) files/dirs globs, a glob prefixed with ! means override to include struct Ignore { StrVec files; @@ -531,9 +566,10 @@ struct Stream { // display the version info and exit void version() { - std::cout << "ugrep-indexer " UGREP_INDEXER_VERSION "\n" - "License: BSD-3-Clause; ugrep user manual: https://ugrep.com\n" - "Written by Robert van Engelen and others: https://github.com/Genivia/ugrep\n" << std::endl; + std::cout << "ugrep-indexer " UGREP_VERSION " " PLATFORM "\n" + "License: BSD-3-Clause; ugrep user manual: \n" + "Written by Robert van Engelen and others: \n" + "Ugrep utilizes the RE/flex regex library: " << std::endl; exit(EXIT_SUCCESS); } @@ -547,12 +583,17 @@ void help() and not indexed. Searching with ugrep --index still searches binary files\n\ unless ugrep option -I or --ignore-binary is specified also.\n\ \n\ - Archives and compressed files are incrementally indexed only when option -z\n\ - or --decompress is specified. Otherwise, archives and compressed files are\n\ - indexed as binary files, or are ignored with option -I or --ignore-binary.\n\ + Archives and compressed files are indexed when option -z or --decompress is\n\ + specified. Otherwise, archives and compressed files are indexed as binary\n\ + files, or are ignored with option -I or --ignore-binary.\n\ \n\ - To create an indexing log file, specify option -v or --verbose and redirect\n\ - standard output to a log file. All messages are sent to standard output.\n\ + To save a log file, specify option -v or --verbose and redirect standard\n\ + output to a log file. All messages are sent to standard output.\n\ + \n\ + A .ugrep-indexer configuration file with configuration options is loaded\n\ + when present in the working directory or in the home directory. A\n\ + configuration option consists of the name of a long option and its argument\n\ + when applicable.\n\ \n\ The following options are available:\n\ \n\ @@ -564,7 +605,7 @@ void help() pattern matches (more noise). A high accuracy reduces the rate of\n\ false positive regex pattern matches (less noise) at the cost of an\n\ increased indexing storage overhead. An accuracy between 2 and 7\n\ - is recommended. The default accuracy is 5.\n\ + is recommended. The default accuracy is 4.\n\ -., --hidden\n\ Index hidden files and directories.\n\ -?, --help\n\ @@ -588,10 +629,11 @@ void help() -V, --version\n\ Display version and exit.\n\ -v, --verbose\n\ - Produce verbose output. Indexed files are indicated with an A for\n\ - archive, C for compressed, B for binary or I for ignored binary.\n\ + Produce verbose output. Files are marked A for archive, C for\n\ + compressed, and B for binary or I for ignored binary. Deletions\n\ + are marked D.\n\ -X, --ignore-files[=FILE]\n\ - Do not index files and directories matching the globs in a FILE\n\ + Do not index files and directories matching the globs in FILE\n\ encountered during indexing. The default FILE is `" DEFAULT_IGNORE_FILE "'.\n\ This option may be repeated to specify additional files.\n\ -z, --decompress\n\ @@ -660,22 +702,32 @@ void help() // display usage information and exit void usage(const char *message, const char *arg = NULL) { - std::cerr << "ugrep-indexer: " << message << (arg != NULL ? arg : "") << '\n'; - help(); + if (!flag_usage_warnings) + { + std::cerr << "ugrep-indexer: " << message << (arg != NULL ? arg : "") << '\n'; + help(); + } + else + { + ++warnings; + std::cerr << "ugrep-indexer: .ugrep-indexer configuration file: " << message << (arg != NULL ? arg : "") << '\n'; + } } // display a warning message unless option -s (--no-messages) void warning(const char *message, const char *arg = NULL) { + ++warnings; if (flag_no_messages) return; - fflush(stdout); printf("ugrep-indexer: warning: %s%s%s\n", message, arg != NULL ? " " : "", arg != NULL ? arg : ""); + fflush(stdout); } // display an error message unless option -s (--no-messages) void error(const char *message, const char *arg) { + ++warnings; if (flag_no_messages) return; // use safe strerror_s() instead of strerror() when available @@ -685,18 +737,19 @@ void error(const char *message, const char *arg) #else const char *errmsg = strerror(errno); #endif - fflush(stdout); printf("ugrep-indexer: error: %s%s%s: %s\n", message, arg != NULL ? " " : "", arg != NULL ? arg : "", errmsg); + fflush(stdout); } #ifdef HAVE_LIBZ // decompression error, function used by void cannot_decompress(const char *pathname, const char *message) { + ++warnings; if (!flag_verbose || flag_no_messages) return; - fflush(stdout); printf("ugrep-indexer: warning: cannot decompress %s: %s\n", pathname, message != NULL ? message : ""); + fflush(stdout); } #endif @@ -719,172 +772,6 @@ size_t strtopos(const char *string, const char *message) return size; } -// parse the command-line options -void options(int argc, const char **argv) -{ - bool options = true; - - for (int i = 1; i < argc; ++i) - { - const char *arg = argv[i]; - - if ((*arg == '-' -#ifdef OS_WIN - || *arg == '/' -#endif - ) && arg[1] != '\0' && options) - { - bool is_grouped = true; - - // parse a ugrep command-line option - while (is_grouped && *++arg != '\0') - { - switch (*arg) - { - case '-': - is_grouped = false; - if (*++arg == '\0') - { - options = false; - continue; - } - - if (strncmp(arg, "accuracy=", 9) == 0 && isdigit(arg[9])) - flag_accuracy = arg[9] - '0'; - else if (strcmp(arg, "check") == 0) - flag_check = true; - else if (strcmp(arg, "decompress") == 0) - flag_decompress = true; - else if (strcmp(arg, "delete") == 0) - flag_delete = true; - else if (strcmp(arg, "dereference-files") == 0) - flag_dereference_files = true; - else if (strcmp(arg, "force") == 0) - flag_force = true; - else if (strcmp(arg, "help") == 0) - help(); - else if (strcmp(arg, "hidden") == 0) - flag_hidden = true; - else if (strcmp(arg, "ignore-binary") == 0) - flag_ignore_binary = true; - else if (strcmp(arg, "ignore-files") == 0) - flag_ignore_files.emplace_back(DEFAULT_IGNORE_FILE); - else if (strncmp(arg, "ignore-files=", 13) == 0) - flag_ignore_files.emplace_back(arg + 13); - else if (strcmp(arg, "no-messages") == 0) - flag_no_messages = true; - else if (strcmp(arg, "quiet") == 0) - flag_quiet = flag_no_messages = true; - else if (strcmp(arg, "silent") == 0) - flag_quiet = flag_no_messages = true; - else if (strcmp(arg, "verbose") == 0) - flag_verbose = true; - else if (strcmp(arg, "version") == 0) - version(); - else if (strncmp(arg, "zmax=", 5) == 0) - flag_zmax = strtopos(arg + 5, "invalid argument --zmax="); - else - usage("invalid option --", arg); - - break; - - case 'c': - flag_check = true; - break; - - case 'd': - flag_delete = true; - break; - - case 'f': - flag_force = true; - break; - - case 'I': - flag_ignore_binary = true; - break; - - case 'q': - flag_quiet = flag_no_messages = true; - break; - - case 'S': - flag_dereference_files = true; - break; - - case 's': - flag_no_messages = true; - break; - - case 'V': - version(); - break; - - case 'v': - flag_verbose = true; - break; - - case 'z': - flag_decompress = true; - break; - - case '.': - flag_hidden = true; - break; - - case 'X': - flag_ignore_files.emplace_back(DEFAULT_IGNORE_FILE); - break; - - case '?': - help(); - break; - - default: - if (isdigit(*arg)) - flag_accuracy = *arg - '0'; - else - usage("invalid option -", arg); - } - } - } - else if (arg_pathname == NULL) - { - arg_pathname = arg; - } - else - { - usage("argument PATH already specified as ", arg_pathname); - } - } - - // -q overrides -v - if (flag_quiet) - flag_verbose = false; - - // -c silently overrides -d and -f - if (flag_check) - flag_delete = flag_force = false; - - // -d silently overrides -f - if (flag_delete) - flag_force = false; - -#ifndef HAVE_LIBZ - if (flag_decompress) - usage("Option -z (--decompress) is not available"); -#endif - -#ifdef WITH_DECOMPRESSION_THREAD - // --zmax: NUM argument exceeds limit? - if (flag_zmax > 99) - usage("option --zmax argument exceeds upper limit"); -#else - if (flag_zmax > 1) - usage("Option --zmax is not available"); -#endif -} - // return true if s[0..n-1] contains a \0 (NUL) or a non-displayable invalid UTF-8 sequence bool is_binary(const char *s, size_t n) { @@ -968,6 +855,19 @@ bool index(Stream& stream, const char *pathname, uint8_t *hashes, size_t& hashes return true; } #endif + +#ifdef WITH_SKIP_HIDDEN_ARCHIVES + if (!flag_hidden) + { + // ignore hidden files and directories in archives by skipping them (but ugrep will never find them!) + if (stream.partname.find("/.") != std::string::npos) + { + while (stream.input.get(buffer, BUF_SIZE) != 0) + continue; + return true; + } + } +#endif } else if (archive) { @@ -1007,6 +907,7 @@ bool index(Stream& stream, const char *pathname, uint8_t *hashes, size_t& hashes return true; } + const unsigned max_noise = noise_percentage(flag_accuracy); const uint8_t *window = reinterpret_cast(buffer); size_t winlen = std::min(buflen, WIN_SIZE); size = buflen; @@ -1018,7 +919,7 @@ bool index(Stream& stream, const char *pathname, uint8_t *hashes, size_t& hashes { while (true) { - // compute 8 staggered Bloom filters, hashing 1-grams to 8-grams + // compute 8 staggered Bloom filters, hashing 1-grams to 8-grams for N^2 = 64 Bloom hash functions uint16_t h = window[0]; hashes[h] &= ~0x01; h = indexhash(h, window[1]); @@ -1082,7 +983,7 @@ bool index(Stream& stream, const char *pathname, uint8_t *hashes, size_t& hashes noise /= 8 * hashes_size; - // compress the table in place until max noise is reached or exceeded + // compress the table in place until the given accuracy max noise is reached or exceeded while (hashes_size > MIN_SIZE) { // compute noise of halved hashes table (zero bits are hits) @@ -1103,8 +1004,8 @@ bool index(Stream& stream, const char *pathname, uint8_t *hashes, size_t& hashes half_noise /= 8 * half; - // stop at accuracy 0 -> 80% and 9 -> 10% default 5 -> 41.1% (4 -> 48.9%, 6 -> 33%) - if (100.0 * half_noise >= 10.0 + 70.0 * (9 - flag_accuracy) / 9.0) + // stop at desired accuracy + if (100.0 * half_noise >= max_noise) break; // compress hashes table @@ -1119,7 +1020,7 @@ bool index(Stream& stream, const char *pathname, uint8_t *hashes, size_t& hashes } // trim white space from either end of the line -void trim(std::string& line) +inline void trim(std::string& line) { size_t len = line.length(); size_t pos; @@ -1509,7 +1410,7 @@ void deleter(const char *pathname) { ++num_removed; if (flag_verbose) - printf("%13" PRIu64 " %s\n", num_removed, index_filename.c_str()); + printf("D%12" PRIu64 " %s\n", num_removed, index_filename.c_str()); } } } @@ -1521,6 +1422,20 @@ void deleter(const char *pathname) // recursively index files void indexer(const char *pathname) { + if (!flag_no_messages && !flag_check && !flag_quiet) + { + printf("\n> index accuracy: %d (%u%%~%u%% noise)", flag_accuracy, noise_percentage(flag_accuracy + 1), noise_percentage(flag_accuracy)); + printf("\n> decompress: %s", (flag_decompress ? "yes" : "no")); + if (flag_decompress) + printf(" (zmax=%zu)", flag_zmax); + printf("\n> ignore binary: %s", (flag_ignore_binary ? "yes" : "no")); + if (flag_ignore_files.empty()) + printf("\n> ignore files: no"); + for (const auto& ignore : flag_ignore_files) + printf("\n> ignore files: \"%s\"", ignore.c_str()); + printf("\n> index hidden: %s\n\n", (flag_hidden ? "yes" : "no")); + } + std::stack dir_entries; std::vector file_entries; std::string index_filename; @@ -1592,7 +1507,8 @@ void indexer(const char *pathname) while (true) { - if (fseeko(index_file, inpos, SEEK_SET) != 0 || fread(header, sizeof(header), 1, index_file) == 0) + if (fseeko(index_file, inpos, SEEK_SET) != 0 || + fread(header, sizeof(header), 1, index_file) == 0) break; // hashes table size, zero to skip empty files and binary files when -I is specified @@ -1630,21 +1546,25 @@ void indexer(const char *pathname) if (entry->basename_size() == basename_size && strncmp(entry->basename(), basename, basename_size) == 0) break; + bool archive = (header[1] & 0x40) != 0; + bool binary = (header[1] & 0x80) != 0; + // if file is present in the directory and not updated, then preserve entry in the index if (entry != file_entries.end() && entry->mtime <= index_time) { ++num_files; // binary files registered but not indexed - bool binary = (header[1] & 0x80) != 0; bin_files += binary; not_files += binary && hashes_size == 0; if (inpos > outpos) { + if (fread(hashes, 1, hashes_size, index_file) < hashes_size) + break; + // move header, basename, and hashes to the front of the index file (only happens when not just checking) - if (fread(hashes, 1, hashes_size, index_file) < hashes_size || - fseeko(index_file, outpos, SEEK_SET) != 0 || + if (fseeko(index_file, outpos, SEEK_SET) != 0 || fwrite(header, sizeof(header), 1, index_file) == 0 || fwrite(basename, 1, basename_size, index_file) < basename_size || fwrite(hashes, 1, hashes_size, index_file) < hashes_size) @@ -1655,7 +1575,6 @@ void indexer(const char *pathname) } // remove file entry from the cat file entries unless multi-part archive - bool archive = (header[1] & 0x40) != 0; if (archive) { // postpone removing this archive entry @@ -1680,15 +1599,19 @@ void indexer(const char *pathname) else { if (flag_verbose) - printf("- - -%% %s\n", basename); + printf("D - -%% %s\n", basename); sum_hashes_size -= sizeof(header) + basename_size + hashes_size; } } else { - ++mod_files; - --add_files; + // modified indexed file, when not ignored binary + if (!binary || hashes_size != 0) + { + ++mod_files; + --add_files; + } if (flag_check) { @@ -1764,27 +1687,27 @@ void indexer(const char *pathname) { do { - if (flag_verbose) - { - int classification = ' '; - if (compressed) - classification = 'C'; - if (archive) - classification = 'A'; - if (binary) - classification = size == 0 ? 'I' : 'B'; - if (archive) - printf("%c%12" PRIu64 "%3u%% %s{%s}\n", classification, size, static_cast(100.0 * noise + 0.5), pathname, stream.partname.c_str()); - else - printf("%c%12" PRIu64 "%3u%% %s\n", classification, size, static_cast(100.0 * noise + 0.5), pathname); - } - // binary files registered but not indexed bin_files += binary; - not_files += binary && hashes_size == 0; + not_files += binary && size == 0; if (!archive || size > 0) { + if (flag_verbose) + { + int classification = ' '; + if (compressed) + classification = 'C'; + if (archive) + classification = 'A'; + if (binary) + classification = size == 0 ? 'I' : 'B'; + if (archive) + printf("%c%12" PRIu64 "%3u%% %s{%s}\n", classification, size, static_cast(100.0 * noise + 0.5), pathname, stream.partname.c_str()); + else + printf("%c%12" PRIu64 "%3u%% %s\n", classification, size, static_cast(100.0 * noise + 0.5), pathname); + } + // log2 of the hashes table size, zero to skip empty files and binary files when -I is specified uint8_t logsize = 0; for (size_t k = hashes_size; k > 1; k >>= 1) @@ -1814,7 +1737,7 @@ void indexer(const char *pathname) zip_files += archive; ++num_files; - ++add_files; + add_files += !binary || hashes_size != 0; sum_files_size += size; sum_noise += noise; sum_hashes_size += sizeof(header) + basename_size + hashes_size; @@ -1823,7 +1746,7 @@ void indexer(const char *pathname) } else { - printf("cannot index %s\n", pathname); + error("cannot index", pathname); } } } @@ -1846,40 +1769,265 @@ void indexer(const char *pathname) if (flag_check) { - printf("\n%13" PRIu64 " files indexed in %" PRIu64 " directories\n%13" PRId64 " directories not indexed\n%13" PRId64 " new files not indexed\n%13" PRId64 " modified files not indexed\n%13" PRId64 " deleted files are needlessly indexed\n%13" PRId64 " binary files indexed\n%13" PRId64 " binary files ignored with --ignore-binary\n", num_files, num_dirs, add_dirs, add_files, mod_files, del_files - ign_files, bin_files - not_files, not_files); + if (!flag_quiet) + { + printf("\n%13" PRIu64 " files indexed in %" PRIu64 " directories\n%13" PRId64 " directories not indexed\n%13" PRId64 " new files not indexed\n%13" PRId64 " modified files not indexed\n%13" PRId64 " deleted files are needlessly indexed\n%13" PRId64 " binary files indexed\n%13" PRId64 " binary files ignored with --ignore-binary\n", num_files, num_dirs, add_dirs, add_files, mod_files, del_files - ign_files, bin_files - not_files, not_files); + if (!flag_ignore_files.empty()) + printf("%13" PRIu64 " directories ignored with --ignore-files\n%13" PRIu64 " files ignored with --ignore-files\n", ign_dirs, ign_files); + printf("%13" PRIu64 " symbolic links skipped\n%13" PRIu64 " devices skipped\n", num_links, num_other); + if (warnings > 0) + printf("%13zu warnings\n", warnings); + if (add_dirs == 0 && add_files == 0 && mod_files == 0 && del_files == 0) + printf("\nChecked: indexes are fresh and up to date\n\n"); + else + printf("\nWarning: some indexes appear to be stale and are outdated or missing\n\n"); + } + // --check exits with 0 for up to date or 1 missing or outdated index files + exit((add_dirs == 0 && add_files == 0 && mod_files == 0 && del_files == 0) ? EXIT_SUCCESS : EXIT_FAILURE); + } + else if (!flag_quiet) + { + if (flag_decompress && zip_files > 0) + printf("\n%13" PRIu64 " files indexed in %" PRIu64 " directories\n%13" PRId64 " new directories indexed\n%13" PRId64 " new files indexed (%" PRIu64 " in archives)\n%13" PRId64 " modified files indexed\n%13" PRId64 " deleted files removed from indexes\n%13" PRId64 " binary files indexed\n%13" PRId64 " binary files ignored with --ignore-binary\n", num_files, num_dirs, add_dirs, add_files, zip_files, mod_files, del_files, bin_files - not_files, not_files); + else + printf("\n%13" PRIu64 " files indexed in %" PRIu64 " directories\n%13" PRId64 " new directories indexed\n%13" PRId64 " new files indexed\n%13" PRId64 " modified files indexed\n%13" PRId64 " deleted files removed from indexes\n%13" PRId64 " binary files indexed\n%13" PRId64 " binary files ignored with --ignore-binary\n", num_files, num_dirs, add_dirs, add_files, mod_files, del_files, bin_files - not_files, not_files); if (!flag_ignore_files.empty()) printf("%13" PRIu64 " directories ignored with --ignore-files\n%13" PRIu64 " files ignored with --ignore-files\n", ign_dirs, ign_files); - printf("%13" PRIu64 " symbolic links skipped\n%13" PRIu64 " devices skipped\n\n", num_links, num_other); + printf("%13" PRIu64 " symbolic links skipped\n%13" PRIu64 " devices skipped\n", num_links, num_other); + if (!flag_quiet && warnings > 0) + printf("%13zu warnings\n", warnings); + if (sum_hashes_size > 0) + printf("%13" PRId64 " bytes indexing storage increase at %" PRId64 " bytes/file\n\n", sum_hashes_size, sum_hashes_size / num_files); + else + printf("%13" PRId64 " bytes indexing storage decrease\n\n", sum_hashes_size); + printf("Indexes are fresh and up to date\n\n"); + } +} + +// parse the command-line options +void options(int argc, const char **argv) +{ + bool options = true; + + for (int i = 1; i < argc; ++i) + { + const char *arg = argv[i]; + + if ((*arg == '-' +#ifdef OS_WIN + || *arg == '/' +#endif + ) && arg[1] != '\0' && options) + { + bool is_grouped = true; + + // parse a ugrep command-line option + while (is_grouped && *++arg != '\0') + { + switch (*arg) + { + case '-': + is_grouped = false; + if (*++arg == '\0') + { + options = false; + continue; + } + + if (strncmp(arg, "accuracy=", 9) == 0 && isdigit(arg[9])) + flag_accuracy = arg[9] - '0'; + else if (strcmp(arg, "check") == 0) + flag_check = true; + else if (strcmp(arg, "decompress") == 0) + flag_decompress = true; + else if (strcmp(arg, "delete") == 0) + flag_delete = true; + else if (strcmp(arg, "dereference-files") == 0) + flag_dereference_files = true; + else if (strcmp(arg, "force") == 0) + flag_force = true; + else if (strcmp(arg, "help") == 0) + help(); + else if (strcmp(arg, "hidden") == 0) + flag_hidden = true; + else if (strcmp(arg, "ignore-binary") == 0) + flag_ignore_binary = true; + else if (strcmp(arg, "ignore-files") == 0) + flag_ignore_files.emplace_back(DEFAULT_IGNORE_FILE); + else if (strncmp(arg, "ignore-files=", 13) == 0) + flag_ignore_files.emplace_back(arg + 13); + else if (strcmp(arg, "no-messages") == 0) + flag_no_messages = true; + else if (strcmp(arg, "quiet") == 0) + flag_quiet = flag_no_messages = true; + else if (strcmp(arg, "silent") == 0) + flag_quiet = flag_no_messages = true; + else if (strcmp(arg, "verbose") == 0) + flag_verbose = true; + else if (strcmp(arg, "version") == 0) + version(); + else if (strncmp(arg, "zmax=", 5) == 0) + flag_zmax = strtopos(arg + 5, "invalid argument --zmax="); + else + usage("invalid option --", arg); + + break; + + case 'c': + flag_check = true; + break; + + case 'd': + flag_delete = true; + break; + + case 'f': + flag_force = true; + break; + + case 'I': + flag_ignore_binary = true; + break; + + case 'q': + flag_quiet = flag_no_messages = true; + break; + + case 'S': + flag_dereference_files = true; + break; + + case 's': + flag_no_messages = true; + break; + + case 'V': + version(); + break; + + case 'v': + flag_verbose = true; + break; + + case 'z': + flag_decompress = true; + break; + + case '.': + flag_hidden = true; + break; - if (add_dirs == 0 && add_files == 0 && mod_files == 0 && del_files == 0) + case 'X': + flag_ignore_files.emplace_back(DEFAULT_IGNORE_FILE); + break; + + case '?': + help(); + break; + + default: + if (isdigit(*arg)) + flag_accuracy = *arg - '0'; + else + usage("invalid option -", arg); + } + } + } + else if (arg_pathname == NULL) { - if (!flag_quiet) - printf("Checked: indexes are fresh and up to date\n\n"); - exit(EXIT_SUCCESS); + arg_pathname = arg; } else { - if (!flag_quiet) - printf("Warning: some indexes appear to be stale and are outdated or missing\n\n"); - exit(EXIT_FAILURE); + usage("argument PATH already specified as ", arg_pathname); } } - else + + // -q overrides -v + if (flag_quiet) + flag_verbose = false; + + // -c silently overrides -d and -f + if (flag_check) + flag_delete = flag_force = false; + + // -d silently overrides -f + if (flag_delete) + flag_force = false; + +#ifndef HAVE_LIBZ + if (flag_decompress) + usage("Option -z (--decompress) is not available"); +#endif + +#ifdef WITH_DECOMPRESSION_THREAD + // --zmax: NUM argument exceeds limit? + if (flag_zmax > 99) + usage("option --zmax argument exceeds upper limit"); +#else + if (flag_zmax > 1) + usage("Option --zmax is not available"); +#endif +} + +// load .ugrep-indexer config file when present in the working or home directory +void load_config() +{ + // open a local config file or in the home directory + FILE *file = NULL; + if (fopenw_s(&file, ".ugrep-indexer", "r") != 0) { - if (!flag_quiet) +#ifdef OS_WIN + const char *home_dir = getenv("USERPROFILE"); +#else + const char *home_dir = getenv("HOME"); +#endif + file = NULL; + if (home_dir != NULL) { - if (flag_decompress && zip_files > 0) - printf("\n%13" PRIu64 " files indexed in %" PRIu64 " directories\n%13" PRId64 " new directories indexed\n%13" PRId64 " new files indexed (%" PRIu64 " in archives)\n%13" PRId64 " modified files indexed\n%13" PRId64 " deleted files removed from indexes\n%13" PRId64 " binary files indexed\n%13" PRId64 " binary files ignored with --ignore-binary\n", num_files, num_dirs, add_dirs, add_files, zip_files, mod_files, del_files, bin_files - not_files, not_files); - else - printf("\n%13" PRIu64 " files indexed in %" PRIu64 " directories\n%13" PRId64 " new directories indexed\n%13" PRId64 " new files indexed\n%13" PRId64 " modified files indexed\n%13" PRId64 " deleted files removed from indexes\n%13" PRId64 " binary files indexed\n%13" PRId64 " binary files ignored with --ignore-binary\n", num_files, num_dirs, add_dirs, add_files, mod_files, del_files, bin_files - not_files, not_files); - if (!flag_ignore_files.empty()) - printf("%13" PRIu64 " directories ignored with --ignore-files\n%13" PRIu64 " files ignored with --ignore-files\n", ign_dirs, ign_files); - if (sum_hashes_size > 0) - printf("%13" PRIu64 " symbolic links skipped\n%13" PRIu64 " devices skipped\n%13" PRId64 " bytes indexing storage increase at %" PRId64 " bytes/file\n\n", num_links, num_other, sum_hashes_size, sum_hashes_size / num_files); - else - printf("%13" PRIu64 " symbolic links skipped\n%13" PRIu64 " devices skipped\n%13" PRId64 " bytes indexing storage decrease\n\n", num_links, num_other, sum_hashes_size); - printf("Indexes are fresh and up to date\n\n"); + // open a config file in the home directory + std::string config_file; + config_file.assign(home_dir).append(PATHSEPSTR).append(".ugrep-indexer"); + if (fopenw_s(&file, config_file.c_str(), "r") != 0) + file = NULL; + } + } + + // parse config file when present + if (file != NULL) + { + reflex::BufferedInput input(file); + std::string line; + + // warn about invalid options but do not exit + flag_usage_warnings = true; + + while (true) + { + // read the next line + if (getline(input, line)) + break; + + trim(line); + + // parse option or skip empty lines and comments + if (!line.empty() && line.front() != '#') + { + // construct an option argument to parse as argv[] + line.insert(0, "--"); + const char *arg = line.c_str(); + const char *args[2] = { NULL, arg }; + + options(2, args); + } } + + if (warnings > 0) + exit(EXIT_FAILURE); + + flag_usage_warnings = false; + + fclose(file); } } @@ -1890,6 +2038,8 @@ int main(int argc, const char **argv) signal(SIGPIPE, SIG_IGN); #endif + load_config(); + options(argc, argv); if (flag_delete)