o removed -O3 from mingw debug builds (so the issues below are reproduced on mingw)

o gnu compiler for windows doesnt support well dll exporting individual functions from a class
in debug builds so I switched to exporting the entire interface class in several places
o fixed several places in ca lib where include of epicsTimer.h wasnt properly ifdef'd so
that it is imported by ca header files
--- these issues were already fixed on cvs main trunk ---
This commit is contained in:
Jeff Hill
2010-11-04 10:19:54 -06:00
parent b4d7b6f851
commit f340b3e153
7 changed files with 43 additions and 10 deletions

View File

@@ -26,7 +26,7 @@ LOADABLE_SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
# Override linking with gcc library from CONFIG.gnuCommon
GNU_LDLIBS_YES =
OPT_CFLAGS_NO = -O3 -g
OPT_CXXFLAGS_NO = -O3 -g
OPT_CFLAGS_NO = -g
OPT_CXXFLAGS_NO = -g
OP_SYS_LDLIBS = -lws2_32

View File

@@ -360,6 +360,6 @@ void bheFreeStore::release ( void * pCadaver )
freeList.release ( pCadaver );
}
epicsShareFunc bheMemoryManager::~bheMemoryManager () {}
bheMemoryManager::~bheMemoryManager () {}

View File

@@ -45,9 +45,9 @@ class bheMemoryManager;
// using a pure abstract wrapper class around the free list avoids
// Tornado 2.0.1 GNU compiler bugs
class bheMemoryManager {
class epicsShareClass bheMemoryManager {
public:
epicsShareFunc virtual ~bheMemoryManager ();
virtual ~bheMemoryManager ();
virtual void * allocate ( size_t ) = 0;
virtual void release ( void * ) = 0;
};

View File

@@ -28,6 +28,18 @@
#include "epicsTimer.h"
#ifdef epicsExportSharedSymbols
# define repeaterSubscribeTimerh_epicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include "epicsTimer.h"
#ifdef repeaterSubscribeTimerh_epicsExportSharedSymbols
# define epicsExportSharedSymbols
# include "shareLib.h"
#endif
class epicsMutex;
class cacContextNotify;

View File

@@ -26,8 +26,18 @@
#ifndef tcpRecvWatchdogh
#define tcpRecvWatchdogh
#ifdef epicsExportSharedSymbols
# define tcpRecvWatchdogh_epicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include "epicsTimer.h"
#ifdef tcpRecvWatchdogh_epicsExportSharedSymbols
# define epicsExportSharedSymbols
# include "shareLib.h"
#endif
class tcpiiu;
class tcpRecvWatchdog : private epicsTimerNotify {

View File

@@ -26,8 +26,19 @@
#ifndef tcpSendWatchdogh
#define tcpSendWatchdogh
#ifdef epicsExportSharedSymbols
# define tcpSendWatchdogh_epicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include "epicsTimer.h"
#ifdef tcpSendWatchdogh_epicsExportSharedSymbols
# define epicsExportSharedSymbols
# include "shareLib.h"
#endif
class tcpSendWatchdog : private epicsTimerNotify {
public:
tcpSendWatchdog (

View File

@@ -28,7 +28,7 @@
*/
/* code using a timer must implement epicsTimerNotify */
class epicsTimerNotify {
class epicsShareClass epicsTimerNotify {
public:
enum restart_t { noRestart, restart };
class expireStatus {
@@ -41,13 +41,13 @@ public:
double delay;
};
epicsShareFunc virtual ~epicsTimerNotify () = 0;
virtual ~epicsTimerNotify () = 0;
/* return "noRestart" or "expireStatus ( restart, 30.0 )" */
virtual expireStatus expire ( const epicsTime & currentTime ) = 0;
epicsShareFunc virtual void show ( unsigned int level ) const;
virtual void show ( unsigned int level ) const;
};
class epicsTimer { /* X aCC 655 */
class epicsShareClass epicsTimer { /* X aCC 655 */
public:
/* calls cancel (see warning below) and then destroys the timer */
virtual void destroy () = 0;
@@ -67,7 +67,7 @@ public:
double getExpireDelay ();
virtual void show ( unsigned int level ) const = 0;
protected:
epicsShareFunc virtual ~epicsTimer () = 0; /* protected => delete() must not be called */
virtual ~epicsTimer () = 0; /* protected => delete() must not be called */
};
class epicsTimerQueue { /* X aCC 655 */