This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by ipset configure 6.29, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ ./configure 

## --------- ##
## Platform. ##
## --------- ##

hostname = xdsun2.mtv.corp.google.com
uname -m = x86_64
uname -r = 5.7.17-1rodete4-amd64
uname -s = Linux
uname -v = #1 SMP Debian 5.7.17-1rodete4 (2020-10-01)

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /usr/local/google/eurekasource/chromium/src/third_party/fuchsia-sdk/sdk/bin
PATH: /usr/local/google/eurekasource/chromium/src/third_party/fuchsia-sdk/sdk/tools
PATH: /usr/lib/google-golang/bin
PATH: /usr/local/buildtools/java/jdk/bin
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/local/google/home/xdsun/depot_tools
PATH: /usr/local/google/home/xdsun/.local/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2367: checking build system type
configure:2381: result: x86_64-unknown-linux-gnu
configure:2401: checking host system type
configure:2414: result: x86_64-unknown-linux-gnu
configure:2453: checking for a BSD-compatible install
configure:2521: result: /usr/bin/install -c
configure:2532: checking whether build environment is sane
configure:2587: result: yes
configure:2738: checking for a thread-safe mkdir -p
configure:2777: result: /bin/mkdir -p
configure:2784: checking for gawk
configure:2800: found /usr/bin/gawk
configure:2811: result: gawk
configure:2822: checking whether make sets $(MAKE)
configure:2844: result: yes
configure:2873: checking whether make supports nested variables
configure:2890: result: yes
configure:2969: checking how to create a pax tar archive
configure:2980: tar --version
tar (GNU tar) 1.32
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
configure:2983: $? = 0
configure:3023: tardir=conftest.dir && eval tar --format=posix -chf - "$tardir" >conftest.tar
configure:3026: $? = 0
configure:3030: tar -xf - <conftest.tar
configure:3033: $? = 0
configure:3035: cat conftest.dir/file
GrepMe
configure:3038: $? = 0
configure:3051: result: gnutar
configure:3111: checking whether make supports nested variables
configure:3128: result: yes
configure:3217: checking how to print strings
configure:3244: result: printf
configure:3277: checking for style of include used by make
configure:3305: result: GNU
configure:3376: checking for gcc
configure:3392: found /usr/bin/gcc
configure:3403: result: gcc
configure:3632: checking for C compiler version
configure:3641: gcc --version >&5
gcc (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:3652: $? = 0
configure:3641: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 10.2.1-6' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-Qt2CMO/gcc-10-10.2.1/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-Qt2CMO/gcc-10-10.2.1/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.1 20210110 (Debian 10.2.1-6) 
... rest of stderr output deleted ...
configure:3652: $? = 0
configure:3641: gcc -V >&5
gcc: error: unrecognized command-line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:3652: $? = 1
configure:3641: gcc -qversion >&5
gcc: error: unrecognized command-line option '-qversion'; did you mean '--version'?
gcc: fatal error: no input files
compilation terminated.
configure:3652: $? = 1
configure:3672: checking whether the C compiler works
configure:3694: gcc    conftest.c  >&5
configure:3698: $? = 0
configure:3746: result: yes
configure:3749: checking for C compiler default output file name
configure:3751: result: a.out
configure:3757: checking for suffix of executables
configure:3764: gcc -o conftest    conftest.c  >&5
configure:3768: $? = 0
configure:3790: result: 
configure:3812: checking whether we are cross compiling
configure:3820: gcc -o conftest    conftest.c  >&5
configure:3824: $? = 0
configure:3831: ./conftest
configure:3835: $? = 0
configure:3850: result: no
configure:3855: checking for suffix of object files
configure:3877: gcc -c   conftest.c >&5
configure:3881: $? = 0
configure:3902: result: o
configure:3906: checking whether we are using the GNU C compiler
configure:3925: gcc -c   conftest.c >&5
configure:3925: $? = 0
configure:3934: result: yes
configure:3943: checking whether gcc accepts -g
configure:3963: gcc -c -g  conftest.c >&5
configure:3963: $? = 0
configure:4004: result: yes
configure:4021: checking for gcc option to accept ISO C89
configure:4084: gcc  -c -g -O2  conftest.c >&5
configure:4084: $? = 0
configure:4097: result: none needed
configure:4122: checking whether gcc understands -c and -o together
configure:4144: gcc -c conftest.c -o conftest2.o
configure:4147: $? = 0
configure:4144: gcc -c conftest.c -o conftest2.o
configure:4147: $? = 0
configure:4159: result: yes
configure:4178: checking dependency style of gcc
configure:4289: result: gcc3
configure:4304: checking for a sed that does not truncate output
configure:4368: result: /bin/sed
configure:4386: checking for grep that handles long lines and -e
configure:4444: result: /bin/grep
configure:4449: checking for egrep
configure:4511: result: /bin/grep -E
configure:4516: checking for fgrep
configure:4578: result: /bin/grep -F
configure:4613: checking for ld used by gcc
configure:4680: result: /usr/bin/ld
configure:4687: checking if the linker (/usr/bin/ld) is GNU ld
configure:4702: result: yes
configure:4714: checking for BSD- or MS-compatible name lister (nm)
configure:4763: result: /usr/bin/nm -B
configure:4893: checking the name lister (/usr/bin/nm -B) interface
configure:4900: gcc -c -g -O2  conftest.c >&5
configure:4903: /usr/bin/nm -B "conftest.o"
configure:4906: output
0000000000000000 B some_variable
configure:4913: result: BSD nm
configure:4916: checking whether ln -s works
configure:4920: result: yes
configure:4928: checking the maximum length of command line arguments
configure:5059: result: 1572864
configure:5076: checking whether the shell understands some XSI constructs
configure:5086: result: yes
configure:5090: checking whether the shell understands "+="
configure:5096: result: yes
configure:5131: checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format
configure:5171: result: func_convert_file_noop
configure:5178: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format
configure:5198: result: func_convert_file_noop
configure:5205: checking for /usr/bin/ld option to reload object files
configure:5212: result: -r
configure:5286: checking for objdump
configure:5302: found /usr/bin/objdump
configure:5313: result: objdump
configure:5345: checking how to recognize dependent libraries
configure:5543: result: pass_all
configure:5628: checking for dlltool
configure:5658: result: no
configure:5688: checking how to associate runtime and link libraries
configure:5715: result: printf %s\n
configure:5776: checking for ar
configure:5792: found /usr/bin/ar
configure:5803: result: ar
configure:5840: checking for archiver @FILE support
configure:5857: gcc -c -g -O2  conftest.c >&5
configure:5857: $? = 0
configure:5860: ar cru libconftest.a @conftest.lst >&5
ar: `u' modifier ignored since `D' is the default (see `U')
configure:5863: $? = 0
configure:5868: ar cru libconftest.a @conftest.lst >&5
ar: `u' modifier ignored since `D' is the default (see `U')
ar: conftest.o: No such file or directory
configure:5871: $? = 1
configure:5883: result: @
configure:5941: checking for strip
configure:5957: found /usr/bin/strip
configure:5968: result: strip
configure:6040: checking for ranlib
configure:6056: found /usr/bin/ranlib
configure:6067: result: ranlib
configure:6169: checking command to parse /usr/bin/nm -B output from gcc object
configure:6289: gcc -c -g -O2  conftest.c >&5
configure:6292: $? = 0
configure:6296: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
configure:6299: $? = 0
configure:6365: gcc -o conftest -g -O2   conftest.c conftstm.o >&5
configure:6368: $? = 0
configure:6406: result: ok
configure:6443: checking for sysroot
configure:6473: result: no
configure:6550: gcc -c -g -O2  conftest.c >&5
configure:6553: $? = 0
configure:6736: checking for mt
configure:6752: found /bin/mt
configure:6763: result: mt
configure:6786: checking if mt is a manifest tool
configure:6792: mt '-?'
configure:6800: result: no
configure:7442: checking how to run the C preprocessor
configure:7473: gcc -E  conftest.c
configure:7473: $? = 0
configure:7487: gcc -E  conftest.c
conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory
   11 | #include <ac_nonexistent.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
configure:7487: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:7512: result: gcc -E
configure:7532: gcc -E  conftest.c
configure:7532: $? = 0
configure:7546: gcc -E  conftest.c
conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory
   11 | #include <ac_nonexistent.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
configure:7546: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:7575: checking for ANSI C header files
configure:7595: gcc -c -g -O2  conftest.c >&5
configure:7595: $? = 0
configure:7668: gcc -o conftest -g -O2   conftest.c  >&5
configure:7668: $? = 0
configure:7668: ./conftest
configure:7668: $? = 0
configure:7679: result: yes
configure:7692: checking for sys/types.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7692: checking for sys/stat.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7692: checking for stdlib.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7692: checking for string.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7692: checking for memory.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7692: checking for strings.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7692: checking for inttypes.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7692: checking for stdint.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7692: checking for unistd.h
configure:7692: gcc -c -g -O2  conftest.c >&5
configure:7692: $? = 0
configure:7692: result: yes
configure:7706: checking for dlfcn.h
configure:7706: gcc -c -g -O2  conftest.c >&5
configure:7706: $? = 0
configure:7706: result: yes
configure:7881: checking for objdir
configure:7896: result: .libs
configure:8167: checking if gcc supports -fno-rtti -fno-exceptions
configure:8185: gcc -c -g -O2  -fno-rtti -fno-exceptions conftest.c >&5
cc1: warning: command-line option '-fno-rtti' is valid for C++/D/ObjC++ but not for C
configure:8189: $? = 0
configure:8202: result: no
configure:8529: checking for gcc option to produce PIC
configure:8536: result: -fPIC -DPIC
configure:8544: checking if gcc PIC flag -fPIC -DPIC works
configure:8562: gcc -c -g -O2  -fPIC -DPIC -DPIC conftest.c >&5
configure:8566: $? = 0
configure:8579: result: yes
configure:8608: checking if gcc static flag -static works
configure:8636: result: yes
configure:8651: checking if gcc supports -c -o file.o
configure:8672: gcc -c -g -O2  -o out/conftest2.o conftest.c >&5
configure:8676: $? = 0
configure:8698: result: yes
configure:8706: checking if gcc supports -c -o file.o
configure:8753: result: yes
configure:8786: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
configure:9943: result: yes
configure:9980: checking whether -lc should be explicitly linked in
configure:9988: gcc -c -g -O2  conftest.c >&5
configure:9991: $? = 0
configure:10006: gcc -shared  -fPIC -DPIC conftest.o  -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep  -lc  \>/dev/null 2\>\&1
configure:10009: $? = 0
configure:10023: result: no
configure:10183: checking dynamic linker characteristics
configure:10683: gcc -o conftest -g -O2   -Wl,-rpath -Wl,/foo conftest.c  >&5
configure:10683: $? = 0
configure:10917: result: GNU/Linux ld.so
configure:11024: checking how to hardcode library paths into programs
configure:11049: result: immediate
configure:11143: checking for shl_load
configure:11143: gcc -o conftest -g -O2   conftest.c  >&5
/usr/bin/ld: /tmp/ccY8yUOo.o: in function `main':
/usr/local/google/home/xdsun/work/eureka_0110/external/ipset/conftest.c:57: undefined reference to `shl_load'
collect2: error: ld returned 1 exit status
configure:11143: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h.  */
| /* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define shl_load innocuous_shl_load
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char shl_load (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef shl_load
| 
| /* 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.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char shl_load ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined __stub_shl_load || defined __stub___shl_load
| choke me
| #endif
| 
| int
| main ()
| {
| return shl_load ();
|   ;
|   return 0;
| }
configure:11143: result: no
configure:11147: checking for shl_load in -ldld
configure:11172: gcc -o conftest -g -O2   conftest.c -ldld   >&5
/usr/bin/ld: cannot find -ldld
collect2: error: ld returned 1 exit status
configure:11172: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* 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.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char shl_load ();
| int
| main ()
| {
| return shl_load ();
|   ;
|   return 0;
| }
configure:11181: result: no
configure:11186: checking for dlopen
configure:11186: gcc -o conftest -g -O2   conftest.c  >&5
/usr/bin/ld: /tmp/cckiDZcv.o: in function `main':
/usr/local/google/home/xdsun/work/eureka_0110/external/ipset/conftest.c:57: undefined reference to `dlopen'
collect2: error: ld returned 1 exit status
configure:11186: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h.  */
| /* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define dlopen innocuous_dlopen
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char dlopen (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef dlopen
| 
| /* 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.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char dlopen ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined __stub_dlopen || defined __stub___dlopen
| choke me
| #endif
| 
| int
| main ()
| {
| return dlopen ();
|   ;
|   return 0;
| }
configure:11186: result: no
configure:11190: checking for dlopen in -ldl
configure:11215: gcc -o conftest -g -O2   conftest.c -ldl   >&5
configure:11215: $? = 0
configure:11224: result: yes
configure:11343: checking whether a program can dlopen itself
configure:11423: gcc -o conftest -g -O2  -DHAVE_DLFCN_H  -Wl,--export-dynamic conftest.c -ldl  >&5
configure:11426: $? = 0
configure:11444: result: yes
configure:11449: checking whether a statically linked program can dlopen itself
configure:11529: gcc -o conftest -g -O2  -DHAVE_DLFCN_H  -Wl,--export-dynamic -static conftest.c -ldl  >&5
/usr/bin/ld: /tmp/ccoG7br1.o: in function `main':
/usr/local/google/home/xdsun/work/eureka_0110/external/ipset/configure:11508: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
configure:11532: $? = 0
conftest: undefined symbol: _fnord
configure:11550: result: no
configure:11589: checking whether stripping libraries is possible
configure:11594: result: yes
configure:11629: checking if libtool supports shared libraries
configure:11631: result: yes
configure:11634: checking whether to build shared libraries
configure:11655: result: yes
configure:11658: checking whether to build static libraries
configure:11662: result: yes
configure:11706: checking which extension is used for runtime loadable modules
configure:11718: result: .so
configure:11735: checking which variable specifies run-time module search path
configure:11742: result: LD_LIBRARY_PATH
configure:11752: checking for the default library search path
configure:11759: result: /lib /usr/lib /usr/lib/x86_64-linux-gnu/fakechroot /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib/i386-linux-gnu /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /usr/local/lib/i686-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 /libx32 /usr/libx32 
configure:11789: checking for library containing dlopen
configure:11820: gcc -o conftest -g -O2   conftest.c  >&5
/usr/bin/ld: /tmp/ccxZwPdc.o: in function `main':
/usr/local/google/home/xdsun/work/eureka_0110/external/ipset/conftest.c:37: undefined reference to `dlopen'
collect2: error: ld returned 1 exit status
configure:11820: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| /* 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.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char dlopen ();
| int
| main ()
| {
| return dlopen ();
|   ;
|   return 0;
| }
configure:11820: gcc -o conftest -g -O2   conftest.c -ldl   >&5
configure:11820: $? = 0
configure:11837: result: -ldl
configure:11927: checking for dlerror
configure:11927: gcc -o conftest -g -O2   conftest.c -ldl  -ldl >&5
configure:11927: $? = 0
configure:11927: result: yes
configure:11941: checking for shl_load
configure:11941: result: no
configure:11948: checking for shl_load in -ldld
configure:11982: result: no
configure:12028: checking for dld_link in -ldld
configure:12053: gcc -o conftest -g -O2   conftest.c -ldld  -ldl  >&5
/usr/bin/ld: cannot find -ldld
collect2: error: ld returned 1 exit status
configure:12053: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| /* 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.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char dld_link ();
| int
| main ()
| {
| return dld_link ();
|   ;
|   return 0;
| }
configure:12062: result: no
configure:12096: checking for _ prefix in compiled symbols
configure:12106: gcc -c -g -O2  conftest.c >&5
configure:12109: $? = 0
configure:12113: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[	 ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[	 ][	 ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
configure:12116: $? = 0
configure:12138: result: no
configure:12262: checking whether deplibs are loaded by dlopen
configure:12356: result: yes
configure:12368: checking for argz.h
configure:12368: gcc -c -g -O2  conftest.c >&5
configure:12368: $? = 0
configure:12368: result: yes
configure:12380: checking for error_t
configure:12380: gcc -c -g -O2  conftest.c >&5
configure:12380: $? = 0
configure:12380: gcc -c -g -O2  conftest.c >&5
conftest.c: In function 'main':
conftest.c:37:22: error: expected expression before ')' token
   37 | if (sizeof ((error_t)))
      |                      ^
configure:12380: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| #define HAVE_LIBDLLOADER 1
| #define HAVE_ARGZ_H 1
| /* end confdefs.h.  */
| #if defined(HAVE_ARGZ_H)
| #  include <argz.h>
| #endif
| 
| int
| main ()
| {
| if (sizeof ((error_t)))
| 	    return 0;
|   ;
|   return 0;
| }
configure:12380: result: yes
configure:12406: checking for argz_add
configure:12406: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12406: $? = 0
configure:12406: result: yes
configure:12406: checking for argz_append
configure:12406: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12406: $? = 0
configure:12406: result: yes
configure:12406: checking for argz_count
configure:12406: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12406: $? = 0
configure:12406: result: yes
configure:12406: checking for argz_create_sep
configure:12406: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12406: $? = 0
configure:12406: result: yes
configure:12406: checking for argz_insert
configure:12406: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12406: $? = 0
configure:12406: result: yes
configure:12406: checking for argz_next
configure:12406: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12406: $? = 0
configure:12406: result: yes
configure:12406: checking for argz_stringify
configure:12406: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12406: $? = 0
configure:12406: result: yes
configure:12422: checking if argz actually works
configure:12453: result: yes
configure:12470: checking whether libtool supports -dlopen/-dlpreopen
configure:12482: result: yes
configure:12511: checking for ltdl.h
configure:12511: gcc -c -g -O2  conftest.c >&5
configure:12511: $? = 0
configure:12511: result: yes
configure:12515: checking whether lt_dlinterface_register is declared
configure:12515: gcc -c -g -O2  conftest.c >&5
configure:12515: $? = 0
configure:12515: result: yes
configure:12519: checking for lt_dladvise_preload in -lltdl
configure:12544: gcc -o conftest -g -O2   conftest.c -lltdl  -ldl  >&5
configure:12544: $? = 0
configure:12553: result: yes
configure:12648: checking where to find libltdl headers
configure:12650: result: 
configure:12652: checking where to find libltdl library
configure:12654: result: -lltdl
configure:12702: checking for unistd.h
configure:12702: result: yes
configure:12702: checking for dl.h
configure:12702: gcc -c -g -O2  conftest.c >&5
conftest.c:76:10: fatal error: dl.h: No such file or directory
   76 | #include <dl.h>
      |          ^~~~~~
compilation terminated.
configure:12702: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| #define HAVE_LIBDLLOADER 1
| #define HAVE_ARGZ_H 1
| #define HAVE_ERROR_T 1
| #define HAVE_ARGZ_ADD 1
| #define HAVE_ARGZ_APPEND 1
| #define HAVE_ARGZ_COUNT 1
| #define HAVE_ARGZ_CREATE_SEP 1
| #define HAVE_ARGZ_INSERT 1
| #define HAVE_ARGZ_NEXT 1
| #define HAVE_ARGZ_STRINGIFY 1
| #define HAVE_WORKING_ARGZ 1
| #define HAVE_PRELOADED_SYMBOLS 1
| #define HAVE_LTDL 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| 
| #include <dl.h>
configure:12702: result: no
configure:12702: checking for sys/dl.h
configure:12702: gcc -c -g -O2  conftest.c >&5
conftest.c:76:10: fatal error: sys/dl.h: No such file or directory
   76 | #include <sys/dl.h>
      |          ^~~~~~~~~~
compilation terminated.
configure:12702: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| #define HAVE_LIBDLLOADER 1
| #define HAVE_ARGZ_H 1
| #define HAVE_ERROR_T 1
| #define HAVE_ARGZ_ADD 1
| #define HAVE_ARGZ_APPEND 1
| #define HAVE_ARGZ_COUNT 1
| #define HAVE_ARGZ_CREATE_SEP 1
| #define HAVE_ARGZ_INSERT 1
| #define HAVE_ARGZ_NEXT 1
| #define HAVE_ARGZ_STRINGIFY 1
| #define HAVE_WORKING_ARGZ 1
| #define HAVE_PRELOADED_SYMBOLS 1
| #define HAVE_LTDL 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| 
| #include <sys/dl.h>
configure:12702: result: no
configure:12702: checking for dld.h
configure:12702: gcc -c -g -O2  conftest.c >&5
conftest.c:76:10: fatal error: dld.h: No such file or directory
   76 | #include <dld.h>
      |          ^~~~~~~
compilation terminated.
configure:12702: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| #define HAVE_LIBDLLOADER 1
| #define HAVE_ARGZ_H 1
| #define HAVE_ERROR_T 1
| #define HAVE_ARGZ_ADD 1
| #define HAVE_ARGZ_APPEND 1
| #define HAVE_ARGZ_COUNT 1
| #define HAVE_ARGZ_CREATE_SEP 1
| #define HAVE_ARGZ_INSERT 1
| #define HAVE_ARGZ_NEXT 1
| #define HAVE_ARGZ_STRINGIFY 1
| #define HAVE_WORKING_ARGZ 1
| #define HAVE_PRELOADED_SYMBOLS 1
| #define HAVE_LTDL 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| 
| #include <dld.h>
configure:12702: result: no
configure:12702: checking for mach-o/dyld.h
configure:12702: gcc -c -g -O2  conftest.c >&5
conftest.c:76:10: fatal error: mach-o/dyld.h: No such file or directory
   76 | #include <mach-o/dyld.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
configure:12702: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| #define HAVE_LIBDLLOADER 1
| #define HAVE_ARGZ_H 1
| #define HAVE_ERROR_T 1
| #define HAVE_ARGZ_ADD 1
| #define HAVE_ARGZ_APPEND 1
| #define HAVE_ARGZ_COUNT 1
| #define HAVE_ARGZ_CREATE_SEP 1
| #define HAVE_ARGZ_INSERT 1
| #define HAVE_ARGZ_NEXT 1
| #define HAVE_ARGZ_STRINGIFY 1
| #define HAVE_WORKING_ARGZ 1
| #define HAVE_PRELOADED_SYMBOLS 1
| #define HAVE_LTDL 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| 
| #include <mach-o/dyld.h>
configure:12702: result: no
configure:12702: checking for dirent.h
configure:12702: gcc -c -g -O2  conftest.c >&5
configure:12702: $? = 0
configure:12702: result: yes
configure:12717: checking for closedir
configure:12717: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12717: $? = 0
configure:12717: result: yes
configure:12717: checking for opendir
configure:12717: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12717: $? = 0
configure:12717: result: yes
configure:12717: checking for readdir
configure:12717: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:12717: $? = 0
configure:12717: result: yes
configure:12734: checking for strlcat
configure:12734: gcc -o conftest -g -O2   conftest.c -ldl  >&5
/usr/bin/ld: /tmp/ccRzXY14.o: in function `main':
/usr/local/google/home/xdsun/work/eureka_0110/external/ipset/conftest.c:80: undefined reference to `strlcat'
collect2: error: ld returned 1 exit status
configure:12734: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| #define HAVE_LIBDLLOADER 1
| #define HAVE_ARGZ_H 1
| #define HAVE_ERROR_T 1
| #define HAVE_ARGZ_ADD 1
| #define HAVE_ARGZ_APPEND 1
| #define HAVE_ARGZ_COUNT 1
| #define HAVE_ARGZ_CREATE_SEP 1
| #define HAVE_ARGZ_INSERT 1
| #define HAVE_ARGZ_NEXT 1
| #define HAVE_ARGZ_STRINGIFY 1
| #define HAVE_WORKING_ARGZ 1
| #define HAVE_PRELOADED_SYMBOLS 1
| #define HAVE_LTDL 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DIRENT_H 1
| #define HAVE_CLOSEDIR 1
| #define HAVE_OPENDIR 1
| #define HAVE_READDIR 1
| /* end confdefs.h.  */
| /* Define strlcat to an innocuous variant, in case <limits.h> declares strlcat.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define strlcat innocuous_strlcat
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char strlcat (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef strlcat
| 
| /* 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.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char strlcat ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined __stub_strlcat || defined __stub___strlcat
| choke me
| #endif
| 
| int
| main ()
| {
| return strlcat ();
|   ;
|   return 0;
| }
configure:12734: result: no
configure:12734: checking for strlcpy
configure:12734: gcc -o conftest -g -O2   conftest.c -ldl  >&5
/usr/bin/ld: /tmp/ccNeac2r.o: in function `main':
/usr/local/google/home/xdsun/work/eureka_0110/external/ipset/conftest.c:80: undefined reference to `strlcpy'
collect2: error: ld returned 1 exit status
configure:12734: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| #define HAVE_LIBDLLOADER 1
| #define HAVE_ARGZ_H 1
| #define HAVE_ERROR_T 1
| #define HAVE_ARGZ_ADD 1
| #define HAVE_ARGZ_APPEND 1
| #define HAVE_ARGZ_COUNT 1
| #define HAVE_ARGZ_CREATE_SEP 1
| #define HAVE_ARGZ_INSERT 1
| #define HAVE_ARGZ_NEXT 1
| #define HAVE_ARGZ_STRINGIFY 1
| #define HAVE_WORKING_ARGZ 1
| #define HAVE_PRELOADED_SYMBOLS 1
| #define HAVE_LTDL 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DIRENT_H 1
| #define HAVE_CLOSEDIR 1
| #define HAVE_OPENDIR 1
| #define HAVE_READDIR 1
| /* end confdefs.h.  */
| /* Define strlcpy to an innocuous variant, in case <limits.h> declares strlcpy.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define strlcpy innocuous_strlcpy
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char strlcpy (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef strlcpy
| 
| /* 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.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char strlcpy ();
| /* The GNU C library defines this for functions which it implements
|     to always fail with ENOSYS.  Some functions are actually named
|     something starting with __ and the normal name is an alias.  */
| #if defined __stub_strlcpy || defined __stub___strlcpy
| choke me
| #endif
| 
| int
| main ()
| {
| return strlcpy ();
|   ;
|   return 0;
| }
configure:12734: result: no
configure:12831: checking for pkg-config
configure:12849: found /usr/bin/pkg-config
configure:12861: result: /usr/bin/pkg-config
configure:12886: checking pkg-config is at least version 0.9.0
configure:12889: result: yes
configure:13012: checking for grep that handles long lines and -e
configure:13070: result: /bin/grep
configure:13079: checking for gawk
configure:13106: result: gawk
configure:13288: checking for gcc
configure:13315: result: gcc
configure:13544: checking for C compiler version
configure:13553: gcc --version >&5
gcc (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:13564: $? = 0
configure:13553: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 10.2.1-6' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-Qt2CMO/gcc-10-10.2.1/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-Qt2CMO/gcc-10-10.2.1/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.1 20210110 (Debian 10.2.1-6) 
... rest of stderr output deleted ...
configure:13564: $? = 0
configure:13553: gcc -V >&5
gcc: error: unrecognized command-line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:13564: $? = 1
configure:13553: gcc -qversion >&5
gcc: error: unrecognized command-line option '-qversion'; did you mean '--version'?
gcc: fatal error: no input files
compilation terminated.
configure:13564: $? = 1
configure:13568: checking whether we are using the GNU C compiler
configure:13596: result: yes
configure:13605: checking whether gcc accepts -g
configure:13666: result: yes
configure:13683: checking for gcc option to accept ISO C89
configure:13759: result: none needed
configure:13784: checking whether gcc understands -c and -o together
configure:13821: result: yes
configure:13840: checking dependency style of gcc
configure:13951: result: gcc3
configure:13969: checking whether ln -s works
configure:13973: result: yes
configure:13983: checking for libmnl
configure:13990: $PKG_CONFIG --exists --print-errors "libmnl >= 1"
configure:13993: $? = 0
configure:14007: $PKG_CONFIG --exists --print-errors "libmnl >= 1"
configure:14010: $? = 0
configure:14068: result: yes
configure:14074: checking whether NLA_F_NESTED is declared
configure:14074: gcc -c -g -O2  conftest.c >&5
configure:14074: $? = 0
configure:14074: result: yes
configure:14091: checking whether NLA_F_NET_BYTEORDER is declared
configure:14091: gcc -c -g -O2  conftest.c >&5
configure:14091: $? = 0
configure:14091: result: yes
configure:14108: checking whether NLA_TYPE_MASK is declared
configure:14108: gcc -c -g -O2  conftest.c >&5
configure:14108: $? = 0
configure:14108: result: yes
configure:14127: checking for union nf_inet_addr
configure:14127: gcc -c -g -O2  conftest.c >&5
configure:14127: $? = 0
configure:14127: gcc -c -g -O2  conftest.c >&5
conftest.c: In function 'main':
conftest.c:58:33: error: expected expression before ')' token
   58 | if (sizeof ((union nf_inet_addr)))
      |                                 ^
configure:14127: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "ipset"
| #define PACKAGE_TARNAME "ipset"
| #define PACKAGE_VERSION "6.29"
| #define PACKAGE_STRING "ipset 6.29"
| #define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
| #define PACKAGE_URL ""
| #define PACKAGE "ipset"
| #define VERSION "6.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define LT_MODULE_EXT ".so"
| #define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
| #define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
| #define HAVE_LIBDL 1
| #define HAVE_DLERROR 1
| #define HAVE_LIBDLLOADER 1
| #define HAVE_ARGZ_H 1
| #define HAVE_ERROR_T 1
| #define HAVE_ARGZ_ADD 1
| #define HAVE_ARGZ_APPEND 1
| #define HAVE_ARGZ_COUNT 1
| #define HAVE_ARGZ_CREATE_SEP 1
| #define HAVE_ARGZ_INSERT 1
| #define HAVE_ARGZ_NEXT 1
| #define HAVE_ARGZ_STRINGIFY 1
| #define HAVE_WORKING_ARGZ 1
| #define HAVE_PRELOADED_SYMBOLS 1
| #define HAVE_LTDL 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DIRENT_H 1
| #define HAVE_CLOSEDIR 1
| #define HAVE_OPENDIR 1
| #define HAVE_READDIR 1
| #define LT_LIBEXT "a"
| #define LT_LIBPREFIX "lib"
| #define HAVE_DECL_NLA_F_NESTED 1
| #define HAVE_DECL_NLA_F_NET_BYTEORDER 1
| #define HAVE_DECL_NLA_TYPE_MASK 1
| /* end confdefs.h.  */
| #include <linux/types.h>
| #include <netinet/in.h>
| #include <linux/netfilter.h>
| 
| int
| main ()
| {
| if (sizeof ((union nf_inet_addr)))
| 	    return 0;
|   ;
|   return 0;
| }
configure:14127: result: yes
configure:14143: checking for gethostbyname2
configure:14143: gcc -o conftest -g -O2   conftest.c -ldl  >&5
configure:14143: $? = 0
configure:14143: result: yes
configure:14155: checking kernel source for struct xt_action_param
configure:14159: result: yes
configure:14170: checking kernel source for vzalloc
configure:14174: result: yes
configure:14185: checking kernel source for ether_addr_equal
configure:14189: result: yes
configure:14200: checking kernel source for nla_put_be16
configure:14204: result: yes
configure:14215: checking kernel source for nla_put_be64
configure:14219: result: yes
configure:14230: checking kernel source for portid in nl_info
configure:14234: result: yes
configure:14245: checking kernel source for netlink_dump_start args
configure:14260: result: 4 args
configure:14266: checking kernel source for ns_capable
configure:14270: result: yes
configure:14281: checking kernel source for nfnl_lock per subsys
configure:14285: result: yes
configure:14296: checking kernel source for export.h
configure:14299: result: yes
configure:14310: checking kernel source for ipv6_skip_exthdr args
configure:14314: result: 4 args
configure:14325: checking kernel source for bool checkentry function prototype
configure:14334: result: no
configure:14340: checking kernel source for old struct xt_target_param
configure:14349: result: no
configure:14355: checking kernel source for id in struct pernet_operations
configure:14364: result: no
configure:14370: checking kernel source for user_ns in struct net
configure:14379: result: no
configure:14385: checking kernel source for rbtree_postorder_for_each_entry_safe
configure:14389: result: yes
configure:14400: checking kernel source for kvfree
configure:14404: result: yes
configure:14415: checking kernel source for struct net in struct xt_mtchk_param
configure:14420: result: yes
configure:14431: checking kernel source for struct net in the change function of tcf_ematch_ops
configure:14436: result: yes
configure:14447: checking kernel source for struct net in struct tcf_ematch
configure:14452: result: yes
configure:14463: checking kernel source for list_last_entry
configure:14467: result: yes
configure:14478: checking kernel source for list_next_entry
configure:14482: result: yes
configure:14493: checking kernel source for ether_addr_copy
configure:14497: result: yes
configure:14508: checking kernel source for nf_bridge_get_physindev
configure:14512: result: yes
configure:14523: checking kernel source for nla_put_in_addr
configure:14527: result: yes
configure:14538: checking kernel source for struct net in struct nfnl_callback
configure:14543: result: yes
configure:14554: checking kernel source for EXPORT_SYMBOL_GPL in module.h
configure:14558: result: yes
configure:14569: checking kernel source for struct net_generic
configure:14573: result: yes
configure:16673: checking that generated files are newer than configure
configure:16679: result: done
configure:16759: creating ./config.status

## ---------------------- ##
## Running config.status. ##
## ---------------------- ##

This file was extended by ipset config.status 6.29, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  CONFIG_FILES    = 
  CONFIG_HEADERS  = 
  CONFIG_LINKS    = 
  CONFIG_COMMANDS = 
  $ ./config.status 

on xdsun2.mtv.corp.google.com

config.status:1188: creating Makefile
config.status:1188: creating include/libipset/Makefile
config.status:1188: creating lib/Makefile
config.status:1188: creating lib/libipset.pc
config.status:1188: creating src/Makefile
config.status:1188: creating utils/Makefile
config.status:1188: creating kernel/include/linux/netfilter/ipset/ip_set_compat.h
config.status:1188: creating config.h
config.status:1417: executing depfiles commands
config.status:1417: executing libtool commands
configure:18990: result: 
configure:18992: result: ipset userspace tool configuration:
configure:18999: result:     Dynamic module loading: disabled
configure:19006: result:     Static modules:
configure:19010: result:         ipset_bitmap_ip
configure:19010: result:         ipset_bitmap_ipmac
configure:19010: result:         ipset_bitmap_port
configure:19010: result:         ipset_hash_ip
configure:19010: result:         ipset_hash_ipmark
configure:19010: result:         ipset_hash_ipport
configure:19010: result:         ipset_hash_ipportip
configure:19010: result:         ipset_hash_ipportnet
configure:19010: result:         ipset_hash_mac
configure:19010: result:         ipset_hash_net
configure:19010: result:         ipset_hash_netiface
configure:19010: result:         ipset_hash_netnet
configure:19010: result:         ipset_hash_netport
configure:19010: result:         ipset_hash_netportnet
configure:19010: result:         ipset_list_set
configure:19013: result:     Dynamic modules:

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_PKG_CONFIG_LIBDIR_set=
ac_cv_env_PKG_CONFIG_LIBDIR_value=
ac_cv_env_PKG_CONFIG_PATH_set=
ac_cv_env_PKG_CONFIG_PATH_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_bashcompdir_set=
ac_cv_env_bashcompdir_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_libmnl_CFLAGS_set=
ac_cv_env_libmnl_CFLAGS_value=
ac_cv_env_libmnl_LIBS_set=
ac_cv_env_libmnl_LIBS_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_func_argz_add=yes
ac_cv_func_argz_append=yes
ac_cv_func_argz_count=yes
ac_cv_func_argz_create_sep=yes
ac_cv_func_argz_insert=yes
ac_cv_func_argz_next=yes
ac_cv_func_argz_stringify=yes
ac_cv_func_closedir=yes
ac_cv_func_dlerror=yes
ac_cv_func_dlopen=no
ac_cv_func_gethostbyname2=yes
ac_cv_func_opendir=yes
ac_cv_func_readdir=yes
ac_cv_func_shl_load=no
ac_cv_func_strlcat=no
ac_cv_func_strlcpy=no
ac_cv_have_decl_NLA_F_NESTED=yes
ac_cv_have_decl_NLA_F_NET_BYTEORDER=yes
ac_cv_have_decl_NLA_TYPE_MASK=yes
ac_cv_have_decl_lt_dlinterface_register=yes
ac_cv_header_argz_h=yes
ac_cv_header_dirent_h=yes
ac_cv_header_dl_h=no
ac_cv_header_dld_h=no
ac_cv_header_dlfcn_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_ltdl_h=yes
ac_cv_header_mach_o_dyld_h=no
ac_cv_header_memory_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_dl_h=no
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_host=x86_64-unknown-linux-gnu
ac_cv_lib_dl_dlopen=yes
ac_cv_lib_dld_dld_link=no
ac_cv_lib_dld_shl_load=no
ac_cv_lib_ltdl_lt_dladvise_preload=yes
ac_cv_objext=o
ac_cv_path_EGREP='/bin/grep -E'
ac_cv_path_FGREP='/bin/grep -F'
ac_cv_path_GREP=/bin/grep
ac_cv_path_SED=/bin/sed
ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_mkdir=/bin/mkdir
ac_cv_prog_AWK=gawk
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_ac_ct_AR=ar
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_MANIFEST_TOOL=mt
ac_cv_prog_ac_ct_OBJDUMP=objdump
ac_cv_prog_ac_ct_RANLIB=ranlib
ac_cv_prog_ac_ct_STRIP=strip
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_make_make_set=yes
ac_cv_search_dlopen=-ldl
ac_cv_type_error_t=yes
ac_cv_type_union_nf_inet_addr=yes
am_cv_CC_dependencies_compiler_type=gcc3
am_cv_make_support_nested_variables=yes
am_cv_prog_cc_c_o=yes
am_cv_prog_tar_pax=gnutar
libltdl_cv_lib_dl_dlopen=yes
libltdl_cv_preloaded_symbols=yes
libltdl_cv_shlibext=.so
libltdl_cv_shrext=.so
lt_cv_ar_at_file=@
lt_cv_archive_cmds_need_lc=no
lt_cv_deplibs_check_method=pass_all
lt_cv_dlopen=dlopen
lt_cv_dlopen_libs=-ldl
lt_cv_dlopen_self=yes
lt_cv_dlopen_self_static=no
lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
lt_cv_ld_reload_flag=-r
lt_cv_module_path_var=LD_LIBRARY_PATH
lt_cv_nm_interface='BSD nm'
lt_cv_objdir=.libs
lt_cv_path_LD=/usr/bin/ld
lt_cv_path_NM='/usr/bin/nm -B'
lt_cv_path_mainfest_tool=no
lt_cv_prog_compiler_c_o=yes
lt_cv_prog_compiler_pic='-fPIC -DPIC'
lt_cv_prog_compiler_pic_works=yes
lt_cv_prog_compiler_rtti_exceptions=no
lt_cv_prog_compiler_static_works=yes
lt_cv_prog_gnu_ld=yes
lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
lt_cv_shlibpath_overrides_runpath=yes
lt_cv_sys_argz_works=yes
lt_cv_sys_dlopen_deplibs=yes
lt_cv_sys_dlsearch_path='/lib /usr/lib /usr/lib/x86_64-linux-gnu/fakechroot /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib/i386-linux-gnu /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /usr/local/lib/i686-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 /libx32 /usr/libx32 '
lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[	 ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[	 ][	 ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"\2", (void *) \&\2},/p'\'''
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/  {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"lib\2", (void *) \&\2},/p'\'''
lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
lt_cv_sys_max_cmd_len=1572864
lt_cv_sys_symbol_underscore=no
lt_cv_to_host_file_cmd=func_convert_file_noop
lt_cv_to_tool_file_cmd=func_convert_file_noop
pkg_cv_libmnl_CFLAGS=
pkg_cv_libmnl_LIBS=-lmnl

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL='${SHELL} /usr/local/google/home/xdsun/work/eureka_0110/external/ipset/build-aux/missing aclocal-1.14'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='$${TAR-tar}'
AM_BACKSLASH='\'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
AM_DEFAULT_VERBOSITY='0'
AM_V='$(V)'
AR='ar'
ARGZ_H=''
AUTOCONF='${SHELL} /usr/local/google/home/xdsun/work/eureka_0110/external/ipset/build-aux/missing autoconf'
AUTOHEADER='${SHELL} /usr/local/google/home/xdsun/work/eureka_0110/external/ipset/build-aux/missing autoheader'
AUTOMAKE='${SHELL} /usr/local/google/home/xdsun/work/eureka_0110/external/ipset/build-aux/missing automake-1.14'
AWK='gawk'
CC='gcc'
CCDEPMODE='depmode=gcc3'
CFLAGS='-g -O2'
CONVENIENCE_LTDL_FALSE='#'
CONVENIENCE_LTDL_TRUE=''
CPP='gcc -E'
CPPFLAGS=''
CYGPATH_W='echo'
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
DLLTOOL='false'
DSYMUTIL=''
DUMPBIN=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='/bin/grep -E'
ENABLE_DEBUG_FALSE=''
ENABLE_DEBUG_TRUE='#'
ENABLE_SETTYPE_MODULES_FALSE=''
ENABLE_SETTYPE_MODULES_TRUE='#'
ENABLE_SHARED_FALSE='#'
ENABLE_SHARED_TRUE=''
ENABLE_STATIC_FALSE='#'
ENABLE_STATIC_TRUE=''
EXEEXT=''
FGREP='/bin/grep -F'
GREP='/bin/grep'
HAVE_CHECKENTRY_BOOL='undef'
HAVE_ETHER_ADDR_COPY='define'
HAVE_ETHER_ADDR_EQUAL='define'
HAVE_EXPORT_H='define'
HAVE_EXPORT_SYMBOL_GPL_IN_MODULE_H='define'
HAVE_IPV6_SKIP_EXTHDR_ARGS='4'
HAVE_KVFREE='define'
HAVE_LIST_LAST_ENTRY='define'
HAVE_LIST_NEXT_ENTRY='define'
HAVE_NETLINK_DUMP_START_ARGS='4'
HAVE_NET_IN_NFNL_CALLBACK_FN='define'
HAVE_NET_OPS_ID='undef'
HAVE_NFNL_LOCK_SUBSYS='define'
HAVE_NF_BRIDGE_GET_PHYSDEV='define'
HAVE_NLA_PUT_BE16='define'
HAVE_NLA_PUT_BE64='define'
HAVE_NLA_PUT_IN_ADDR='define'
HAVE_NL_INFO_PORTID='define'
HAVE_NS_CAPABLE='define'
HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE='define'
HAVE_STRUCT_XT_ACTION_PARAM='define'
HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET='define'
HAVE_TCF_EMATCH_STRUCT_NET='define'
HAVE_USER_NS_IN_STRUCT_NET='undef'
HAVE_VZALLOC='define'
HAVE_XT_MTCHK_PARAM_STRUCT_NET='define'
HAVE_XT_TARGET_PARAM='undef'
INCLTDL=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_LTDL_FALSE=''
INSTALL_LTDL_TRUE='#'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
KBUILDDIR=''
LD='/usr/bin/ld -m elf_x86_64'
LDFLAGS=''
LIBADD_DL='-ldl '
LIBADD_DLD_LINK=''
LIBADD_DLOPEN='-ldl'
LIBADD_SHL_LOAD=''
LIBLTDL='-lltdl'
LIBOBJS=''
LIBS='-ldl '
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
LIPO=''
LN_S='ln -s'
LTDLDEPS=''
LTDLINCL=''
LTDLOPEN='libltdl'
LTLIBOBJS=''
LT_CONFIG_H='config.h'
LT_DLLOADERS=' libltdl/dlopen.la'
LT_DLPREOPEN='-dlpreopen libltdl/dlopen.la '
MAKEINFO='${SHELL} /usr/local/google/home/xdsun/work/eureka_0110/external/ipset/build-aux/missing makeinfo'
MANIFEST_TOOL=':'
MAXSETS=''
MKDIR_P='/bin/mkdir -p'
NM='/usr/bin/nm -B'
NMEDIT=''
OBJDUMP='objdump'
OBJEXT='o'
OTOOL64=''
OTOOL=''
PACKAGE='ipset'
PACKAGE_BUGREPORT='kadlec@blackhole.kfki.hu'
PACKAGE_NAME='ipset'
PACKAGE_STRING='ipset 6.29'
PACKAGE_TARNAME='ipset'
PACKAGE_URL=''
PACKAGE_VERSION='6.29'
PATH_SEPARATOR=':'
PKG_CONFIG='/usr/bin/pkg-config'
PKG_CONFIG_LIBDIR=''
PKG_CONFIG_PATH=''
RANLIB='ranlib'
SED='/bin/sed'
SETTYPE_MODLIST=''
SET_MAKE=''
SHELL='/bin/sh'
STRIP='strip'
VERSION='6.29'
WITH_KBUILDDIR_FALSE=''
WITH_KBUILDDIR_TRUE='#'
WITH_KMOD_FALSE='#'
WITH_KMOD_TRUE=''
WITH_MAXSETS_FALSE=''
WITH_MAXSETS_TRUE='#'
ac_ct_AR='ar'
ac_ct_CC='gcc'
ac_ct_DUMPBIN=''
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE='#'
am__fastdepCC_FALSE='#'
am__fastdepCC_TRUE=''
am__include='include'
am__isrc=''
am__leading_dot='.'
am__nodep='_no'
am__quote=''
am__tar='tar --format=posix -chf - "$$tardir"'
am__untar='tar -xf -'
bashcompdir=''
bindir='${exec_prefix}/bin'
build='x86_64-unknown-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='unknown'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host='x86_64-unknown-linux-gnu'
host_alias=''
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /usr/local/google/home/xdsun/work/eureka_0110/external/ipset/build-aux/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
libmnl_CFLAGS=''
libmnl_LIBS='-lmnl'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
ltdl_LIBOBJS=' libltdl/lt__strl.o'
ltdl_LTLIBOBJS=' libltdl/lt__strl.lo'
mandir='${datarootdir}/man'
mkdir_p='$(MKDIR_P)'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/usr/local'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sys_symbol_underscore='no'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "ipset"
#define PACKAGE_TARNAME "ipset"
#define PACKAGE_VERSION "6.29"
#define PACKAGE_STRING "ipset 6.29"
#define PACKAGE_BUGREPORT "kadlec@blackhole.kfki.hu"
#define PACKAGE_URL ""
#define PACKAGE "ipset"
#define VERSION "6.29"
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define HAVE_DLFCN_H 1
#define LT_OBJDIR ".libs/"
#define LT_MODULE_EXT ".so"
#define LT_MODULE_PATH_VAR "LD_LIBRARY_PATH"
#define LT_DLSEARCH_PATH "/lib:/usr/lib:/usr/lib/x86_64-linux-gnu/fakechroot:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/local/lib/i386-linux-gnu:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/lib/i686-linux-gnu:/lib/i686-linux-gnu:/usr/lib/i686-linux-gnu:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/lib32:/usr/lib32:/libx32:/usr/libx32"
#define HAVE_LIBDL 1
#define HAVE_DLERROR 1
#define HAVE_LIBDLLOADER 1
#define HAVE_ARGZ_H 1
#define HAVE_ERROR_T 1
#define HAVE_ARGZ_ADD 1
#define HAVE_ARGZ_APPEND 1
#define HAVE_ARGZ_COUNT 1
#define HAVE_ARGZ_CREATE_SEP 1
#define HAVE_ARGZ_INSERT 1
#define HAVE_ARGZ_NEXT 1
#define HAVE_ARGZ_STRINGIFY 1
#define HAVE_WORKING_ARGZ 1
#define HAVE_PRELOADED_SYMBOLS 1
#define HAVE_LTDL 1
#define HAVE_UNISTD_H 1
#define HAVE_DIRENT_H 1
#define HAVE_CLOSEDIR 1
#define HAVE_OPENDIR 1
#define HAVE_READDIR 1
#define LT_LIBEXT "a"
#define LT_LIBPREFIX "lib"
#define HAVE_DECL_NLA_F_NESTED 1
#define HAVE_DECL_NLA_F_NET_BYTEORDER 1
#define HAVE_DECL_NLA_TYPE_MASK 1
#define HAVE_UNION_NF_INET_ADDR 1
#define HAVE_GETHOSTBYNAME2 1

configure: exit 0
