Annotation of embedaddon/libiconv/srcm4/absolute-header.m4, revision 1.1

1.1     ! misho       1: # absolute-header.m4 serial 16
        !             2: dnl Copyright (C) 2006-2019 Free Software Foundation, Inc.
        !             3: dnl This file is free software; the Free Software Foundation
        !             4: dnl gives unlimited permission to copy and/or distribute it,
        !             5: dnl with or without modifications, as long as this notice is preserved.
        !             6: 
        !             7: dnl From Derek Price.
        !             8: 
        !             9: # gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...)
        !            10: # ---------------------------------------
        !            11: # Find the absolute name of a header file, testing first if the header exists.
        !            12: # If the header were sys/inttypes.h, this macro would define
        !            13: # ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h
        !            14: # in config.h
        !            15: # (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"').
        !            16: # The three "///" are to pacify Sun C 5.8, which otherwise would say
        !            17: # "warning: #include of /usr/include/... may be non-portable".
        !            18: # Use '""', not '<>', so that the /// cannot be confused with a C99 comment.
        !            19: # Note: This macro assumes that the header file is not empty after
        !            20: # preprocessing, i.e. it does not only define preprocessor macros but also
        !            21: # provides some type/enum definitions or function/variable declarations.
        !            22: AC_DEFUN([gl_ABSOLUTE_HEADER],
        !            23: [AC_REQUIRE([AC_CANONICAL_HOST])
        !            24: AC_LANG_PREPROC_REQUIRE()dnl
        !            25: dnl FIXME: gl_absolute_header and ac_header_exists must be used unquoted
        !            26: dnl until we can assume autoconf 2.64 or newer.
        !            27: m4_foreach_w([gl_HEADER_NAME], [$1],
        !            28:   [AS_VAR_PUSHDEF([gl_absolute_header],
        !            29:                   [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl
        !            30:   AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>],
        !            31:     m4_defn([gl_absolute_header]),
        !            32:     [AS_VAR_PUSHDEF([ac_header_exists],
        !            33:                     [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl
        !            34:     AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl
        !            35:     if test AS_VAR_GET(ac_header_exists) = yes; then
        !            36:       gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME]))
        !            37:     fi
        !            38:     AS_VAR_POPDEF([ac_header_exists])dnl
        !            39:     ])dnl
        !            40:   AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])),
        !            41:                      ["AS_VAR_GET(gl_absolute_header)"],
        !            42:                      [Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.])
        !            43:   AS_VAR_POPDEF([gl_absolute_header])dnl
        !            44: ])dnl
        !            45: ])# gl_ABSOLUTE_HEADER
        !            46: 
        !            47: # gl_ABSOLUTE_HEADER_ONE(HEADER)
        !            48: # ------------------------------
        !            49: # Like gl_ABSOLUTE_HEADER, except that:
        !            50: #   - it assumes that the header exists,
        !            51: #   - it uses the current CPPFLAGS,
        !            52: #   - it does not cache the result,
        !            53: #   - it is silent.
        !            54: AC_DEFUN([gl_ABSOLUTE_HEADER_ONE],
        !            55: [
        !            56:   AC_REQUIRE([AC_CANONICAL_HOST])
        !            57:   AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])])
        !            58:   dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
        !            59:   dnl that contain only a #include of other header files and no
        !            60:   dnl non-comment tokens of their own. This leads to a failure to
        !            61:   dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
        !            62:   dnl and others. The workaround is to force preservation of comments
        !            63:   dnl through option -C. This ensures all necessary #line directives
        !            64:   dnl are present. GCC supports option -C as well.
        !            65:   case "$host_os" in
        !            66:     aix*) gl_absname_cpp="$ac_cpp -C" ;;
        !            67:     *)    gl_absname_cpp="$ac_cpp" ;;
        !            68:   esac
        !            69: changequote(,)
        !            70:   case "$host_os" in
        !            71:     mingw*)
        !            72:       dnl For the sake of native Windows compilers (excluding gcc),
        !            73:       dnl treat backslash as a directory separator, like /.
        !            74:       dnl Actually, these compilers use a double-backslash as
        !            75:       dnl directory separator, inside the
        !            76:       dnl   # line "filename"
        !            77:       dnl directives.
        !            78:       gl_dirsep_regex='[/\\]'
        !            79:       ;;
        !            80:     *)
        !            81:       gl_dirsep_regex='\/'
        !            82:       ;;
        !            83:   esac
        !            84:   dnl A sed expression that turns a string into a basic regular
        !            85:   dnl expression, for use within "/.../".
        !            86:   gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
        !            87:   gl_header_literal_regex=`echo '$1' \
        !            88:                            | sed -e "$gl_make_literal_regex_sed"`
        !            89:   gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
        !            90:       s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
        !            91:       s|^/[^/]|//&|
        !            92:       p
        !            93:       q
        !            94:     }'
        !            95: changequote([,])
        !            96:   dnl eval is necessary to expand gl_absname_cpp.
        !            97:   dnl Ultrix and Pyramid sh refuse to redirect output of eval,
        !            98:   dnl so use subshell.
        !            99:   AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]),
        !           100: [`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
        !           101:   sed -n "$gl_absolute_header_sed"`])
        !           102: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>