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