diff options
Diffstat (limited to 'gl/m4/include_next.m4')
| -rw-r--r-- | gl/m4/include_next.m4 | 90 |
1 files changed, 22 insertions, 68 deletions
diff --git a/gl/m4/include_next.m4 b/gl/m4/include_next.m4 index 108d9456..9f19215e 100644 --- a/gl/m4/include_next.m4 +++ b/gl/m4/include_next.m4 | |||
| @@ -1,12 +1,13 @@ | |||
| 1 | # include_next.m4 serial 23 | 1 | # include_next.m4 serial 26 |
| 2 | dnl Copyright (C) 2006-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. |
| 3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
| 5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
| 6 | 6 | ||
| 7 | dnl From Paul Eggert and Derek Price. | 7 | dnl From Paul Eggert and Derek Price. |
| 8 | 8 | ||
| 9 | dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER. | 9 | dnl Sets INCLUDE_NEXT, INCLUDE_NEXT_AS_FIRST_DIRECTIVE, PRAGMA_SYSTEM_HEADER, |
| 10 | dnl and PRAGMA_COLUMNS. | ||
| 10 | dnl | 11 | dnl |
| 11 | dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to | 12 | dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to |
| 12 | dnl 'include' otherwise. | 13 | dnl 'include' otherwise. |
| @@ -105,19 +106,21 @@ dnl We intentionally avoid using AC_LANG_SOURCE here. | |||
| 105 | AC_SUBST([INCLUDE_NEXT]) | 106 | AC_SUBST([INCLUDE_NEXT]) |
| 106 | AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) | 107 | AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) |
| 107 | AC_SUBST([PRAGMA_SYSTEM_HEADER]) | 108 | AC_SUBST([PRAGMA_SYSTEM_HEADER]) |
| 108 | AC_CACHE_CHECK([whether system header files limit the line length], | 109 | |
| 109 | [gl_cv_pragma_columns], | 110 | dnl HP NonStop systems, which define __TANDEM, limit the line length |
| 110 | [dnl HP NonStop systems, which define __TANDEM, have this misfeature. | 111 | dnl after including some system header files. |
| 111 | AC_EGREP_CPP([choke me], | 112 | AC_CACHE_CHECK([whether source code line length is unlimited], |
| 113 | [gl_cv_source_line_length_unlimited], | ||
| 114 | [AC_EGREP_CPP([choke me], | ||
| 112 | [ | 115 | [ |
| 113 | #ifdef __TANDEM | 116 | #ifdef __TANDEM |
| 114 | choke me | 117 | choke me |
| 115 | #endif | 118 | #endif |
| 116 | ], | 119 | ], |
| 117 | [gl_cv_pragma_columns=yes], | 120 | [gl_cv_source_line_length_unlimited=no], |
| 118 | [gl_cv_pragma_columns=no]) | 121 | [gl_cv_source_line_length_unlimited=yes]) |
| 119 | ]) | 122 | ]) |
| 120 | if test $gl_cv_pragma_columns = yes; then | 123 | if test $gl_cv_source_line_length_unlimited = no; then |
| 121 | PRAGMA_COLUMNS="#pragma COLUMNS 10000" | 124 | PRAGMA_COLUMNS="#pragma COLUMNS 10000" |
| 122 | else | 125 | else |
| 123 | PRAGMA_COLUMNS= | 126 | PRAGMA_COLUMNS= |
| @@ -175,89 +178,40 @@ AC_DEFUN([gl_NEXT_HEADERS_INTERNAL], | |||
| 175 | [AC_CHECK_HEADERS_ONCE([$1]) | 178 | [AC_CHECK_HEADERS_ONCE([$1]) |
| 176 | ]) | 179 | ]) |
| 177 | 180 | ||
| 178 | dnl FIXME: gl_next_header and gl_header_exists must be used unquoted | ||
| 179 | dnl until we can assume autoconf 2.64 or newer. | ||
| 180 | m4_foreach_w([gl_HEADER_NAME], [$1], | 181 | m4_foreach_w([gl_HEADER_NAME], [$1], |
| 181 | [AS_VAR_PUSHDEF([gl_next_header], | 182 | [AS_VAR_PUSHDEF([gl_next_header], |
| 182 | [gl_cv_next_]m4_defn([gl_HEADER_NAME])) | 183 | [gl_cv_next_]m4_defn([gl_HEADER_NAME])) |
| 183 | if test $gl_cv_have_include_next = yes; then | 184 | if test $gl_cv_have_include_next = yes; then |
| 184 | AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) | 185 | AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>']) |
| 185 | else | 186 | else |
| 186 | AC_CACHE_CHECK( | 187 | AC_CACHE_CHECK( |
| 187 | [absolute name of <]m4_defn([gl_HEADER_NAME])[>], | 188 | [absolute name of <]m4_defn([gl_HEADER_NAME])[>], |
| 188 | m4_defn([gl_next_header]), | 189 | [gl_next_header], |
| 189 | [m4_if([$2], [check], | 190 | [m4_if([$2], [check], |
| 190 | [AS_VAR_PUSHDEF([gl_header_exists], | 191 | [AS_VAR_PUSHDEF([gl_header_exists], |
| 191 | [ac_cv_header_]m4_defn([gl_HEADER_NAME])) | 192 | [ac_cv_header_]m4_defn([gl_HEADER_NAME])) |
| 192 | if test AS_VAR_GET(gl_header_exists) = yes; then | 193 | if test AS_VAR_GET([gl_header_exists]) = yes; then |
| 193 | AS_VAR_POPDEF([gl_header_exists]) | 194 | AS_VAR_POPDEF([gl_header_exists]) |
| 194 | ]) | 195 | ]) |
| 195 | AC_LANG_CONFTEST( | 196 | gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME) |
| 196 | [AC_LANG_SOURCE( | 197 | AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME)) |
| 197 | [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]] | 198 | AS_VAR_SET([gl_next_header], ['"'$gl_header'"']) |
| 198 | )]) | ||
| 199 | dnl AIX "xlc -E" and "cc -E" omit #line directives for header | ||
| 200 | dnl files that contain only a #include of other header files and | ||
| 201 | dnl no non-comment tokens of their own. This leads to a failure | ||
| 202 | dnl to detect the absolute name of <dirent.h>, <signal.h>, | ||
| 203 | dnl <poll.h> and others. The workaround is to force preservation | ||
| 204 | dnl of comments through option -C. This ensures all necessary | ||
| 205 | dnl #line directives are present. GCC supports option -C as well. | ||
| 206 | case "$host_os" in | ||
| 207 | aix*) gl_absname_cpp="$ac_cpp -C" ;; | ||
| 208 | *) gl_absname_cpp="$ac_cpp" ;; | ||
| 209 | esac | ||
| 210 | changequote(,) | ||
| 211 | case "$host_os" in | ||
| 212 | mingw*) | ||
| 213 | dnl For the sake of native Windows compilers (excluding gcc), | ||
| 214 | dnl treat backslash as a directory separator, like /. | ||
| 215 | dnl Actually, these compilers use a double-backslash as | ||
| 216 | dnl directory separator, inside the | ||
| 217 | dnl # line "filename" | ||
| 218 | dnl directives. | ||
| 219 | gl_dirsep_regex='[/\\]' | ||
| 220 | ;; | ||
| 221 | *) | ||
| 222 | gl_dirsep_regex='\/' | ||
| 223 | ;; | ||
| 224 | esac | ||
| 225 | dnl A sed expression that turns a string into a basic regular | ||
| 226 | dnl expression, for use within "/.../". | ||
| 227 | gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' | ||
| 228 | changequote([,]) | ||
| 229 | gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \ | ||
| 230 | | sed -e "$gl_make_literal_regex_sed"` | ||
| 231 | gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ | ||
| 232 | s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ | ||
| 233 | changequote(,)dnl | ||
| 234 | s|^/[^/]|//&| | ||
| 235 | changequote([,])dnl | ||
| 236 | p | ||
| 237 | q | ||
| 238 | }' | ||
| 239 | dnl eval is necessary to expand gl_absname_cpp. | ||
| 240 | dnl Ultrix and Pyramid sh refuse to redirect output of eval, | ||
| 241 | dnl so use subshell. | ||
| 242 | AS_VAR_SET(gl_next_header, | ||
| 243 | ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | | ||
| 244 | sed -n "$gl_absolute_header_sed"`'"']) | ||
| 245 | m4_if([$2], [check], | 199 | m4_if([$2], [check], |
| 246 | [else | 200 | [else |
| 247 | AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) | 201 | AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>']) |
| 248 | fi | 202 | fi |
| 249 | ]) | 203 | ]) |
| 250 | ]) | 204 | ]) |
| 251 | fi | 205 | fi |
| 252 | AC_SUBST( | 206 | AC_SUBST( |
| 253 | AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), | 207 | AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), |
| 254 | [AS_VAR_GET(gl_next_header)]) | 208 | [AS_VAR_GET([gl_next_header])]) |
| 255 | if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then | 209 | if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then |
| 256 | # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' | 210 | # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' |
| 257 | gl_next_as_first_directive='<'gl_HEADER_NAME'>' | 211 | gl_next_as_first_directive='<'gl_HEADER_NAME'>' |
| 258 | else | 212 | else |
| 259 | # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' | 213 | # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' |
| 260 | gl_next_as_first_directive=AS_VAR_GET(gl_next_header) | 214 | gl_next_as_first_directive=AS_VAR_GET([gl_next_header]) |
| 261 | fi | 215 | fi |
| 262 | AC_SUBST( | 216 | AC_SUBST( |
| 263 | AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), | 217 | AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), |
