While configuring samba4 on Solaris 9, I happened to notice this fly by: configure: WARNING: net/if.h: present but cannot be compiled configure: WARNING: net/if.h: check for missing prerequisite headers? configure: WARNING: net/if.h: see the Autoconf documentation configure: WARNING: net/if.h: section "Present But Cannot Be Compiled" configure: WARNING: net/if.h: proceeding with the preprocessor's result configure: WARNING: net/if.h: in the future, the compiler will take precedence configure: WARNING: ## ------------------------------------------ ## configure: WARNING: ## Report this to the AC_PACKAGE_NAME lists. ## configure: WARNING: ## ------------------------------------------ ## Google said, about this oops NOT n Solaris: Subject: Re: present but cannot be compiled (Was: configure: WARNING: net/if.h: present but cannot be compiled) Thanks for the bug report! Unfortunately, the problem comes from the package itself, not from Autoconf. The configure.ac script needs to be updated. Please, send all this message (which your output attached) to the bug list (or the authors) of the package you were trying to configure. Below two parts of the Autoconf documentation are included: 1. the documentation of AC_CHECK_HEADER(S), and 2. what's to be done to upgrade configure.ac. 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@bogus.example.com ## 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 ---------------------------------------------------------------------- - configure: WARNING: net/if.h: present but cannot be compiled configure: WARNING: net/if.h: check for missing prerequisite headers? configure: WARNING: net/if.h: proceeding with the preprocessor's result configure: WARNING: ## ------------------------------------ ## configure: WARNING: ## Report this to address@bogus.example.com ## configure: WARNING: ## ------------------------------------ ## - ...found this while using 'configure' generated by 'autogen.sh' and autoconf-2.57. The source I'm attempting to configure is a CVS version of samba, and the host/target machine is OpenBSD-i386 3.2.
The developers have not opened up Samba 4 for bugzilla reports. You'll have to report it to them directly.