From fcb6b935ea850863a3fbb95e4ec53779ad06b3a5 Mon Sep 17 00:00:00 2001 From: Erik Boasson Date: Sat, 23 Mar 2019 13:28:22 +0100 Subject: [PATCH] support for building/running on OpenIndiana Signed-off-by: Erik Boasson --- src/CMakeLists.txt | 3 ++- src/core/ddsc/src/dds_publisher.c | 1 + src/core/ddsc/src/dds_rhc.c | 1 + src/core/ddsc/src/dds_whc.c | 1 + src/core/ddsi/include/dds/ddsi/q_protocol.h | 4 +++- src/core/ddsi/src/ddsi_ssl.c | 1 + src/core/ddsi/src/ddsi_udp.c | 1 + src/core/ddsi/src/q_addrset.c | 1 + src/core/ddsi/src/q_config.c | 1 + src/core/ddsi/src/q_debmon.c | 1 + src/core/ddsi/src/q_entity.c | 1 + src/core/ddsi/src/q_ephash.c | 2 ++ src/core/ddsi/src/q_freelist.c | 1 + src/core/ddsi/src/q_thread.c | 1 + src/core/ddsi/src/sysdeps.c | 1 + src/ddsrt/include/dds/ddsrt/attributes.h | 4 ++++ src/ddsrt/include/dds/ddsrt/endian.h | 7 +++++++ src/ddsrt/src/sockets/posix/socket.c | 3 +++ 18 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a71eb86..19b0515 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -53,7 +53,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "VxWorks") endif() if(${CMAKE_C_COMPILER_ID} STREQUAL "SunPro") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64 -xc99 -D__restrict=restrict") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64 -xc99 -D__restrict=restrict -D__deprecated__=") + set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -m64") endif() # Conan diff --git a/src/core/ddsc/src/dds_publisher.c b/src/core/ddsc/src/dds_publisher.c index ff920e1..689ba11 100644 --- a/src/core/ddsc/src/dds_publisher.c +++ b/src/core/ddsc/src/dds_publisher.c @@ -11,6 +11,7 @@ */ #include #include +#include "dds/ddsrt/misc.h" #include "dds__listener.h" #include "dds__qos.h" #include "dds__err.h" diff --git a/src/core/ddsc/src/dds_rhc.c b/src/core/ddsc/src/dds_rhc.c index dd73cbe..b427df3 100644 --- a/src/core/ddsc/src/dds_rhc.c +++ b/src/core/ddsc/src/dds_rhc.c @@ -11,6 +11,7 @@ */ #include #include +#include #if HAVE_VALGRIND && ! defined (NDEBUG) #include diff --git a/src/core/ddsc/src/dds_whc.c b/src/core/ddsc/src/dds_whc.c index e715a2d..1301ef9 100644 --- a/src/core/ddsc/src/dds_whc.c +++ b/src/core/ddsc/src/dds_whc.c @@ -15,6 +15,7 @@ #include "dds/ddsrt/heap.h" #include "dds/ddsrt/sync.h" +#include "dds/ddsrt/misc.h" #include "dds/ddsi/ddsi_serdata.h" #include "dds/ddsi/q_unused.h" #include "dds/ddsi/q_config.h" diff --git a/src/core/ddsi/include/dds/ddsi/q_protocol.h b/src/core/ddsi/include/dds/ddsi/q_protocol.h index b86dc05..d0a3de2 100644 --- a/src/core/ddsi/include/dds/ddsi/q_protocol.h +++ b/src/core/ddsi/include/dds/ddsi/q_protocol.h @@ -130,8 +130,10 @@ typedef struct Header { } Header_t; #if DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN #define NN_PROTOCOLID_AS_UINT32 (((uint32_t)'R' << 0) | ((uint32_t)'T' << 8) | ((uint32_t)'P' << 16) | ((uint32_t)'S' << 24)) -#else +#elif DDSRT_ENDIAN == DDSRT_BIG_ENDIAN #define NN_PROTOCOLID_AS_UINT32 (((uint32_t)'R' << 24) | ((uint32_t)'T' << 16) | ((uint32_t)'P' << 8) | ((uint32_t)'S' << 0)) +#else +#error "DDSRT_ENDIAN neither LITTLE nor BIG" #endif #define RTPS_MESSAGE_HEADER_SIZE (sizeof (Header_t)) diff --git a/src/core/ddsi/src/ddsi_ssl.c b/src/core/ddsi/src/ddsi_ssl.c index 8ebb2f0..2d85f0e 100644 --- a/src/core/ddsi/src/ddsi_ssl.c +++ b/src/core/ddsi/src/ddsi_ssl.c @@ -13,6 +13,7 @@ #include "dds/ddsi/ddsi_ssl.h" #include "dds/ddsi/q_config.h" #include "dds/ddsrt/log.h" +#include "dds/ddsrt/misc.h" #ifdef DDSI_INCLUDE_SSL diff --git a/src/core/ddsi/src/ddsi_udp.c b/src/core/ddsi/src/ddsi_udp.c index 8c2f925..2623515 100644 --- a/src/core/ddsi/src/ddsi_udp.c +++ b/src/core/ddsi/src/ddsi_udp.c @@ -14,6 +14,7 @@ #include "dds/ddsrt/atomics.h" #include "dds/ddsrt/heap.h" #include "dds/ddsrt/log.h" +#include "dds/ddsrt/misc.h" #include "dds/ddsrt/sockets.h" #include "ddsi_eth.h" #include "dds/ddsi/ddsi_tran.h" diff --git a/src/core/ddsi/src/q_addrset.c b/src/core/ddsi/src/q_addrset.c index 92ccbfa..48d9a4a 100644 --- a/src/core/ddsi/src/q_addrset.c +++ b/src/core/ddsi/src/q_addrset.c @@ -16,6 +16,7 @@ #include "dds/ddsrt/heap.h" #include "dds/ddsrt/log.h" #include "dds/ddsrt/string.h" +#include "dds/ddsrt/misc.h" #include "dds/util/ut_avl.h" #include "dds/ddsi/q_log.h" #include "dds/ddsi/q_misc.h" diff --git a/src/core/ddsi/src/q_config.c b/src/core/ddsi/src/q_config.c index 2def582..e318181 100644 --- a/src/core/ddsi/src/q_config.c +++ b/src/core/ddsi/src/q_config.c @@ -21,6 +21,7 @@ #include "dds/ddsrt/log.h" #include "dds/ddsrt/string.h" #include "dds/ddsrt/strtod.h" +#include "dds/ddsrt/misc.h" #include "dds/ddsi/q_config.h" #include "dds/ddsi/q_log.h" #include "dds/util/ut_avl.h" diff --git a/src/core/ddsi/src/q_debmon.c b/src/core/ddsi/src/q_debmon.c index 15a2fc9..eb83d81 100644 --- a/src/core/ddsi/src/q_debmon.c +++ b/src/core/ddsi/src/q_debmon.c @@ -16,6 +16,7 @@ #include "dds/ddsrt/heap.h" #include "dds/ddsrt/log.h" #include "dds/ddsrt/sync.h" +#include "dds/ddsrt/misc.h" #include "dds/util/ut_avl.h" diff --git a/src/core/ddsi/src/q_entity.c b/src/core/ddsi/src/q_entity.c index 9e20649..39e15c2 100644 --- a/src/core/ddsi/src/q_entity.c +++ b/src/core/ddsi/src/q_entity.c @@ -18,6 +18,7 @@ #include "dds/ddsrt/sockets.h" #include "dds/ddsrt/string.h" #include "dds/ddsrt/sync.h" +#include "dds/ddsrt/misc.h" #include "dds/ddsi/q_entity.h" #include "dds/ddsi/q_config.h" diff --git a/src/core/ddsi/src/q_ephash.c b/src/core/ddsi/src/q_ephash.c index 9413be2..f287aae 100644 --- a/src/core/ddsi/src/q_ephash.c +++ b/src/core/ddsi/src/q_ephash.c @@ -13,6 +13,8 @@ #include #include "dds/ddsrt/heap.h" +#include "dds/ddsrt/misc.h" + #include "dds/util/ut_hopscotch.h" #include "dds/ddsi/q_ephash.h" #include "dds/ddsi/q_config.h" diff --git a/src/core/ddsi/src/q_freelist.c b/src/core/ddsi/src/q_freelist.c index c5259a4..78e2a77 100644 --- a/src/core/ddsi/src/q_freelist.c +++ b/src/core/ddsi/src/q_freelist.c @@ -12,6 +12,7 @@ #include #include "dds/ddsrt/atomics.h" +#include "dds/ddsrt/misc.h" #include "dds/ddsrt/heap.h" #include "dds/ddsrt/sync.h" #include "dds/ddsrt/threads.h" diff --git a/src/core/ddsi/src/q_thread.c b/src/core/ddsi/src/q_thread.c index 0254062..cadbb6e 100644 --- a/src/core/ddsi/src/q_thread.c +++ b/src/core/ddsi/src/q_thread.c @@ -19,6 +19,7 @@ #include "dds/ddsrt/string.h" #include "dds/ddsrt/sync.h" #include "dds/ddsrt/threads.h" +#include "dds/ddsrt/misc.h" #include "dds/ddsi/q_thread.h" #include "dds/ddsi/q_servicelease.h" diff --git a/src/core/ddsi/src/sysdeps.c b/src/core/ddsi/src/sysdeps.c index 251b781..e362823 100644 --- a/src/core/ddsi/src/sysdeps.c +++ b/src/core/ddsi/src/sysdeps.c @@ -13,6 +13,7 @@ #include #include "dds/ddsrt/atomics.h" +#include "dds/ddsrt/misc.h" #include "dds/ddsi/q_error.h" #include "dds/ddsi/q_log.h" diff --git a/src/ddsrt/include/dds/ddsrt/attributes.h b/src/ddsrt/include/dds/ddsrt/attributes.h index 4850777..c91584d 100644 --- a/src/ddsrt/include/dds/ddsrt/attributes.h +++ b/src/ddsrt/include/dds/ddsrt/attributes.h @@ -24,6 +24,10 @@ # define ddsrt_clang (0) #endif +#ifdef __SUNPRO_C +# define __attribute__(x) +#endif + #if defined(__has_attribute) # define ddsrt_has_attribute(params) __has_attribute(params) #elif ddsrt_gnuc diff --git a/src/ddsrt/include/dds/ddsrt/endian.h b/src/ddsrt/include/dds/ddsrt/endian.h index a6a2358..a046b09 100644 --- a/src/ddsrt/include/dds/ddsrt/endian.h +++ b/src/ddsrt/include/dds/ddsrt/endian.h @@ -32,6 +32,13 @@ extern "C" { # elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ # define DDSRT_ENDIAN DDSRT_LITTLE_ENDIAN # endif +# elif defined(__sun) +# include +# if defined(_BIG_ENDIAN) +# define DDSRT_ENDIAN DDSRT_BIG_ENDIAN +# elif defined(_LITTLE_ENDIAN) +# define DDSRT_ENDIAN DDSRT_LITTLE_ENDIAN +# endif # endif #endif /* _WIN32 */ diff --git a/src/ddsrt/src/sockets/posix/socket.c b/src/ddsrt/src/sockets/posix/socket.c index 67d805e..35b80d8 100644 --- a/src/ddsrt/src/sockets/posix/socket.c +++ b/src/ddsrt/src/sockets/posix/socket.c @@ -23,6 +23,9 @@ #endif /* __VXWORKS__ */ #include #include +#ifdef __sun +#include +#endif #ifdef __APPLE__ #include