]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[v9_6] win32 fixes
authorEvan Hunt <each@isc.org>
Wed, 26 Jun 2013 21:46:17 +0000 (14:46 -0700)
committerEvan Hunt <each@isc.org>
Wed, 26 Jun 2013 21:46:17 +0000 (14:46 -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)
(cherry picked from commit 6fe26a1b24dd78574406adf8ff5f0709e6d5811a)

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 fa6eeb113a05df7de917fc73d3c78540e6587f53..ee589c6b4dfcede31fc5b6329430d6d45c62464e 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]
 
 3600.  [cleanup]       dig: Fixed a typo in the warning output when receiving
index 97f2f511ab652893dfd9f0b9ba7bcb4811b5d8e7..472c5f7506b0cf27c677d31d938461f7c9148b70 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 4beca8761470f9fd703a19828496cb833f956f97..20bc2f4a1f9db90c39a4201a8868cc671d141da9 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 9971e23b10df9f399a2da257d29992587939d25c..53f993ad7d4875b63a9aaf34aba544aaedd51d74 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 94e4af438e445646e10ddded0a3361593e762edb..599ced2d1db0c785d0f86645f015b614c37cfbc3 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 41146c8803366e1aae76abdb11af9236cb46946a..087e9a125114144bf4a25120af52f66734574a90 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 5f5a108c5d3cc5da3687241d876487d81fab2e45..8bfed02c58642b1648e1f49854a087076ce0ebe5 100644 (file)
@@ -72,6 +72,36 @@ copy ..\doc\misc\migration-4to9 ..\Build\Release
 
 call BuildOpenSSL.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
@@ -98,8 +128,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 cd0b689699fa985b9a096643dff09045dd7cd544..84586eab9f8700d1012d2fdbd806219b30d46be7 100644 (file)
@@ -4,15 +4,29 @@ See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
 
 $Id$
 
-       BIND 9.4 for Win32 Source Build Instructions.  28-May-2005
+       BIND 9.6 for Win32 Source Build Instructions.  24-June-2013
 
-Building BIND 9.4 on Windows NT/2000 has the following prerequisites:
+Building BIND 9.6 on Windows NT/2000 has the following prerequisites:
+
+1) You need to install Perl for Windows.  ActivePerl
+(http://www.activestate.com/) and Strawberry Perl
+(http://www.strawberryperl.com) have both been tested and found
+to work.
 
-1) You need to install Perl for Windows NT/2000. ActiveState
-(http://www.activestate.com/) is the one most people install and use;
 2) OpenSSL (http://www.openssl.org) needs to be downloaded and built
 on the system on which you are building BIND.
-3) If you want to build using Visual C++ 6.0, you'll need some extra
+
+3) If you wish to use the statistics channel, LibXML2
+(ftp://xmlsoft.org/libxml2) needs to be downloaded and built on
+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) 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: