]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[v9_8] win32 fixes
authorEvan Hunt <each@isc.org>
Wed, 26 Jun 2013 21:42:49 +0000 (14:42 -0700)
committerEvan Hunt <each@isc.org>
Wed, 26 Jun 2013 21:42:49 +0000 (14:42 -0700)
3605. [port] win32: Addressed several compatibility issues
with newer versions of Visual Studio. [RT #33916]

(cherry picked from commit f42c0dcca86f2009c089e27ba513cb6fc9ee88ba)
(cherry picked from commit bd9679741274ef95087414a78ea7fba508e24ee5)

Squashed commit of the following:

commit 4127af15f85da90cf2bd3a0c5a558daae89e833a
Author: Francis Dupont <fdupont@isc.org>
Date:   Tue Jun 25 22:41:53 2013 +0200

    make the last change to be text

commit 21ef4891b9ee3e3aefb45d4c80d5cb7ec78f264f
Author: Curtis Blackburn <ckb@isc.org>
Date:   Tue Jun 25 12:35:08 2013 -0500

    [rt33916] re-worded for easier reading

commit 83828e47e62fea4070441e645ba8fed338255ceb
Author: Francis Dupont <fdupont@isc.org>
Date:   Mon Jun 24 16:08:11 2013 +0200

    introduce a VCRedistPath env var

commit 0337f2554f168993a65945e78c2879e9bfca5293
Author: Francis Dupont <fdupont@isc.org>
Date:   Sun Jun 23 01:23:26 2013 +0200

    _adjust_fdiv for VS < 2010

commit 375fdd5c06be276b0ff0ad589c0e22b809339fe9
Author: Francis Dupont <fdupont@isc.org>
Date:   Thu Jun 20 16:27:04 2013 +0200

    move to MSVC v1600 as it still breaks on VS 2010

commit bfcaf72071e9d8df1d0ce0c5f05b69acd51bf698
Author: Francis Dupont <fdupont@isc.org>
Date:   Thu Jun 20 15:57:35 2013 +0200

    WIN32: avoid addrinfo redef

commit 18504c3e50b11e66a0b573c7cb3d61094bfa5b52
Author: Francis Dupont <fdupont@isc.org>
Date:   Thu Jun 20 15:54:38 2013 +0200

    WIN32: fseek/ftell

commit f9a4fdccc5ab1c74c64412fb76da7dfd161787b2
Author: Francis Dupont <fdupont@isc.org>
Date:   Thu Jun 20 15:13:01 2013 +0200

    fix WIN32 error redefs in net.h (isc ad lwres libs)

CHANGES
bin/named/win32/ntservice.c
lib/isc/win32/include/isc/net.h
lib/isc/win32/netdb.h
lib/isc/win32/stdio.c
lib/lwres/win32/include/lwres/net.h
lib/lwres/win32/include/lwres/netdb.h
win32utils/BuildSetup.bat
win32utils/win32-build.txt

diff --git a/CHANGES b/CHANGES
index 44ccff7e5ab8077dbe6f0287b16522211e4957ad..eabb78c11bd8e6350b1244b1b38fcc71012c052c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3605.  [port]          win32: Addressed several compatibility issues
+                       with newer versions of Visual Studio. [RT #33916]
+
 3603.  [bug]           Install <isc/stat.h>. [RT #33956]
 
 3601.  [bug]           Added to PKCS#11 openssl patches a value len
index d0245e1fdf945c4acf3800463a7dd21f4732348f..b978bc100113f4164200becb70c21608c801c394 100644 (file)
 #include <named/main.h>
 #include <named/server.h>
 
+/* In fact more bound to the platform toolset... */
+#if defined(_M_IX86) && (_MSC_VER < 1600)
+#define ISC_ADJUST_FDIV
+#endif
+
 /* Handle to SCM for updating service status */
 static SERVICE_STATUS_HANDLE hServiceStatus = 0;
 static BOOL foreground = FALSE;
@@ -199,7 +204,7 @@ _CRTIMP void __cdecl __getmainargs(int *, char ***, char ***, int,
                                   _startupinfo *);
 void __cdecl _setargv(void);
 
-#ifdef _M_IX86
+#ifdef ISC_ADJUST_FDIV
 /* Pentium FDIV adjustment */
 extern int _adjust_fdiv;
 extern int * _imp___adjust_fdiv;
@@ -236,7 +241,7 @@ void GetArgs(int *argc, char ***argv, char ***envp)
        __getmainargs(argc, argv, envp, _dowildcard, &startinfo);
        __initenv = *envp;
 
-#ifdef _M_IX86
+#ifdef ISC_ADJUST_FDIV
        _adjust_fdiv = * _imp___adjust_fdiv;
        _setdefaultprecision();
 #endif
index 43e424d865360e98175c61f1e423a313290440cc..c3af7258d44c712e1870d09bb38b61a255a849de 100644 (file)
@@ -189,41 +189,113 @@ typedef isc_uint16_t in_port_t;
  * Use the WSA constants instead.
  */
 
+#include <errno.h>
+
+#ifndef EWOULDBLOCK
 #define EWOULDBLOCK             WSAEWOULDBLOCK
+#endif
+#ifndef EINPROGRESS
 #define EINPROGRESS             WSAEINPROGRESS
+#endif
+#ifndef EALREADY
 #define EALREADY                WSAEALREADY
+#endif
+#ifndef ENOTSOCK
 #define ENOTSOCK                WSAENOTSOCK
+#endif
+#ifndef EDESTADDRREQ
 #define EDESTADDRREQ            WSAEDESTADDRREQ
+#endif
+#ifndef EMSGSIZE
 #define EMSGSIZE                WSAEMSGSIZE
+#endif
+#ifndef EPROTOTYPE
 #define EPROTOTYPE              WSAEPROTOTYPE
+#endif
+#ifndef ENOPROTOOPT
 #define ENOPROTOOPT             WSAENOPROTOOPT
+#endif
+#ifndef EPROTONOSUPPORT
 #define EPROTONOSUPPORT         WSAEPROTONOSUPPORT
+#endif
+#ifndef ESOCKTNOSUPPORT
 #define ESOCKTNOSUPPORT         WSAESOCKTNOSUPPORT
+#endif
+#ifndef EOPNOTSUPP
 #define EOPNOTSUPP              WSAEOPNOTSUPP
+#endif
+#ifndef EPFNOSUPPORT
 #define EPFNOSUPPORT            WSAEPFNOSUPPORT
+#endif
+#ifndef EAFNOSUPPORT
 #define EAFNOSUPPORT            WSAEAFNOSUPPORT
+#endif
+#ifndef EADDRINUSE
 #define EADDRINUSE              WSAEADDRINUSE
+#endif
+#ifndef EADDRNOTAVAIL
 #define EADDRNOTAVAIL           WSAEADDRNOTAVAIL
+#endif
+#ifndef ENETDOWN
 #define ENETDOWN                WSAENETDOWN
+#endif
+#ifndef ENETUNREACH
 #define ENETUNREACH             WSAENETUNREACH
+#endif
+#ifndef ENETRESET
 #define ENETRESET               WSAENETRESET
+#endif
+#ifndef ECONNABORTED
 #define ECONNABORTED            WSAECONNABORTED
+#endif
+#ifndef ECONNRESET
 #define ECONNRESET              WSAECONNRESET
+#endif
+#ifndef ENOBUFS
 #define ENOBUFS                 WSAENOBUFS
+#endif
+#ifndef EISCONN
 #define EISCONN                 WSAEISCONN
+#endif
+#ifndef ENOTCONN
 #define ENOTCONN                WSAENOTCONN
+#endif
+#ifndef ESHUTDOWN
 #define ESHUTDOWN               WSAESHUTDOWN
+#endif
+#ifndef ETOOMANYREFS
 #define ETOOMANYREFS            WSAETOOMANYREFS
+#endif
+#ifndef ETIMEDOUT
 #define ETIMEDOUT               WSAETIMEDOUT
+#endif
+#ifndef ECONNREFUSED
 #define ECONNREFUSED            WSAECONNREFUSED
+#endif
+#ifndef ELOOP
 #define ELOOP                   WSAELOOP
+#endif
+#ifndef EHOSTDOWN
 #define EHOSTDOWN               WSAEHOSTDOWN
+#endif
+#ifndef EHOSTUNREACH
 #define EHOSTUNREACH            WSAEHOSTUNREACH
+#endif
+#ifndef EPROCLIM
 #define EPROCLIM                WSAEPROCLIM
+#endif
+#ifndef EUSERS
 #define EUSERS                  WSAEUSERS
+#endif
+#ifndef EDQUOT
 #define EDQUOT                  WSAEDQUOT
+#endif
+#ifndef ESTALE
 #define ESTALE                  WSAESTALE
+#endif
+#ifndef EREMOTE
 #define EREMOTE                 WSAEREMOTE
+#endif
 
 
 /***
index f8d936a99f35d01a9b069a0885f66d783d77aa8a..3e17c2e4c88ceb0ba00cdd67df67e79aac0b718a 100644 (file)
@@ -27,6 +27,7 @@
  * Define if <netdb.h> does not declare struct addrinfo.
  */
 
+#if _MSC_VER < 1600
 struct addrinfo {
        int             ai_flags;      /* AI_PASSIVE, AI_CANONNAME */
        int             ai_family;     /* PF_xxx */
@@ -37,6 +38,7 @@ struct addrinfo {
        struct sockaddr *ai_addr;      /* Binary address */
        struct addrinfo *ai_next;      /* Next structure in linked list */
 };
+#endif
 
 
 /*
index 427a8e1e1872dd31711345dccfe55217cb4b0c48..c64248fd7c5cd5458ef180734cebde7112a681c3 100644 (file)
@@ -50,6 +50,7 @@ isc_stdio_close(FILE *f) {
 
 isc_result_t
 isc_stdio_seek(FILE *f, long offset, int whence) {
+       /* based on the fact off_t is typedef to long */
        int r;
 
        r = fseek(f, offset, whence);
index 3839883d41b557c5e361f45b4d0408126855f682..835fedc4721563a9f6efbc4e4d5512b090cb0587 100644 (file)
  * Use the WSA constants instead.
  */
 
+#include <errno.h>
+
+#ifndef EWOULDBLOCK
 #define EWOULDBLOCK             WSAEWOULDBLOCK
+#endif
+#ifndef EINPROGRESS
 #define EINPROGRESS             WSAEINPROGRESS
+#endif
+#ifndef EALREADY
 #define EALREADY                WSAEALREADY
+#endif
+#ifndef ENOTSOCK
 #define ENOTSOCK                WSAENOTSOCK
+#endif
+#ifndef EDESTADDRREQ
 #define EDESTADDRREQ            WSAEDESTADDRREQ
+#endif
+#ifndef EMSGSIZE
 #define EMSGSIZE                WSAEMSGSIZE
+#endif
+#ifndef EPROTOTYPE
 #define EPROTOTYPE              WSAEPROTOTYPE
+#endif
+#ifndef ENOPROTOOPT
 #define ENOPROTOOPT             WSAENOPROTOOPT
+#endif
+#ifndef EPROTONOSUPPORT
 #define EPROTONOSUPPORT         WSAEPROTONOSUPPORT
+#endif
+#ifndef ESOCKTNOSUPPORT
 #define ESOCKTNOSUPPORT         WSAESOCKTNOSUPPORT
+#endif
+#ifndef EOPNOTSUPP
 #define EOPNOTSUPP              WSAEOPNOTSUPP
+#endif
+#ifndef EPFNOSUPPORT
 #define EPFNOSUPPORT            WSAEPFNOSUPPORT
+#endif
+#ifndef EAFNOSUPPORT
 #define EAFNOSUPPORT            WSAEAFNOSUPPORT
+#endif
+#ifndef EADDRINUSE
 #define EADDRINUSE              WSAEADDRINUSE
+#endif
+#ifndef EADDRNOTAVAIL
 #define EADDRNOTAVAIL           WSAEADDRNOTAVAIL
+#endif
+#ifndef ENETDOWN
 #define ENETDOWN                WSAENETDOWN
+#endif
+#ifndef ENETUNREACH
 #define ENETUNREACH             WSAENETUNREACH
+#endif
+#ifndef ENETRESET
 #define ENETRESET               WSAENETRESET
+#endif
+#ifndef ECONNABORTED
 #define ECONNABORTED            WSAECONNABORTED
+#endif
+#ifndef ECONNRESET
 #define ECONNRESET              WSAECONNRESET
+#endif
+#ifndef ENOBUFS
 #define ENOBUFS                 WSAENOBUFS
+#endif
+#ifndef EISCONN
 #define EISCONN                 WSAEISCONN
+#endif
+#ifndef ENOTCONN
 #define ENOTCONN                WSAENOTCONN
+#endif
+#ifndef ESHUTDOWN
 #define ESHUTDOWN               WSAESHUTDOWN
+#endif
+#ifndef ETOOMANYREFS
 #define ETOOMANYREFS            WSAETOOMANYREFS
+#endif
+#ifndef ETIMEDOUT
 #define ETIMEDOUT               WSAETIMEDOUT
+#endif
+#ifndef ECONNREFUSED
 #define ECONNREFUSED            WSAECONNREFUSED
+#endif
+#ifndef ELOOP
 #define ELOOP                   WSAELOOP
+#endif
+#ifndef EHOSTDOWN
 #define EHOSTDOWN               WSAEHOSTDOWN
+#endif
+#ifndef EHOSTUNREACH
 #define EHOSTUNREACH            WSAEHOSTUNREACH
+#endif
+#ifndef EPROCLIM
 #define EPROCLIM                WSAEPROCLIM
+#endif
+#ifndef EUSERS
 #define EUSERS                  WSAEUSERS
+#endif
+#ifndef EDQUOT
 #define EDQUOT                  WSAEDQUOT
+#endif
+#ifndef ESTALE
 #define ESTALE                  WSAESTALE
+#endif
+#ifndef EREMOTE
 #define EREMOTE                 WSAEREMOTE
+#endif
 
 LWRES_LANG_BEGINDECLS
 
index 55786ec94f73ff7f8b97ae1c9dc9e5366918be02..eaff429a2368331b388e74e62be1b523f6aaf825 100644 (file)
@@ -31,7 +31,9 @@
 /*
  * Define if <netdb.h> does not declare struct addrinfo.
  */
+#if _MSC_VER < 1600
 #define ISC_LWRES_NEEDADDRINFO 1
+#endif
 
 #ifdef ISC_LWRES_NEEDADDRINFO
 struct addrinfo {
index f323e5d26fd15046e4bbe692bde7e2cdd5c7062f..182e897d92f4165b27dcb8946bd25a5715719507 100644 (file)
@@ -78,6 +78,36 @@ copy ..\doc\misc\migration-4to9 ..\Build\Release
 
 call SetupLibs.bat
 
+rem
+rem try to find vcredist_x86.exe upper
+rem
+if Not Defined VCRedistPath (
+if Exist ..\..\vcredist_x86.exe set VCRedistPath=..\..\vcredist_x86.exe
+)
+
+rem
+rem get vcredist where someone said it should be
+rem
+if Defined VCRedistPath (
+
+if Exist "%VCRedistPath%" (
+
+echo Copying Visual C x86 Redistributable Installer
+
+rem
+rem Use /Y so we allways have the current version of the installer.
+rem
+
+copy /Y "%VCRedistPath%" ..\Build\Release\
+copy /Y        "%VCRedistPath%" ..\Build\Debug\
+
+) else (
+
+       echo "**** %VCRedistPath% not found ****"
+
+)
+) else (
+
 rem
 rem set vcredist here so that it is correctly expanded in the if body 
 rem
@@ -103,8 +133,14 @@ copy /Y "%FrameworkSDKDir%\%vcredist%" ..\Build\Debug\
        echo "**** %FrameworkSDKDir%\%vcredist% not found ****"
 )
 ) else (
+if NOT Defined FrameworkDir (
        echo "**** Warning FrameworkSDKDir not defined ****"
        echo "****         Run vsvars32.bat            ****"
+) else (
+       echo "**** vcredist_x86.exe not found ****"
+       echo "**** please set VCRedistPath ****"
+)
+)
 )
 
 echo Running Message Compiler
index 0e94874fe5af47e9ec332c59e7be653958608dce..1f26816b8b7fa6b4123c543bc704c6d9286fe47f 100644 (file)
@@ -4,9 +4,9 @@ See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
 
 $Id$
 
-       BIND 9.7 for Win32 Source Build Instructions.  02-Jul-2009
+       BIND 9.8 for Win32 Source Build Instructions.  24-June-2013
 
-Building BIND 9.7 on Windows XP/2003/2008 has the following prerequisites:
+Building BIND 9.8 on Windows XP/2003/2008 has the following prerequisites:
 
 1) You need to install Perl for Windows.  ActivePerl
 (http://www.activestate.com/) and Strawberry Perl
@@ -21,7 +21,12 @@ on the system on which you are building BIND.
 the system on which you are building BIND.  (If you do not wish
 to use the statistics channel, remove HAVE_LIBXML2 from config.h.win32.)
 
-4) If you want to build using Visual C++ 6.0, you'll need some extra
+4) The BIND Installer (BINDInstall) includes a copy of the
+redistributable runtime object vcredist_x86.exe, which is included
+with Visual Studio and can be downloaded from Microsoft.  This file
+must be in place prior to running the build setup script.
+
+5) If you want to build using Visual C++ 6.0, you'll need some extra
 files that are to be found in the Platform SDK (which you will need
 to install), namely: