diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e09c57..26565ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,7 +116,7 @@ IF (NOT ${ALEMBIC_LIB_USES_TR1} AND NOT ${ALEMBIC_LIB_USES_BOOST}) INCLUDE(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) - IF (COMPILER_SUPPORTS_CXX1X) + IF (COMPILER_SUPPORTS_CXX11) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") ELSEIF (COMPILER_SUPPORTS_CXX0X) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") --- a/lib/Alembic/AbcCoreOgawa/StreamManager.cpp +++ b/lib/Alembic/AbcCoreOgawa/StreamManager.cpp @@ -47,7 +47,18 @@ #define COMPARE_EXCHANGE( V, COMP, EXCH ) V.compare_exchange_weak( COMP, EXCH, std::memory_order_seq_cst, std::memory_order_seq_cst ) // Windows #elif defined( _MSC_VER ) -#define COMPARE_EXCHANGE( V, COMP, EXCH ) InterlockedCompareExhange64( &V, EXCH, COMP ) == COMP +#define COMPARE_EXCHANGE( V, COMP, EXCH ) InterlockedCompareExchange64( &V, EXCH, COMP ) == COMP +int ffsll(long long value) +{ + if (!value) + return 0; + + for (int bit = 0; bit < 63; bit++) + { + if (value & (1 << bit)) + return bit + 1; + } +} // gcc 4.8 and above not using C++11 #elif defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 8 #define COMPARE_EXCHANGE( V, COMP, EXCH ) __atomic_compare_exchange_n( &V, &COMP, EXCH, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST )