1*a1acfa9bSespie# onceonly.m4 serial 3 2*a1acfa9bSespiednl Copyright (C) 2002, 2003 Free Software Foundation, Inc. 3*a1acfa9bSespiednl This file is free software, distributed under the terms of the GNU 4*a1acfa9bSespiednl General Public License. As a special exception to the GNU General 5*a1acfa9bSespiednl Public License, this file may be distributed as part of a program 6*a1acfa9bSespiednl that contains a configuration script generated by Autoconf, under 7*a1acfa9bSespiednl the same distribution terms as the rest of that program. 8*a1acfa9bSespie 9*a1acfa9bSespiednl This file defines some "once only" variants of standard autoconf macros. 10*a1acfa9bSespiednl AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS 11*a1acfa9bSespiednl AC_CHECK_FUNCS_ONCE like AC_CHECK_FUNCS 12*a1acfa9bSespiednl AC_CHECK_DECLS_ONCE like AC_CHECK_DECLS 13*a1acfa9bSespiednl AC_REQUIRE([AC_HEADER_STDC]) like AC_HEADER_STDC 14*a1acfa9bSespiednl The advantage is that the check for each of the headers/functions/decls 15*a1acfa9bSespiednl will be put only once into the 'configure' file. It keeps the size of 16*a1acfa9bSespiednl the 'configure' file down, and avoids redundant output when 'configure' 17*a1acfa9bSespiednl is run. 18*a1acfa9bSespiednl The drawback is that the checks cannot be conditionalized. If you write 19*a1acfa9bSespiednl if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi 20*a1acfa9bSespiednl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to 21*a1acfa9bSespiednl empty, and the check will be inserted before the body of the AC_DEFUNed 22*a1acfa9bSespiednl function. 23*a1acfa9bSespie 24*a1acfa9bSespiednl Autoconf version 2.57 or newer is recommended. 25*a1acfa9bSespieAC_PREREQ(2.54) 26*a1acfa9bSespie 27*a1acfa9bSespie# AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of 28*a1acfa9bSespie# AC_CHECK_HEADERS(HEADER1 HEADER2 ...). 29*a1acfa9bSespieAC_DEFUN([AC_CHECK_HEADERS_ONCE], [ 30*a1acfa9bSespie : 31*a1acfa9bSespie AC_FOREACH([gl_HEADER_NAME], [$1], [ 32*a1acfa9bSespie AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(defn([gl_HEADER_NAME]), 33*a1acfa9bSespie [-./], [___])), [ 34*a1acfa9bSespie AC_CHECK_HEADERS(gl_HEADER_NAME) 35*a1acfa9bSespie ]) 36*a1acfa9bSespie AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME, 37*a1acfa9bSespie [-./], [___]))) 38*a1acfa9bSespie ]) 39*a1acfa9bSespie]) 40*a1acfa9bSespie 41*a1acfa9bSespie# AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of 42*a1acfa9bSespie# AC_CHECK_FUNCS(FUNC1 FUNC2 ...). 43*a1acfa9bSespieAC_DEFUN([AC_CHECK_FUNCS_ONCE], [ 44*a1acfa9bSespie : 45*a1acfa9bSespie AC_FOREACH([gl_FUNC_NAME], [$1], [ 46*a1acfa9bSespie AC_DEFUN([gl_CHECK_FUNC_]defn([gl_FUNC_NAME]), [ 47*a1acfa9bSespie AC_CHECK_FUNCS(defn([gl_FUNC_NAME])) 48*a1acfa9bSespie ]) 49*a1acfa9bSespie AC_REQUIRE([gl_CHECK_FUNC_]defn([gl_FUNC_NAME])) 50*a1acfa9bSespie ]) 51*a1acfa9bSespie]) 52*a1acfa9bSespie 53*a1acfa9bSespie# AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of 54*a1acfa9bSespie# AC_CHECK_DECLS(DECL1, DECL2, ...). 55*a1acfa9bSespieAC_DEFUN([AC_CHECK_DECLS_ONCE], [ 56*a1acfa9bSespie : 57*a1acfa9bSespie AC_FOREACH([gl_DECL_NAME], [$1], [ 58*a1acfa9bSespie AC_DEFUN([gl_CHECK_DECL_]defn([gl_DECL_NAME]), [ 59*a1acfa9bSespie AC_CHECK_DECLS(defn([gl_DECL_NAME])) 60*a1acfa9bSespie ]) 61*a1acfa9bSespie AC_REQUIRE([gl_CHECK_DECL_]defn([gl_DECL_NAME])) 62*a1acfa9bSespie ]) 63*a1acfa9bSespie]) 64