Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (revision 44393) +++ CMakeLists.txt (working copy) @@ -1496,14 +1496,7 @@ endif() endif() -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - if(WITH_IK_ITASC) - message(WARNING "Using Clang as CXX compiler: disabling WITH_IK_ITASC and WITH_MOD_FLUID, these features will be missing.") - set(WITH_IK_ITASC OFF) - endif() -endif() - # ensure python header is found since detection can fail, this could happen # with _any_ library but since we used a fixed python version this tends to # be most problematic. Index: source/blender/ikplugin/intern/itasc_plugin.cpp =================================================================== --- source/blender/ikplugin/intern/itasc_plugin.cpp (revision 44393) +++ source/blender/ikplugin/intern/itasc_plugin.cpp (working copy) @@ -90,8 +90,6 @@ typedef float Vector4[4]; struct IK_Target; typedef void (*ErrorCallback)(const iTaSC::ConstraintValues* values, unsigned int nvalues, IK_Target* iktarget); -// For some reason, gcc doesn't find the declaration of this function in linux -void KDL::SetToZero(JntArray& array); // one structure for each target in the scene struct IK_Target @@ -1029,7 +1027,7 @@ // assume uniform scaling and take Y scale as general scale for the armature scale = len_v3(ikscene->blArmature->obmat[1]); // rest pose is 0 - KDL::SetToZero(ikscene->jointArray); + SetToZero(ikscene->jointArray); // except for transY joints rot = &ikscene->jointArray(0); for(joint=a=0, ikchan = ikscene->channels; anumchan && jointnumjoint; ++a, ++ikchan) { Index: extern/libmv/third_party/glog/src/utilities.h =================================================================== --- extern/libmv/third_party/glog/src/utilities.h (revision 44393) +++ extern/libmv/third_party/glog/src/utilities.h (working copy) @@ -105,7 +105,7 @@ # undef STACKTRACE_H #elif defined(HAVE_LIB_UNWIND) # define STACKTRACE_H "stacktrace_libunwind-inl.h" -#elif !defined(NO_FRAME_POINTER) +#elif !defined(NO_FRAME_POINTER) && !defined(__clang__) # if defined(__i386__) && __GNUC__ >= 2 # define STACKTRACE_H "stacktrace_x86-inl.h" # elif defined(__x86_64__) && __GNUC__ >= 2 Index: extern/libmv/third_party/glog/src/logging.cc =================================================================== --- extern/libmv/third_party/glog/src/logging.cc (revision 44393) +++ extern/libmv/third_party/glog/src/logging.cc (working copy) @@ -1231,6 +1231,14 @@ #endif } +#if defined(HAVE___ATTRIBUTE__) +typedef void (*fail_func_t)() __attribute__((noreturn)); +static void logging_fail() __attribute__((noreturn)); +#else +typedef void (*fail_func_t)(); +static void logging_fail(); +#endif + static void logging_fail() { // #if defined(_DEBUG) && defined(_MSC_VER) // doesn't work for my laptop (sergey) @@ -1243,14 +1251,9 @@ #endif } -#ifdef HAVE___ATTRIBUTE__ -GOOGLE_GLOG_DLL_DECL -void (*g_logging_fail_func)() __attribute__((noreturn)) = &logging_fail; -#else -GOOGLE_GLOG_DLL_DECL void (*g_logging_fail_func)() = &logging_fail; -#endif +GOOGLE_GLOG_DLL_DECL fail_func_t g_logging_fail_func = &logging_fail; -void InstallFailureFunction(void (*fail_func)()) { +void InstallFailureFunction(fail_func_t fail_func) { g_logging_fail_func = fail_func; } Index: extern/carve/include/carve/face_decl.hpp =================================================================== --- extern/carve/include/carve/face_decl.hpp (revision 44393) +++ extern/carve/include/carve/face_decl.hpp (working copy) @@ -67,10 +67,10 @@ typedef carve::geom2d::P2 (*project_t)(const vector_t &); typedef vector_t (*unproject_t)(const carve::geom2d::P2 &, const plane_t &); - protected: std::vector vertices; // pointer into polyhedron.vertices std::vector edges; // pointer into polyhedron.edges + protected: project_t getProjector(bool positive_facing, int axis); unproject_t getUnprojector(bool positive_facing, int axis); Index: extern/carve/include/carve/kd_node.hpp =================================================================== --- extern/carve/include/carve/kd_node.hpp (revision 44393) +++ extern/carve/include/carve/kd_node.hpp (working copy) @@ -28,7 +28,7 @@ namespace carve { namespace geom { template class kd_node { @@ -41,6 +41,7 @@ kd_node *parent; axis_pos splitpos; + typedef _data_t data_t; typedef vector vector_t; typedef std::list container_t; Index: extern/carve/include/carve/polyhedron_impl.hpp =================================================================== --- extern/carve/include/carve/polyhedron_impl.hpp (revision 44393) +++ extern/carve/include/carve/polyhedron_impl.hpp (working copy) @@ -116,7 +116,7 @@ int r = 0; const std::vector &edge_faces = connectivity.edge_to_face[edgeToIndex_fast(e)]; for (size_t i = 0; i < edge_faces.size(); ++i) { - face_t *f = edge_faces[i]; + const face_t *f = edge_faces[i]; if (f && f->manifold_id == m_id) { r += _faceNeighbourhood(f, depth, &result); } } return r; @@ -131,7 +131,7 @@ int r = 0; const std::vector &vertex_faces = connectivity.vertex_to_face[vertexToIndex_fast(v)]; for (size_t i = 0; i < vertex_faces.size(); ++i) { - face_t *f = vertex_faces[i]; + const face_t *f = vertex_faces[i]; if (f && f->manifold_id == m_id) { r += _faceNeighbourhood(f, depth, &result); } } return r; @@ -142,7 +142,7 @@ // accessing connectivity information. template int Geometry<3>::vertexToEdges(const vertex_t *v, T result) const { - std::vector &e = connectivity.vertex_to_edge[vertexToIndex_fast(v)]; + const std::vector &e = connectivity.vertex_to_edge[vertexToIndex_fast(v)]; std::copy(e.begin(), e.end(), result); return e.size(); }