#ifndef UA_CONFIG_H_ #define UA_CONFIG_H_ #ifndef _XOPEN_SOURCE # define _XOPEN_SOURCE 500 #endif #define UA_LOGLEVEL ${UA_LOGLEVEL} #cmakedefine UA_MULTITHREADING #cmakedefine ENABLE_METHODCALLS #cmakedefine ENABLE_SUBSCRIPTIONS /* 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 #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 /* Aligned Memory Access */ #if defined(__arm__) && !defined(__ARM_FEATURE_UNALIGNED) # define UA_ALIGNED_MEMORY_ACCESS #endif #endif /* UA_CONFIG_H_ */