From ab97b5fe547e9236aefe88d36584334f0ea7814d Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Tue, 7 Apr 2020 15:37:32 +0200 Subject: [PATCH] Bring back VxWorks 5 compatibility --- .../libcom/src/osi/compiler/gcc/compilerSpecific.h | 14 +++++++++++--- modules/libcom/src/osi/os/vxWorks/osdThread.c | 5 +++++ modules/libcom/src/osi/os/vxWorks/osdThread.h | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/libcom/src/osi/compiler/gcc/compilerSpecific.h b/modules/libcom/src/osi/compiler/gcc/compilerSpecific.h index 3342308a9..d9df89162 100644 --- a/modules/libcom/src/osi/compiler/gcc/compilerSpecific.h +++ b/modules/libcom/src/osi/compiler/gcc/compilerSpecific.h @@ -24,7 +24,11 @@ # error compiler/gcc/compilerSpecific.h is not for use with the clang compiler #endif -#define EPICS_ALWAYS_INLINE __inline__ __attribute__((always_inline)) +#if __GNUC__ > 2 +# define EPICS_ALWAYS_INLINE __inline__ __attribute__((always_inline)) +#else +# define EPICS_ALWAYS_INLINE __inline__ +#endif /* Expands to a 'const char*' which describes the name of the current function scope */ #define EPICS_FUNCTION __PRETTY_FUNCTION__ @@ -41,7 +45,9 @@ /* * CXX_PLACEMENT_DELETE - defined if compiler supports placement delete */ -#define CXX_PLACEMENT_DELETE +#if __GNUC__ > 2 || ( __GNUC__ == 2 && __GNUC_MINOR__ >= 96 ) +# define CXX_PLACEMENT_DELETE +#endif #endif /* __cplusplus */ @@ -53,7 +59,9 @@ /* * Deprecation marker */ -#define EPICS_DEPRECATED __attribute__((deprecated)) +#if (__GNUC__ > 2) +# define EPICS_DEPRECATED __attribute__((deprecated)) +#endif /* * Unused marker diff --git a/modules/libcom/src/osi/os/vxWorks/osdThread.c b/modules/libcom/src/osi/os/vxWorks/osdThread.c index babdf11cf..d6e54ff2b 100644 --- a/modules/libcom/src/osi/os/vxWorks/osdThread.c +++ b/modules/libcom/src/osi/os/vxWorks/osdThread.c @@ -46,9 +46,14 @@ static SPARE_NUM joinField; #define ALLOT_JOIN(tid) taskSpareNumAllot(tid, &joinField) #else + #include #define ALLOT_JOIN(tid) #endif +#ifndef _WRS_VXWORKS_MAJOR +/* vxWorks 5 */ +#define taskCreate taskCreat +#endif epicsShareFunc void osdThreadHooksRun(epicsThreadId id); diff --git a/modules/libcom/src/osi/os/vxWorks/osdThread.h b/modules/libcom/src/osi/os/vxWorks/osdThread.h index 15145663b..a640359dc 100644 --- a/modules/libcom/src/osi/os/vxWorks/osdThread.h +++ b/modules/libcom/src/osi/os/vxWorks/osdThread.h @@ -12,7 +12,7 @@ /* VxWorks 6.9 and later can support joining threads */ -#if (_WRS_VXWORKS_MAJOR == 6 && _WRS_VXWORKS_MINOR < 9) +#if (!defined(_WRS_VXWORKS_MAJOR) || _WRS_VXWORKS_MAJOR == 6 && _WRS_VXWORKS_MINOR < 9) #undef EPICS_THREAD_CAN_JOIN #endif