~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to m4/include_next.m4

  • Committer: Monty Taylor
  • Date: 2009-03-24 17:33:03 UTC
  • mto: (960.5.2 mordred)
  • mto: This revision was merged to the branch mainline in revision 964.
  • Revision ID: mordred@inaugust.com-20090324173303-va856e49yqgvmrde
Moved handlerton to plugin/storage_engine.h.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# include_next.m4 serial 10
 
1
# include_next.m4 serial 6
2
2
dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
3
3
dnl This file is free software; the Free Software Foundation
4
4
dnl gives unlimited permission to copy and/or distribute it,
6
6
 
7
7
dnl From Paul Eggert and Derek Price.
8
8
 
9
 
dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
10
 
dnl
11
 
dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
12
 
dnl 'include' otherwise.
13
 
dnl
14
 
dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
15
 
dnl supports it in the special case that it is the first include directive in
16
 
dnl the given file, or to 'include' otherwise.
17
 
dnl
18
 
dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
19
 
dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
20
 
dnl '#pragma GCC system_header' has the same effect as if the file was found
21
 
dnl through the include search path specified with '-isystem' options (as
22
 
dnl opposed to the search path specified with '-I' options). Namely, gcc
23
 
dnl does not warn about some things, and on some systems (Solaris and Interix)
24
 
dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
25
 
dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
26
 
dnl of plain '__STDC__'.
27
 
 
28
9
AC_DEFUN([gl_INCLUDE_NEXT],
29
10
[
30
11
  AC_LANG_PREPROC_REQUIRE()
31
12
  AC_CACHE_CHECK([whether the preprocessor supports include_next],
32
13
    [gl_cv_have_include_next],
33
 
    [rm -rf conftestd1a conftestd1b conftestd2
34
 
     mkdir conftestd1a conftestd1b conftestd2
35
 
     dnl The include of <stdio.h> is because IBM C 9.0 on AIX 6.1 supports
36
 
     dnl include_next when used as first preprocessor directive in a file,
37
 
     dnl but not when preceded by another include directive. Additionally,
38
 
     dnl with this same compiler, include_next is a no-op when used in a
39
 
     dnl header file that was included by specifying its absolute file name.
40
 
     dnl Despite these two bugs, include_next is used in the compiler's
41
 
     dnl <math.h>. By virtue of the second bug, we need to use include_next
42
 
     dnl as well in this case.
43
 
     cat <<EOF > conftestd1a/conftest.h
44
 
#define DEFINED_IN_CONFTESTD1
45
 
#include_next <conftest.h>
46
 
#ifdef DEFINED_IN_CONFTESTD2
47
 
int foo;
48
 
#else
49
 
#error "include_next doesn't work"
50
 
#endif
51
 
EOF
52
 
     cat <<EOF > conftestd1b/conftest.h
53
 
#define DEFINED_IN_CONFTESTD1
54
 
#include <stdio.h>
 
14
    [rm -rf conftestd1 conftestd2
 
15
     mkdir conftestd1 conftestd2
 
16
     cat <<EOF > conftestd1/conftest.h
 
17
#define DEFINED_IN_CONFTESTD1
55
18
#include_next <conftest.h>
56
19
#ifdef DEFINED_IN_CONFTESTD2
57
20
int foo;
65
28
#endif
66
29
#define DEFINED_IN_CONFTESTD2
67
30
EOF
68
 
     gl_save_CPPFLAGS="$CPPFLAGS"
69
 
     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
 
31
     save_CPPFLAGS="$CPPFLAGS"
 
32
     CPPFLAGS="$CPPFLAGS -Iconftestd1 -Iconftestd2"
70
33
     AC_COMPILE_IFELSE([#include <conftest.h>],
71
34
       [gl_cv_have_include_next=yes],
72
 
       [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
73
 
        AC_COMPILE_IFELSE([#include <conftest.h>],
74
 
          [gl_cv_have_include_next=buggy],
75
 
          [gl_cv_have_include_next=no])
76
 
       ])
77
 
     CPPFLAGS="$gl_save_CPPFLAGS"
78
 
     rm -rf conftestd1a conftestd1b conftestd2
 
35
       [gl_cv_have_include_next=no])
 
36
     CPPFLAGS="$save_CPPFLAGS"
 
37
     rm -rf conftestd1 conftestd2
79
38
    ])
80
 
  PRAGMA_SYSTEM_HEADER=
81
39
  if test $gl_cv_have_include_next = yes; then
 
40
 
 
41
    dnl FIXME: Remove HAVE_INCLUDE_NEXT and update everything that uses it
 
42
    dnl to use @INCLUDE_NEXT@ instead.
 
43
    AC_DEFINE([HAVE_INCLUDE_NEXT], 1,
 
44
              [Define if your compiler supports the #include_next directive.])
 
45
 
82
46
    INCLUDE_NEXT=include_next
83
 
    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
84
 
    if test -n "$GCC"; then
85
 
      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
86
 
    fi
87
47
  else
88
 
    if test $gl_cv_have_include_next = buggy; then
89
 
      INCLUDE_NEXT=include
90
 
      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
91
 
    else
92
 
      INCLUDE_NEXT=include
93
 
      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
94
 
    fi
 
48
    INCLUDE_NEXT=include
95
49
  fi
96
50
  AC_SUBST([INCLUDE_NEXT])
97
 
  AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
98
 
  AC_SUBST([PRAGMA_SYSTEM_HEADER])
99
51
])
100
52
 
101
53
# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
117
69
AC_DEFUN([gl_CHECK_NEXT_HEADERS],
118
70
[
119
71
  AC_REQUIRE([gl_INCLUDE_NEXT])
120
 
  AC_REQUIRE([AC_CANONICAL_HOST])
121
72
  AC_CHECK_HEADERS_ONCE([$1])
122
73
 
123
74
  m4_foreach_w([gl_HEADER_NAME], [$1],
136
87
              [AC_LANG_SOURCE(
137
88
                 [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
138
89
               )])
139
 
            dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
140
 
            dnl that contain only a #include of other header files and no
141
 
            dnl non-comment tokens of their own. This leads to a failure to
142
 
            dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
143
 
            dnl and others. The workaround is to force preservation of comments
144
 
            dnl through option -C. This ensures all necessary #line directives
145
 
            dnl are present. GCC supports option -C as well.
146
 
            case "$host_os" in
147
 
              aix*) gl_absname_cpp="$ac_cpp -C" ;;
148
 
              *)    gl_absname_cpp="$ac_cpp" ;;
149
 
            esac
150
 
            dnl eval is necessary to expand gl_absname_cpp.
 
90
            dnl eval is necessary to expand ac_cpp.
151
91
            dnl Ultrix and Pyramid sh refuse to redirect output of eval,
152
92
            dnl so use subshell.
153
93
            AS_VAR_SET([gl_next_header],
154
 
              ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
 
94
              ['"'`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
155
95
               sed -n '\#/]m4_quote(m4_defn([gl_HEADER_NAME]))[#{
156
96
                 s#.*"\(.*/]m4_quote(m4_defn([gl_HEADER_NAME]))[\)".*#\1#
157
97
                 s#^/[^/]#//&#