bug-autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: present but cannot be compiled (Was: configure: WARNING: ## Repo


From: Akim Demaille
Subject: Re: present but cannot be compiled (Was: configure: WARNING: ## Report this to address@hidden ##)
Date: Tue, 27 May 2003 08:40:36 +0200
User-agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (gnu/linux)

Thanks for the bug report!

Contrary to the message reported by ./configure, this is not a bug in
Autoconf, but the result of a recent incompatible change in Autoconf
that is likely to require the package's configure.ac to be updated.
Please, first make sure you are trying the most recent version of that
package, then, if you are, send all this message (including your
output attached) to the bug list (or the authors) of the package you
were trying to configure.

I've appended two relevant parts of the Autoconf documentation: 1. the
documentation of AC_CHECK_HEADER(S), and 2. how configure.ac should be
upgraded.

If you have some knowledge in C compilation, then there is something
more you can do to help: find out what are the prerequisite headers on
your system.

For instance, if the error message is:

       sys/socket.h: present but cannot be compiled
       sys/socket.h: check for missing prerequisite headers?
       sys/socket.h: proceeding with the preprocessor's result

then try to compile the program sample.c:

       #include <sys/socket.h>

with `cc -c sample.c'.  It will fail.  Then try to understand what
other headers are needed.  For instance, on Darwin, one needs:

       #include <stdio.h>
       #include <stdlib.h>
       #include <sys/socket.h>

to get a successful compilation.  Then, send this additional
information to the package maintainers, together with a description of
your machine.

Thanks!

----------------------------------------------------------------------

Generic Header Checks
---------------------

   These macros are used to find system header files not covered by the
"particular" test macros.  If you need to check the contents of a header
as well as find out whether it is present, you have to write your own
test for it (*note Writing Tests::).

 - Macro: AC_CHECK_HEADER (HEADER-FILE, [ACTION-IF-FOUND],
          [ACTION-IF-NOT-FOUND], [INCLUDES = `default-includes'])
     If the system header file HEADER-FILE is compilable, execute shell
     commands ACTION-IF-FOUND, otherwise execute ACTION-IF-NOT-FOUND.
     If you just want to define a symbol if the header file is
     available, consider using `AC_CHECK_HEADERS' instead.

     For compatibility issues with older versions of Autoconf, please
     read below.

 - Macro: AC_CHECK_HEADERS (HEADER-FILE..., [ACTION-IF-FOUND],
          [ACTION-IF-NOT-FOUND], [INCLUDES = `default-includes'])
     For each given system header file HEADER-FILE in the
     whitespace-separated argument list that exists, define
     `HAVE_HEADER-FILE' (in all capitals).  If ACTION-IF-FOUND is
     given, it is additional shell code to execute when one of the
     header files is found.  You can give it a value of `break' to
     break out of the loop on the first match.  If ACTION-IF-NOT-FOUND
     is given, it is executed when one of the header files is not found.

     For compatibility issues with older versions of Autoconf, please
     read below.

   Previous versions of Autoconf merely checked whether the header was
accepted by the preprocessor.  This was changed because the old test was
inappropriate for typical uses.  Headers are typically used to compile,
not merely to preprocess, and the old behavior sometimes accepted
headers that clashed at compile-time.  If you need to check whether a
header is preprocessable, you can use `AC_PREPROC_IFELSE' (*note
Running the Preprocessor::).

   This scheme, which improves the robustness of the test, also requires
that you make sure that headers that must be included before the
HEADER-FILE be part of the INCLUDES, (*note Default Includes::).  If
looking for `bar.h', which requires that `foo.h' be included before if
it exists, we suggest the following scheme:


AC_CHECK_HEADERS([foo.h])
AC_CHECK_HEADERS([bar.h], [], [],
[#if HAVE_FOO_H
# include <foo.h>
# endif
])

----------------------------------------------------------------------

Header Present But Cannot Be Compiled
=====================================

   The most important guideline to bear in mind when checking for
features is to mimic as much as possible the intended use.
Unfortunately, old versions of `AC_CHECK_HEADER' and `AC_CHECK_HEADERS'
failed to follow this idea, and called the preprocessor, instead of the
compiler, to check for headers.  As a result, incompatibilities between
headers went unnoticed during configuration, and maintainers finally
had to deal with this issue elsewhere.

   As of Autoconf 2.56 both checks are performed, and `configure'
complains loudly if the compiler and the preprocessor do not agree.
For the time being the result used is that of the preprocessor, to give
maintainers time to adjust their `configure.ac', but in the near
future, only the compiler will be considered.

   Consider the following example:

     $ cat number.h
     typedef int number;
     $ cat pi.h
     const number pi = 3;
     $ cat configure.ac
     AC_INIT
     AC_CHECK_HEADERS(pi.h)
     $ autoconf -Wall
     $ ./configure
     checking for gcc... gcc
     checking for C compiler default output... a.out
     checking whether the C compiler works... yes
     checking whether we are cross compiling... no
     checking for suffix of executables...
     checking for suffix of object files... o
     checking whether we are using the GNU C compiler... yes
     checking whether gcc accepts -g... yes
     checking for gcc option to accept ANSI C... none needed
     checking how to run the C preprocessor... gcc -E
     checking for egrep... grep -E
     checking for ANSI C header files... yes
     checking for sys/types.h... yes
     checking for sys/stat.h... yes
     checking for stdlib.h... yes
     checking for string.h... yes
     checking for memory.h... yes
     checking for strings.h... yes
     checking for inttypes.h... yes
     checking for stdint.h... yes
     checking for unistd.h... yes
     checking pi.h usability... no
     checking pi.h presence... yes
     configure: WARNING: pi.h: present but cannot be compiled
     configure: WARNING: pi.h: check for missing prerequisite headers?
     configure: WARNING: pi.h: proceeding with the preprocessor's result
     configure: WARNING:     ## ------------------------------------ ##
     configure: WARNING:     ## Report this to address@hidden ##
     configure: WARNING:     ## ------------------------------------ ##
     checking for pi.h... yes

The proper way the handle this case is using the fourth argument (*note
Generic Headers::):

     $ cat configure.ac
     AC_INIT
     AC_CHECK_HEADERS(number.h pi.h,,,
     [[#if HAVE_NUMBER_H
     # include <number.h>
     #endif
     ]])
     $ autoconf -Wall
     $ ./configure
     checking for gcc... gcc
     checking for C compiler default output... a.out
     checking whether the C compiler works... yes
     checking whether we are cross compiling... no
     checking for suffix of executables...
     checking for suffix of object files... o
     checking whether we are using the GNU C compiler... yes
     checking whether gcc accepts -g... yes
     checking for gcc option to accept ANSI C... none needed
     checking for number.h... yes
     checking for pi.h... yes

   See *Note Particular Headers::, for a list of headers with their
prerequisite.

----------------------------------------------------------------------

Portability of Headers
----------------------

This section tries to collect knowledge about common headers, and the
problems they cause.  By definition, this list will always require
additions.  Please help us keeping it as complete as possible.

`inttypes.h' vs. `stdint.h'
     Paul Eggert notes that: ISO C 1999 says that `inttypes.h' includes
     `stdint.h', so there's no need to include `stdint.h' separately in
     a standard environment.  Many implementations have `inttypes.h'
     but not `stdint.h' (e.g., Solaris 7), but I don't know of any
     implementation that has `stdint.h' but not `inttypes.h'.  Nor do I
     know of any free software that includes `stdint.h'; `stdint.h'
     seems to be a creation of the committee.

`linux/irda.h'
     It requires `linux/types.h' and `sys/socket.h'.

`net/if.h'
     On Darwin, this file requires that `sys/socket.h' be included
     beforehand.  One should run:

          AC_CHECK_HEADERS([sys/socket.h])
          AC_CHECK_HEADERS([net/if.h], [], [],
          [#include <stdio.h>
          #if STDC_HEADERS
          # include <stdlib.h>
          # include <stddef.h>
          #else
          # if HAVE_STDLIB_H
          #  include <stdlib.h>
          # endif
          #endif
          #if HAVE_SYS_SOCKET_H
          # include <sys/socket.h>
          #endif
          ])

`stdint.h'
     See above, item `inttypes.h' vs. `stdint.h'.

`stdlib.h'
     On many systems (e.g., Darwin), `stdio.h' is a prerequisite.

`sys/socket.h'
     On Darwin, `stdlib.h' is a prerequisite.

`sys/ucred.h'
     On HP Tru64 5.1, `sys/types.h' is a prerequisite.

`X11/extensions/scrnsaver.h'
     Using XFree86, this header requires `X11/Xlib.h', which is probably
     so required that you might not even consider looking for it.

          AC_CHECK_HEADERS([X11/extensions/scrnsaver.h], [], [],
          [[#include <X11/Xlib.h>
          ]])

----------------------------------------------------------------------
Hallo....
be it: bug reported.

BTW after the warning the configure'd application (nmap 3.27)
compiled and works nice on this system (MacOS X 10.2.6)

If you need any other info do not hesitate to contact me.

Regards,

AC

address@hidden:~ uname -a
Darwin ws92.ifom-firc.it 6.6 Darwin Kernel Version 6.6: Thu May  1
21:48:54 PDT 2003; root:xnu/xnu-344.34.obj~1/RELEASE_PPC  Power
Macintosh powerpc
address@hidden:~ gcc -v
Reading specs from /usr/libexec/gcc/darwin/ppc/3.1/specs
Thread model: posix
Apple Computer, Inc. GCC version 1175, based on gcc version 3.1
20020420 (prerelease)
address@hidden:~
address@hidden:~ curl
'http://download.insecure.org/nmap/dist/nmap-3.27.tgz' | gzcat | tar
xpf -
   % Total    % Received % Xferd  Average Speed          Time
Curr.
                                  Dload  Upload Total    Current  Left
Speed
100 1061k  100 1061k    0     0   138k      0  0:00:07  0:00:07
0:00:00  169k
address@hidden:~
address@hidden:~ cd nmap-3.27/
address@hidden:~/nmap-3.27 ./configure
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking build system type... powerpc-apple-darwin6.6
checking host system type... powerpc-apple-darwin6.6
checking for gethostent... yes
checking for setsockopt... yes
checking for nanosleep... yes
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking pcap.h usability... yes
checking pcap.h presence... yes
checking for pcap.h... yes
checking for pcap_datalink in -lpcap... yes
checking if libpcap version is recent enough... yes
checking for ANSI C header files... (cached) yes
checking for string.h... (cached) yes
checking getopt.h usability... no
checking getopt.h presence... no
checking for getopt.h... no
checking for strings.h... (cached) yes
checking for memory.h... (cached) yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/sockio.h usability... yes
checking sys/sockio.h presence... yes
checking for sys/sockio.h... yes
checking netinet/if_ether.h usability... no
checking netinet/if_ether.h presence... yes
configure: WARNING: netinet/if_ether.h: present but cannot be compiled
configure: WARNING: netinet/if_ether.h: check for missing prerequisite
headers?
configure: WARNING: netinet/if_ether.h: proceeding with the
preprocessor's result
configure: WARNING:     ## ------------------------------------ ##
configure: WARNING:     ## Report this to address@hidden ##
configure: WARNING:     ## ------------------------------------ ##
checking for netinet/if_ether.h... yes
checking bstring.h usability... no
checking bstring.h presence... no
checking for bstring.h... no
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking for unistd.h... (cached) yes
checking whether time.h and sys/time.h may both be included... yes
checking for inline... inline
checking struct ip... yes
checking ip_v in struct ip... yes
checking if sockaddr{} has sa_len member... yes
checking whether byte ordering is bigendian... yes
checking if struct in_addr is a wacky huge structure (some Sun
boxes)... no
checking if struct icmp exists... yes
checking if struct ip exists... yes
checking if struct ip has ip_sum member... yes
checking for bzero... yes
checking for snprintf... yes
checking for vsnprintf... yes
checking for memcpy... yes
checking for usleep... yes
checking for nanosleep... (cached) yes
checking for strerror... yes
checking for strcasestr... no
checking for inet_aton... yes
checking for getopt_long_only... no
checking for gtk-config... no
checking If you have GTK+ installed... no
configure: WARNING: Gtk+ has not been installed -> nmapfe will not be
made
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
configure: configuring in nbase
configure: running /bin/sh './configure' --prefix=/usr/local
--cache-file=/dev/null --srcdir=.
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for ranlib... ranlib
checking build system type... powerpc-apple-darwin6.6
checking host system type... powerpc-apple-darwin6.6
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for string.h... (cached) yes
checking getopt.h usability... no
checking getopt.h presence... no
checking for getopt.h... no
checking for strings.h... (cached) yes
checking for memory.h... (cached) yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking bstring.h usability... no
checking bstring.h presence... no
checking for bstring.h... no
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking netinet/if_ether.h usability... no
checking netinet/if_ether.h presence... yes
configure: WARNING: netinet/if_ether.h: present but cannot be compiled
configure: WARNING: netinet/if_ether.h: check for missing prerequisite
headers?
configure: WARNING: netinet/if_ether.h: proceeding with the
preprocessor's result
configure: WARNING:     ## ------------------------------------ ##
configure: WARNING:     ## Report this to address@hidden ##
configure: WARNING:     ## ------------------------------------ ##
checking for netinet/if_ether.h... yes
checking sys/sockio.h usability... yes
checking sys/sockio.h presence... yes
checking for sys/sockio.h... yes
checking rpc/types.h usability... yes
checking rpc/types.h presence... yes
checking for rpc/types.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking for sys/stat.h... (cached) yes
checking sys/wait.h usability... yes
checking sys/wait.h presence... yes
checking for sys/wait.h... yes
checking libiberty.h usability... no
checking libiberty.h presence... no
checking for libiberty.h... no
checking whether time.h and sys/time.h may both be included... yes
checking for inline... inline
checking for __attribute__... yes
checking whether byte ordering is bigendian... yes
checking for gethostent... yes
checking for setsockopt... yes
checking for char... yes
checking size of char... 1
checking for short... yes
checking size of short... 2
checking for int... yes
checking size of int... 4
checking for long... yes
checking size of long... 4
checking for bzero... yes
checking for snprintf... yes
checking for vsnprintf... yes
checking for memcpy... yes
checking for nanosleep... yes
checking for strerror... yes
checking for strcasestr... no
checking for strcasecmp... yes
checking for strncasecmp... yes
checking for signal... yes
checking for inet_aton... yes
checking for vsnprintf... (cached) yes
checking for snprintf... (cached) yes
checking for asprintf... yes
checking for asnprintf... no
checking for vasprintf... yes
checking for vasnprintf... no
checking for usleep... yes
checking for gettimeofday... yes
checking for sleep... yes
checking for getopt_long_only... no
checking for strcasecmp... (cached) yes
checking for strncasecmp... (cached) yes
checking for library containing getaddrinfo... none required
checking for library containing gai_strerror... none required
checking for library containing getnameinfo... none required
checking for gai_strerror... yes
checking for inet_ntop... yes
checking for inet_pton... yes
checking for working getaddrinfo... yes
checking for working getnameinfo... yes
checking for sockaddr_in6... yes
checking for sockaddr_storage... yes
checking for AF_INET6 definition... yes
checking for IPv6 support... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating nbase_config.h
configure: configuring in nbase
configure: running /bin/sh './configure' --prefix=/usr/local
--cache-file=/dev/null --srcdir=.
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for ranlib... ranlib
checking build system type... powerpc-apple-darwin6.6
checking host system type... powerpc-apple-darwin6.6
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for string.h... (cached) yes
checking getopt.h usability... no
checking getopt.h presence... no
checking for getopt.h... no
checking for strings.h... (cached) yes
checking for memory.h... (cached) yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking bstring.h usability... no
checking bstring.h presence... no
checking for bstring.h... no
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking netinet/if_ether.h usability... no
checking netinet/if_ether.h presence... yes
configure: WARNING: netinet/if_ether.h: present but cannot be compiled
configure: WARNING: netinet/if_ether.h: check for missing prerequisite
headers?
configure: WARNING: netinet/if_ether.h: proceeding with the
preprocessor's result
configure: WARNING:     ## ------------------------------------ ##
configure: WARNING:     ## Report this to address@hidden ##
configure: WARNING:     ## ------------------------------------ ##
checking for netinet/if_ether.h... yes
checking sys/sockio.h usability... yes
checking sys/sockio.h presence... yes
checking for sys/sockio.h... yes
checking rpc/types.h usability... yes
checking rpc/types.h presence... yes
checking for rpc/types.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking for sys/stat.h... (cached) yes
checking sys/wait.h usability... yes
checking sys/wait.h presence... yes
checking for sys/wait.h... yes
checking libiberty.h usability... no
checking libiberty.h presence... no
checking for libiberty.h... no
checking whether time.h and sys/time.h may both be included... yes
checking for inline... inline
checking for __attribute__... yes
checking whether byte ordering is bigendian... yes
checking for gethostent... yes
checking for setsockopt... yes
checking for char... yes
checking size of char... 1
checking for short... yes
checking size of short... 2
checking for int... yes
checking size of int... 4
checking for long... yes
checking size of long... 4
checking for bzero... yes
checking for snprintf... yes
checking for vsnprintf... yes
checking for memcpy... yes
checking for nanosleep... yes
checking for strerror... yes
checking for strcasestr... no
checking for strcasecmp... yes
checking for strncasecmp... yes
checking for signal... yes
checking for inet_aton... yes
checking for vsnprintf... (cached) yes
checking for snprintf... (cached) yes
checking for asprintf... yes
checking for asnprintf... no
checking for vasprintf... yes
checking for vasnprintf... no
checking for usleep... yes
checking for gettimeofday... yes
checking for sleep... yes
checking for getopt_long_only... no
checking for strcasecmp... (cached) yes
checking for strncasecmp... (cached) yes
checking for library containing getaddrinfo... none required
checking for library containing gai_strerror... none required
checking for library containing getnameinfo... none required
checking for gai_strerror... yes
checking for inet_ntop... yes
checking for inet_pton... yes
checking for working getaddrinfo... yes
checking for working getnameinfo... yes
checking for sockaddr_in6... yes
checking for sockaddr_storage... yes
checking for AF_INET6 definition... yes
checking for IPv6 support... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating nbase_config.h
config.status: nbase_config.h is unchanged
address@hidden:~/nmap-3.27








reply via email to

[Prev in Thread] Current Thread [Next in Thread]