Message ID | 1442951618-13080-8-git-send-email-aserdean@cloudbasesolutions.com |
---|---|
State | Superseded |
Headers | show |
On Tue, Sep 22, 2015 at 12:53 PM, Alin Serdean <aserdean@cloudbasesolutions.com> wrote: > This patch adds the modifications needed to compile under x64 under > Windows: > - created a new macro for testing if we are compiling under x64. > this will define the linker flag: "/MACHINE:X64" as per documentation > (https://msdn.microsoft.com/en-us/library/9yb4317s.aspx). > > - added x64 pthread libraries under the pthread defines > > - add documentation on how to build under x64 > > Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> > --- > INSTALL.Windows.md | 13 +++++++++++-- > Makefile.am | 1 + > configure.ac | 1 + > m4/openvswitch.m4 | 33 +++++++++++++++++++++++++++++++-- > windows/automake.mk | 2 +- > 5 files changed, 45 insertions(+), 5 deletions(-) > > diff --git a/INSTALL.Windows.md b/INSTALL.Windows.md > index 889bb0b..a9ceb57 100644 > --- a/INSTALL.Windows.md > +++ b/INSTALL.Windows.md > @@ -34,10 +34,19 @@ will also need to install Windows Driver Kit (WDK) 8.1 Update. > > It is important to get the Visual Studio related environment variables and to > have the $PATH inside the bash to point to the proper compiler and linker. One > -easy way to achieve this is to get into the "Developer Command prompt for visual > -studio" and through it enter into the bash shell available from msys by typing > +easy way to achieve this is to get into the "VS2013 x86 Native Tools Command > +Prompt"(in a default installation of Visual Studio this can be found under the > +following location: > +C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts) > +and through it enter into the bash shell available from msys by typing > 'bash --login'. The above makes it very VS2013 specific. Can we change the wording wherein we mention VS2013 only as an example. > > +We also support compiling on 64 bit. To compile everything under x64 open the > +"VS2013 x64 Native Tools Command Prompt"(if your current running OS is 64 bit) > +or "VS2013 x64 Cross Tools Command Prompt"(if your current running OS is 64 > +bit) instead of opening its x86 variant. This will point the compiler and the > +linker to their 64 bit equivalent. The cross tools command prompt is when your OS is NOT 64 bit, no? > + > If after the above step, a 'which link' inside MSYS's bash says, > "/bin/link.exe", rename /bin/link.exe to something else so that the > Visual studio's linker is used. You should also see a 'which sort' report > diff --git a/Makefile.am b/Makefile.am > index a659814..ab1a135 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -19,6 +19,7 @@ AM_CPPFLAGS += -I $(top_srcdir)/datapath-windows/include > AM_CPPFLAGS += $(PTHREAD_INCLUDES) > AM_CPPFLAGS += $(MSVC_CFLAGS) > AM_LDFLAGS += $(PTHREAD_LDFLAGS) > +AM_LDFLAGS += $(MSVC64_LDFLAGS) > endif > > AM_CPPFLAGS += -I $(top_srcdir)/include > diff --git a/configure.ac b/configure.ac > index 36387a1..fd04929 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -85,6 +85,7 @@ AC_SEARCH_LIBS([pthread_create], [pthread]) > AC_FUNC_STRERROR_R > > OVS_CHECK_ESX > +OVS_CHECK_WIN64 > OVS_CHECK_WIN32 > OVS_CHECK_VISUAL_STUDIO_DDK > OVS_CHECK_COVERAGE > diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 > index 087c7e5..98e5ce9 100644 > --- a/m4/openvswitch.m4 > +++ b/m4/openvswitch.m4 > @@ -70,6 +70,22 @@ AC_DEFUN([OVS_CHECK_ESX], > AC_DEFINE([ESX], [1], [Define to 1 if building on ESX.]) > fi]) > > +dnl Checks for MSVC x64 compiler. > +AC_DEFUN([OVS_CHECK_WIN64], > + [AC_CACHE_CHECK( > + [for MSVC x64 compiler], > + [cl_cv_x64], > + [dnl "cl" writes x64 output to stdin: > + if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then > + cl_cv_x64=yes > + MSVC64_LDFLAGS=" /MACHINE:X64 " > + else > + cl_cv_x64=no > + MSVC64_LDFLAGS="" > + fi]) > + AC_SUBST([MSVC64_LDFLAGS]) > +]) > + > dnl Checks for WINDOWS. > AC_DEFUN([OVS_CHECK_WIN32], > [AC_CHECK_HEADER([windows.h], > @@ -86,11 +102,24 @@ AC_DEFUN([OVS_CHECK_WIN32], > AC_MSG_ERROR([Invalid --with-pthread value]) > ;; > *) > - PTHREAD_WIN32_DIR=$withval/lib/x86 > - PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x86 > + if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then > + cl_cv_x64=yes > + else > + cl_cv_x64=no > + fi > + if test "$cl_cv_x64" = yes; then > + PTHREAD_WIN32_DIR=$withval/lib/x64 > + PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x64 > + PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x64 > + else > + PTHREAD_WIN32_DIR=$withval/lib/x86 > + PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x86 > + PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x86 > + fi > PTHREAD_INCLUDES=-I$withval/include > PTHREAD_LDFLAGS=-L$PTHREAD_WIN32_DIR > PTHREAD_LIBS="-lpthreadVC2" > + AC_SUBST([PTHREAD_WIN32_DIR_DLL_WIN_FORM]) > AC_SUBST([PTHREAD_WIN32_DIR_DLL]) > AC_SUBST([PTHREAD_INCLUDES]) > AC_SUBST([PTHREAD_LDFLAGS]) > diff --git a/windows/automake.mk b/windows/automake.mk > index c8165a4..fa610ec 100644 > --- a/windows/automake.mk > +++ b/windows/automake.mk > @@ -26,7 +26,7 @@ windows_installer: all > cp -f $(top_srcdir)/ovsdb/ovsdb-client.pdb windows/ovs-windows-installer/Symbols/ > cp -f $(top_srcdir)/ovsdb/ovsdb-tool.pdb windows/ovs-windows-installer/Symbols/ > #Third party files needed by the installer > - cp -f $(PTHREAD_TEMP_DIR)/../../dll/x86/*.dll windows/ovs-windows-installer/Binaries/ > + cp -f $(PTHREAD_WIN32_DIR_DLL_WIN_FORM)/*.dll windows/ovs-windows-installer/Binaries/ > cp -f "/c/Program Files (x86)/Common Files/Merge Modules/Microsoft_VC120_CRT_x86.msm" windows/ovs-windows-installer/Redist/Microsoft_VC120_CRT_x86.msm > #Forwarding extension files needed for the installer > cp -f $(top_srcdir)/datapath-windows/x64/Win8$(VSTUDIO_CONFIG)/package/ovsext.cat windows/ovs-windows-installer/Driver/Win8/ovsext.cat > -- > 1.9.5.msysgit.0 > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev
I'll respin the patch. Alin. > -----Mesaj original----- > De la: Gurucharan Shetty [mailto:shettyg@nicira.com] > Trimis: Wednesday, September 23, 2015 6:54 PM > Către: Alin Serdean <aserdean@cloudbasesolutions.com> > Cc: dev@openvswitch.org > Subiect: Re: [ovs-dev] [PATCH 7/7] Add build system for compiling under > MSVC x64 > > On Tue, Sep 22, 2015 at 12:53 PM, Alin Serdean > <aserdean@cloudbasesolutions.com> wrote: > > This patch adds the modifications needed to compile under x64 under > > Windows: > > - created a new macro for testing if we are compiling under x64. > > this will define the linker flag: "/MACHINE:X64" as per documentation > > (https://msdn.microsoft.com/en-us/library/9yb4317s.aspx). > > > > - added x64 pthread libraries under the pthread defines > > > > - add documentation on how to build under x64 > > > > Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> > > --- > > INSTALL.Windows.md | 13 +++++++++++-- > > Makefile.am | 1 + > > configure.ac | 1 + > > m4/openvswitch.m4 | 33 +++++++++++++++++++++++++++++++-- > > windows/automake.mk | 2 +- > > 5 files changed, 45 insertions(+), 5 deletions(-) > > > > diff --git a/INSTALL.Windows.md b/INSTALL.Windows.md index > > 889bb0b..a9ceb57 100644 > > --- a/INSTALL.Windows.md > > +++ b/INSTALL.Windows.md > > @@ -34,10 +34,19 @@ will also need to install Windows Driver Kit (WDK) > 8.1 Update. > > > > It is important to get the Visual Studio related environment > > variables and to have the $PATH inside the bash to point to the > > proper compiler and linker. One -easy way to achieve this is to get > > into the "Developer Command prompt for visual -studio" and through it > > enter into the bash shell available from msys by typing > > +easy way to achieve this is to get into the "VS2013 x86 Native Tools > > +Command Prompt"(in a default installation of Visual Studio this can > > +be found under the following location: > > +C:\Program Files (x86)\Microsoft Visual Studio > > +12.0\Common7\Tools\Shortcuts) and through it enter into the bash > > +shell available from msys by typing > > 'bash --login'. > The above makes it very VS2013 specific. Can we change the wording > wherein we mention VS2013 only as an example. [Alin Gabriel Serdean: ] Sure > > > > > +We also support compiling on 64 bit. To compile everything under x64 > > +open the > > +"VS2013 x64 Native Tools Command Prompt"(if your current running OS > > +is 64 bit) or "VS2013 x64 Cross Tools Command Prompt"(if your current > > +running OS is 64 > > +bit) instead of opening its x86 variant. This will point the compiler > > +and the linker to their 64 bit equivalent. > > The cross tools command prompt is when your OS is NOT 64 bit, no? [Alin Gabriel Serdean: ] Miss typed :). > > > + > > If after the above step, a 'which link' inside MSYS's bash says, > > "/bin/link.exe", rename /bin/link.exe to something else so that the > > Visual studio's linker is used. You should also see a 'which sort' > > report diff --git a/Makefile.am b/Makefile.am index a659814..ab1a135 > > 100644 > > --- a/Makefile.am > > +++ b/Makefile.am > > @@ -19,6 +19,7 @@ AM_CPPFLAGS += -I > > $(top_srcdir)/datapath-windows/include > > AM_CPPFLAGS += $(PTHREAD_INCLUDES) > > AM_CPPFLAGS += $(MSVC_CFLAGS) > > AM_LDFLAGS += $(PTHREAD_LDFLAGS) > > +AM_LDFLAGS += $(MSVC64_LDFLAGS) > > endif > > > > AM_CPPFLAGS += -I $(top_srcdir)/include diff --git a/configure.ac > > b/configure.ac index 36387a1..fd04929 100644 > > --- a/configure.ac > > +++ b/configure.ac > > @@ -85,6 +85,7 @@ AC_SEARCH_LIBS([pthread_create], [pthread]) > > AC_FUNC_STRERROR_R > > > > OVS_CHECK_ESX > > +OVS_CHECK_WIN64 > > OVS_CHECK_WIN32 > > OVS_CHECK_VISUAL_STUDIO_DDK > > OVS_CHECK_COVERAGE > > diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 index > > 087c7e5..98e5ce9 100644 > > --- a/m4/openvswitch.m4 > > +++ b/m4/openvswitch.m4 > > @@ -70,6 +70,22 @@ AC_DEFUN([OVS_CHECK_ESX], > > AC_DEFINE([ESX], [1], [Define to 1 if building on ESX.]) > > fi]) > > > > +dnl Checks for MSVC x64 compiler. > > +AC_DEFUN([OVS_CHECK_WIN64], > > + [AC_CACHE_CHECK( > > + [for MSVC x64 compiler], > > + [cl_cv_x64], > > + [dnl "cl" writes x64 output to stdin: > > + if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then > > + cl_cv_x64=yes > > + MSVC64_LDFLAGS=" /MACHINE:X64 " > > + else > > + cl_cv_x64=no > > + MSVC64_LDFLAGS="" > > + fi]) > > + AC_SUBST([MSVC64_LDFLAGS]) > > +]) > > + > > dnl Checks for WINDOWS. > > AC_DEFUN([OVS_CHECK_WIN32], > > [AC_CHECK_HEADER([windows.h], > > @@ -86,11 +102,24 @@ AC_DEFUN([OVS_CHECK_WIN32], > > AC_MSG_ERROR([Invalid --with-pthread value]) > > ;; > > *) > > - PTHREAD_WIN32_DIR=$withval/lib/x86 > > - PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x86 > > + if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then > > + cl_cv_x64=yes > > + else > > + cl_cv_x64=no > > + fi > > + if test "$cl_cv_x64" = yes; then > > + PTHREAD_WIN32_DIR=$withval/lib/x64 > > + PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x64 > > + PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x64 > > + else > > + PTHREAD_WIN32_DIR=$withval/lib/x86 > > + PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x86 > > + PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x86 > > + fi > > PTHREAD_INCLUDES=-I$withval/include > > PTHREAD_LDFLAGS=-L$PTHREAD_WIN32_DIR > > PTHREAD_LIBS="-lpthreadVC2" > > + AC_SUBST([PTHREAD_WIN32_DIR_DLL_WIN_FORM]) > > AC_SUBST([PTHREAD_WIN32_DIR_DLL]) > > AC_SUBST([PTHREAD_INCLUDES]) > > AC_SUBST([PTHREAD_LDFLAGS]) diff --git > > a/windows/automake.mk b/windows/automake.mk index > c8165a4..fa610ec > > 100644 > > --- a/windows/automake.mk > > +++ b/windows/automake.mk > > @@ -26,7 +26,7 @@ windows_installer: all > > cp -f $(top_srcdir)/ovsdb/ovsdb-client.pdb windows/ovs-windows- > installer/Symbols/ > > cp -f $(top_srcdir)/ovsdb/ovsdb-tool.pdb > > windows/ovs-windows-installer/Symbols/ > > #Third party files needed by the installer > > - cp -f $(PTHREAD_TEMP_DIR)/../../dll/x86/*.dll windows/ovs-windows- > installer/Binaries/ > > + cp -f $(PTHREAD_WIN32_DIR_DLL_WIN_FORM)/*.dll > > + windows/ovs-windows-installer/Binaries/ > > cp -f "/c/Program Files (x86)/Common Files/Merge > > Modules/Microsoft_VC120_CRT_x86.msm" > > windows/ovs-windows-installer/Redist/Microsoft_VC120_CRT_x86.msm > > #Forwarding extension files needed for the installer > > cp -f > > $(top_srcdir)/datapath- > windows/x64/Win8$(VSTUDIO_CONFIG)/package/ovsex > > t.cat windows/ovs-windows-installer/Driver/Win8/ovsext.cat > > -- > > 1.9.5.msysgit.0 > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev
diff --git a/INSTALL.Windows.md b/INSTALL.Windows.md index 889bb0b..a9ceb57 100644 --- a/INSTALL.Windows.md +++ b/INSTALL.Windows.md @@ -34,10 +34,19 @@ will also need to install Windows Driver Kit (WDK) 8.1 Update. It is important to get the Visual Studio related environment variables and to have the $PATH inside the bash to point to the proper compiler and linker. One -easy way to achieve this is to get into the "Developer Command prompt for visual -studio" and through it enter into the bash shell available from msys by typing +easy way to achieve this is to get into the "VS2013 x86 Native Tools Command +Prompt"(in a default installation of Visual Studio this can be found under the +following location: +C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts) +and through it enter into the bash shell available from msys by typing 'bash --login'. +We also support compiling on 64 bit. To compile everything under x64 open the +"VS2013 x64 Native Tools Command Prompt"(if your current running OS is 64 bit) +or "VS2013 x64 Cross Tools Command Prompt"(if your current running OS is 64 +bit) instead of opening its x86 variant. This will point the compiler and the +linker to their 64 bit equivalent. + If after the above step, a 'which link' inside MSYS's bash says, "/bin/link.exe", rename /bin/link.exe to something else so that the Visual studio's linker is used. You should also see a 'which sort' report diff --git a/Makefile.am b/Makefile.am index a659814..ab1a135 100644 --- a/Makefile.am +++ b/Makefile.am @@ -19,6 +19,7 @@ AM_CPPFLAGS += -I $(top_srcdir)/datapath-windows/include AM_CPPFLAGS += $(PTHREAD_INCLUDES) AM_CPPFLAGS += $(MSVC_CFLAGS) AM_LDFLAGS += $(PTHREAD_LDFLAGS) +AM_LDFLAGS += $(MSVC64_LDFLAGS) endif AM_CPPFLAGS += -I $(top_srcdir)/include diff --git a/configure.ac b/configure.ac index 36387a1..fd04929 100644 --- a/configure.ac +++ b/configure.ac @@ -85,6 +85,7 @@ AC_SEARCH_LIBS([pthread_create], [pthread]) AC_FUNC_STRERROR_R OVS_CHECK_ESX +OVS_CHECK_WIN64 OVS_CHECK_WIN32 OVS_CHECK_VISUAL_STUDIO_DDK OVS_CHECK_COVERAGE diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 index 087c7e5..98e5ce9 100644 --- a/m4/openvswitch.m4 +++ b/m4/openvswitch.m4 @@ -70,6 +70,22 @@ AC_DEFUN([OVS_CHECK_ESX], AC_DEFINE([ESX], [1], [Define to 1 if building on ESX.]) fi]) +dnl Checks for MSVC x64 compiler. +AC_DEFUN([OVS_CHECK_WIN64], + [AC_CACHE_CHECK( + [for MSVC x64 compiler], + [cl_cv_x64], + [dnl "cl" writes x64 output to stdin: + if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then + cl_cv_x64=yes + MSVC64_LDFLAGS=" /MACHINE:X64 " + else + cl_cv_x64=no + MSVC64_LDFLAGS="" + fi]) + AC_SUBST([MSVC64_LDFLAGS]) +]) + dnl Checks for WINDOWS. AC_DEFUN([OVS_CHECK_WIN32], [AC_CHECK_HEADER([windows.h], @@ -86,11 +102,24 @@ AC_DEFUN([OVS_CHECK_WIN32], AC_MSG_ERROR([Invalid --with-pthread value]) ;; *) - PTHREAD_WIN32_DIR=$withval/lib/x86 - PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x86 + if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then + cl_cv_x64=yes + else + cl_cv_x64=no + fi + if test "$cl_cv_x64" = yes; then + PTHREAD_WIN32_DIR=$withval/lib/x64 + PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x64 + PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x64 + else + PTHREAD_WIN32_DIR=$withval/lib/x86 + PTHREAD_WIN32_DIR_DLL=/${withval/:/}/dll/x86 + PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x86 + fi PTHREAD_INCLUDES=-I$withval/include PTHREAD_LDFLAGS=-L$PTHREAD_WIN32_DIR PTHREAD_LIBS="-lpthreadVC2" + AC_SUBST([PTHREAD_WIN32_DIR_DLL_WIN_FORM]) AC_SUBST([PTHREAD_WIN32_DIR_DLL]) AC_SUBST([PTHREAD_INCLUDES]) AC_SUBST([PTHREAD_LDFLAGS]) diff --git a/windows/automake.mk b/windows/automake.mk index c8165a4..fa610ec 100644 --- a/windows/automake.mk +++ b/windows/automake.mk @@ -26,7 +26,7 @@ windows_installer: all cp -f $(top_srcdir)/ovsdb/ovsdb-client.pdb windows/ovs-windows-installer/Symbols/ cp -f $(top_srcdir)/ovsdb/ovsdb-tool.pdb windows/ovs-windows-installer/Symbols/ #Third party files needed by the installer - cp -f $(PTHREAD_TEMP_DIR)/../../dll/x86/*.dll windows/ovs-windows-installer/Binaries/ + cp -f $(PTHREAD_WIN32_DIR_DLL_WIN_FORM)/*.dll windows/ovs-windows-installer/Binaries/ cp -f "/c/Program Files (x86)/Common Files/Merge Modules/Microsoft_VC120_CRT_x86.msm" windows/ovs-windows-installer/Redist/Microsoft_VC120_CRT_x86.msm #Forwarding extension files needed for the installer cp -f $(top_srcdir)/datapath-windows/x64/Win8$(VSTUDIO_CONFIG)/package/ovsext.cat windows/ovs-windows-installer/Driver/Win8/ovsext.cat
This patch adds the modifications needed to compile under x64 under Windows: - created a new macro for testing if we are compiling under x64. this will define the linker flag: "/MACHINE:X64" as per documentation (https://msdn.microsoft.com/en-us/library/9yb4317s.aspx). - added x64 pthread libraries under the pthread defines - add documentation on how to build under x64 Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> --- INSTALL.Windows.md | 13 +++++++++++-- Makefile.am | 1 + configure.ac | 1 + m4/openvswitch.m4 | 33 +++++++++++++++++++++++++++++++-- windows/automake.mk | 2 +- 5 files changed, 45 insertions(+), 5 deletions(-)