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;