Woops,<div><br></div><div>I meant Keir Mierle for sure! Pardon :)<br><br><div class="gmail_quote">On Sun, Jun 10, 2012 at 9:27 PM, Sergey Sharybin <span dir="ltr"><<a href="mailto:sergey.vfx@gmail.com" target="_blank">sergey.vfx@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Revision: 47685<br>
          <a href="http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47685" target="_blank">http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47685</a><br>

Author:   nazgul<br>
Date:     2012-06-10 15:27:41 +0000 (Sun, 10 Jun 2012)<br>
Log Message:<br>
-----------<br>
Initial Ceres integration into Blender<br>
<br>
Currently only put sources of Ceres library into extern/libmv/third_party and<br>
setup CMake and SCons building systems.<br>
<br>
Integration details:<br>
<br>
- Even CMake build files are not re-used from Ceres's trunk: they're using some<br>
  automatic stuff detection like glog, pthreads, protobuf and so and it's not<br>
  so clear how to re-use that files without modifications.<br>
  And IMO it's easier if build files are getting re-generated automatically to<br>
  match Blender-specific setup rather than keeping changes made locally in<br>
  Blender in sync when re-bundling Ceres library. Especially in case when it's<br>
  already needed to support SCons build system.<br>
- Integrated only actual sources, all tests were stripped. Probably it'll be nice<br>
  to have them, but they'll need clear integration with current module test stuff<br>
  in Blender.<br>
- Suitesparse was disabled. It'll help a lot having it, but there are some difficulties<br>
  making cholmod working fine on windows. Would be added in future<br>
- collections_port.cc was also stripped. It's not used by Ceres's upstream and<br>
  it gives compilation error (undefined uint32 -- looks like namespace issue).<br>
- Currently all schur eliminators are included. Not sure if it makes sense,<br>
  also not sure if it makes sense having them switchable on and off -- IMO better<br>
  to have single configuration which works and does not require special tweaks<br>
  after everything was set up.<br>
<br>
To bundle updated version of Ceres:<br>
- Go to extern/libmv/third_party/ceres folder<br>
- Run ./bundle.sh<br>
<br>
This will checkout fresh Ceres snapshot of Windows branch (which is currently<br>
most interesting from integration into Blender POV), apply all patches listed<br>
in patches/series and copy needed files into Blender's working copy. This will<br>
also re-generate CMake/SCons build rules.<br>
<br>
If you'll need extra files from Ceres repository which are not present in<br>
Blender, you'll need to copy them manually and then run ./mkfiles.sh from<br>
extern/libmv/third_party/ceres folder which will update list of files used<br>
by Blender.<br>
<br>
Thanks to Leir Mierle and Sameer Agarwal (and all others who helped developing<br>
Ceres) this library and thanks to Keir Mierle with help integrating it into Blender!<br>
<br>
Modified Paths:<br>
--------------<br>
    trunk/blender/extern/libmv/CMakeLists.txt<br>
    trunk/blender/extern/libmv/SConscript<br>
    trunk/blender/extern/libmv/bundle.sh<br>
    trunk/blender/extern/libmv/mkfiles.sh<br>
    trunk/blender/source/blenderplayer/CMakeLists.txt<br>
    trunk/blender/source/creator/CMakeLists.txt<br>
<br>
Added Paths:<br>
-----------<br>
    trunk/blender/extern/libmv/third_party/CMakeLists.txt<br>
    trunk/blender/extern/libmv/third_party/SConscript<br>
    trunk/blender/extern/libmv/third_party/ceres/<br>
    trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt<br>
    trunk/blender/extern/libmv/third_party/ceres/ChangeLog<br>
    trunk/blender/extern/libmv/third_party/ceres/LICENSE<br>
    trunk/blender/extern/libmv/third_party/ceres/README<br>
    trunk/blender/extern/libmv/third_party/ceres/SConscript<br>
    trunk/blender/extern/libmv/third_party/ceres/bundle.sh<br>
    trunk/blender/extern/libmv/third_party/ceres/files.txt<br>
    trunk/blender/extern/libmv/third_party/ceres/include/<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/autodiff_cost_function.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/ceres.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/conditioned_cost_function.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/cost_function.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/autodiff.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/eigen.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/fixed_array.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/macros.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/manual_constructor.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/port.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/scoped_ptr.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/iteration_callback.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/jet.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/local_parameterization.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/loss_function.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/normal_prior.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/numeric_diff_cost_function.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/problem.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/rotation.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/sized_cost_function.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/solver.h<br>
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/types.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_evaluate_preparer.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_evaluate_preparer.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_jacobi_preconditioner.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_jacobi_preconditioner.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_jacobian_writer.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_jacobian_writer.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_dense_matrix.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_dense_matrix.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_matrix.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_matrix.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_sparse_matrix.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_sparse_matrix.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_structure.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_structure.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/canonical_views_clustering.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/canonical_views_clustering.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/casts.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/cgnr_linear_operator.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/cgnr_solver.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/cgnr_solver.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/collections_port.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/compressed_row_jacobian_writer.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/compressed_row_jacobian_writer.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/conditioned_cost_function.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/conjugate_gradients_solver.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/conjugate_gradients_solver.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/corrector.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/corrector.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_jacobian_writer.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_qr_solver.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_qr_solver.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_sparse_matrix.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_sparse_matrix.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/detect_structure.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/detect_structure.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/evaluator.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/evaluator.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/file.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/file.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_2.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_3.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_4.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_d.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_3.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_4.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_9.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_d.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_3.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_4.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_d.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_2.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_3.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_4.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_d.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_d_d_d.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/gradient_checking_cost_function.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/gradient_checking_cost_function.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/graph.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/graph_algorithms.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/implicit_schur_complement.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/implicit_schur_complement.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/integral_types.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/iterative_schur_complement_solver.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/iterative_schur_complement_solver.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/levenberg_marquardt.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/levenberg_marquardt.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_least_squares_problems.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_least_squares_problems.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_operator.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_operator.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_solver.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_solver.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/local_parameterization.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/loss_function.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/map_util.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/matrix_proto.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/minimizer.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/mutex.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/normal_prior.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/parameter_block.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/partitioned_matrix_view.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/partitioned_matrix_view.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/problem.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/problem_impl.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/problem_impl.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/program.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/program.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/program_evaluator.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/random.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/residual_block.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/residual_block.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/residual_block_utils.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/residual_block_utils.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/runtime_numeric_diff_cost_function.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/runtime_numeric_diff_cost_function.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_complement_solver.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_complement_solver.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_eliminator.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_eliminator.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_eliminator_impl.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_ordering.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_ordering.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/scratch_evaluate_preparer.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/scratch_evaluate_preparer.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/solver.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/solver_impl.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/sparse_matrix.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/sparse_matrix.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/split.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/stl_util.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/stringprintf.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/stringprintf.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/suitesparse.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/suitesparse.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/triplet_sparse_matrix.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/triplet_sparse_matrix.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/types.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/visibility.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/visibility.h<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/visibility_based_preconditioner.cc<br>
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/visibility_based_preconditioner.h<br>
    trunk/blender/extern/libmv/third_party/ceres/mkfiles.sh<br>
    trunk/blender/extern/libmv/third_party/ceres/patches/<br>
    trunk/blender/extern/libmv/third_party/ceres/patches/msvc_isfinite.patch<br>
    trunk/blender/extern/libmv/third_party/ceres/patches/series<br>
<br>
Modified: trunk/blender/extern/libmv/CMakeLists.txt<br>
===================================================================<br>
--- trunk/blender/extern/libmv/CMakeLists.txt   2012-06-10 15:26:50 UTC (rev 47684)<br>
+++ trunk/blender/extern/libmv/CMakeLists.txt   2012-06-10 15:27:41 UTC (rev 47685)<br>
@@ -32,6 +32,7 @@<br>
        third_party/ssba<br>
        third_party/ldl/Include<br>
        ../colamd/Include<br>
+       third_party/ceres/include<br>
 )<br>
<br>
 set(INC_SYS<br>
@@ -250,3 +251,5 @@<br>
 )<br>
<br>
 blender_add_lib(extern_libmv "${SRC}" "${INC}" "${INC_SYS}")<br>
+<br>
+add_subdirectory(third_party)<br>
<br>
Modified: trunk/blender/extern/libmv/SConscript<br>
===================================================================<br>
--- trunk/blender/extern/libmv/SConscript       2012-06-10 15:26:50 UTC (rev 47684)<br>
+++ trunk/blender/extern/libmv/SConscript       2012-06-10 15:27:41 UTC (rev 47685)<br>
@@ -30,7 +30,7 @@<br>
 src += env.Glob('third_party/ssba/Geometry/*.cpp')<br>
 src += env.Glob('third_party/ssba/Math/*.cpp')<br>
<br>
-incs = '. ../Eigen3'<br>
+incs = '. ../Eigen3 third_party/ceres/include'<br>
 incs += ' ' + env['BF_PNG_INC']<br>
 incs += ' ' + env['BF_ZLIB_INC']<br>
<br>
@@ -65,3 +65,5 @@<br>
 incs += ' ./third_party/ssba ./third_party/ldl/Include ../colamd/Include'<br>
<br>
 env.BlenderLib ( libname = 'extern_libmv', sources=src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137], compileflags=cflags_libmv, cc_compileflags=ccflags_libmv, cxx_compileflags=cxxflags_libmv )<br>

+<br>
+SConscript(['third_party/SConscript'])<br>
<br>
Modified: trunk/blender/extern/libmv/bundle.sh<br>
===================================================================<br>
--- trunk/blender/extern/libmv/bundle.sh        2012-06-10 15:26:50 UTC (rev 47684)<br>
+++ trunk/blender/extern/libmv/bundle.sh        2012-06-10 15:27:41 UTC (rev 47685)<br>
@@ -25,7 +25,9 @@<br>
 done<br>
<br>
 find libmv -type f -not -iwholename '*.svn*' -exec rm -rf {} \;<br>
-find third_party -type f -not -iwholename '*.svn*' -exec rm -rf {} \;<br>
+find third_party -type f -not -iwholename '*.svn*' -not -iwholename '*third_party/ceres*' \<br>
+    -not -iwholename '*third_party/SConscript*' -not -iwholename '*third_party/CMakeLists.txt*' \<br>
+    -exec rm -rf {} \;<br>
<br>
 cat "files.txt" | while read f; do<br>
   mkdir -p `dirname $f`<br>
@@ -39,14 +41,14 @@<br>
 sources=`find ./libmv -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | sed -r 's/^\.\//\t/' | sort -d`<br>
 headers=`find ./libmv -type f -iname '*.h' | sed -r 's/^\.\//\t/' | sort -d`<br>
<br>
-third_sources=`find ./third_party -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | grep -v glog | sed -r 's/^\.\//\t/' | sort -d`<br>
-third_headers=`find ./third_party -type f -iname '*.h' | grep -v glog | sed -r 's/^\.\//\t/' | sort -d`<br>
+third_sources=`find ./third_party -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | grep -v glog | grep -v ceres | sed -r 's/^\.\//\t/' | sort -d`<br>
+third_headers=`find ./third_party -type f -iname '*.h' | grep -v glog | grep -v ceres | sed -r 's/^\.\//\t/' | sort -d`<br>
<br>
 third_glog_sources=`find ./third_party -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | grep glog | grep -v windows | sed -r 's/^\.\//\t\t/' | sort -d`<br>
 third_glog_headers=`find ./third_party -type f -iname '*.h' | grep glog | grep -v windows | sed -r 's/^\.\//\t\t/' | sort -d`<br>
<br>
 src_dir=`find ./libmv -type f -iname '*.cc' -exec dirname {} \; -or -iname '*.cpp' -exec dirname {} \; -or -iname '*.c' -exec dirname {} \; | sed -r 's/^\.\//\t/' | sort -d | uniq`<br>
-src_third_dir=`find ./third_party -type f -iname '*.cc' -exec dirname {} \; -or -iname '*.cpp' -exec dirname {} \; -or -iname '*.c' -exec dirname {} \; | sed -r 's/^\.\//\t/'  | sort -d | uniq`<br>

+src_third_dir=`find ./third_party -type f -iname '*.cc' -exec dirname {} \; -or -iname '*.cpp' -exec dirname {} \; -or -iname '*.c' -exec dirname {} \;  | grep -v ceres | sed -r 's/^\.\//\t/'  | sort -d | uniq`<br>

 src=""<br>
 win_src=""<br>
 for x in $src_dir $src_third_dir; do<br>
@@ -126,6 +128,7 @@<br>
        third_party/ssba<br>
        third_party/ldl/Include<br>
        ../colamd/Include<br>
+       third_party/ceres/include<br>
 )<br>
<br>
 set(INC_SYS<br>
@@ -220,6 +223,8 @@<br>
 )<br>
<br>
 blender_add_lib(extern_libmv "\${SRC}" "\${INC}" "\${INC_SYS}")<br>
+<br>
+add_subdirectory(third_party)<br>
 EOF<br>
<br>
 cat > SConscript << EOF<br>
@@ -246,7 +251,7 @@<br>
 src = env.Glob("*.cpp")<br>
 $src<br>
<br>
-incs = '. ../Eigen3'<br>
+incs = '. ../Eigen3 third_party/ceres/include'<br>
 incs += ' ' + env['BF_PNG_INC']<br>
 incs += ' ' + env['BF_ZLIB_INC']<br>
<br>
@@ -281,4 +286,6 @@<br>
 incs += ' ./third_party/ssba ./third_party/ldl/Include ../colamd/Include'<br>
<br>
 env.BlenderLib ( libname = 'extern_libmv', sources=src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137], compileflags=cflags_libmv, cc_compileflags=ccflags_libmv, cxx_compileflags=cxxflags_libmv )<br>

+<br>
+SConscript(['third_party/SConscript'])<br>
 EOF<br>
<br>
Modified: trunk/blender/extern/libmv/mkfiles.sh<br>
===================================================================<br>
--- trunk/blender/extern/libmv/mkfiles.sh       2012-06-10 15:26:50 UTC (rev 47684)<br>
+++ trunk/blender/extern/libmv/mkfiles.sh       2012-06-10 15:27:41 UTC (rev 47685)<br>
@@ -1,4 +1,4 @@<br>
 #!/bin/sh<br>
<br>
 find ./libmv/ -type f | sed -r 's/^\.\///' | sort > files.txt<br>
-find ./third_party/ -type f | sed -r 's/^\.\///' | sort >> files.txt<br>
+find ./third_party/ -mindepth 2 -type f | grep -v third_party/ceres | sed -r 's/^\.\///' | sort >> files.txt<br>
<br>
Added: trunk/blender/extern/libmv/third_party/CMakeLists.txt<br>
===================================================================<br>
--- trunk/blender/extern/libmv/third_party/CMakeLists.txt                               (rev 0)<br>
+++ trunk/blender/extern/libmv/third_party/CMakeLists.txt       2012-06-10 15:27:41 UTC (rev 47685)<br>
@@ -0,0 +1,2 @@<br>
+<br>
+add_subdirectory(ceres)<br>
<br>
Added: trunk/blender/extern/libmv/third_party/SConscript<br>
===================================================================<br>
--- trunk/blender/extern/libmv/third_party/SConscript                           (rev 0)<br>
+++ trunk/blender/extern/libmv/third_party/SConscript   2012-06-10 15:27:41 UTC (rev 47685)<br>
@@ -0,0 +1,3 @@<br>
+#!/usr/bin/python<br>
+<br>
+SConscript(['ceres/SConscript'])<br>
<br>
Added: trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt<br>
===================================================================<br>
--- trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt                         (rev 0)<br>
+++ trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt 2012-06-10 15:27:41 UTC (rev 47685)<br>
@@ -0,0 +1,218 @@<br>
+# ***** BEGIN GPL LICENSE BLOCK *****<br>
+#<br>
+# This program is free software; you can redistribute it and/or<br>
+# modify it under the terms of the GNU General Public License<br>
+# as published by the Free Software Foundation; either version 2<br>
+# of the License, or (at your option) any later version.<br>
+#<br>
+# This program is distributed in the hope that it will be useful,<br>
+# but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br>
+# GNU General Public License for more details.<br>
+#<br>
+# You should have received a copy of the GNU General Public License<br>
+# along with this program; if not, write to the Free Software Foundation,<br>
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<br>
+#<br>
+# The Original Code is Copyright (C) 2012, Blender Foundation<br>
+# All rights reserved.<br>
+#<br>
+# Contributor(s): Blender Foundation,<br>
+#                 Sergey Sharybin<br>
+#<br>
+# ***** END GPL LICENSE BLOCK *****<br>
+<br>
+# NOTE: This file is automatically generated by bundle.sh script<br>
+#       If you're doing changes in this file, please update template<br>
+#       in that script too<br>
+<br>
+set(INC<br>
+       .<br>
+       ../../../Eigen3<br>
+       include<br>
+       internal<br>
+       ../gflags<br>
+)<br>
+<br>
+set(INC_SYS<br>
+)<br>
+<br>
+set(SRC<br>
+       internal/ceres/block_evaluate_preparer.cc<br>
+       internal/ceres/block_jacobian_writer.cc<br>
+       internal/ceres/block_jacobi_preconditioner.cc<br>
+       internal/ceres/block_random_access_dense_matrix.cc<br>
+       internal/ceres/block_random_access_matrix.cc<br>
+       internal/ceres/block_random_access_sparse_matrix.cc<br>
+       internal/ceres/block_sparse_matrix.cc<br>
+       internal/ceres/block_structure.cc<br>
+       internal/ceres/canonical_views_clustering.cc<br>
+       internal/ceres/cgnr_solver.cc<br>
+       internal/ceres/compressed_row_jacobian_writer.cc<br>
+       internal/ceres/compressed_row_sparse_matrix.cc<br>
+       internal/ceres/conditioned_cost_function.cc<br>
+       internal/ceres/conjugate_gradients_solver.cc<br>
+       internal/ceres/corrector.cc<br>
+       internal/ceres/dense_qr_solver.cc<br>
+       internal/ceres/dense_sparse_matrix.cc<br>
+       internal/ceres/detect_structure.cc<br>
+       internal/ceres/evaluator.cc<br>
+       internal/ceres/file.cc<br>
+       internal/ceres/generated/schur_eliminator_2_2_2.cc<br>
+       internal/ceres/generated/schur_eliminator_2_2_3.cc<br>
+       internal/ceres/generated/schur_eliminator_2_2_4.cc<br>
+       internal/ceres/generated/schur_eliminator_2_2_d.cc<br>
+       internal/ceres/generated/schur_eliminator_2_3_3.cc<br>
+       internal/ceres/generated/schur_eliminator_2_3_4.cc<br>
+       internal/ceres/generated/schur_eliminator_2_3_9.cc<br>
+       internal/ceres/generated/schur_eliminator_2_3_d.cc<br>
+       internal/ceres/generated/schur_eliminator_2_4_3.cc<br>
+       internal/ceres/generated/schur_eliminator_2_4_4.cc<br>
+       internal/ceres/generated/schur_eliminator_2_4_d.cc<br>
+       internal/ceres/generated/schur_eliminator_4_4_2.cc<br>
+       internal/ceres/generated/schur_eliminator_4_4_3.cc<br>
+       internal/ceres/generated/schur_eliminator_4_4_4.cc<br>
+       internal/ceres/generated/schur_eliminator_4_4_d.cc<br>
+       internal/ceres/generated/schur_eliminator_d_d_d.cc<br>
+       internal/ceres/gradient_checking_cost_function.cc<br>
+       internal/ceres/implicit_schur_complement.cc<br>
+       internal/ceres/iterative_schur_complement_solver.cc<br>
+       internal/ceres/levenberg_marquardt.cc<br>
+       internal/ceres/linear_least_squares_problems.cc<br>
+       internal/ceres/linear_operator.cc<br>
+       internal/ceres/linear_solver.cc<br>
+       internal/ceres/local_parameterization.cc<br>
+       internal/ceres/loss_function.cc<br>
+       internal/ceres/normal_prior.cc<br>
+       internal/ceres/partitioned_matrix_view.cc<br>
+       internal/ceres/problem.cc<br>
+       internal/ceres/problem_impl.cc<br>
+       internal/ceres/program.cc<br>
+       internal/ceres/residual_block.cc<br>
+       internal/ceres/residual_block_utils.cc<br>
+       internal/ceres/runtime_numeric_diff_cost_function.cc<br>
+       internal/ceres/schur_complement_solver.cc<br>
+       internal/ceres/schur_eliminator.cc<br>
+       internal/ceres/schur_ordering.cc<br>
+       internal/ceres/scratch_evaluate_preparer.cc<br>
+       internal/ceres/solver.cc<br>
+       internal/ceres/solver_impl.cc<br>
+       internal/ceres/sparse_matrix.cc<br>
+       internal/ceres/sparse_normal_cholesky_solver.cc<br>
+       internal/ceres/split.cc<br>
+       internal/ceres/stringprintf.cc<br>
+       internal/ceres/suitesparse.cc<br>
+       internal/ceres/triplet_sparse_matrix.cc<br>
+       internal/ceres/types.cc<br>
+       internal/ceres/visibility_based_preconditioner.cc<br>
+       internal/ceres/visibility.cc<br>
+<br>
<br>
@@ Diff output truncated at 10240 characters. @@<br>
_______________________________________________<br>
Bf-blender-cvs mailing list<br>
<a href="mailto:Bf-blender-cvs@blender.org">Bf-blender-cvs@blender.org</a><br>
<a href="http://lists.blender.org/mailman/listinfo/bf-blender-cvs" target="_blank">http://lists.blender.org/mailman/listinfo/bf-blender-cvs</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(102,102,102)">With best regards, Sergey Sharybin</span></div><br>
</div>