#define CDSLIB_DEFS_H
#include <stddef.h>
+#include <stdlib.h>
#include <assert.h>
#include <cstdint>
#include <exception>
- \p boost.thread (thread-loal storage support), boost.system
- \p google-test
+ Some parts of libcds may depend on DCAS (double-width compare-and-swap) atomic primitive if
+ the target architecture supports it. For x86, cmake build script enables -mcx16 compiler flag that
+ switches DCAS support on. You may manually disable DCAS support with the following command line flags
+ in GCC/clang (for MS VC++ compiler DCAS is not supported):
+ - \p -DCDS_DISABLE_128BIT_ATOMIC - for 64bit build
+ - \p -DCDS_DISABLE_64BIT_ATOMIC - for 32bit build
+
+ @warning All your projects AND libcds MUST be compiled with the same flags - either with DCAS support or without it.
+
\par Windows build
Prerequisites: for building <b>cds</b> library and test suite you need:
to \p boost library root directory. The test projects search \p boost libraries in:
- for 32bit: <tt>\$(BOOST_PATH)/stage/lib</tt>, <tt>\$(BOOST_PATH)/stage32/lib</tt>, and <tt>\$(BOOST_PATH)/bin</tt>.
- for 64bit: <tt>\$(BOOST_PATH)/stage64/lib</tt> and <tt>\$(BOOST_PATH)/bin</tt>.
-
+
All tests are based on googletest framework. The following environment variables specify
where to find gtest include and library directories:
- \p GTEST_ROOT - gtest root directory. <tt>\$(GTEST_ROOT)/include</tt> specifies full path to
- CDS_PROCESSOR_SPARC Sparc
- CDS_PROCESSOR_PPC64 PowerPC64
- CDS_PROCESSOR_ARM7 ARM v7
+ - CDS_PROCESSOR_ARM8 ARM v8
- CDS_PROCESSOR_UNKNOWN undefined processor architecture
CDS_PROCESSOR__NAME The name (string) of processor architecture
#define CDS_PROCESSOR_AMD64 4
#define CDS_PROCESSOR_PPC64 5 // PowerPC 64bit
#define CDS_PROCESSOR_ARM7 7
+#define CDS_PROCESSOR_ARM8 8
#define CDS_PROCESSOR_UNKNOWN -1
// Supported OS interfaces
// CDS_VERIFY: Debug - assert(_expr); Release - _expr
#ifdef CDS_DEBUG
-# define CDS_VERIFY( _expr ) assert( _expr )
+# define CDS_VERIFY( _expr ) assert( _expr )
+# define CDS_VERIFY_FALSE( _expr ) assert( !( _expr ))
# define CDS_DEBUG_ONLY( _expr ) _expr
#else
# define CDS_VERIFY( _expr ) _expr
+# define CDS_VERIFY_FALSE( _expr ) _expr
# define CDS_DEBUG_ONLY( _expr )
#endif
# define CDS_STRICT_DO( _expr )
#endif
+#ifdef CDS_DEBUG
+# define cds_assert( expr ) assert( expr )
+#else
+ static inline void cds_assert( bool expr ) {
+ if ( !expr )
+ abort();
+ }
+#endif
// Compiler-specific defines
#include <cds/compiler/defs.h>