Fix warnings in the unix package
[packages/unix.git] / configure.ac
1 AC_INIT([Haskell unix package], [2.0], [libraries@haskell.org], [unix])
2
3 # Safety check: Ensure that we are in the correct source directory.
4 AC_CONFIG_SRCDIR([include/HsUnix.h])
5
6 AC_CONFIG_HEADERS([include/HsUnixConfig.h])
7
8 # Is this a Unix system?
9 AC_CHECK_HEADER([dlfcn.h], [BUILD_PACKAGE_BOOL=True], [BUILD_PACKAGE_BOOL=False])
10 AC_SUBST([BUILD_PACKAGE_BOOL])
11
12 AC_C_CONST
13
14 dnl ** Enable large file support.  NB. do this before testing the type of
15 dnl    off_t, because it will affect the result of that test.
16 AC_SYS_LARGEFILE
17
18 AC_CHECK_HEADERS([dirent.h fcntl.h grp.h limits.h pwd.h signal.h string.h])
19 AC_CHECK_HEADERS([sys/resource.h sys/stat.h sys/times.h sys/time.h])
20 AC_CHECK_HEADERS([sys/utsname.h sys/wait.h])
21 AC_CHECK_HEADERS([libutil.h pty.h utmp.h])
22 AC_CHECK_HEADERS([termios.h time.h unistd.h utime.h])
23
24 AC_CHECK_FUNCS([getgrgid_r getgrnam_r getpwnam_r getpwuid_r getpwnam getpwuid])
25 AC_CHECK_FUNCS([getpwent getgrent])
26 AC_CHECK_FUNCS([lchown setenv sysconf unsetenv])
27 AC_CHECK_FUNCS([nanosleep])
28 AC_CHECK_FUNCS([ptsname])
29 AC_CHECK_FUNCS([setitimer])
30 AC_CHECK_FUNCS([shm_open shm_unlink])
31
32 FP_CHECK_CONSTS([SIGABRT SIGALRM SIGBUS SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 SIGPOLL SIGPROF SIGSYS SIGTRAP SIGURG SIGVTALRM SIGXCPU SIGXFSZ SIG_BLOCK SIG_SETMASK SIG_UNBLOCK], [
33 #if HAVE_SIGNAL_H
34 #include <signal.h>
35 #endif])
36
37 AC_MSG_CHECKING([for _SC_GETGR_R_SIZE_MAX])
38 AC_EGREP_CPP(we_have_that_sysconf_thing,
39 [
40 #include <unistd.h>
41 #ifdef _SC_GETGR_R_SIZE_MAX
42 we_have_that_sysconf_thing
43 #endif
44 ],
45 [AC_MSG_RESULT([yes])
46 AC_DEFINE([HAVE_SC_GETGR_R_SIZE_MAX], [1], [Define to 1 if <unistd.h> defines _SC_GETGR_R_SIZE_MAX.])],
47 [AC_MSG_RESULT([no])])
48
49 AC_MSG_CHECKING([for _SC_GETPW_R_SIZE_MAX])
50 AC_EGREP_CPP(we_have_that_sysconf_thing,
51 [
52 #include <unistd.h>
53 #ifdef _SC_GETPW_R_SIZE_MAX
54 we_have_that_sysconf_thing
55 #endif
56 ],
57 [AC_MSG_RESULT([yes])
58 AC_DEFINE([HAVE_SC_GETPW_R_SIZE_MAX], [1], [Define to 1 if <unistd.h> defines _SC_GETPW_R_SIZE_MAX.])],
59 [AC_MSG_RESULT([no])])
60
61 dnl ---------- usleep ----------
62 dnl --- stolen from guile configure ---
63 dnl --- FIXME: /usr/include/unistd.h can't be right?
64
65 ### On some systems usleep has no return value.  If it does have one,
66 ### we'd like to return it; otherwise, we'll fake it.
67 AC_CACHE_CHECK([return type of usleep], cv_func_usleep_return_type,
68   [AC_EGREP_HEADER(changequote(<, >)<void[      ]+usleep>changequote([, ]),
69                    /usr/include/unistd.h,
70                    [cv_func_usleep_return_type=void],
71                    [cv_func_usleep_return_type=int])])
72 case "$cv_func_usleep_return_type" in
73   "void" )
74     AC_DEFINE([USLEEP_RETURNS_VOID], [1], [Define if the system headers declare usleep to return void.])
75   ;;
76 esac
77
78 ###  POSIX.1003.1 unsetenv returns 0 or -1 (EINVAL), but older implementations
79 ###  in common use return void.
80 AC_CACHE_CHECK([return type of unsetenv], cv_func_unsetenv_return_type,
81   [AC_EGREP_HEADER(changequote(<, >)<void[      ]+unsetenv>changequote([, ]),
82                    /usr/include/stdlib.h,
83                    [cv_func_unsetenv_return_type=void],
84                    [cv_func_unsetenv_return_type=int])])
85 case "$cv_func_unsetenv_return_type" in
86   "void" )
87     AC_DEFINE([UNSETENV_RETURNS_VOID], [1], [Define if stdlib.h declares unsetenv to return void.])
88   ;;
89 esac
90
91 dnl ** sometimes RTLD_NEXT is hidden in #ifdefs we really don't wan to set
92 AC_MSG_CHECKING(for RTLD_NEXT from dlfcn.h)
93 AC_EGREP_CPP(yes,
94 [
95  #include <dlfcn.h>
96  #ifdef RTLD_NEXT
97         yes
98  #endif
99 ], [
100   AC_MSG_RESULT(yes)
101   AC_DEFINE([HAVE_RTLDNEXT], [1], [Define to 1 if we can see RTLD_NEXT in dlfcn.h.])
102 ], [
103   AC_MSG_RESULT(no)
104   ])    
105
106 dnl ** RTLD_DEFAULT isn't available on cygwin
107 AC_MSG_CHECKING(for RTLD_DEFAULT from dlfcn.h)
108 AC_EGREP_CPP(yes,
109 [
110  #include <dlfcn.h>
111  #ifdef RTLD_DEFAULT
112         yes
113  #endif
114 ], [
115   AC_MSG_RESULT(yes)
116   AC_DEFINE([HAVE_RTLDDEFAULT], [1], [Define to 1 if RTLD_DEFAULT is available.])
117 ], [
118   AC_MSG_RESULT(no)
119   ])    
120
121 dnl ** RTLD_LOCAL isn't available on cygwin or openbsd
122 AC_MSG_CHECKING(for RTLD_LOCAL from dlfcn.h)
123 AC_EGREP_CPP(yes,
124 [
125  #include <dlfcn.h>
126  #ifdef RTLD_LOCAL
127         yes
128  #endif
129 ], [
130   AC_MSG_RESULT(yes)
131   AC_DEFINE([HAVE_RTLDLOCAL], [1], [Define to 1 if RTLD_LOCAL is available.])
132 ], [
133   AC_MSG_RESULT(no)
134   ])    
135
136 dnl ** RTLD_GLOBAL isn't available on openbsd
137 AC_MSG_CHECKING(for RTLD_GLOBAL from dlfcn.h)
138 AC_EGREP_CPP(yes,
139 [
140  #include <dlfcn.h>
141  #ifdef RTLD_GLOBAL
142         yes
143  #endif
144 ], [
145   AC_MSG_RESULT(yes)
146   AC_DEFINE([HAVE_RTLDGLOBAL], [1], [Define to 1 if RTLD_GLOBAL is available.])
147 ], [
148   AC_MSG_RESULT(no)
149   ])    
150
151 dnl ** RTLD_NOW isn't available on openbsd
152 AC_MSG_CHECKING(for RTLD_NOW from dlfcn.h)
153 AC_EGREP_CPP(yes,
154 [
155  #include <dlfcn.h>
156  #ifdef RTLD_NOW
157         yes
158  #endif
159 ], [
160   AC_MSG_RESULT(yes)
161   AC_DEFINE([HAVE_RTLDNOW], [1], [Define to 1 if we can see RTLD_NOW in dlfcn.h])
162 ], [
163   AC_MSG_RESULT(no)
164   ])    
165
166 AC_CHECK_FUNCS(openpty,,
167    AC_CHECK_LIB(util,openpty,
168      [AC_DEFINE(HAVE_OPENPTY) EXTRA_LIBS="$EXTRA_LIBS util"],
169      AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) EXTRA_LIBS="$EXTRA_LIBS bsd"])
170    )
171 )
172
173 AC_MSG_CHECKING(for /dev/ptmx)
174 if test -r /dev/ptmx
175 then
176   AC_MSG_RESULT(yes)
177   AC_DEFINE(HAVE_DEV_PTMX, 1,
178   [Define if we have /dev/ptmx.])
179 else
180   AC_MSG_RESULT(no)
181 fi
182
183 AC_MSG_CHECKING(for /dev/ptc)
184 if test -r /dev/ptc
185 then
186   AC_MSG_RESULT(yes)
187   AC_DEFINE(HAVE_DEV_PTC, 1,
188   [Define if we have /dev/ptc.])
189 else
190   AC_MSG_RESULT(no)
191 fi
192
193 # Avoid adding dl if absent or unneeded
194 AC_CHECK_LIB(dl, dlopen, [EXTRA_LIBS="$EXTRA_LIBS dl"])
195 AC_SUBST([EXTRA_LIBS])
196
197 AC_CONFIG_FILES([unix.buildinfo])
198
199 AC_OUTPUT