Better Cygwin support.
author <shinichiro.hamaji@gmail.com> <>
Thu, 22 Jan 2009 18:22:48 +0000 (18:22 +0000)
committer <shinichiro.hamaji@gmail.com> <>
Thu, 22 Jan 2009 18:22:48 +0000 (18:22 +0000)
- configure.ac: Add -lpthread only if acx_pthread_ok is yes. In cygwin, we use Windows' thread so that we don't need -lpthread.
- base/mutex.h: Define NOMINMAX before we include windows.h.
- glog/*.h: Make sure that dllimport doesn't appear in cygwin. Note that windows.h may define _WIN32 macro.
- utilities.h: Define OS_CYGWIN.

git-svn-id: https://google-glog.googlecode.com/svn/trunk@30 eb4d4688-79bd-11dd-afb4-1d65580434c0

configure
configure.ac
src/base/mutex.h
src/glog/log_severity.h
src/glog/logging.h.in
src/glog/raw_logging.h.in
src/glog/vlog_is_on.h.in
src/googletest.h
src/utilities.h

index 2b36bdd9dbf50f55754c0cb90e18884970b93f0d..060515b9155a635cdb3bba6cc9035745cf352463 100755 (executable)
--- a/configure
+++ b/configure
@@ -23786,8 +23786,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-# To make libglog depend on libpthread on Linux, we need to add
-# -lpthread in addition to -pthread.
+if test x"$acx_pthread_ok" = x"yes"; then
+  # To make libglog depend on libpthread on Linux, we need to add
+  # -lpthread in addition to -pthread.
 
 { echo "$as_me:$LINENO: checking for pthread_self in -lpthread" >&5
 echo $ECHO_N "checking for pthread_self in -lpthread... $ECHO_C" >&6; }
@@ -23859,6 +23860,7 @@ _ACEOF
 
 fi
 
+fi
 
 # Check if there is google-gflags library installed.
 { echo "$as_me:$LINENO: checking for main in -lgflags" >&5
index 21209d99f19c50c8ae9274f1722e69621748370a..fe54b5b7288d00c8a5db109ab63ae8ba97d339ec 100644 (file)
@@ -92,9 +92,11 @@ AM_CONDITIONAL(X86_64, test "$is_x86_64" = yes)
 
 # Some of the code in this directory depends on pthreads
 ACX_PTHREAD
-# To make libglog depend on libpthread on Linux, we need to add
-# -lpthread in addition to -pthread.
-AC_CHECK_LIB(pthread, pthread_self)
+if test x"$acx_pthread_ok" = x"yes"; then
+  # To make libglog depend on libpthread on Linux, we need to add
+  # -lpthread in addition to -pthread.
+  AC_CHECK_LIB(pthread, pthread_self)
+fi
 
 # Check if there is google-gflags library installed.
 AC_CHECK_LIB(gflags, main, ac_cv_have_libgflags=1, ac_cv_have_libgflags=0)
index 4a0cc2dad286b4643b7d6525b0d0f0d612af9308..090f5034ddfa02e65e20f6496c32e8b43da3611e 100644 (file)
@@ -79,7 +79,7 @@
 #elif defined(HAVE_PTHREAD)
 # include <pthread.h>
   typedef pthread_mutex_t MutexType;
-#elif defined(OS_WINDOWS)
+#elif defined(OS_WINDOWS) || defined(OS_CYGWIN)
 # define WIN32_LEAN_AND_MEAN  // We only need minimal includes
 # ifdef GMUTEX_TRYLOCK
   // We need Windows NT or later for TryEnterCriticalSection().  If you
@@ -91,6 +91,8 @@
 # endif
 // To avoid macro definition of ERROR.
 # define NOGDI
+// To avoid macro definition of min/max.
+# define NOMINMAX
 # include <windows.h>
   typedef CRITICAL_SECTION MutexType;
 #else
index b90d333c9b848659e435462c2e77ac4b3eeb55b3..5abd0acc283a69aea47d1ae8b12074bf1e44891c 100644 (file)
@@ -5,7 +5,7 @@
 
 // Annoying stuff for windows -- makes sure clients can import these functions
 #ifndef GOOGLE_GLOG_DLL_DECL
-# ifdef _WIN32
+# if defined(_WIN32) && !defined(__CYGWIN__)
 #   define GOOGLE_GLOG_DLL_DECL  __declspec(dllimport)
 # else
 #   define GOOGLE_GLOG_DLL_DECL
index 8f6389e277cd14071633af143bf7846bdc1fd867..607ec1f7f3b55b195d61ad7ba6ac714439c9faf6 100644 (file)
@@ -29,7 +29,7 @@
 
 // Annoying stuff for windows -- makes sure clients can import these functions
 #ifndef GOOGLE_GLOG_DLL_DECL
-# ifdef _WIN32
+# if defined(_WIN32) && !defined(__CYGWIN__)
 #   define GOOGLE_GLOG_DLL_DECL  __declspec(dllimport)
 # else
 #   define GOOGLE_GLOG_DLL_DECL
index c785c36ec356da411d4f02ca80e5b1c4df200aa9..7baeb3da4a8920f456305854513e36452c93baa0 100644 (file)
@@ -15,7 +15,7 @@
 
 // Annoying stuff for windows -- makes sure clients can import these functions
 #ifndef GOOGLE_GLOG_DLL_DECL
-# ifdef _WIN32
+# if defined(_WIN32) && !defined(__CYGWIN__)
 #   define GOOGLE_GLOG_DLL_DECL  __declspec(dllimport)
 # else
 #   define GOOGLE_GLOG_DLL_DECL
index ff1adb8e2378d5eac2e59766b4a47e401e130945..2dab0a2e4329dbea7307308e37e34cce157a4f0e 100644 (file)
@@ -37,7 +37,7 @@
 
 // Annoying stuff for windows -- makes sure clients can import these functions
 #ifndef GOOGLE_GLOG_DLL_DECL
-# ifdef _WIN32
+# if defined(_WIN32) && !defined(__CYGWIN__)
 #   define GOOGLE_GLOG_DLL_DECL  __declspec(dllimport)
 # else
 #   define GOOGLE_GLOG_DLL_DECL
index 4a4475ba2326fc83140da0cf26a8ab521ce742f0..8e41d5e3d05422e879908912623b67101ca0fd98 100644 (file)
@@ -3,6 +3,8 @@
 #endif
 #define GOOGLETEST_H__
 
+#include "utilities.h"
+
 #include <ctype.h>
 #include <setjmp.h>
 #include <time.h>
@@ -491,7 +493,7 @@ class Thread {
   void Join() {
     pthread_join(th_, NULL);
   }
-#elif defined(OS_WINDOWS)
+#elif defined(OS_WINDOWS) || defined(OS_CYGWIN)
   void Start() {
     handle_ = CreateThread(NULL,
                            0,
@@ -517,9 +519,11 @@ class Thread {
     return NULL;
   }
 
-  pthread_t th_;
-#ifdef OS_WINDOWS
+#if defined(OS_WINDOWS) || defined(OS_CYGWIN)
   HANDLE handle_;
+  DWORD th_;
+#else
+  pthread_t th_;
 #endif
 };
 
index dc8c2083c8dab065b57181a22cdb027799974383..0db7c3a45114fdde6cb999ea2f05be434a708795 100644 (file)
@@ -6,8 +6,10 @@
 #ifndef UTILITIES_H__
 #define UTILITIES_H__
 
-#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) || defined(__CYGWIN32__)
+#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
 # define OS_WINDOWS
+#elif defined(__CYGWIN__) || defined(__CYGWIN32__)
+# define OS_CYGWIN
 #elif defined(linux) || defined(__linux) || defined(__linux__)
 # define OS_LINUX
 #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
@@ -40,7 +42,7 @@
 
 #include <string>
 
-#if defined(OS_WINDOWS) && !defined(__CYGWIN__)
+#if defined(OS_WINDOWS)
 # include "port.h"
 #endif