#ifndef UA_CONFIG_H_ #define UA_CONFIG_H_ #ifndef _XOPEN_SOURCE # define _XOPEN_SOURCE 500 # define _BSD_SOURCE #endif #define UA_LOGLEVEL ${UA_LOGLEVEL} #cmakedefine UA_ENABLE_MULTITHREADING #cmakedefine UA_ENABLE_METHODCALLS #cmakedefine UA_ENABLE_SUBSCRIPTIONS #cmakedefine UA_ENABLE_TYPENAMES #cmakedefine UA_ENABLE_EMBEDDED_LIBC #cmakedefine UA_ENABLE_GENERATE_NAMESPACE0 #cmakedefine UA_ENABLE_EXTERNAL_NAMESPACES #cmakedefine UA_ENABLE_NODEMANAGEMENT #cmakedefine UA_ENABLE_NONSTANDARD_UDP #cmakedefine UA_ENABLE_NONSTANDARD_STATELESS /* Function Export */ #ifdef _WIN32 # ifdef UA_DYNAMIC_LINKING # ifdef __GNUC__ # define UA_EXPORT __attribute__ ((dllexport)) # else # define UA_EXPORT __declspec(dllexport) # endif # else # ifdef __GNUC__ # define UA_EXPORT __attribute__ ((dllexport)) # else # define UA_EXPORT __declspec(dllimport) # endif # endif #else # if __GNUC__ || __clang__ # define UA_EXPORT __attribute__ ((visibility ("default"))) # else # define UA_EXPORT # endif #endif /* Endianness */ #if defined(__linux__) || defined(__APPLE__) # ifndef __QNX__ # if defined(__APPLE__) || defined(__MACH__) # include # else # include # endif # endif # if ( __BYTE_ORDER != __LITTLE_ENDIAN ) # define UA_NON_LITTLEENDIAN_ARCHITECTURE # endif #elif _WIN32 # define htole16(x) (x) # define htole32(x) (x) # define htole64(x) (x) # define le16toh(x) (x) # define le32toh(x) (x) # define le64toh(x) (x) #endif /* Force non-little endian manually by setting the following. */ // #define UA_NON_LITTLEENDIAN_ARCHITECTURE // #define htole16(x) {...}(x) // #define htole32(x) {...}(x) // #define htole64(x) {...}(x) // #define le16toh(x) {...}(x) // #define le32toh(x) {...}(x) // #define le64toh(x) {...}(x) /* Mixed Endian */ #ifdef __ARM_ARCH_4T__ # define UA_MIXED_ENDIAN # define UA_NON_LITTLEENDIAN_ARCHITECTURE #endif /* Inline Functions */ #ifdef _MSC_VER # define UA_INLINE __inline #else # define UA_INLINE inline #endif /* Define non-aliasing pointers */ #ifdef _MSC_VER # define UA_RESTRICT __restrict #elif defined(__GNUC__) # define UA_RESTRICT __restrict__ #else # define UA_RESTRICT restrict #endif /* Function attributes */ #ifdef __GNUC__ # define UA_FUNC_ATTR_MALLOC __attribute__((malloc)) # define UA_FUNC_ATTR_PURE __attribute__ ((pure)) # define UA_FUNC_ATTR_CONST __attribute__((const)) # define UA_FUNC_ATTR_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #else # define UA_FUNC_ATTR_MALLOC # define UA_FUNC_ATTR_PURE # define UA_FUNC_ATTR_CONST # define UA_FUNC_ATTR_WARN_UNUSED_RESULT #endif #include #ifdef UA_ENABLE_EMBEDDED_LIBC void *memcpy(void *UA_RESTRICT dest, const void *UA_RESTRICT src, size_t n); void *memset(void *dest, int c, size_t n); size_t strlen(const char *s); int memcmp(const void *vl, const void *vr, size_t n); #else # include #endif #endif /* UA_CONFIG_H_ */