# HG changeset patch # User Bruno Haible # Date 1271708653 -7200 # Node ID 46c3f440d469c176995f9a9bde5e9b7a00cce1e6 # Parent 7aaa97d4cc5043bdbd63d7f3cf1c6b3434b3a2ce ioctl: Move autoconf macro to a .m4 file. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2010-04-19 Bruno Haible + + ioctl: Move autoconf macro to a .m4 file. + * m4/ioctl.m4: New file, extracted from modules/ioctl. + * modules/ioctl (Files): Add it. + (configure.ac): Simply invoke gl_FUNC_IOCTL. + Reported by Ian Beckwith . + 2010-04-18 Andreas Gruenbacher Bruno Haible diff --git a/m4/ioctl.m4 b/m4/ioctl.m4 new file mode 100644 --- /dev/null +++ b/m4/ioctl.m4 @@ -0,0 +1,38 @@ +# ioctl.m4 serial 1 +dnl Copyright (C) 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_IOCTL], +[ + AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + dnl Even if the 'socket' module is not used here, another part of the + dnl application may use it and pass file descriptors that refer to + dnl sockets to the ioctl() function. So enable the support for sockets. + AC_LIBOBJ([ioctl]) + gl_REPLACE_SYS_IOCTL_H + else + AC_CHECK_FUNCS([ioctl]) + dnl On glibc systems, the second parameter is 'unsigned long int request', + dnl not 'int request'. We cannot simply cast the function pointer, but + dnl instead need a wrapper. + AC_CACHE_CHECK([for ioctl with POSIX signature], + [gl_cv_func_ioctl_posix_signature], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[extern int ioctl (int, int, ...);]]) + ], + [gl_cv_func_ioctl_posix_signature=yes], + [gl_cv_func_ioctl_posix_signature=no]) + ]) + if test $gl_cv_func_ioctl_posix_signature != yes; then + REPLACE_IOCTL=1 + AC_LIBOBJ([ioctl]) + gl_REPLACE_SYS_IOCTL_H + fi + fi +]) diff --git a/modules/ioctl b/modules/ioctl --- a/modules/ioctl +++ b/modules/ioctl @@ -4,6 +4,7 @@ Files: lib/ioctl.c lib/w32sock.h +m4/ioctl.m4 Depends-on: sys_ioctl @@ -11,35 +12,7 @@ errno configure.ac: -AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - dnl Even if the 'socket' module is not used here, another part of the - dnl application may use it and pass file descriptors that refer to - dnl sockets to the ioctl() function. So enable the support for sockets. - AC_LIBOBJ([ioctl]) - gl_REPLACE_SYS_IOCTL_H -else - AC_CHECK_FUNCS([ioctl]) - dnl On glibc systems, the second parameter is 'unsigned long int request', - dnl not 'int request'. We cannot simply cast the function pointer, but - dnl instead need a wrapper. - AC_CACHE_CHECK([for ioctl with POSIX signature], - [gl_cv_func_ioctl_posix_signature], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[extern int ioctl (int, int, ...);]]) - ], - [gl_cv_func_ioctl_posix_signature=yes], - [gl_cv_func_ioctl_posix_signature=no]) - ]) - if test $gl_cv_func_ioctl_posix_signature != yes; then - REPLACE_IOCTL=1 - AC_LIBOBJ([ioctl]) - gl_REPLACE_SYS_IOCTL_H - fi -fi +gl_FUNC_IOCTL gl_SYS_IOCTL_MODULE_INDICATOR([ioctl]) Makefile.am: