⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headers.m4

📁 autoconf是一个产生可以自动配置源代码包
💻 M4
📖 第 1 页 / 共 2 页
字号:
# This file is part of Autoconf.			-*- Autoconf -*-# Checking for headers.## Copyright (C) 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free Software# Foundation, Inc.## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2, or (at your option)# any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA# 02110-1301, USA.## As a special exception, the Free Software Foundation gives unlimited# permission to copy, distribute and modify the configure scripts that# are the output of Autoconf.  You need not follow the terms of the GNU# General Public License when using or distributing such scripts, even# though portions of the text of Autoconf appear in them.  The GNU# General Public License (GPL) does govern all other use of the material# that constitutes the Autoconf program.## Certain portions of the Autoconf source text are designed to be copied# (in certain cases, depending on the input) into the output of# Autoconf.  We call these the "data" portions.  The rest of the Autoconf# source text consists of comments plus executable code that decides which# of the data portions to output in any given case.  We call these# comments and executable code the "non-data" portions.  Autoconf never# copies any of the non-data portions into its output.## This special exception to the GPL applies to versions of Autoconf# released by the Free Software Foundation.  When you make and# distribute a modified version of Autoconf, you may extend this special# exception to the GPL to apply to your modified version as well, *unless*# your modified version has the potential to copy into its output some# of the text that was the non-data portion of the version that you started# with.  (In other words, unless your change moves or copies text from# the non-data portions to the data portions.)  If your modification has# such potential, you must delete any notice of this special exception# to the GPL from your modified version.## Written by David MacKenzie, with help from# Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,# Roland McGrath, Noah Friedman, david d zuhn, and many others.# Table of contents## 1. Generic tests for headers# 2. Default includes# 3. Headers to tests with AC_CHECK_HEADERS# 4. Tests for specific headers## ------------------------------ #### 1. Generic tests for headers.  #### ------------------------------ ### AC_CHECK_HEADER(HEADER-FILE,#		  [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],#		  [INCLUDES])# ---------------------------------------------------------# We are slowly moving to checking headers with the compiler instead# of the preproc, so that we actually learn about the usability of a# header instead of its mere presence.  But since users are used to# the old semantics, they check for headers in random order and# without providing prerequisite headers.  This macro implements the# transition phase, and should be cleaned up latter to use compilation# only.## If INCLUDES is empty, then check both via the compiler and preproc.# If the results are different, issue a warning, but keep the preproc# result.## If INCLUDES is `-', keep only the old semantics.## If INCLUDES is specified and different from `-', then use the new# semantics only.AC_DEFUN([AC_CHECK_HEADER],[m4_case([$4],	 [],  [_AC_CHECK_HEADER_MONGREL($@)],	 [-], [_AC_CHECK_HEADER_OLD($@)],	      [_AC_CHECK_HEADER_NEW($@)])])# AC_CHECK_HEADER# _AC_CHECK_HEADER_MONGREL(HEADER-FILE,#			   [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],#			   [INCLUDES = DEFAULT-INCLUDES])# ------------------------------------------------------------------# Check using both the compiler and the preprocessor.  If they disagree,# warn, and the preproc wins.## This is not based on _AC_CHECK_HEADER_NEW and _AC_CHECK_HEADER_OLD# because it obfuscate the code to try to factor everything, in particular# because of the cache variables, and the `checking...' messages.m4_define([_AC_CHECK_HEADER_MONGREL],[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_$1])dnlAS_VAR_SET_IF(ac_Header,	      [AC_CACHE_CHECK([for $1], ac_Header, [])],	      [# Is the header compilable?AC_MSG_CHECKING([$1 usability])AC_COMPILE_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT([$4])@%:@include <$1>])],		  [ac_header_compiler=yes],		  [ac_header_compiler=no])AC_MSG_RESULT([$ac_header_compiler])# Is the header present?AC_MSG_CHECKING([$1 presence])AC_PREPROC_IFELSE([AC_LANG_SOURCE([@%:@include <$1>])],		  [ac_header_preproc=yes],		  [ac_header_preproc=no])AC_MSG_RESULT([$ac_header_preproc])# So?  What about this header?case $ac_header_compiler:$ac_header_preproc:$ac_[]_AC_LANG_ABBREV[]_preproc_warn_flag in  yes:no: )    AC_MSG_WARN([$1: accepted by the compiler, rejected by the preprocessor!])    AC_MSG_WARN([$1: proceeding with the compiler's result])    ac_header_preproc=yes    ;;  no:yes:* )    AC_MSG_WARN([$1: present but cannot be compiled])    AC_MSG_WARN([$1:     check for missing prerequisite headers?])    AC_MSG_WARN([$1: see the Autoconf documentation])    AC_MSG_WARN([$1:     section "Present But Cannot Be Compiled"])    AC_MSG_WARN([$1: proceeding with the preprocessor's result])    AC_MSG_WARN([$1: in the future, the compiler will take precedence])    m4_ifset([AC_PACKAGE_BUGREPORT],    [( AS_BOX([Report this to ]AC_PACKAGE_BUGREPORT)     ) | sed "s/^/$as_me: WARNING:     /" >&2])    ;;esacAC_CACHE_CHECK([for $1], ac_Header,	       [AS_VAR_SET(ac_Header, $ac_header_preproc)])])dnl ! set ac_HEADERAS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnlAS_VAR_POPDEF([ac_Header])dnl])# _AC_CHECK_HEADER_MONGREL# _AC_CHECK_HEADER_NEW(HEADER-FILE,#		       [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],#		       [INCLUDES = DEFAULT-INCLUDES])# --------------------------------------------------------------# Check the compiler accepts HEADER-FILE.  The INCLUDES are defaulted.m4_define([_AC_CHECK_HEADER_NEW],[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_$1])dnlAC_CACHE_CHECK([for $1], ac_Header,	       [AC_COMPILE_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT([$4])@%:@include <$1>])],				  [AS_VAR_SET(ac_Header, yes)],				  [AS_VAR_SET(ac_Header, no)])])AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnlAS_VAR_POPDEF([ac_Header])dnl])# _AC_CHECK_HEADER_NEW# _AC_CHECK_HEADER_OLD(HEADER-FILE,#		       [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])# --------------------------------------------------------------# Check the preprocessor accepts HEADER-FILE.m4_define([_AC_CHECK_HEADER_OLD],[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_$1])dnlAC_CACHE_CHECK([for $1], ac_Header,	       [AC_PREPROC_IFELSE([AC_LANG_SOURCE([@%:@include <$1>])],					 [AS_VAR_SET(ac_Header, yes)],					 [AS_VAR_SET(ac_Header, no)])])AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnlAS_VAR_POPDEF([ac_Header])dnl])# _AC_CHECK_HEADER_OLD# AH_CHECK_HEADERS(HEADER-FILE...)# --------------------------------m4_define([AH_CHECK_HEADERS],[m4_foreach_w([AC_Header], [$1],  [AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([AC_Header])),     [Define to 1 if you have the <]m4_defn([AC_Header])[> header file.])])])# AC_CHECK_HEADERS(HEADER-FILE...,#		   [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],#		   [INCLUDES])# ----------------------------------------------------------AC_DEFUN([AC_CHECK_HEADERS],[AH_CHECK_HEADERS([$1])dnlfor ac_header in $1doAC_CHECK_HEADER($ac_header,		[AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$ac_header)) $2],		[$3],		[$4])dnldone])# AC_CHECK_HEADERS# AC_CHECK_HEADERS_ONCE(HEADER-FILE...)# -------------------------------------AC_DEFUN([AC_CHECK_HEADERS_ONCE],[  AH_CHECK_HEADERS([$1])  m4_foreach_w([AC_Header], [$1],    [AC_DEFUN([_AC_Header_]m4_quote(m4_translit(AC_Header, [./-], [___])),       [m4_divert_text([INIT_PREPARE],	  [ac_header_list="$ac_header_list AC_Header"])	_AC_HEADERS_EXPANSION])     AC_REQUIRE([_AC_Header_]m4_quote(m4_translit(AC_Header, [./-], [___])))])])m4_define([_AC_HEADERS_EXPANSION],[  m4_divert_text([DEFAULTS], [ac_header_list=])  AC_CHECK_HEADERS([$ac_header_list])  m4_define([_AC_HEADERS_EXPANSION], [])])## --------------------- #### 2. Default includes.  #### --------------------- ### Always use the same set of default headers for all the generic# macros.  It is easier to document, to extend, and to understand than# having specific defaults for each macro.# _AC_INCLUDES_DEFAULT_REQUIREMENTS# ---------------------------------# Required when AC_INCLUDES_DEFAULT uses its default branch.AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],[m4_divert_text([DEFAULTS],[# Factoring default headers for most tests.dnl If ever you change this variable, please keep autoconf.texi in sync.ac_includes_default="\#include <stdio.h>#if HAVE_SYS_TYPES_H# include <sys/types.h>#endif#if HAVE_SYS_STAT_H# include <sys/stat.h>#endif#if STDC_HEADERS# include <stdlib.h># include <stddef.h>#else# if HAVE_STDLIB_H#  include <stdlib.h># endif#endif#if HAVE_STRING_H# if !STDC_HEADERS && HAVE_MEMORY_H#  include <memory.h># endif# include <string.h>#endif#if HAVE_STRINGS_H# include <strings.h>#endif#if HAVE_INTTYPES_H# include <inttypes.h>#endif#if HAVE_STDINT_H# include <stdint.h>#endif#if HAVE_UNISTD_H# include <unistd.h>#endif"])dnlAC_REQUIRE([AC_HEADER_STDC])dnl# On IRIX 5.3, sys/types and inttypes.h are conflicting.AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \		  inttypes.h stdint.h unistd.h],		 [], [], $ac_includes_default)])# _AC_INCLUDES_DEFAULT_REQUIREMENTS# AC_INCLUDES_DEFAULT([INCLUDES])# -------------------------------# If INCLUDES is empty, expand in default includes, otherwise in# INCLUDES.# In most cases INCLUDES is not double quoted as it should, and if# for instance INCLUDES = `#include <stdio.h>' then unless we force# a newline, the hash will swallow the closing paren etc. etc.# The usual failure.# Take no risk: for the newline.AC_DEFUN([AC_INCLUDES_DEFAULT],[m4_ifval([$1], [$1],	  [AC_REQUIRE([_AC_INCLUDES_DEFAULT_REQUIREMENTS])dnl$ac_includes_default])])## ------------------------------------------- #### 3. Headers to check with AC_CHECK_HEADERS.  #### ------------------------------------------- ### errno.h is portable.AN_HEADER([OS.h],               [AC_CHECK_HEADERS])AN_HEADER([argz.h],             [AC_CHECK_HEADERS])AN_HEADER([arpa/inet.h],        [AC_CHECK_HEADERS])AN_HEADER([fcntl.h],            [AC_CHECK_HEADERS])AN_HEADER([fenv.h],             [AC_CHECK_HEADERS])AN_HEADER([float.h],            [AC_CHECK_HEADERS])AN_HEADER([fs_info.h],          [AC_CHECK_HEADERS])AN_HEADER([inttypes.h],         [AC_CHECK_HEADERS])AN_HEADER([langinfo.h],         [AC_CHECK_HEADERS])AN_HEADER([libintl.h],          [AC_CHECK_HEADERS])AN_HEADER([limits.h],           [AC_CHECK_HEADERS])AN_HEADER([locale.h],           [AC_CHECK_HEADERS])AN_HEADER([mach/mach.h],        [AC_CHECK_HEADERS])AN_HEADER([malloc.h],           [AC_CHECK_HEADERS])AN_HEADER([memory.h],           [AC_CHECK_HEADERS])AN_HEADER([mntent.h],           [AC_CHECK_HEADERS])AN_HEADER([mnttab.h],           [AC_CHECK_HEADERS])AN_HEADER([netdb.h],            [AC_CHECK_HEADERS])AN_HEADER([netinet/in.h],       [AC_CHECK_HEADERS])AN_HEADER([nl_types.h],         [AC_CHECK_HEADERS])AN_HEADER([nlist.h],            [AC_CHECK_HEADERS])AN_HEADER([paths.h],            [AC_CHECK_HEADERS])AN_HEADER([sgtty.h],            [AC_CHECK_HEADERS])AN_HEADER([shadow.h],           [AC_CHECK_HEADERS])AN_HEADER([stddef.h],           [AC_CHECK_HEADERS])AN_HEADER([stdint.h],           [AC_CHECK_HEADERS])AN_HEADER([stdio_ext.h],        [AC_CHECK_HEADERS])AN_HEADER([stdlib.h],           [AC_CHECK_HEADERS])AN_HEADER([string.h],           [AC_CHECK_HEADERS])AN_HEADER([strings.h],          [AC_CHECK_HEADERS])AN_HEADER([sys/acl.h],          [AC_CHECK_HEADERS])AN_HEADER([sys/file.h],         [AC_CHECK_HEADERS])AN_HEADER([sys/filsys.h],       [AC_CHECK_HEADERS])AN_HEADER([sys/fs/s5param.h],   [AC_CHECK_HEADERS])AN_HEADER([sys/fs_types.h],     [AC_CHECK_HEADERS])AN_HEADER([sys/fstyp.h],        [AC_CHECK_HEADERS])AN_HEADER([sys/ioctl.h],        [AC_CHECK_HEADERS])AN_HEADER([sys/mntent.h],       [AC_CHECK_HEADERS])AN_HEADER([sys/mount.h],        [AC_CHECK_HEADERS])AN_HEADER([sys/param.h],        [AC_CHECK_HEADERS])AN_HEADER([sys/socket.h],       [AC_CHECK_HEADERS])AN_HEADER([sys/statfs.h],       [AC_CHECK_HEADERS])AN_HEADER([sys/statvfs.h],      [AC_CHECK_HEADERS])AN_HEADER([sys/systeminfo.h],   [AC_CHECK_HEADERS])AN_HEADER([sys/time.h],         [AC_CHECK_HEADERS])AN_HEADER([sys/timeb.h],        [AC_CHECK_HEADERS])AN_HEADER([sys/vfs.h],          [AC_CHECK_HEADERS])AN_HEADER([sys/window.h],       [AC_CHECK_HEADERS])AN_HEADER([syslog.h],           [AC_CHECK_HEADERS])AN_HEADER([termio.h],           [AC_CHECK_HEADERS])AN_HEADER([termios.h],          [AC_CHECK_HEADERS])AN_HEADER([unistd.h],           [AC_CHECK_HEADERS])AN_HEADER([utime.h],            [AC_CHECK_HEADERS])AN_HEADER([utmp.h],             [AC_CHECK_HEADERS])AN_HEADER([utmpx.h],            [AC_CHECK_HEADERS])AN_HEADER([values.h],           [AC_CHECK_HEADERS])AN_HEADER([wchar.h],            [AC_CHECK_HEADERS])AN_HEADER([wctype.h],           [AC_CHECK_HEADERS])## ------------------------------- #### 4. Tests for specific headers.  #### ------------------------------- ### AC_HEADER_ASSERT# ----------------# Check whether to enable assertions.AC_DEFUN([AC_HEADER_ASSERT],[  AC_MSG_CHECKING([whether to enable assertions])  AC_ARG_ENABLE([assert],    [  --disable-assert        turn off assertions],    [AC_MSG_RESULT([no])     AC_DEFINE(NDEBUG, 1, [Define to 1 if assertions should be disabled.])],    [AC_MSG_RESULT(yes)])])# _AC_CHECK_HEADER_DIRENT(HEADER-FILE,#			  [ACTION-IF-FOUND], [ACTION-IF-NOT_FOUND])# -----------------------------------------------------------------# Like AC_CHECK_HEADER, except also make sure that HEADER-FILE# defines the type `DIR'.  dirent.h on NextStep 3.2 doesn't.m4_define([_AC_CHECK_HEADER_DIRENT],[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_dirent_$1])dnlAC_CACHE_CHECK([for $1 that defines DIR], ac_Header,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>#include <$1>],				    [if ((DIR *) 0)return 0;])],		   [AS_VAR_SET(ac_Header, yes)],		   [AS_VAR_SET(ac_Header, no)])])AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnlAS_VAR_POPDEF([ac_Header])dnl])# _AC_CHECK_HEADER_DIRENT# AH_CHECK_HEADERS_DIRENT(HEADERS...)# -----------------------------------m4_define([AH_CHECK_HEADERS_DIRENT],[m4_foreach_w([AC_Header], [$1],  [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Header),	       [Define to 1 if you have the <]AC_Header[> header file, and		it defines `DIR'.])])])# AC_HEADER_DIRENT# ----------------AN_HEADER([dirent.h],   [AC_HEADER_DIRENT])AN_HEADER([ndir.h],     [AC_HEADER_DIRENT])AN_HEADER([sys/dir.h],  [AC_HEADER_DIRENT])AN_HEADER([sys/ndir.h], [AC_HEADER_DIRENT])AC_DEFUN([AC_HEADER_DIRENT],[AH_CHECK_HEADERS_DIRENT(dirent.h sys/ndir.h sys/dir.h ndir.h)ac_header_dirent=nofor ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do  _AC_CHECK_HEADER_DIRENT($ac_hdr,			  [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$ac_hdr), 1)ac_header_dirent=$ac_hdr; break])done# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.if test $ac_header_dirent = dirent.h; then  AC_SEARCH_LIBS(opendir, dir)else  AC_SEARCH_LIBS(opendir, x)fi])# AC_HEADER_DIRENT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -