Commit c3441fb6 authored by 's avatar

Better Cygwin support.

- 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
parent e31a91b6
...@@ -23786,8 +23786,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ...@@ -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 ac_compiler_gnu=$ac_cv_c_compiler_gnu
# To make libglog depend on libpthread on Linux, we need to add if test x"$acx_pthread_ok" = x"yes"; then
# -lpthread in addition to -pthread. # 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 "$as_me:$LINENO: checking for pthread_self in -lpthread" >&5
echo $ECHO_N "checking for pthread_self in -lpthread... $ECHO_C" >&6; } echo $ECHO_N "checking for pthread_self in -lpthread... $ECHO_C" >&6; }
...@@ -23859,6 +23860,7 @@ _ACEOF ...@@ -23859,6 +23860,7 @@ _ACEOF
fi fi
fi
# Check if there is google-gflags library installed. # Check if there is google-gflags library installed.
{ echo "$as_me:$LINENO: checking for main in -lgflags" >&5 { echo "$as_me:$LINENO: checking for main in -lgflags" >&5
......
...@@ -92,9 +92,11 @@ AM_CONDITIONAL(X86_64, test "$is_x86_64" = yes) ...@@ -92,9 +92,11 @@ AM_CONDITIONAL(X86_64, test "$is_x86_64" = yes)
# Some of the code in this directory depends on pthreads # Some of the code in this directory depends on pthreads
ACX_PTHREAD ACX_PTHREAD
# To make libglog depend on libpthread on Linux, we need to add if test x"$acx_pthread_ok" = x"yes"; then
# -lpthread in addition to -pthread. # To make libglog depend on libpthread on Linux, we need to add
AC_CHECK_LIB(pthread, pthread_self) # -lpthread in addition to -pthread.
AC_CHECK_LIB(pthread, pthread_self)
fi
# Check if there is google-gflags library installed. # Check if there is google-gflags library installed.
AC_CHECK_LIB(gflags, main, ac_cv_have_libgflags=1, ac_cv_have_libgflags=0) AC_CHECK_LIB(gflags, main, ac_cv_have_libgflags=1, ac_cv_have_libgflags=0)
......
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
#elif defined(HAVE_PTHREAD) #elif defined(HAVE_PTHREAD)
# include <pthread.h> # include <pthread.h>
typedef pthread_mutex_t MutexType; 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 # define WIN32_LEAN_AND_MEAN // We only need minimal includes
# ifdef GMUTEX_TRYLOCK # ifdef GMUTEX_TRYLOCK
// We need Windows NT or later for TryEnterCriticalSection(). If you // We need Windows NT or later for TryEnterCriticalSection(). If you
...@@ -91,6 +91,8 @@ ...@@ -91,6 +91,8 @@
# endif # endif
// To avoid macro definition of ERROR. // To avoid macro definition of ERROR.
# define NOGDI # define NOGDI
// To avoid macro definition of min/max.
# define NOMINMAX
# include <windows.h> # include <windows.h>
typedef CRITICAL_SECTION MutexType; typedef CRITICAL_SECTION MutexType;
#else #else
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
// Annoying stuff for windows -- makes sure clients can import these functions // Annoying stuff for windows -- makes sure clients can import these functions
#ifndef GOOGLE_GLOG_DLL_DECL #ifndef GOOGLE_GLOG_DLL_DECL
# ifdef _WIN32 # if defined(_WIN32) && !defined(__CYGWIN__)
# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) # define GOOGLE_GLOG_DLL_DECL __declspec(dllimport)
# else # else
# define GOOGLE_GLOG_DLL_DECL # define GOOGLE_GLOG_DLL_DECL
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
// Annoying stuff for windows -- makes sure clients can import these functions // Annoying stuff for windows -- makes sure clients can import these functions
#ifndef GOOGLE_GLOG_DLL_DECL #ifndef GOOGLE_GLOG_DLL_DECL
# ifdef _WIN32 # if defined(_WIN32) && !defined(__CYGWIN__)
# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) # define GOOGLE_GLOG_DLL_DECL __declspec(dllimport)
# else # else
# define GOOGLE_GLOG_DLL_DECL # define GOOGLE_GLOG_DLL_DECL
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
// Annoying stuff for windows -- makes sure clients can import these functions // Annoying stuff for windows -- makes sure clients can import these functions
#ifndef GOOGLE_GLOG_DLL_DECL #ifndef GOOGLE_GLOG_DLL_DECL
# ifdef _WIN32 # if defined(_WIN32) && !defined(__CYGWIN__)
# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) # define GOOGLE_GLOG_DLL_DECL __declspec(dllimport)
# else # else
# define GOOGLE_GLOG_DLL_DECL # define GOOGLE_GLOG_DLL_DECL
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
// Annoying stuff for windows -- makes sure clients can import these functions // Annoying stuff for windows -- makes sure clients can import these functions
#ifndef GOOGLE_GLOG_DLL_DECL #ifndef GOOGLE_GLOG_DLL_DECL
# ifdef _WIN32 # if defined(_WIN32) && !defined(__CYGWIN__)
# define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) # define GOOGLE_GLOG_DLL_DECL __declspec(dllimport)
# else # else
# define GOOGLE_GLOG_DLL_DECL # define GOOGLE_GLOG_DLL_DECL
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
#endif #endif
#define GOOGLETEST_H__ #define GOOGLETEST_H__
#include "utilities.h"
#include <ctype.h> #include <ctype.h>
#include <setjmp.h> #include <setjmp.h>
#include <time.h> #include <time.h>
...@@ -491,7 +493,7 @@ class Thread { ...@@ -491,7 +493,7 @@ class Thread {
void Join() { void Join() {
pthread_join(th_, NULL); pthread_join(th_, NULL);
} }
#elif defined(OS_WINDOWS) #elif defined(OS_WINDOWS) || defined(OS_CYGWIN)
void Start() { void Start() {
handle_ = CreateThread(NULL, handle_ = CreateThread(NULL,
0, 0,
...@@ -517,9 +519,11 @@ class Thread { ...@@ -517,9 +519,11 @@ class Thread {
return NULL; return NULL;
} }
pthread_t th_; #if defined(OS_WINDOWS) || defined(OS_CYGWIN)
#ifdef OS_WINDOWS
HANDLE handle_; HANDLE handle_;
DWORD th_;
#else
pthread_t th_;
#endif #endif
}; };
......
...@@ -6,8 +6,10 @@ ...@@ -6,8 +6,10 @@
#ifndef UTILITIES_H__ #ifndef UTILITIES_H__
#define 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 # define OS_WINDOWS
#elif defined(__CYGWIN__) || defined(__CYGWIN32__)
# define OS_CYGWIN
#elif defined(linux) || defined(__linux) || defined(__linux__) #elif defined(linux) || defined(__linux) || defined(__linux__)
# define OS_LINUX # define OS_LINUX
#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
...@@ -40,7 +42,7 @@ ...@@ -40,7 +42,7 @@
#include <string> #include <string>
#if defined(OS_WINDOWS) && !defined(__CYGWIN__) #if defined(OS_WINDOWS)
# include "port.h" # include "port.h"
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment