X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=configure.ac;h=65c5a49c0f61f190fe545020cf65b566e93a27fa;hb=24617fc54416bdb7ec77c63d868a9de7a9ae313b;hp=9e43698f46adb42ea47096bfe42d33297bb2f076;hpb=1783b994779ed67219c7f1985618acab9aaed8da;p=ghc-base.git diff --git a/configure.ac b/configure.ac index 9e43698..65c5a49 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_INIT([Haskell base package], [1.0], [libraries@haskell.org], [base]) # Safety check: Ensure that we are in the correct source directory. AC_CONFIG_SRCDIR([include/HsBase.h]) -AC_CONFIG_HEADERS([include/HsBaseConfig.h]) +AC_CONFIG_HEADERS([include/HsBaseConfig.h include/EventConfig.h]) AC_ARG_WITH([cc], [C compiler], @@ -17,7 +17,7 @@ dnl ** check for full ANSI header (.h) files AC_HEADER_STDC # check for specific header (.h) files that we are interested in -AC_CHECK_HEADERS([ctype.h dirent.h errno.h fcntl.h inttypes.h limits.h signal.h sys/resource.h sys/select.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/utsname.h sys/wait.h termios.h time.h unistd.h utime.h windows.h winsock.h langinfo.h]) +AC_CHECK_HEADERS([ctype.h errno.h fcntl.h inttypes.h limits.h signal.h sys/resource.h sys/select.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/utsname.h sys/wait.h termios.h time.h unistd.h utime.h windows.h winsock.h langinfo.h poll.h sys/epoll.h sys/event.h sys/eventfd.h]) # Enable large file support. Do this before testing the types ino_t, off_t, and # rlim_t, because it will affect the result of that test. @@ -28,10 +28,45 @@ dnl FreeBSD has an emtpy wctype.h, so test one of the affected dnl functions if it's really there. AC_CHECK_HEADERS([wctype.h], [AC_CHECK_FUNCS(iswspace)]) -AC_CHECK_FUNCS([lstat readdir_r]) +AC_CHECK_FUNCS([lstat]) AC_CHECK_FUNCS([getclock getrusage times]) AC_CHECK_FUNCS([_chsize ftruncate]) +AC_CHECK_FUNCS([epoll_ctl eventfd kevent kevent64 kqueue poll]) + +# event-related fun + +if test "$ac_cv_header_sys_epoll_h" = yes -a "$ac_cv_func_epoll_ctl" = yes; then + AC_DEFINE([HAVE_EPOLL], [1], [Define if you have epoll support.]) +fi + +if test "$ac_cv_header_sys_event_h" = yes -a "$ac_cv_func_kqueue" = yes; then + AC_DEFINE([HAVE_KQUEUE], [1], [Define if you have kqueue support.]) +fi + +if test "$ac_cv_header_poll_h" = yes -a "$ac_cv_func_poll" = yes; then + AC_DEFINE([HAVE_POLL], [1], [Define if you have poll support.]) +fi + +dnl-------------------------------------------------------------------- +dnl * Deal with arguments telling us iconv is somewhere odd +dnl-------------------------------------------------------------------- + +AC_ARG_WITH([iconv-includes], + [AC_HELP_STRING([--with-iconv-includes], + [directory containing iconv.h])], + [ICONV_INCLUDE_DIRS=$withval; CPPFLAGS="-I$withval"], + [ICONV_INCLUDE_DIRS=]) + +AC_ARG_WITH([iconv-libraries], + [AC_HELP_STRING([--with-iconv-libraries], + [directory containing iconv library])], + [ICONV_LIB_DIRS=$withval; LDFLAGS="-L$withval"], + [ICONV_LIB_DIRS=]) + +AC_SUBST(ICONV_INCLUDE_DIRS) +AC_SUBST(ICONV_LIB_DIRS) + # map standard C types and ISO types to Haskell types FPTOOLS_CHECK_HTYPE(char) FPTOOLS_CHECK_HTYPE(signed char) @@ -55,6 +90,8 @@ FPTOOLS_CHECK_HTYPE(wchar_t) FPTOOLS_CHECK_HTYPE(sig_atomic_t, Int32) FPTOOLS_CHECK_HTYPE(clock_t) FPTOOLS_CHECK_HTYPE(time_t) +FPTOOLS_CHECK_HTYPE(useconds_t) +FPTOOLS_CHECK_HTYPE(suseconds_t) FPTOOLS_CHECK_HTYPE(dev_t, Word32) FPTOOLS_CHECK_HTYPE(ino_t) FPTOOLS_CHECK_HTYPE(mode_t) @@ -96,9 +133,6 @@ FP_CHECK_CONSTS([SIGINT], [ dnl ** can we open files in binary mode? FP_CHECK_CONST([O_BINARY], [#include ], [0]) -# Check for idiosyncracies in some mingw impls of directory handling. -FP_READDIR_EOF_ERRNO - # We can't just use AC_SEARCH_LIBS for this, as on OpenBSD the iconv.h # header needs to be included as iconv_open is #define'd to something # else. We therefore use our own FP_SEARCH_LIBS_PROTO, which allows us @@ -115,11 +149,22 @@ FP_SEARCH_LIBS_PROTO(iconv, iconv, [EXTRA_LIBS="$EXTRA_LIBS $ac_lib"], [case `uname -s` in - MINGW*|CYGWIN*) exit 0;; + MINGW*|CYGWIN*) ;; *) AC_MSG_ERROR([iconv is required on non-Windows platforms]);; esac]) +# If possible, we use libcharset instead of nl_langinfo(CODESET) to +# determine the current locale's character encoding. +FP_SEARCH_LIBS_PROTO( + [locale_charset], + [#include ], + [const char* charset = locale_charset();], + [charset], + [AC_DEFINE([HAVE_LIBCHARSET], [1], [Define to 1 if you have libcharset.]) + EXTRA_LIBS="$EXTRA_LIBS $ac_lib"]) + + AC_SUBST(EXTRA_LIBS) AC_CONFIG_FILES([base.buildinfo])