From 3dcffc7df821bd8dfc4f4324b14f2af86305960f Mon Sep 17 00:00:00 2001 From: fredb Date: Sat, 23 Jan 2010 11:40:02 +0000 Subject: [PATCH] =?utf8?q?MINGW=20patch=20from=20Beno=EEt=20Laniel?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- configure.ac | 3 ++- projects/VC90/SimGear.vcproj | 4 ++++ simgear/Makefile.am | 8 +------- simgear/compiler.h | 7 +++---- simgear/debug/logstream.cxx | 2 +- simgear/debug/logstream.hxx | 8 ++++---- simgear/environment/metar.cxx | 2 +- simgear/io/Makefile.am | 2 +- simgear/io/sg_file.cxx | 4 ++-- simgear/io/socktest.cxx | 9 +++++---- simgear/math/SGVec2.hxx | 4 ---- simgear/misc/sg_path.cxx | 8 ++++---- simgear/nasal/code.c | 4 ---- simgear/nasal/iolib.c | 6 ++++-- simgear/scene/material/matlib.cxx | 4 ---- simgear/scene/sky/cloud.cxx | 4 ---- simgear/scene/sky/cloudfield.cxx | 4 ---- simgear/scene/sky/sphere.cxx | 4 ---- simgear/scene/sky/stars.cxx | 4 ---- simgear/screen/GLBitmaps.cxx | 6 +----- simgear/screen/RenderTexture.cpp | 11 ----------- simgear/screen/extensions.hxx | 6 +----- simgear/screen/screen-dump.cxx | 6 +----- simgear/serial/serial.cxx | 16 ++++++++-------- simgear/serial/serial.hxx | 4 ++-- simgear/sound/openal_test1.cxx | 7 +++---- simgear/structure/SGAtomic.hxx | 2 +- simgear/threads/Makefile.am | 4 ++++ simgear/timing/timestamp.cxx | 2 +- 29 files changed, 54 insertions(+), 101 deletions(-) diff --git a/configure.ac b/configure.ac index 6813d11e..d2caab5a 100644 --- a/configure.ac +++ b/configure.ac @@ -34,6 +34,7 @@ AC_PROG_MAKE_SET AC_PROG_CC AC_PROG_CPP AC_PROG_CXX +AC_PROG_CXXCPP AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_LN_S @@ -301,7 +302,7 @@ case "${host}" in dnl CygWin under Windoze. INCLUDES="$INCLUDES -I/usr/local/include/" LIBS="$LIBS -L/usr/local/lib" - AC_SEARCH_LIBS(alGenBuffers, [ openal32 openal ] ) + AC_SEARCH_LIBS(alGenBuffers, [ openal32 openal 'openal -ldsound -lwinmm' ] ) AC_SEARCH_LIBS(alutInit, [ openal32 ALut alut ] ) LIBS="$LIBS -lwinmm -ldsound -ldxguid -lole32" openal_LIBS="$LIBS" diff --git a/projects/VC90/SimGear.vcproj b/projects/VC90/SimGear.vcproj index ec903b13..b8437fc0 100644 --- a/projects/VC90/SimGear.vcproj +++ b/projects/VC90/SimGear.vcproj @@ -1958,6 +1958,10 @@ > + + diff --git a/simgear/Makefile.am b/simgear/Makefile.am index 44e28bb1..de98c035 100644 --- a/simgear/Makefile.am +++ b/simgear/Makefile.am @@ -1,9 +1,3 @@ -if HAVE_THREADS -SGTHREAD_DIR = threads -else -SGTHREAD_DIR = -endif - # METAR_DIRS = METAR_DIRS = environment @@ -31,7 +25,7 @@ SUBDIRS = \ screen \ serial \ sound \ - $(SGTHREAD_DIR) \ + threads \ timing DIST_SUBDIRS = $(SUBDIRS) compatibility diff --git a/simgear/compiler.h b/simgear/compiler.h index eca95fe5..939d9f31 100644 --- a/simgear/compiler.h +++ b/simgear/compiler.h @@ -63,6 +63,9 @@ # if _MSC_VER >= 1200 // msvc++ 6.0 or greater # define isnan _isnan # define snprintf _snprintf +# if _MSC_VER < 1500 +# define vsnprintf _vsnprintf +# endif # define copysign _copysign # pragma warning(disable: 4786) // identifier was truncated to '255' characters @@ -158,10 +161,6 @@ inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } # include // isnan #endif -#if defined(__MINGW32__) -# define isnan(x) _isnan(x) -#endif - // // No user modifiable definitions beyond here. diff --git a/simgear/debug/logstream.cxx b/simgear/debug/logstream.cxx index d906679e..664038b9 100644 --- a/simgear/debug/logstream.cxx +++ b/simgear/debug/logstream.cxx @@ -27,7 +27,7 @@ logstream *logstream::global_logstream = 0; bool logbuf::logging_enabled = true; -#ifdef _MSC_VER +#ifdef _WIN32 bool logbuf::has_console = true; #endif sgDebugClass logbuf::logClass = SG_NONE; diff --git a/simgear/debug/logstream.hxx b/simgear/debug/logstream.hxx index c2a5edc5..d3649a4a 100644 --- a/simgear/debug/logstream.hxx +++ b/simgear/debug/logstream.hxx @@ -27,7 +27,7 @@ #include -#ifdef _MSC_VER +#ifdef _WIN32 # include #endif @@ -123,7 +123,7 @@ public: */ void set_sb( std::streambuf* sb ); -#ifdef _MSC_VER +#ifdef _WIN32 static void has_no_console() { has_console = false; } #endif @@ -142,7 +142,7 @@ private: static std::streambuf* sbuf; static bool logging_enabled; -#ifdef _MSC_VER +#ifdef _WIN32 static bool has_console; #endif static sgDebugClass logClass; @@ -176,7 +176,7 @@ logbuf::would_log( sgDebugClass c, sgDebugPriority p ) const inline logbuf::int_type logbuf::overflow( int c ) { -#ifdef _MSC_VER +#ifdef _WIN32 if ( logging_enabled ) { if ( !has_console ) { AllocConsole(); diff --git a/simgear/environment/metar.cxx b/simgear/environment/metar.cxx index ecda2c9b..79401e39 100644 --- a/simgear/environment/metar.cxx +++ b/simgear/environment/metar.cxx @@ -159,7 +159,7 @@ void SGMetar::useCurrentDate() { struct tm now; time_t now_sec = time(0); -#if defined( _MSC_VER ) || defined ( __MINGW32__ ) +#ifdef _WIN32 now = *gmtime(&now_sec); #else gmtime_r(&now_sec, &now); diff --git a/simgear/io/Makefile.am b/simgear/io/Makefile.am index d51e287a..05b80db2 100644 --- a/simgear/io/Makefile.am +++ b/simgear/io/Makefile.am @@ -71,7 +71,7 @@ socktest_LDADD = \ $(top_builddir)/simgear/debug/libsgdebug.a \ $(top_builddir)/simgear/bucket/libsgbucket.a \ $(top_builddir)/simgear/misc/libsgmisc.a \ - $(socktest_PLIB_LIBS) -lz + $(socktest_PLIB_LIBS) -lz \ $(network_LIBS) \ $(base_LIBS) diff --git a/simgear/io/sg_file.cxx b/simgear/io/sg_file.cxx index bbfc3247..67fbda3e 100644 --- a/simgear/io/sg_file.cxx +++ b/simgear/io/sg_file.cxx @@ -25,7 +25,7 @@ #include -#if defined(_MSC_VER) || defined(__MINGW32__) +#ifdef _WIN32 # include #endif @@ -55,7 +55,7 @@ bool SGFile::open( const SGProtocolDir d ) { set_dir( d ); if ( get_dir() == SG_IO_OUT ) { -#if defined(_MSC_VER) || defined(__MINGW32__) +#ifdef _WIN32 int mode = 00666; #else mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; diff --git a/simgear/io/socktest.cxx b/simgear/io/socktest.cxx index 83adfd27..9a4f0cfe 100644 --- a/simgear/io/socktest.cxx +++ b/simgear/io/socktest.cxx @@ -4,7 +4,12 @@ #include +#ifdef _WIN32 +#include +#define sleep(x) Sleep(x*1000) +#else #include +#endif #include #include "sg_socket.hxx" @@ -44,10 +49,6 @@ int main() { if ( s.readline( buf, 256 ) > 0 ) { cout << "result = " << buf; } -#ifdef __MINGW32__ - Sleep(100); -#else sleep(1); -#endif } } diff --git a/simgear/math/SGVec2.hxx b/simgear/math/SGVec2.hxx index 65c802ea..2a405641 100644 --- a/simgear/math/SGVec2.hxx +++ b/simgear/math/SGVec2.hxx @@ -18,10 +18,6 @@ #ifndef SGVec2_H #define SGVec2_H -#if defined ( __CYGWIN__ ) -#include -#endif - #ifndef NO_OPENSCENEGRAPH_INTERFACE #include #include diff --git a/simgear/misc/sg_path.cxx b/simgear/misc/sg_path.cxx index 6055becd..8e34c987 100644 --- a/simgear/misc/sg_path.cxx +++ b/simgear/misc/sg_path.cxx @@ -29,7 +29,7 @@ #include #include #include -#if defined( _MSC_VER) || defined(__MINGW32__) +#ifdef _WIN32 # include #endif #include "sg_path.hxx" @@ -42,7 +42,7 @@ static const char sgDirPathSep = '/'; static const char sgDirPathSepBad = '\\'; -#if defined( WIN32 ) && !defined(__CYGWIN__) +#ifdef _WIN32 static const char sgSearchPathSep = ';'; #else static const char sgSearchPathSep = ':'; @@ -181,7 +181,7 @@ bool SGPath::exists() const { return true; } -#if defined( _MSC_VER) || defined(__MINGW32__) +#ifdef _WIN32 # define sgMkDir(d,m) _mkdir(d) #else # define sgMkDir(d,m) mkdir(d,m) @@ -199,7 +199,7 @@ int SGPath::create_dir( mode_t mode ) { unsigned int i = 1; SGPath dir = absolute ? string( 1, sgDirPathSep ) : ""; dir.concat( path_elements[0] ); -#if defined( _MSC_VER) || defined(__MINGW32__) +#ifdef _WIN32 if ( dir.str().find(':') != string::npos && path_elements.size() >= 2 ) { dir.append( path_elements[1] ); i = 2; diff --git a/simgear/nasal/code.c b/simgear/nasal/code.c index cf48dc29..e58f7ecb 100644 --- a/simgear/nasal/code.c +++ b/simgear/nasal/code.c @@ -20,10 +20,6 @@ void printOpDEBUG(int ip, int op); void printStackDEBUG(naContext ctx); //////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -#define vsnprintf _vsnprintf -#endif - struct Globals* globals = 0; static naRef bindFunction(naContext ctx, struct Frame* f, naRef code); diff --git a/simgear/nasal/iolib.c b/simgear/nasal/iolib.c index 37b6dd50..b4dbc93d 100644 --- a/simgear/nasal/iolib.c +++ b/simgear/nasal/iolib.c @@ -195,14 +195,16 @@ static naRef f_readln(naContext ctx, naRef me, int argc, naRef* args) return result; } +#ifdef _WIN32 +#define S_ISLNK(m) 0 +#define S_ISSOCK(m) 0 +#endif #ifdef _MSC_VER #define S_ISREG(m) (((m)&_S_IFMT)==_S_IFREG) #define S_ISDIR(m) (((m)&_S_IFMT)==_S_IFDIR) #define S_ISCHR(m) (((m)&_S_IFMT)==_S_IFCHR) #define S_ISFIFO(m) (((m)&_S_IFMT)==_S_IFIFO) #define S_ISBLK(m) 0 -#define S_ISLNK(m) 0 -#define S_ISSOCK(m) 0 typedef unsigned short mode_t; #endif static naRef ftype(naContext ctx, mode_t m) diff --git a/simgear/scene/material/matlib.cxx b/simgear/scene/material/matlib.cxx index f82cb259..5de7e01c 100644 --- a/simgear/scene/material/matlib.cxx +++ b/simgear/scene/material/matlib.cxx @@ -25,10 +25,6 @@ # include #endif -#if defined ( __CYGWIN__ ) -#include -#endif - #include #include #include diff --git a/simgear/scene/sky/cloud.cxx b/simgear/scene/sky/cloud.cxx index 68e41deb..e534a37a 100644 --- a/simgear/scene/sky/cloud.cxx +++ b/simgear/scene/sky/cloud.cxx @@ -75,10 +75,6 @@ using namespace osg; // # endif // #endif -#if defined (__CYGWIN__) -#include -#endif - static osg::ref_ptr layer_states[SGCloudLayer::SG_MAX_CLOUD_COVERAGES]; static osg::ref_ptr layer_states2[SGCloudLayer::SG_MAX_CLOUD_COVERAGES]; static osg::ref_ptr cubeMap; diff --git a/simgear/scene/sky/cloudfield.cxx b/simgear/scene/sky/cloudfield.cxx index 013efe16..829a5585 100644 --- a/simgear/scene/sky/cloudfield.cxx +++ b/simgear/scene/sky/cloudfield.cxx @@ -63,10 +63,6 @@ using std::vector; using namespace simgear; -#if defined (__CYGWIN__) -#include -#endif - float SGCloudField::fieldSize = 50000.0f; double SGCloudField::timer_dt = 0.0; float SGCloudField::view_distance = 20000.0f; diff --git a/simgear/scene/sky/sphere.cxx b/simgear/scene/sky/sphere.cxx index cee7ef41..c41dd9b3 100644 --- a/simgear/scene/sky/sphere.cxx +++ b/simgear/scene/sky/sphere.cxx @@ -20,10 +20,6 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ -#ifdef __CYGWIN__ -#include -#endif - #include #include diff --git a/simgear/scene/sky/stars.cxx b/simgear/scene/sky/stars.cxx index 32b8244f..d4611e01 100644 --- a/simgear/scene/sky/stars.cxx +++ b/simgear/scene/sky/stars.cxx @@ -27,10 +27,6 @@ # include #endif -#ifdef __CYGWIN__ -#include -#endif - #include #include #include diff --git a/simgear/screen/GLBitmaps.cxx b/simgear/screen/GLBitmaps.cxx index 05f61553..30b6e12b 100755 --- a/simgear/screen/GLBitmaps.cxx +++ b/simgear/screen/GLBitmaps.cxx @@ -2,11 +2,7 @@ # include #endif -#if defined(__CYGWIN__) /* && !defined(USING_X) */ -#define WIN32 -#endif - -#if defined(WIN32) /* MINGW and MSC predefine WIN32 */ +#ifdef WIN32 # include #endif diff --git a/simgear/screen/RenderTexture.cpp b/simgear/screen/RenderTexture.cpp index 0b2b6359..ad594117 100644 --- a/simgear/screen/RenderTexture.cpp +++ b/simgear/screen/RenderTexture.cpp @@ -39,9 +39,6 @@ * Implementation of class RenderTexture. A multi-format render to * texture wrapper. */ -#ifdef _MSC_VER -#pragma warning(disable:4786) -#endif /* * Changelog: @@ -339,11 +336,7 @@ void PrintExtensionError( const char* strMsg, ... ) char strBuffer[512]; va_list args; va_start(args, strMsg); -#if defined _WIN32 && !defined __CYGWIN__ - _vsnprintf( strBuffer, 512, strMsg, args ); -#else vsnprintf( strBuffer, 512, strMsg, args ); -#endif va_end(args); SG_LOG(SG_GL, SG_ALERT, strMsg); @@ -1055,11 +1048,7 @@ bool RenderTexture::Reset(const char *strMode, ...) va_list args; char strBuffer[256]; va_start(args,strMode); -#if defined _WIN32 && !defined __CYGWIN__ - _vsnprintf( strBuffer, 256, strMode, args ); -#else vsnprintf( strBuffer, 256, strMode, args ); -#endif va_end(args); _ParseModeString(strBuffer, _pixelFormatAttribs, _pbufferAttribs); diff --git a/simgear/screen/extensions.hxx b/simgear/screen/extensions.hxx index c58f4416..d7999bc6 100644 --- a/simgear/screen/extensions.hxx +++ b/simgear/screen/extensions.hxx @@ -24,11 +24,7 @@ #ifndef __SG_EXTENSIONS_HXX #define __SG_EXTENSIONS_HXX 1 -#if defined(__CYGWIN__) && !defined(WIN32) /* && !defined(USING_X) */ -#define WIN32 -#endif - -#if defined(WIN32) /* MINGW and MSC predefine WIN32 */ +#ifdef WIN32 # include #endif diff --git a/simgear/screen/screen-dump.cxx b/simgear/screen/screen-dump.cxx index e4e97106..5ba9f9ef 100644 --- a/simgear/screen/screen-dump.cxx +++ b/simgear/screen/screen-dump.cxx @@ -23,11 +23,7 @@ # include #endif -#if defined(__CYGWIN__) /* && !defined(USING_X) */ -#define WIN32 -#endif - -#if defined(WIN32) /* MINGW and MSC predefine WIN32 */ +#ifdef WIN32 # include #endif diff --git a/simgear/serial/serial.cxx b/simgear/serial/serial.cxx index 2d273090..985cc875 100644 --- a/simgear/serial/serial.cxx +++ b/simgear/serial/serial.cxx @@ -26,7 +26,7 @@ #include #include -#if !defined( WIN32 ) || defined( __CYGWIN__) || defined( __CYGWIN32__ ) +#ifndef _WIN32 # include # include # include @@ -60,7 +60,7 @@ SGSerialPort::~SGSerialPort() { bool SGSerialPort::open_port(const string& device) { -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 fd = CreateFile( device.c_str(), GENERIC_READ | GENERIC_WRITE, @@ -147,7 +147,7 @@ bool SGSerialPort::open_port(const string& device) { bool SGSerialPort::close_port() { -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 CloseHandle( fd ); #else close(fd); @@ -161,7 +161,7 @@ bool SGSerialPort::close_port() { bool SGSerialPort::set_baud(int baud) { -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 DCB dcb; if ( GetCommState( fd, &dcb ) ) { @@ -274,7 +274,7 @@ string SGSerialPort::read_port() { char buffer[max_count+1]; string result; -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 DWORD count; if ( ReadFile( fd, buffer, max_count, &count, 0 ) ) { @@ -326,7 +326,7 @@ string SGSerialPort::read_port() { int SGSerialPort::read_port(char *buf, int len) { -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 DWORD count; if ( ReadFile( fd, buf, len, &count, 0 ) ) { @@ -383,7 +383,7 @@ int SGSerialPort::read_port(char *buf, int len) { int SGSerialPort::write_port(const string& value) { -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 LPCVOID lpBuffer = value.data(); DWORD nNumberOfBytesToWrite = value.length(); @@ -457,7 +457,7 @@ int SGSerialPort::write_port(const string& value) { int SGSerialPort::write_port(const char* buf, int len) { -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 LPCVOID lpBuffer = buf; DWORD nNumberOfBytesToWrite = len; diff --git a/simgear/serial/serial.hxx b/simgear/serial/serial.hxx index 83cc6008..6e9ec8dd 100644 --- a/simgear/serial/serial.hxx +++ b/simgear/serial/serial.hxx @@ -32,7 +32,7 @@ # error This library requires C++ #endif -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 # include #endif @@ -49,7 +49,7 @@ using std::string; */ class SGSerialPort { -#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ ) +#ifdef _WIN32 typedef HANDLE fd_type; #else typedef int fd_type; diff --git a/simgear/sound/openal_test1.cxx b/simgear/sound/openal_test1.cxx index 66678f8b..e563753a 100644 --- a/simgear/sound/openal_test1.cxx +++ b/simgear/sound/openal_test1.cxx @@ -1,9 +1,8 @@ #include -#ifdef __MINGW32__ -// This is broken, but allows the file to compile without a POSIX -// environment. -static unsigned int sleep(unsigned int secs) { return 0; } +#ifdef _WIN32 +#include +#define sleep(x) Sleep(x*1000) #else #include // sleep() #endif diff --git a/simgear/structure/SGAtomic.hxx b/simgear/structure/SGAtomic.hxx index a7977fc3..d4611d11 100644 --- a/simgear/structure/SGAtomic.hxx +++ b/simgear/structure/SGAtomic.hxx @@ -28,7 +28,7 @@ #elif defined(__sgi) && defined(_COMPILER_VERSION) && (_COMPILER_VERSION>=730) // No need to include something. Is a Compiler API ... # define SGATOMIC_USE_MIPSPRO_BUILTINS -#elif defined(WIN32) && !defined ( __CYGWIN__ ) +#elif defined(_WIN32) # include # define SGATOMIC_USE_WIN32_INTERLOCKED #else diff --git a/simgear/threads/Makefile.am b/simgear/threads/Makefile.am index 1672b287..86af31af 100644 --- a/simgear/threads/Makefile.am +++ b/simgear/threads/Makefile.am @@ -1,5 +1,6 @@ includedir = @includedir@/threads +if HAVE_THREADS lib_LIBRARIES = libsgthreads.a include_HEADERS = \ @@ -11,3 +12,6 @@ libsgthreads_a_SOURCES = \ SGThread.cxx INCLUDES = -I$(top_srcdir) +else +include_HEADERS = SGQueue.hxx +endif diff --git a/simgear/timing/timestamp.cxx b/simgear/timing/timestamp.cxx index 7f7773f4..bfed6644 100644 --- a/simgear/timing/timestamp.cxx +++ b/simgear/timing/timestamp.cxx @@ -59,7 +59,7 @@ #include "timestamp.hxx" void SGTimeStamp::stamp() { -#if defined( WIN32 ) && !defined(__CYGWIN__) +#ifdef _WIN32 unsigned int t; t = timeGetTime(); _sec = t / 1000; -- 2.39.5