From: Bruno Haible Date: Mon, 19 Apr 2010 20:24:13 +0000 (+0200) Subject: ioctl: Move autoconf macro to a .m4 file. X-Git-Tag: v0.1~4242 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=93b28fe1de800d8c8d7aff4142f78cee460c67b5;p=gnulib.git ioctl: Move autoconf macro to a .m4 file. --- diff --git a/ChangeLog b/ChangeLog index 4a6720bba..0d34f58ef 100644 --- 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 index 000000000..4a0a99f16 --- /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 index 2ad0b7ab3..5ba70ed98 100644 --- a/modules/ioctl +++ b/modules/ioctl @@ -4,6 +4,7 @@ ioctl() function: issue device specific requests on files, devices, or sockets. Files: lib/ioctl.c lib/w32sock.h +m4/ioctl.m4 Depends-on: sys_ioctl @@ -11,35 +12,7 @@ sys_socket 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: