xref: /freebsd/contrib/bmake/aclocal.m4 (revision 50d2e745fa6eaec4ff8fc4112b6b86ba2e27ffe3)
13955d011SMarcel Moolenaardnl RCSid:
2*50d2e745SSimon J. Gerratydnl	$Id: aclocal.m4,v 1.6 2017/11/26 22:39:20 sjg Exp $
33955d011SMarcel Moolenaardnl
43955d011SMarcel Moolenaar
53955d011SMarcel Moolenaardnl
63955d011SMarcel Moolenaardnl AC_CHECK_HEADER_HAS(HEADER, PATTERN, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]))
73955d011SMarcel Moolenaar
83955d011SMarcel MoolenaarAC_DEFUN(AC_CHECK_HEADER_HAS,
93955d011SMarcel Moolenaar[dnl first check if header exists and if so, see if it contains PATTERN
103955d011SMarcel Moolenaarac_has_hdr=`echo "ac_cv_header_$1" | sed 'y%./+-%__p_%'`
113955d011SMarcel Moolenaarac_has_it=`echo "ac_cv_header_$1"_$2 | sed 'y%./+-%__p_%'`
123955d011SMarcel Moolenaarif eval "test \"`echo x'$'$ac_has_hdr`\" = x"; then
133955d011SMarcel Moolenaar  AC_CHECK_HEADER($1)
143955d011SMarcel Moolenaarfi
153955d011SMarcel Moolenaarif eval "test \"`echo '$'$ac_has_hdr`\" = yes"; then
163955d011SMarcel Moolenaar  ac_x=HAVE_`echo "$1" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
173955d011SMarcel Moolenaar  AC_DEFINE_UNQUOTED($ac_x)
183955d011SMarcel Moolenaar  AC_MSG_CHECKING([if $1 has $2])
193955d011SMarcel Moolenaar  AC_CACHE_VAL($ac_has_it,
203955d011SMarcel Moolenaar               [eval $ac_has_it=no
213955d011SMarcel Moolenaar                AC_EGREP_HEADER($2, $1, eval "$ac_has_it=yes")])
223955d011SMarcel Moolenaar
233955d011SMarcel Moolenaar  if eval "test \"`echo '$'$ac_has_it`\" = yes"; then
243955d011SMarcel Moolenaar    AC_MSG_RESULT(yes)
253955d011SMarcel Moolenaar    ac_x=HAVE_`echo "$1"_$2 | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
263955d011SMarcel Moolenaar    AC_DEFINE_UNQUOTED($ac_x)
273955d011SMarcel Moolenaar    ifelse([$3], , :, [$3])
283955d011SMarcel Moolenaar  else
293955d011SMarcel Moolenaar    AC_MSG_RESULT(no)
303955d011SMarcel Moolenaar    ifelse([$4], , , [$4
313955d011SMarcel Moolenaar])dnl
323955d011SMarcel Moolenaar  fi
333955d011SMarcel Moolenaarfi
343955d011SMarcel Moolenaar])
353955d011SMarcel Moolenaar
363955d011SMarcel Moolenaardnl AC_EGREP(PATTERN, FILE, ACTION-IF-FOUND [,
373955d011SMarcel Moolenaardnl                 ACTION-IF-NOT-FOUND])
383955d011SMarcel MoolenaarAC_DEFUN(AC_EGREP,
393955d011SMarcel Moolenaar[
403955d011SMarcel Moolenaardnl Prevent m4 from eating character classes:
413955d011SMarcel Moolenaarchangequote(, )dnl
423955d011SMarcel Moolenaarif egrep "$1" $2 >/dev/null 2>&1; then
433955d011SMarcel Moolenaarchangequote([, ])dnl
443955d011SMarcel Moolenaar  ifelse([$3], , :, [$3])
453955d011SMarcel Moolenaarifelse([$4], , , [else
463955d011SMarcel Moolenaar  $4
473955d011SMarcel Moolenaar])dnl
483955d011SMarcel Moolenaarfi
493955d011SMarcel Moolenaar])
503955d011SMarcel Moolenaar
513955d011SMarcel Moolenaardnl
523955d011SMarcel Moolenaardnl Test for __attribute__
533955d011SMarcel Moolenaardnl
543955d011SMarcel Moolenaar
553955d011SMarcel MoolenaarAC_DEFUN(AC_C___ATTRIBUTE__, [
563955d011SMarcel MoolenaarAC_MSG_CHECKING(for __attribute__)
573955d011SMarcel MoolenaarAC_CACHE_VAL(ac_cv___attribute__, [
58*50d2e745SSimon J. GerratyAC_LINK_IFELSE([
593955d011SMarcel Moolenaar#include <stdlib.h>
60*50d2e745SSimon J. Gerraty
613955d011SMarcel Moolenaarstatic void foo(void) __attribute__ ((noreturn));
623955d011SMarcel Moolenaar
633955d011SMarcel Moolenaarstatic void
643955d011SMarcel Moolenaarfoo(void)
653955d011SMarcel Moolenaar{
663955d011SMarcel Moolenaar  exit(1);
673955d011SMarcel Moolenaar}
68*50d2e745SSimon J. Gerraty
69*50d2e745SSimon J. Gerratyint
70*50d2e745SSimon J. Gerratymain(int argc, char **argv)
71*50d2e745SSimon J. Gerraty{
72*50d2e745SSimon J. Gerraty	foo();
73*50d2e745SSimon J. Gerraty}
743955d011SMarcel Moolenaar],
753955d011SMarcel Moolenaarac_cv___attribute__=yes,
763955d011SMarcel Moolenaarac_cv___attribute__=no)])
773955d011SMarcel Moolenaarif test "$ac_cv___attribute__" = "yes"; then
783955d011SMarcel Moolenaar  AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
793955d011SMarcel Moolenaarfi
803955d011SMarcel MoolenaarAC_MSG_RESULT($ac_cv___attribute__)
813955d011SMarcel Moolenaar])
823955d011SMarcel Moolenaar
83