1 # onceonly_2_57.m4 serial 3 2 dnl Copyright (C) 2002-2003, 2005 Free Software Foundation, Inc. 3 dnl This file is free software, distributed under the terms of the GNU 4 dnl General Public License. As a special exception to the GNU General 5 dnl Public License, this file may be distributed as part of a program 6 dnl that contains a configuration script generated by Autoconf, under 7 dnl the same distribution terms as the rest of that program. 8 9 dnl This file defines some "once only" variants of standard autoconf macros. 10 dnl AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS 11 dnl AC_CHECK_FUNCS_ONCE like AC_CHECK_FUNCS 12 dnl AC_CHECK_DECLS_ONCE like AC_CHECK_DECLS 13 dnl AC_REQUIRE([AC_HEADER_STDC]) like AC_HEADER_STDC 14 dnl The advantage is that the check for each of the headers/functions/decls 15 dnl will be put only once into the 'configure' file. It keeps the size of 16 dnl the 'configure' file down, and avoids redundant output when 'configure' 17 dnl is run. 18 dnl The drawback is that the checks cannot be conditionalized. If you write 19 dnl if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi 20 dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to 21 dnl empty, and the check will be inserted before the body of the AC_DEFUNed 22 dnl function. 23 24 dnl This is like onceonly.m4, except that it uses diversions to named sections 25 dnl DEFAULTS and INIT_PREPARE in order to check all requested headers at once, 26 dnl thus reducing the size of 'configure'. Works with autoconf-2.57. The 27 dnl size reduction is ca. 9%. 28 29 dnl Autoconf version 2.57 or newer is recommended. 30 AC_PREREQ(2.57) 31 32 # AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of 33 # AC_CHECK_HEADERS(HEADER1 HEADER2 ...). 34 AC_DEFUN([AC_CHECK_HEADERS_ONCE], [ 35 : 36 AC_FOREACH([gl_HEADER_NAME], [$1], [ 37 AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME, 38 [./-], [___])), [ 39 m4_divert_text([INIT_PREPARE], 40 [gl_header_list="$gl_header_list gl_HEADER_NAME"]) 41 gl_HEADERS_EXPANSION 42 AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_HEADER_NAME])), 43 [Define to 1 if you have the <]m4_defn([gl_HEADER_NAME])[> header file.]) 44 ]) 45 AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME, 46 [./-], [___]))) 47 ]) 48 ]) 49 m4_define([gl_HEADERS_EXPANSION], [ 50 m4_divert_text([DEFAULTS], [gl_header_list=]) 51 AC_CHECK_HEADERS([$gl_header_list]) 52 m4_define([gl_HEADERS_EXPANSION], []) 53 ]) 54 55 # AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of 56 # AC_CHECK_FUNCS(FUNC1 FUNC2 ...). 57 AC_DEFUN([AC_CHECK_FUNCS_ONCE], [ 58 : 59 AC_FOREACH([gl_FUNC_NAME], [$1], [ 60 AC_DEFUN([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]), [ 61 m4_divert_text([INIT_PREPARE], 62 [gl_func_list="$gl_func_list gl_FUNC_NAME"]) 63 gl_FUNCS_EXPANSION 64 AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_FUNC_NAME])), 65 [Define to 1 if you have the `]m4_defn([gl_FUNC_NAME])[' function.]) 66 ]) 67 AC_REQUIRE([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME])) 68 ]) 69 ]) 70 m4_define([gl_FUNCS_EXPANSION], [ 71 m4_divert_text([DEFAULTS], [gl_func_list=]) 72 AC_CHECK_FUNCS([$gl_func_list]) 73 m4_define([gl_FUNCS_EXPANSION], []) 74 ]) 75 76 # AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of 77 # AC_CHECK_DECLS(DECL1, DECL2, ...). 78 AC_DEFUN([AC_CHECK_DECLS_ONCE], [ 79 : 80 AC_FOREACH([gl_DECL_NAME], [$1], [ 81 AC_DEFUN([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]), [ 82 AC_CHECK_DECLS(m4_defn([gl_DECL_NAME])) 83 ]) 84 AC_REQUIRE([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME])) 85 ]) 86 ]) 87