diff options
author | Eli Zaretskii <eliz@gnu.org> | 2012-11-24 18:02:07 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2012-11-24 18:02:07 +0200 |
commit | 9e821c83d328207d418ade2a5fb36168dd0fa9c6 (patch) | |
tree | 113be2961dc1c1082216b8ca578ad02aee2a21aa | |
parent | bc9ce0d9c9e5c49737685523c2ac172f90c9e5f7 (diff) |
Fixed configure.ac and headers in nt/inc. Emulated functions not handled yet.
-rw-r--r-- | configure.ac | 31 | ||||
-rw-r--r-- | nt/inc/sys/socket.h | 12 | ||||
-rw-r--r-- | nt/inc/sys/time.h | 11 | ||||
-rw-r--r-- | nt/inc/unistd.h | 3 |
4 files changed, 44 insertions, 13 deletions
diff --git a/configure.ac b/configure.ac index 5a89329309..cb11cde98b 100644 --- a/configure.ac +++ b/configure.ac @@ -526,7 +526,8 @@ case "${canonical}" in *-darwin* ) opsys=darwin ;; *-mingw32 ) opsys=mingw32 - CFLAGS="-mtune=pentium4 $CFLAGS" + # MinGW overrides and adds some system headers in nt/inc. + GCC_TEST_OPTIONS="-I nt/inc" ;; *-sysv4.2uw* ) opsys=unixware ;; *-sysv5uw* ) opsys=unixware ;; @@ -988,7 +989,7 @@ C_SWITCH_SYSTEM= ## additional optimization. --nils@exp-math.uni-essen.de test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \ C_SWITCH_SYSTEM="-ma -qmaxmem=4000" -test "$opsys" = "mingw32" && C_SWITCH_SYSTEM="-DUSE_CRT_DLL=1 -I../nt/inc" +test "$opsys" = "mingw32" && C_SWITCH_SYSTEM="-mtune=pentium4" ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems. ## It is redundant in glibc2, since we define _GNU_SOURCE. AC_SUBST(C_SWITCH_SYSTEM) @@ -2905,7 +2906,7 @@ AC_SUBST(LIBXML2_LIBS) AC_SUBST(LIBXML2_CFLAGS) # If netdb.h doesn't declare h_errno, we must declare it by hand. -# On MinGW, that is provided by nt/inc/sys/socket.h. +# On MinGW, that is provided by nt/inc/sys/socket.h and w32.c. if test "${opsys}" = "mingw32"; then emacs_cv_netdb_declares_h_errno=yes fi @@ -3926,10 +3927,14 @@ else esac fi dnl GCC? +dnl In a weird quirk, MS runtime uses _setjmp and longjmp. AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include <setjmp.h> + #ifdef __MINGW32__ + # define _longjmp longjmp + #endif ]], [[jmp_buf j; if (! _setjmp (j)) @@ -4275,12 +4280,14 @@ case "$USE_X_TOOLKIT" in esac AC_SUBST(TOOLKIT_LIBW) -if test "$USE_X_TOOLKIT" = "none"; then - LIBXT_OTHER="\$(LIBXSM)" - OLDXMENU_TARGET="really-oldXMenu" -else - LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext" - OLDXMENU_TARGET="really-lwlib" +if test "${opsys}" != "mingw32"; then + if test "$USE_X_TOOLKIT" = "none"; then + LIBXT_OTHER="\$(LIBXSM)" + OLDXMENU_TARGET="really-oldXMenu" + else + LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext" + OLDXMENU_TARGET="really-lwlib" + fi fi AC_SUBST(LIBXT_OTHER) @@ -4385,6 +4392,12 @@ gl_INIT CFLAGS=$SAVE_CFLAGS LIBS=$SAVE_LIBS +if test "${opsys}" = "mingw32"; then + CPPFLAGS="-DUSE_CRT_DLL=1 -I../nt/inc" + # Remove unneeded switches from the value of CC that goes to Makefiles + CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"` +fi + case "$opsys" in aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;; diff --git a/nt/inc/sys/socket.h b/nt/inc/sys/socket.h index 95fee4c465..1c8be6c452 100644 --- a/nt/inc/sys/socket.h +++ b/nt/inc/sys/socket.h @@ -43,8 +43,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #undef FD_ZERO #endif -/* avoid duplicate definition of timeval */ -#ifdef HAVE_TIMEVAL +/* Avoid duplicate definition of timeval. MinGW uses _TIMEVAL_DEFINED + in sys/time.h to avoid that. */ +#if defined (HAVE_TIMEVAL) && defined (_MSC_VER) #define timeval ws_timeval #endif @@ -62,7 +63,9 @@ typedef unsigned short uint16_t; #undef MUST_REDEF_SELECT #endif -/* revert to our version of FD_SET */ +/* Revert to our version of FD_SET, but not when included from test + programs run by configure. */ +#ifdef EMACS_CONFIG_H #undef FD_SET #undef FD_CLR #undef FD_ISSET @@ -71,8 +74,9 @@ typedef unsigned short uint16_t; /* allow us to provide our own version of fd_set */ #define fd_set ws_fd_set #include "w32.h" +#endif /* EMACS_CONFIG_H */ -#ifdef HAVE_TIMEVAL +#if defined (HAVE_TIMEVAL) && defined (_MSC_VER) #undef timeval #endif diff --git a/nt/inc/sys/time.h b/nt/inc/sys/time.h index c12c194fd2..2d2c3abe22 100644 --- a/nt/inc/sys/time.h +++ b/nt/inc/sys/time.h @@ -6,11 +6,22 @@ * have the below stuff. */ +/* Allow inclusion of sys/time.h and winsock2.h in any order. Needed + for running the configure test, which is only relevant to MinGW. */ +#ifndef _TIMEVAL_DEFINED +#define _TIMEVAL_DEFINED struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; +#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#define timercmp(tvp, uvp, cmp) \ + (((tvp)->tv_sec != (uvp)->tv_sec) ? \ + ((tvp)->tv_sec cmp (uvp)->tv_sec) : \ + ((tvp)->tv_usec cmp (uvp)->tv_usec)) +#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 +#endif /* _TIMEVAL_DEFINED */ struct timezone { diff --git a/nt/inc/unistd.h b/nt/inc/unistd.h index e751ed124d..b75e7d7d6b 100644 --- a/nt/inc/unistd.h +++ b/nt/inc/unistd.h @@ -3,6 +3,9 @@ #ifndef _UNISTD_H #define _UNISTD_H +#include <sys/types.h> +#include <pwd.h> + /* On Microsoft platforms, <stdlib.h> declares 'environ'; on POSIX platforms, <unistd.h> does. Every file in Emacs that includes <unistd.h> also includes <stdlib.h>, so there's no need to declare |