bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-gnulib] Re: What is AC_CHECK_FUNCS_ONCE?


From: Akim Demaille
Subject: [Bug-gnulib] Re: What is AC_CHECK_FUNCS_ONCE?
Date: Fri, 25 Apr 2003 19:31:16 +0200
User-agent: Gnus/5.090018 (Oort Gnus v0.18) Emacs/21.3 (gnu/linux)

 Bruno> Hi Akim,

Hi Bruno,

I'm very sorry for my miserable responsiveness.  I have to face too
many duties, and I'm afraid I'm not very useful to the free software
currently :(


 >> some macro named AC_CHECK_FUNCS_ONCE which is not an Autoconf macro,
 >> and therefore should not be named AC_.

 Bruno> You know better than me how to realize this macro in Autoconf. Can you
 Bruno> put AC_CHECK_FUNCS_ONCE into autoconf, or - even better - make
 Bruno> AC_CHECK_FUNCS behave like it by default?

Actually, I have this in mind since my first day in Autoconf, plus
some additional feature: I want

     AC_CHECK_FUNCS(fnmatch)

to use the fnmatch specific code.

 Bruno> The raison d'ĂȘtre of this macro is that we have 8 modules in gnulib
 Bruno> which each need AC_CHECK_FUNCS(isascii), and similarly for other
 Bruno> functions, headers, and declarations. Without any countermeasure a
 Bruno> package which invokes these autoconf macros will:

I understand this very well!  But it does require some surgery to
Autoconf, and extra care.  I had a running proof of concept years ago,
but never had time to really make it into the real Autoconf.

If you read the following, you will certainly also understand why
there are more m4 loops than sh loops in recent macros.  But note that
nothing prevents introducing sh loop for non specialized entities.
But again, this requires that someone takes some time to dive into
Autoconf's guts.

http://sources.redhat.com/ml/autoconf/1999-06/msg00071.html
http://sources.redhat.com/ml/autoconf/2001-04/msg00277.html


 >> Now, sit back, and look at this:
 >> [...]

 Bruno> This is a bug in autoconf, because

 Bruno> 1) You haven't documented which AC_* macros are callable inside
 Bruno> 'if' and which are not? (Some certainly are, like AC_DEFINE,
 Bruno> right?)

 Bruno> 2) Why should a configure file test for 'fprintf' when it doesn't
 Bruno> need the result? Or in the case of error.m4:

 Bruno> AC_FUNC_ERROR_AT_LINE
 Bruno> dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]).
 Bruno> -  if test $ac_cv_lib_error_at_line = no; then
 Bruno> -    jm_PREREQ_ERROR
 Bruno> -  fi
 Bruno> +  jm_PREREQ_ERROR
 Bruno> ])

 Bruno> Why should the configuration spend time to check the prerequisites
 Bruno> of a file that will not be compiled on the particular platform?
 Bruno> Gimme a real reason, other than "autoconf currently doesn't work
 Bruno> that way".

"I don't know how to make it different, be my guest."




reply via email to

[Prev in Thread] Current Thread [Next in Thread]