From 94887cf4caa74bfb5c2fd163cb99b145a6d6e2fb Mon Sep 17 00:00:00 2001 From: Gurucharan Shetty Date: Tue, 4 Mar 2014 14:07:55 -0800 Subject: [PATCH] configure: Include pthread-win32 libraries for Windows build. Signed-off-by: Gurucharan Shetty Signed-off-by: Saurabh Shah Co-authored-by: Saurabh Shah Acked-by: Ben Pfaff --- BUILD.Windows | 7 ++++++- Makefile.am | 2 ++ build-aux/cccl | 2 +- lib/automake.mk | 5 +++++ m4/openvswitch.m4 | 21 +++++++++++++++++++++ ofproto/automake.mk | 4 ++++ 6 files changed, 39 insertions(+), 2 deletions(-) diff --git a/BUILD.Windows b/BUILD.Windows index ea931ebb2..c640e282e 100644 --- a/BUILD.Windows +++ b/BUILD.Windows @@ -34,6 +34,11 @@ 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. +* For pthread support, install the library, dll and includes of pthreads-win32 +project from +ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-9-1-release to a +directory (e.g.: C:/pthread). + * Get the Open vSwitch sources from either cloning the repo using git or from a distribution tar ball. @@ -49,7 +54,7 @@ or from a distribution tar ball. % ./configure CC=./build-aux/cccl LD="`which link`" LIBS="-lws2_32 ..." \ --prefix="C:/openvswitch/usr" --localstatedir="C:/openvswitch/var" \ - --sysconfdir="C:/openvswitch/etc" + --sysconfdir="C:/openvswitch/etc" --with-pthread="C:/pthread" * Run make for the ported executables in the top source directory, e.g.: diff --git a/Makefile.am b/Makefile.am index 6a2aca240..b5d33ac93 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,6 +14,8 @@ AM_LDFLAGS = $(SSL_LDFLAGS) if WIN32 AM_CPPFLAGS += -I $(top_srcdir)/include/windows +AM_CPPFLAGS += $(PTHREAD_INCLUDES) +AM_LDFLAGS += $(PTHREAD_LDFLAGS) endif AM_CPPFLAGS += $(SSL_INCLUDES) diff --git a/build-aux/cccl b/build-aux/cccl index 855f1831e..d6915aaff 100644 --- a/build-aux/cccl +++ b/build-aux/cccl @@ -91,7 +91,7 @@ EOF -L*) path=`echo "$1" | sed 's/-L//'` - linkopt="$linkopt ${slash}LIBPATH:\"$path\"" + linkopt="$linkopt ${slash}LIBPATH:$path" cl_linkopt="${slash}link ${slash}LIBPATH:\"$path\"" ;; diff --git a/lib/automake.mk b/lib/automake.mk index b1688efca..c2cfb1647 100644 --- a/lib/automake.mk +++ b/lib/automake.mk @@ -8,6 +8,11 @@ lib_LTLIBRARIES += lib/libopenvswitch.la lib_libopenvswitch_la_LIBADD = $(SSL_LIBS) + +if WIN32 +lib_libopenvswitch_la_LIBADD += ${PTHREAD_LIBS} +endif + lib_libopenvswitch_la_LDFLAGS = -release $(VERSION) lib_libopenvswitch_la_SOURCES = \ diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 index 7a0465bc1..fa741f646 100644 --- a/m4/openvswitch.m4 +++ b/m4/openvswitch.m4 @@ -63,6 +63,27 @@ AC_DEFUN([OVS_CHECK_WIN32], [WIN32=no]) AM_CONDITIONAL([WIN32], [test "$WIN32" = yes]) if test "$WIN32" = yes; then + AC_ARG_WITH([pthread], + [AS_HELP_STRING([--with-pthread=DIR], + [root of the pthread-win32 directory])], + [ + case "$withval" in + "" | y | ye | yes | n | no) + AC_MSG_ERROR([Invalid --with-pthread value]) + ;; + *) + PTHREAD_INCLUDES="-I$withval/include" + PTHREAD_LDFLAGS="-L$withval/lib/x86" + PTHREAD_LIBS="-lpthreadVC2" + AC_SUBST([PTHREAD_INCLUDES]) + AC_SUBST([PTHREAD_LDFLAGS]) + AC_SUBST([PTHREAD_LIBS]) + ;; + esac + ], [ + AC_MSG_ERROR([pthread directory not specified]) + ] + ) AC_DEFINE([WIN32], [1], [Define to 1 if building on WIN32.]) AH_BOTTOM([#ifdef WIN32 #include "include/windows/windefs.h" diff --git a/ofproto/automake.mk b/ofproto/automake.mk index 1308820d5..448138bef 100644 --- a/ofproto/automake.mk +++ b/ofproto/automake.mk @@ -47,6 +47,10 @@ ofproto_libofproto_la_SOURCES = \ ofproto_libofproto_la_CPPFLAGS = $(AM_CPPFLAGS) ofproto_libofproto_la_CFLAGS = $(AM_CFLAGS) ofproto_libofproto_la_LIBADD = lib/libsflow.la +if WIN32 +ofproto_libofproto_la_LIBADD += ${PTHREAD_LIBS} +endif + # Distribute this generated file in order not to require Python at # build time if ofproto/ipfix.xml is not modified. -- 2.43.0