From 2525f9c5f31e90bcb8f2e8c84558a2bc35e3207c Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 12 Mar 2014 23:57:33 +0600 Subject: backport revisions from master for 2.70-rc2 tag This includes: 68ef679, d0ad48f, e913eab + 8d09ec6, 9630fa7, 4ce7d5c, b839fb9, 43b5f0a, 4d47e75, 89c793f, b23a439, 0a3850f de86b70, cfefc5d, 997b49a, 6919ffb, c1be7e1, 6ddd54f 7a9838b + 98abc80, 23fbc9f, 41dde55, 500088d, c2045ef c31c8fa, 7461fea, d219312, 0844451 + c05896e, ef51b69 19935f0, b977cfd, 3c3c2cd, 9ecf73f, 20f7a34, f03df4f 2de9da6, ba81fb7, a7ab389, d7cff8f7 --- .../bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp | 6 +++--- extern/bullet2/src/SConscript | 7 ++++--- extern/carve/lib/intersect_face_division.cpp | 4 +++- extern/carve/patches/msvc_fix.patch | 14 ++++++++++++++ extern/carve/patches/series | 1 + 5 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 extern/carve/patches/msvc_fix.patch (limited to 'extern') diff --git a/extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp b/extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp index cf735569a9d..893453bddaf 100644 --- a/extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp +++ b/extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp @@ -354,11 +354,11 @@ double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float // btVoronoiSimplexSolver sGjkSimplexSolver; // btGjkEpaPenetrationDepthSolver penSolverPtr; - static btSimplexSolverInterface sGjkSimplexSolver; + /*static*/ btSimplexSolverInterface sGjkSimplexSolver; sGjkSimplexSolver.reset(); - static btGjkEpaPenetrationDepthSolver Solver0; - static btMinkowskiPenetrationDepthSolver Solver1; + /*static*/ btGjkEpaPenetrationDepthSolver Solver0; + /*static*/ btMinkowskiPenetrationDepthSolver Solver1; btConvexPenetrationDepthSolver* Solver = NULL; diff --git a/extern/bullet2/src/SConscript b/extern/bullet2/src/SConscript index ff2e86affb4..69e56782974 100644 --- a/extern/bullet2/src/SConscript +++ b/extern/bullet2/src/SConscript @@ -19,7 +19,8 @@ elif env['OURPLATFORM'] in ('linux', 'freebsd4', 'freebsd5'): cflags += ['-O2'] elif sys.platform=='darwin': defs += ' NDEBUG' - cflags += ['-O2','-pipe', '-fPIC', '-funsigned-char', '-ffast-math'] + bt_cc_flags = env['CCFLAGS'] + ['-O0', '-fPIC', '-msse','-msse2', '-msse3', '-mssse3', '-ffast-math'] + bt_cxx_flags = env['CXXFLAGS'] + ['-O0', '-fPIC', '-msse','-msse2', '-msse3', '-mssse3', '-ffast-math'] bullet2_src = env.Glob("LinearMath/*.cpp") bullet2_src += env.Glob("BulletCollision/BroadphaseCollision/*.cpp") @@ -37,7 +38,7 @@ bullet2_src += env.Glob("BulletSoftBody/*.cpp") incs = '. BulletCollision BulletDynamics LinearMath BulletSoftBody' -if sys.platform=='darwin' and env['CC'][:-2].endswith('4.6'): # workaround for an gcc-4.6 compiler bug - env.BlenderLib ( libname = 'extern_bullet2', sources=bullet2_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,137], compileflags=cflags, cc_compilerchange='/usr/bin/gcc', cxx_compilerchange='/usr/bin/g++' ) +if sys.platform=='darwin': + env.BlenderLib ( libname = 'extern_bullet2', sources=bullet2_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,137], cc_compileflags=bt_cc_flags, cxx_compileflags=bt_cxx_flags ) else: env.BlenderLib ( libname = 'extern_bullet2', sources=bullet2_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,137], compileflags=cflags ) diff --git a/extern/carve/lib/intersect_face_division.cpp b/extern/carve/lib/intersect_face_division.cpp index ea82b7e89a3..e826948128c 100644 --- a/extern/carve/lib/intersect_face_division.cpp +++ b/extern/carve/lib/intersect_face_division.cpp @@ -1121,7 +1121,9 @@ namespace { } // copy up to the end of the path. - std::copy(base_loop.begin() + pos, base_loop.begin() + e1_1, std::back_inserter(out)); + if (pos < e1_1) { + std::copy(base_loop.begin() + pos, base_loop.begin() + e1_1, std::back_inserter(out)); + } CARVE_ASSERT(base_loop[e1_1] == p1.back()); std::copy(p1.rbegin(), p1.rend() - 1, std::back_inserter(out)); diff --git a/extern/carve/patches/msvc_fix.patch b/extern/carve/patches/msvc_fix.patch new file mode 100644 index 00000000000..67431ecac75 --- /dev/null +++ b/extern/carve/patches/msvc_fix.patch @@ -0,0 +1,14 @@ +diff -r e82d852e4fb0 lib/intersect_face_division.cpp +--- a/lib/intersect_face_division.cpp Wed Jan 15 13:16:14 2014 +1100 ++++ b/lib/intersect_face_division.cpp Wed Mar 12 23:09:19 2014 +0600 +@@ -1121,7 +1121,9 @@ + } + + // copy up to the end of the path. +- std::copy(base_loop.begin() + pos, base_loop.begin() + e1_1, std::back_inserter(out)); ++ if (pos < e1_1) { ++ std::copy(base_loop.begin() + pos, base_loop.begin() + e1_1, std::back_inserter(out)); ++ } + + CARVE_ASSERT(base_loop[e1_1] == p1.back()); + std::copy(p1.rbegin(), p1.rend() - 1, std::back_inserter(out)); diff --git a/extern/carve/patches/series b/extern/carve/patches/series index b1254dd9a7d..62a24d9d730 100644 --- a/extern/carve/patches/series +++ b/extern/carve/patches/series @@ -8,3 +8,4 @@ strict_flags.patch interpolator_reorder.patch mesh_simplify_dissolve_edges.patch memory_leak_fix.patch +mavc_fix.patch -- cgit v1.2.3