Fix compilation on MinGW with native threads
This commit is contained in:
		
							parent
							
								
									8506e45495
								
							
						
					
					
						commit
						054ec981bc
					
				@ -396,10 +396,16 @@
 | 
			
		||||
#  include <io.h>
 | 
			
		||||
# endif
 | 
			
		||||
// In order to avoid having to include <windows.h>, use forward declaration
 | 
			
		||||
// assuming CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
 | 
			
		||||
#if GTEST_OS_WINDOWS_MINGW
 | 
			
		||||
// MinGW defined _CRITICAL_SECTION and _RTL_CRITICAL_SECTION as two
 | 
			
		||||
// separate (equivalent) structs, instead of using typedef
 | 
			
		||||
typedef struct _CRITICAL_SECTION GTEST_CRITICAL_SECTION;
 | 
			
		||||
#else
 | 
			
		||||
// Assume CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
 | 
			
		||||
// This assumption is verified by
 | 
			
		||||
// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
 | 
			
		||||
struct _RTL_CRITICAL_SECTION;
 | 
			
		||||
typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
// This assumes that non-Windows OSes provide unistd.h. For OSes where this
 | 
			
		||||
// is not the case, we need to include headers that provide the functions
 | 
			
		||||
@ -1693,7 +1699,7 @@ class GTEST_API_ Mutex {
 | 
			
		||||
  // by the linker.
 | 
			
		||||
  MutexType type_;
 | 
			
		||||
  long critical_section_init_phase_;  // NOLINT
 | 
			
		||||
  _RTL_CRITICAL_SECTION* critical_section_;
 | 
			
		||||
  GTEST_CRITICAL_SECTION* critical_section_;
 | 
			
		||||
 | 
			
		||||
  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -1295,9 +1295,16 @@ TEST(WindowsTypesTest, HANDLEIsVoidStar) {
 | 
			
		||||
  StaticAssertTypeEq<HANDLE, void*>();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if GTEST_OS_WINDOWS_MINGW
 | 
			
		||||
TEST(WindowsTypesTest, _CRITICAL_SECTIONIs_CRITICAL_SECTION) {
 | 
			
		||||
  StaticAssertTypeEq<CRITICAL_SECTION, _CRITICAL_SECTION>();
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
TEST(WindowsTypesTest, CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION) {
 | 
			
		||||
  StaticAssertTypeEq<CRITICAL_SECTION, _RTL_CRITICAL_SECTION>();
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif  // GTEST_OS_WINDOWS
 | 
			
		||||
 | 
			
		||||
}  // namespace internal
 | 
			
		||||
 | 
			
		||||
@ -442,7 +442,7 @@ class FormatEpochTimeInMillisAsIso8601Test : public Test {
 | 
			
		||||
    // tzset() distinguishes between the TZ variable being present and empty
 | 
			
		||||
    // and not being present, so we have to consider the case of time_zone
 | 
			
		||||
    // being NULL.
 | 
			
		||||
#if _MSC_VER
 | 
			
		||||
#if _MSC_VER || GTEST_OS_WINDOWS_MINGW
 | 
			
		||||
    // ...Unless it's MSVC, whose standard library's _putenv doesn't
 | 
			
		||||
    // distinguish between an empty and a missing variable.
 | 
			
		||||
    const std::string env_var =
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user