diff options
Diffstat (limited to 'extern')
-rw-r--r-- | extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp | 6 | ||||
-rw-r--r-- | extern/bullet2/src/SConscript | 7 | ||||
-rw-r--r-- | extern/carve/lib/intersect_face_division.cpp | 4 | ||||
-rw-r--r-- | extern/carve/patches/msvc_fix.patch | 14 | ||||
-rw-r--r-- | extern/carve/patches/series | 1 |
5 files changed, 25 insertions, 7 deletions
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 |