diff options
author | David Bremner <david@tethera.net> | 2017-07-11 21:53:15 -0300 |
---|---|---|
committer | David Bremner <david@tethera.net> | 2017-07-11 21:53:15 -0300 |
commit | 2f9741043a28227ef22b82a6670ff7fc5a180dc7 (patch) | |
tree | 2cbf0c9f26f6e90dceef5b8d8f27ae1f28ccf098 /acinclude.m4 |
Import Upstream version 1.00RC5
Diffstat (limited to 'acinclude.m4')
-rw-r--r-- | acinclude.m4 | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..df10b37 --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,133 @@ +dnl TRY_CXX_FLAG(FLAG,[ACTION-IF-FOUND[,ACTION-IF-NOT-FOUND]]) +AC_DEFUN(TRY_CXX_FLAG, +[echo >conftest.cc +if ${CXX-g++} ${CXXFLAGS} -c [$1] conftest.cc >/dev/null 2>&1; then + ifelse([$2], , :, [rm -f conftest* + $2]) +else + ifelse([$3], , :, [rm -f conftest* + $3]) +fi +rm -f conftest*]) + +AC_DEFUN(CXX_NO_RTTI, +[AC_CACHE_CHECK(whether ${CXX-g++} accepts -fno-rtti, + local_cv_flag_NO_RTTI, + TRY_CXX_FLAG(-fno-rtti, + local_cv_flag_NO_RTTI=yes, + local_cv_flag_NO_RTTI=no)) +test "$local_cv_flag_NO_RTTI" = yes && CXXFLAGS="$CXXFLAGS -fno-rtti" +]) + +AC_DEFUN(CXX_NO_EXCEPTIONS, +[AC_CACHE_CHECK(whether ${CXX-g++} accepts -fno-exceptions, + local_cv_flag_NO_EXCEPTIONS, + TRY_CXX_FLAG(-fno-exceptions, + local_cv_flag_NO_EXCEPTIONS=yes, + local_cv_flag_NO_EXCEPTIONS=no)) +test "$local_cv_flag_NO_EXCEPTIONS" = yes && CXXFLAGS="$CXXFLAGS -fno-exceptions" +]) + +dnl TRY_STRUCT_TM_MEMBER(MEMBER,FLAGNAME) +AC_DEFUN(TRY_STRUCT_TM_MEMBER, +[ AC_CACHE_CHECK(whether struct tm contains [$1], + [$2], + cat >conftest.c <<EOF +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif +int main() { struct tm* foo; foo->[$1]; } +EOF + if ${CC} ${CFLAGS} -c conftest.c >/dev/null 2>&1; then + [$2]=yes + else + [$2]=no + fi + rm -f conftest*) +]) + +AC_DEFUN(TEST_STRUCT_TM, + TRY_STRUCT_TM_MEMBER(tm_isdst, local_cv_flag_TM_HAS_ISDST) + TRY_STRUCT_TM_MEMBER(__tm_isdst, local_cv_flag_TM_HAS___ISDST) + if test "$local_cv_flag_TM_HAS_ISDST" = yes + then AC_DEFINE(TM_HAS_ISDST,tm_isdst) + elif test "$local_cv_flag_TM_HAS___ISDST" = yes + then AC_DEFINE(TM_HAS_ISDST,__tm_isdst) + fi + TRY_STRUCT_TM_MEMBER(tm_gmtoff, local_cv_flag_TM_HAS_GMTOFF) + TRY_STRUCT_TM_MEMBER(__tm_gmtoff, local_cv_flag_TM_HAS___GMTOFF) + if test "$local_cv_flag_TM_HAS_GMTOFF" = yes + then AC_DEFINE(TM_HAS_GMTOFF,tm_gmtoff) + elif test "$local_cv_flag_TM_HAS___GMTOFF" = yes + then AC_DEFINE(TM_HAS_GMTOFF,__tm_gmtoff) + fi +) + +dnl TRY_STRUCT_UTSNAME_MEMBER(MEMBER,FLAGNAME) +AC_DEFUN(TRY_STRUCT_UTSNAME_MEMBER, +[ AC_CACHE_CHECK(whether struct utsname contains [$1], + [$2], + cat >conftest.c <<EOF +#include <sys/utsname.h> +int main() { struct utsname* foo; foo->[$1]; } +EOF + if ${CC} ${CFLAGS} -c conftest.c >/dev/null 2>&1; then + [$2]=yes + else + [$2]=no + fi + rm -f conftest*) +]) + +AC_DEFUN(TEST_STRUCT_UTSNAME, + TRY_STRUCT_UTSNAME_MEMBER(domainname, local_cv_flag_UTSNAME_HAS_DOMAINNAME) + TRY_STRUCT_UTSNAME_MEMBER(__domainname, + local_cv_flag_UTSNAME_HAS___DOMAINNAME) + if test "$local_cv_flag_UTSNAME_HAS_DOMAINNAME" = yes + then AC_DEFINE(UTSNAME_HAS_DOMAINNAME,domainname) + elif test "$local_cv_flag_UTSNAME_HAS___DOMAINNAME" = yes + then AC_DEFINE(UTSNAME_HAS_DOMAINNAME,__domainname) + fi +) + +AC_DEFUN(CHECK_NAMED_PIPE_BUG, +[ AC_CACHE_CHECK(whether named pipes are buggy, + local_cv_flag_NAMEDPIPEBUG, + cat >conftest.c <<EOF +#include <fcntl.h> +#include <sys/time.h> +#include <sys/types.h> +#include <unistd.h> +int main(int argc, char** argv) +{ + struct timeval tv; + fd_set rfds; + int fd = open(*(argv+1), O_RDONLY | O_NONBLOCK); + FD_ZERO(&rfds); + FD_SET(fd,&rfds); + tv.tv_sec = tv.tv_usec = 0; + return (select(fd+1, &rfds, 0, 0,&tv) > 0) ? 0 : 1; +} +EOF + if ! ${CC} ${CFLAGS} conftest.c -o conftest 2>/dev/null + then + echo Compile failed + exit 1 + fi + mkfifo conftest.pipe + if ./conftest conftest.pipe + then + AC_DEFINE(NAMEDPIPEBUG, 1) + local_cv_flag_NAMEDPIPEBUG=yes + else + local_cv_flag_NAMEDPIPEBUG=no + fi + rm -f conftest*) +]) |