diff options
Diffstat (limited to 'extern/libmv/third_party/ceres/ChangeLog')
-rw-r--r-- | extern/libmv/third_party/ceres/ChangeLog | 938 |
1 files changed, 462 insertions, 476 deletions
diff --git a/extern/libmv/third_party/ceres/ChangeLog b/extern/libmv/third_party/ceres/ChangeLog index b4f78ee0731..0e6c195174c 100644 --- a/extern/libmv/third_party/ceres/ChangeLog +++ b/extern/libmv/third_party/ceres/ChangeLog @@ -1,673 +1,659 @@ -commit 0435246de5f45e69b2c97d244ed61bedd340215a -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Oct 8 18:12:53 2014 -0700 +commit aef9c9563b08d5f39eee1576af133a84749d1b48 +Author: Alessandro Gentilini <agentilini@gmail.com> +Date: Tue Oct 6 20:43:45 2015 +0200 - Add seene to users.rst + Add test for Bessel functions. - Change-Id: If40726775a3d4b234b6e10517fe9943d122a3384 + Change-Id: Ief5881e8027643d7ef627e60a88fdbad17f3d884 -commit fdf32b315f39553639f0becf078ad4eec763a10e -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Oct 8 16:04:32 2014 -0700 +commit 49c86018e00f196c4aa9bd25daccb9919917efee +Author: Alessandro Gentilini <agentilini@gmail.com> +Date: Wed Sep 23 21:59:44 2015 +0200 - Fix some errant tabs. + Add Bessel functions in order to use them in residual code. - Change-Id: Iaf1906eaade49467ba282656cf0a10879d258b1f + See "How can I use the Bessel function in the residual function?" at + https://groups.google.com/d/msg/ceres-solver/Vh1gpqac8v0/NIK1EiWJCAAJ + + Change-Id: I3e80d9f9d1cadaf7177076e493ff46ace5233b76 -commit 6768b3586a027bb850c0a50e2a27380f5d80142a -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Oct 8 12:48:16 2014 -0700 +commit dfb201220c034fde00a242d0533bef3f73b2907d +Author: Simon Rutishauser <simon.rutishauser@pix4d.com> +Date: Tue Oct 13 07:33:58 2015 +0200 - Minor cleanups in preparation for a release. + Make miniglog threadsafe on non-windows system by using + localtime_r() instead of localtime() for time formatting - 1. Fix the release script to ignore the version.h checking. - 2. Fix some ceres documentation formatting errors. - - Change-Id: I3fd6b85e771b242f463d6a36c3efd8d691f9242f + Change-Id: Ib8006c685cd8ed4f374893bef56c4061ca2c9747 -commit 7b6bd1cd31aa0b8cb7fb97600c1b9999846e3152 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Oct 2 16:16:26 2014 -0700 +commit 41455566ac633e55f222bce7c4d2cb4cc33d5c72 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Sep 28 22:43:42 2015 +0100 - Documentation update. + Remove link-time optimisation (LTO). - 1. Complete restructuring of the documentation to account for - GradientProblemSolver. - 2. Update the version history to account for changes since 1.9.0. - 3. Add links and document the various examples that ship with ceres. - 4. Documentation for GradientProblem GradientProblemSolver. + - On GCC 4.9+ although GCC supports LTO, it requires use of the + non-default gcc-ar & gcc-ranlib. Whilst we can ensure Ceres is + compiled with these, doing so with GCC 4.9 causes multiple definition + linker errors of static ints inside Eigen when compiling the tests + and examples when they are not also built with LTO. + - On OS X (Xcode 6 & 7) after the latest update to gtest, if LTO + is used when compiling the tests (& examples), two tests fail + due to typeinfo::operator== (things are fine if only Ceres itself is + compiled with LTO). + - This patch disables LTO for all compilers. It should be revisited when + the performance is more stable across our supported compilers. - Change-Id: If3a18f2850cbc98be1bc34435e9ea468785b8b27 + Change-Id: I17b52957faefbdeff0aa40846dc9b342db1b02e3 -commit b7d321f505e936b6c09aeb43ae3f7b1252388a95 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Oct 3 15:47:59 2014 -0700 +commit 89c40005bfceadb4163bd16b7464b3c2ce740daf +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sun Sep 27 13:37:26 2015 +0100 - Relax the warning/error handing in GCC. + Only use LTO when compiling Ceres itself, not tests or examples. - Thanks to Matthew Woehlke for suggesting this. + - If Ceres is built as a shared library, and LTO is enabled for Ceres + and the tests, then type_info::operator==() incorrectly returns false + in gtests' CheckedDowncastToActualType() in the following tests: + -- levenberg_marquardt_strategy_test. + -- gradient_checking_cost_function_test. + on at least Xcode 6 & 7 as reported here: + https://github.com/google/googletest/issues/595. + - This does not appear to be a gtest issue, but is perhaps an LLVM bug + or an RTTI shared library issue. Either way, disabling the use of + LTO when compiling the test application resolves the issue. + - Allow LTO to be enabled for GCC, if it is supported. + - Add CMake function to allow easy appending to target properties s/t + Ceres library-specific compile flags can be iteratively constructed. - Change-Id: Iae754465c086b0841a7816df1a36781371d0dc9a + Change-Id: I923e6aae4f7cefa098cf32b2f8fc19389e7918c9 -commit 94c6e7d27b5d48d81ab54ed9cdcbc55c3c099311 +commit 0794f41cca440f7f65d9a44e671f66f6e498ef7c Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Oct 1 15:55:13 2014 -0700 +Date: Sat Sep 26 14:10:15 2015 -0700 - Improve multithreading when using inner iterations. - - Inner iterations by default would use problems where the evaluator - was configured to use exactly one thread for doing the evaluation. - This is fine when there are multiple inner iteration problems - being executed concurrently, but every now and then there are - problem decompositions where there is just one parameter block - in the current independent set and it touches every single - residual block. In such cases it is essential that the evaluator - be configured to use multiple threads. + Documentation updates. - We now pay attention to the size of the independent set and - dynamically configure the number of threads being used by the - outer loop and the evaluator loop. + 1. Fix a typo in the Trust Region algorithm. + 2. Add ARL in the list of users. + 3. Update the version history. - Thanks to William Rucklidge for reporting this issue and providing - a test problem to debug. - - Change-Id: Iaff9a4ab6d2658cf7b61ea213575d23aab604e3b + Change-Id: Ic286e8ef1a71af07f3890b7592dd3aed9c5f87ce -commit 9e11cd16d09403b9270e621e839d5948b6a74b8d -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Sep 29 14:27:58 2014 -0700 +commit 90e32a8dc437dfb0e6747ce15a1f3193c13b7d5b +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Sep 21 21:08:25 2015 +0100 - Faster BlockRandomAccessSparseMatrix::SymmetricRightMultiply. - - Trade a small amount of memory to improve the cache coherency of - the SymmetricRightMultiply operation. + Use old minimum iOS version flags on Xcode < 7.0. - The resulting code leads to a 10-20% speedup in the linear solver - end to end. + - The newer style, which are more specific and match the SDK names + are not available on Xcode < 7.0. - Change-Id: I8ab2fe152099e849b211b5b19e4ef9f03d8e7f1c + Change-Id: I2f07a0365183d2781157cdb05fd49b30ae001ac5 -commit 46b8461fd010c1e7ffce6bb2bdf8a84b659d5e09 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Sep 29 15:10:58 2014 -0700 +commit 26cd5326a1fb99ae02c667eab9942e1308046984 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Sep 21 10:16:01 2015 +0100 - Various minor fixes from William Rucklidge. + Add gtest-specific flags when building/using as a shared library. + + - Currently these flags are only used to define the relevant DLL export + prefix for Windows. - Change-Id: Ibe731d5db374ad8ee148d62a9fdd8d726b607a3f + Change-Id: I0c05207b512cb4a985390aefc779b91febdabb38 -commit b44cfdef25f6bf0917a23b3fd65cce38aa6a3362 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Sep 29 07:53:54 2014 -0700 +commit c4c79472112a49bc1340da0074af2d15b1c89749 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sun Sep 20 18:26:59 2015 +0100 - Let ITERATIVE_SCHUR use an explicit Schur Complement matrix. - - Up till now ITERATIVE_SCHUR evaluates matrix-vector products - between the Schur complement and a vector implicitly by exploiting - the algebraic expression for the Schur complement. - - This cost of this evaluation scales with the number of non-zeros - in the Jacobian. - - For small to medium sized problems there is a sweet spot where - computing the Schur complement is cheap enough that it is much - more efficient to explicitly compute it and use it for evaluating - the matrix-vector products. - - This changes implements support for an explicit Schur complement - in ITERATIVE_SCHUR in combination with the SCHUR_JACOBI preconditioner. - - API wise a new bool Solver::Options::use_explicit_schur_complement - has been added. - - The implementation extends the SparseSchurComplementSolver to use - Conjugate Gradients. - - Example speedup: - - use_explicit_schur_complement = false - - Time (in seconds): - Preprocessor 0.585 - - Residual evaluation 0.319 - Jacobian evaluation 1.590 - Linear solver 25.685 - Minimizer 27.990 - - Postprocessor 0.010 - Total 28.585 + Clean up iOS.cmake to use xcrun/xcodebuild & libtool. - use_explicit_schur_complement = true + - Substantial cleanup of iOS.cmake to use xcrun & xcodebuild to + determine the SDK & tool paths. + - Use libtool -static to link libraries instead of ar + ranlib, which + is not compatible with Xcode 7+, this change should be backwards + compatible to at least Xcode 6. + - Force locations of unordered_map & shared_ptr on iOS to work around + check_cxx_source_compiles() running in a forked CMake instance without + access to the variables (IOS_PLATFORM) defined by the user. + - Minor CMake style updates. - Time (in seconds): - Preprocessor 0.638 - - Residual evaluation 0.318 - Jacobian evaluation 1.507 - Linear solver 5.930 - Minimizer 8.144 - - Postprocessor 0.010 - Total 8.791 - - Which indicates an end-to-end speedup of more than 3x, with the linear - solver being sped up by > 4x. - - The idea to explore this optimization was inspired by the recent paper: - - Mining structure fragments for smart bundle adjustment - L. Carlone, P. Alcantarilla, H. Chiu, K. Zsolt, F. Dellaert - British Machine Vision Conference, 2014 - - which uses a more complicated algorithm to compute parts of the - Schur complement to speed up the matrix-vector product. - - Change-Id: I95324af0ab351faa1600f5204039a1d2a64ae61d + Change-Id: I5f83a60607db34d461ebe85f9dce861f53d98277 -commit 4ad91490827f2ebebcc70d17e63ef653bf06fd0d +commit 155765bbb358f1d19f072a4b54825faf1c059910 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Sep 24 23:54:18 2014 -0700 +Date: Wed Sep 16 06:56:08 2015 -0700 - Simplify the Block Jacobi and Schur Jacobi preconditioners. - - 1. Extend the implementation of BlockRandomAccessDiagonalMatrix - by adding Invert and RightMultiply methods. + Import the latest version of gtest and gmock. - 2. Simplify the implementation of the Schur Jacobi preconditioner - using these new methods. - - 3. Replace the custom storage used inside Block Jacobi preconditioner - with BlockRandomAccessDiagonalMatrix and simplify its implementation - too. - - Change-Id: I9d4888b35f0f228c08244abbdda5298b3ce9c466 + Change-Id: I4b686c44bba823cab1dae40efa99e31340d2b52a -commit 8f7be1036b853addc33224d97b92412b5a1281b6 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Sep 29 08:13:35 2014 -0700 +commit 0c4647b8f1496c97c6b9376d9c49ddc204aa08dd +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Wed Sep 16 20:01:11 2015 +0100 - Fix a formatting error TrustRegionMinimizer logging. + Remove FAQ about increasing inlining threshold for Clang. - Change-Id: Iad1873c51eece46c3fdee1356d154367cfd7925e + - Changing the inlining threshold for Clang as described has a minimal + effect on user performance. + - The problem that originally prompted the belief that it did was + due to an erroneous CXX flag configuration (in user code). + + Change-Id: I03017241c0f87b8dcefb8c984ec3b192afd97fc2 -commit c99872d48e322662ea19efb9010a62b7432687ae +commit f4b768b69afcf282568f9ab3a3f0eb8078607468 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Sep 24 21:30:02 2014 -0700 +Date: Mon Sep 14 13:53:24 2015 -0700 - Add BlockRandomAccessSparseMatrix::SymmetricRightMultiply. + Lint changes from William Rucklidge - Change-Id: Ib06a22a209b4c985ba218162dfb6bf46bd93169e + Change-Id: I0dac2549a8fa2bfd12f745a8d8a0db623b7ec1ac -commit d3ecd18625ba260e0d00912a305a448b566acc59 +commit 5f2f05c726443e35767d677daba6d25dbc2d7ff8 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Sep 23 10:12:42 2014 -0700 +Date: Fri Sep 11 22:19:38 2015 -0700 - Add an explicit include for local_parameterization.h + Refactor system_test + + 1. Move common test infrastructure into test_util. + 2. system_test now only contains powells function. + 3. Add bundle_adjustment_test. - Thanks to cooordz for reporting this. + Instead of a single function which computes everything, + there is now a test for each solver configuration which + uses the reference solution computed by the fixture. - Change-Id: I7d345404e362a94ff1eb433ad6b9dcc4960ba76d + Change-Id: I16a9a9a83a845a7aaf28762bcecf1a8ff5aee805 -commit 5dd76869cf45122c79579423f09e0de08cf04092 +commit 1936d47e213142b8bf29d3f548905116092b093d Author: Alex Stewart <alexs.mac@gmail.com> -Date: Fri Sep 19 16:08:25 2014 +0100 +Date: Tue Sep 8 23:27:42 2015 +0100 - Fix unused-function warning with Eigen < 3.2.2. + Revert increased inline threshold (iff Clang) to exported Ceres target. - - CreateBlockJacobian() is only ever used when Eigen >= 3.2.2 is - detected, but was previously defined whenever CERES_USE_EIGEN_SPARSE - was defined with no check on the Eigen version. - - This resulted in an unused-function compile warning that became an - error due to -Werror, preventing compilation when using Eigen < 3.2.2. + - Increasing the inline threshold results in very variable performance + improvements, and could potentially confuse users if they are trying + to set the inline threshold themselves. + - As such, we no longer export our inline threshold configuration for + Clang, but instead document how to change it in the FAQs. - Change-Id: I24628ff329f14b087ece66bf2626bdc0de4ba224 + Change-Id: I88e2e0001e4586ba2718535845ed1e4b1a5b72bc -commit 820cb7b14831aa03eca1e8186000cebfdf0a42f3 +commit a66d89dcda47cefda83758bfb9e7374bec4ce866 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Sep 17 09:46:08 2014 -0700 +Date: Sat Sep 5 16:50:20 2015 -0700 - Add solver_utils.cc to Android.mk + Get ready for 1.11.0RC1 + + Update version numbers. + Drop CERES_VERSION_ABI macro. - Change-Id: I358522971711280f4362a1fa39b1568160e21e63 + Change-Id: Ib3eadabb318afe206bb196a5221b195d26cbeaa0 -commit 092b94970a073f8b47179d96160226fc19095898 +commit 1ac3dd223c179fbadaed568ac532af4139c75d84 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Sep 5 11:56:29 2014 -0700 +Date: Sat Sep 5 15:30:01 2015 -0700 - Add GradientProblem and GradientProblemSolver. + Fix a bug in CompressedRowSparseMatrix::AppendRows - The line search minimizer in Ceres does not require that the - problems that is solving is a sum of squares. Over the past - year there have been multiple requests to expose this algorithm - on its own so that it can be used to solve unconstrained - non-linear minimization problems on its own. + The test for CompressedRowSparseMatrix::AppendRows tries to add + a matrix of size zero, which results in an invalid pointer deferencing + even though that pointer is never written to. - With this change, a new optimization problem called - GradientProblem is introduced which is basically a thin - wrapper around a user defined functor that evaluates cost - and gradients (FirstOrderFunction) and an optional LocalParameterization. - - Corresponding to it, a GradientProblemSolver and its associated - options and summary structs are introduced too. - - An example that uses the new API to find the minimum of Rosenbrock's - function is also added. - - Change-Id: I42bf687540da25de991e9bdb00e321239244e8b4 + Change-Id: I97dba37082bd5dad242ae1af0447a9178cd92027 -commit 6c45d6b891aac01489b478a021f99081c61792cb +commit 67622b080c8d37b5e932120a53d4ce76b80543e5 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Sep 11 07:48:30 2014 -0700 +Date: Sat Sep 5 13:18:38 2015 -0700 - Add more inspection methods to Problem. - - Problem::GetCostFunctionForResidualBlock - Problem::GetLossFunctionForResidualBlock + Fix a pointer access bug in Ridders' algorithm. - are added, so that users do not have to maintain this mapping - outside the Problem. + A pointer to an Eigen matrix was being used as an array. - Change-Id: I38356dfa094b2c7eec90651dafeaf3a33c5f5f56 + Change-Id: Ifaea14fa3416eda5953de49afb78dc5a6ea816eb -commit 6ad9b8e2ae66c9009441d0f9304486ec8dfa9a6a +commit 5742b7d0f14d2d170054623ccfee09ea214b8ed9 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Sep 9 14:29:28 2014 -0700 +Date: Wed Aug 26 09:24:33 2015 -0700 - Ignore row/column blocks structure when using dynamic sparsity + Improve performance of SPARSE_NORMAL_CHOLESKY + dynamic_sparsity - The row/column blocks can be huge when using dynamic sparsity. This - can result in very large memory usage when augmenting the jacobian - with the LM diagonal. + The outer product computation logic in SparseNormalCholeskySolver + does not work well with dynamic sparsity. The overhead of computing + the sparsity pattern of the normal equations is only amortized if + the sparsity is constant. If the sparsity can change from call to call + SparseNormalCholeskySolver will actually be more expensive. - Thanks to Mingsong Dou for reporting this. - - Change-Id: I6aa140ceefa98389ae17958f89ca76e0c76f95b8 + For Eigen and for CXSparse we now explicitly compute the normal + equations using their respective matrix-matrix product routines and solve. + Change-Id: Ifbd8ed78987cdf71640e66ed69500442526a23d4 -commit 7e43460d42e20be1ba13121655dbbfd0d1c751ae -Author: Martin Baeuml <baeuml@gmail.com> -Date: Mon Sep 8 16:49:06 2014 +0200 +commit d0b6cf657d6ef0dd739e958af9a5768f2eecfd35 +Author: Keir Mierle <mierle@gmail.com> +Date: Fri Sep 4 18:43:41 2015 -0700 - Fix a few typos in the documentation. + Fix incorrect detect structure test - Change-Id: I541db56b2b81ae758e233ce850d78c3cbb4b6fa3 + Change-Id: I7062f3639147c40b57947790d3b18331a39a366b -commit 1aef66eeae7042902655a11b0d6a1a32900abb7b -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sun Sep 7 21:18:44 2014 -0700 +commit 0e8264cc47661651a11e2dd8570c210082963545 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sat Aug 22 16:23:05 2015 +0100 - Remove errant space. + Add increased inline threshold (iff Clang) to exported Ceres target. - Change-Id: Iedc06960417a9b938d57f623b4beb87a98e3d081 + - When compiled with Clang, Ceres and all of the examples are compiled + with an increased inlining-threshold, as the default value can result + in poor Eigen performance. + - Previously, client code using Ceres would typically not use an + increased inlining-threshold (unless the user has specifically added + it themselves). However, increasing the inlining threshold can result + in significant performance improvements in auto-diffed CostFunctions. + - This patch adds the inlining-threshold flags to the interface flags + for the Ceres CMake target s/t any client code using Ceres (via + CMake), and compiled with Clang, will now be compiled with the same + increased inlining threshold as used by Ceres itself. + + Change-Id: I31e8f1abfda140d22e85bb48aa57f028a68a415e -commit 89080ab153a33008782759187fa8e9af7d2f83f1 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sat Sep 6 21:13:48 2014 -0700 +commit a1b3fce9e0a4141b973f6b4dd9b08c4c13052d52 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Aug 31 14:14:56 2015 +0100 - Add LocalParameterization::MultiplyByJacobian. - - This is needed to efficiently support LocalParameterization objects - in GradientProblemSolver. + Add optional export of Ceres build directory to new features list. - Change-Id: Ic7b715b8be694b099dc95d6707a67474297533e6 + Change-Id: I6f1e42b41957ae9cc98fd9dcd1969ef64c4cd96f -commit d76da16f49d419ae3664ca1bdc2286c1ea78ebed -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sun Sep 7 18:42:49 2014 -0700 +commit e46777d8df068866ef80902401a03e29348d11ae +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Mon Aug 31 12:41:54 2015 +0100 - Move some routines to solver_utils.h/cc - - This moves a couple of routines from solver.cc into solver_utils.h/cc - so that they can also be used by the upcoming GradientProblemSolver. + Credit reporters of buildsystem bugs in version history. - Change-Id: I627b32ad3dc639422aacde78a8e391459d947e99 + Change-Id: I16fe7973534cd556d97215e84268ae0b8ec4e11a -commit cbf03ac292a0c0e9e6b7fcc1b08b67e95965922f +commit 01548282cb620e5e3ac79a63a391cd0afd5433e4 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sat Sep 6 21:07:08 2014 -0700 +Date: Sun Aug 30 22:29:27 2015 -0700 - Make LineSearchMinimizer consistent with TrustRegionMinimizer. + Update the version history. - Change the logic for how IterationSummary objects are added to - Summary::iterations to match the one in TrustRegionMinimizer. - - Change-Id: I57851ad8294e58f83b9115cca9c24695d86ee92a + Change-Id: I29873bed31675e0108f1a44f53f7bc68976b7f98 -commit f04c32319751e1efd610acd3699bca0a6dd6c6d1 +commit 2701429f770fce69ed0c77523fa43d7bc20ac6dc Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sat Sep 6 21:05:41 2014 -0700 +Date: Sun Aug 30 21:33:57 2015 -0700 - Fix some obsolete documentation in CostFunction::Evaluate + Use Eigen::Dynamic instead of ceres::DYNAMIC in numeric_diff.h - Change-Id: I1d7ee5c596fbf6a4d886dce5b989c8eb18af2dce + Change-Id: Iccb0284a8fb4c2160748dfae24bcd595f1d4cb5c -commit 9263547c02a1807532b159c217e7acd124d3db10 -Author: Johannes Schönberger <hannesschoenberger@gmail.com> -Date: Sat Sep 6 17:26:15 2014 -0400 +commit 4f049db7c2a3ee8cf9910c6eac96be6a28a5999c +Author: Tal Ben-Nun <tbennun@gmail.com> +Date: Wed May 13 15:43:51 2015 +0300 - Fix CG solver options for ITERATIVE_SCHUR, which did not copy min_num_iterations + Adaptive numeric differentiation using Ridders' method. - Change-Id: If31bc53b49ec20426fd438b79b8fa1f69d11e861 - -commit b41f048256d1a8184cbe874b5a96dffa7fa4630d -Author: Martin Baeuml <baeuml@gmail.com> -Date: Fri Sep 5 15:03:32 2014 +0200 - - Remove obsolete include of numeric_diff_functor.h. + This method numerically computes function derivatives in different + scales, extrapolating between intermediate results to conserve function + evaluations. Adaptive differentiation is essential to produce accurate + results for functions with noisy derivatives. - numeric_diff_functor.h was removed and does not exist anymore. + Full changelist: + -Created a new type of NumericDiffMethod (RIDDERS). + -Implemented EvaluateRiddersJacobianColumn in NumericDiff. + -Created unit tests with f(x) = x^2 + [random noise] and + f(x) = exp(x). - Change-Id: I07bf04bf81142551e867b95b83a0653e11cad54c + Change-Id: I2d6e924d7ff686650272f29a8c981351e6f72091 -commit b7fb6056a717cc3c372cfb7115c527ee8bc05ddb +commit 070bba4b43b4b7449628bf456a10452fd2b34d28 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Sep 3 11:19:02 2014 -0700 +Date: Tue Aug 25 13:37:33 2015 -0700 - Remove NumericDiffFunctor. + Lint fixes from William Rucklidge - Its API was broken, and its implementation was an unnecessary - layer of abstraction over CostFunctionToFunctor. - - Change-Id: I18fc261fc6a3620b51a9eeb4dde0af03d753af69 + Change-Id: I719e8852859c970091df842e59c44e02e2c65827 -commit 175fa8ff09049110a8509409f60cee5fd52cdbe6 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Sep 2 06:49:08 2014 -0700 +commit 887a20ca7f02a1504e35f7cabbdfb2e0842a0b0b +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Wed Aug 12 21:41:43 2015 +0100 - CostFunctionToFunctor allows dynamic number of residuals. + Build position independent code when compiling Ceres statically. - The code itself was perfectly capable of handling residuals, but there - was an overly strict runtime check that had to be removed. + - Previously, when Ceres was built as a static library we did not + compile position independent code. This means that the resulting + static library could not be linked against shared libraries, but + could be used by executables. + - To enable the use of a static Ceres library by other shared libraries + as reported in [1], the static library must be generated from + position independent code (except on Windows, where PIC does not + apply). - Thanks to Domink Reitzle for reporting this. + [1] https://github.com/Itseez/opencv_contrib/pull/290#issuecomment-130389471 - Change-Id: I6a6d000a7c5203dd5945a61b4caeda1b8aeb09c9 + Change-Id: I99388f1784ece688f91b162d009578c5c97ddaf6 -commit 70ace0d5a5601901288974fcf27919754260cf0e -Author: Johannes Schönberger <hannesschoenberger@gmail.com> -Date: Sat Aug 30 15:52:34 2014 -0400 - - Fix max. linear solver iterations in ConjugateGradientsSolver - - Change-Id: Ice0cef46441dbc1c121eeb42113667a46c96936f - -commit c5d8d0680250f5eb554577d30d28fc805b03fab9 +commit 860bba588b981a5718f6b73e7e840e5b8757fe65 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Aug 29 20:31:19 2014 -0700 +Date: Tue Aug 25 09:43:21 2015 -0700 - Fix a unused function error with Eigen version 3.2.1 or less. + Fix a bug in DetectStructure - Thanks to Johannes Schoenberger for reporting this. + The logic for determing static/dynamic f-block size in + DetectStructure was broken in a corner case, where the very first + row block which was used to initialize the f_block_size contained + more than one f blocks of varying sizes. The way the if block + was structured, no iteration was performed on the remaining + f-blocks and the loop failed to detect that the f-block size + was actually changing. - Change-Id: Ie17d28f2a68734a978a8c95007724bc4055de43a - -commit 0e1cc2a55488e4cf381833baaa3531c02ce9d69e -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Fri Aug 29 09:16:56 2014 -0700 - - Fix the build on Eigen version 3.2.1 and older. + If in the remaining row blocks, there were no row blocks + with varying f-block sizes, the function will erroneously + return a static f-block size. + + Thanks to Johannes Schonberger for providing a reproduction for this + rather tricky corner case. - Change-Id: I18f5cb5d42113737d7b8f78a67acee28bd5b3e08 + Change-Id: Ib442a041d8b7efd29f9653be6a11a69d0eccd1ec -commit 5f96c62b56222f27e606f2246a8a16b6942af8d1 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 28 23:06:17 2014 -0700 +commit b0cbc0f0b0a22f01724b7b647a4a94db959cc4e4 +Author: Johannes Schönberger <hannesschoenberger@gmail.com> +Date: Thu Aug 20 14:21:30 2015 -0400 - Add Block AMD ordering for SPARSE_SCHUR + EIGEN_SPARSE. - - Ordering routines for the Schur complement when using EIGEN_SPARSE. - Also integration into SchurComplementSolver. - - Part of this CL is also a refactoring of the block jacobian matrix - construction. + Reduce memory footprint of SubsetParameterization - Change-Id: I11d665cc7d4867c64190e6fed1118f4d2e13d59b + Change-Id: If113cb4696d5aef3e50eed01fba7a3d4143b7ec8 -commit 7344626c04d19ca1dc4871c377c4422c744b1bca -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 28 22:03:09 2014 -0700 +commit ad2a99777786101411a971e59576ca533a297013 +Author: Sergey Sharybin <sergey.vfx@gmail.com> +Date: Sat Aug 22 11:18:45 2015 +0200 - Let EIGEN_SPARSE + SPARSE_NORMAL_CHOLESKY use block AMD. + Fix for reoder program unit test when built without suitesparse - Modify SparseNormalCholeskySolver to use a pre-ordered Jacobian - matrix. + This commit fixes failure of reorder_program_test when Ceres is built without + any suitesparse. - Change-Id: Ib4d725d7a2d7bb94ea76dbb3a9b172784dbc8ea0 + Change-Id: Ia23ae8dfd20c482cb9cd1301f17edf9a34df3235 -commit 9f7032369ea4e432f0fb507cb6d2209741ee6946 +commit 4bf3868beca9c17615f72ec03730cddb3676acaa Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 28 21:46:43 2014 -0700 +Date: Sun Aug 9 15:24:45 2015 -0700 - Block AMD for SparseNormalCholesky + EIGEN_SPARSE. + Fix a bug in the Schur eliminator - This is just the reordering routine. The integration with - SparseNormalCholesky shall happen in a subsequent CL. + The schur eliminator treats rows with e blocks and row with + no e blocks separately. The template specialization logic only + applies to the rows with e blocks. - Change-Id: I39ddc32aa66b11c368faf75404850fa0ae0d2b3a - -commit b9331cd4077100d645be22a912d5743eeda72878 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 28 14:42:27 2014 -0700 - - Cleanup reorder_program.cc + So, in cases where the rows with e-blocks have a fixed size f-block + but the rows without e-blocks have f-blocks of varying sizes, + DetectStructure will return a static f-block size, but we need to be + careful that we do not blindly use that static f-block size everywhere. - Program::SetParameterOffsetsAndIndex() was being called willy nilly. - Now the invariant is that any function that actually reorders the - program, updates the offsets and indices. + This patch fixes a bug where such care was not being taken, where + it was assumed that the static f-block size could be assumed for all + f-block sizes. - Also the logic around handling EIGEN_SPARSE has been simplified in - anticipation of the block AMD code that is forthcoming. + A new test is added, which triggers an exception in debug mode. In + release mode this error does not present itself, due to a peculiarity + of the way Eigen works. - Last but not the least, num_eliminate_blocks, which is a rather - cryptic name to begin with has been replaced by the more meaningful - size_of_first_elimination_group. + Thanks to Werner Trobin for reporting this bug. - Change-Id: I77e684f699a93b53e76aa406d64f40f8704df813 + Change-Id: I8ae7aabf8eed8c3f9cf74b6c74d632ba44f82581 -commit 79491a3f4a3939a3cce4644da7a998b7782b963a +commit 1635ce726078f00264b89d7fb6e76fd1c2796e59 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 28 13:57:50 2014 -0700 +Date: Wed Aug 19 00:26:02 2015 -0700 - Solver::FullReport now reports build config. + Fix a bug in the reordering code. - The header of Summary::FullReport now looks like + When the user provides an ordering which starts at a non-zero group id, + or has gaps in the groups, then CAMD, the algorithm used to reorder + the program can crash or return garbage results. - Solver Summary (v 1.10.0-suitesparse-cxsparse-lapack-no_openmp) + The solution is to map the ordering into grouping constraints, and then + to re-number the groups to be contiguous using a call to + MapValuesToContiguousRange. This was already done for CAMD based + ordering for Schur type solvers, but was not done for SPARSE_NORMAL_CHOLESKY. - Original Reduced - Parameter blocks 22122 22122 - Parameters 66462 66462 - Residual blocks 83718 83718 - Residual 167436 167436 + Thanks to Bernhard Zeisl for not only reporting the bug but also + providing a reproduction. - Change-Id: Id1b81bbf90ba412d19e2dd3687eeb9d372b72c1b + Change-Id: I5cfae222d701dfdb8e1bda7f0b4670a30417aa89 -commit 48068c753e91d77f6c96ef2d529a27ef8ee3947c -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 28 13:03:40 2014 -0700 +commit 4c3f8987e7f0c51fd367cf6d43d7eb879e79589f +Author: Simon Rutishauser <simon.rutishauser@pix4d.com> +Date: Thu Aug 13 11:10:44 2015 +0200 - Lint cleanup from William Rucklidge. + Add missing CERES_EXPORT to ComposedLoss - Change-Id: Ie0e0aa58440be7a4f67dcd633dbb6f1bb0c051a8 + Change-Id: Id7db388d41bf53e6e5704039040c9d2c6bf4c29c -commit 6a51b135e6298e8ba44a58cc2b54a170ab61a82f +commit 1a740cc787b85b883a0703403a99fe49662acb79 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Aug 28 10:48:29 2014 -0700 +Date: Tue Aug 11 18:08:05 2015 -0700 - Fix solver_test.cc + Add the option to use numeric differentiation to nist and more_garbow_hillstrom - When Eigen is not installed, Solver::IsValid was not detecting - it correctly. - - Change-Id: Id285a84d829a9e20bc5de663adfca66ac31e08f3 + Change-Id: If0a5caef90b524dcf5e2567c5b681987f5459401 -commit 62a8d64453ee41dae56710a4eead3fadf2fe1a4e -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Aug 27 22:54:00 2014 -0700 +commit ea667ede5c038d6bf3d1c9ec3dbdc5072d1beec6 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sun Aug 9 16:56:13 2015 +0100 - Expand check for lack of a sparse linear algebra library. - - The LinearSolver factory was creating a NULL linear solver - if only Eigen's sparse linear algebra backend was available. + Fix EIGENSPARSE option help s/t it displays in CMake ncurses GUI. - Thanks to Michael Samples and Domink Reitzle for reporting this. + - Shorten description for EIGENSPARSE to a single line, as otherwise + it is not correctly displayed in the ncurses CMake GUI. + - Made explicit in description that this results in an LGPL licensed + version of Ceres (this is also made clear in the CMake log output if + EIGENSPARSE is enabled). - Change-Id: I35e3a6c0fd0da2a31934adb5dfe4cad29577cc73 + Change-Id: I11678a9cbc7a817133c22128da01055a3cb8a26d -commit 12eb389b4ec4113a2260c1a192a1d3f8d1b6a2d3 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Aug 27 22:18:33 2014 -0700 +commit a14ec27fb28ab2e8d7f1c9d88e41101dc6c0aab5 +Author: Richard Stebbing <richie.stebbing@gmail.com> +Date: Fri Aug 7 08:42:03 2015 -0700 - Fix Eigen Row/ColMajor bug in NumericDiffCostFunction. + Fix SparseNormalCholeskySolver with dynamic sparsity. - If the parameter block size is 1, asking Eigen to create - a row-major matrix triggers a compile time error. Previously - we were handling the case where the number of rows in the - jacobian block was known statically, but the problem is present - when the nummber of rows is dynamic. + The previous implementation incorrectly cached the outer product matrix + pattern even when `dynamic_sparsity = true`. - This CL fixes this problem. + Change-Id: I1e58315a9b44f2f457d07c56b203ab2668bfb8a2 + +commit 3dd7fced44ff00197fa9fcb1f2081d12be728062 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sun Aug 9 16:38:50 2015 +0100 + + Remove legacy dependency detection macros. - Thanks to Dominik Reitzle for reporting this. + - Before the new CMake buildsystem in 1.8, Ceres used non-standard + HINTS variables for dependencies. For backwards compatibility CMake + macros were added to translate these legacy variables into the new + (standard) variables. + - As it has now been multiple releases since the legacy variables + were used and they no longer appear in any of the documentation + support for them has now expired. - Change-Id: I99c3eec3558e66ebf4efa51c4dee8ce292ffe0c1 + Change-Id: I2cc72927ed711142ba7943df334ee008181f86a2 -commit 6c25185bb1643d8d0f3d8e1a7b82a058156aa869 +commit 8b32e258ccce1eed2a50bb002add16cad13aff1e Author: Alex Stewart <alexs.mac@gmail.com> -Date: Thu Aug 28 16:07:51 2014 +0100 +Date: Sun Aug 9 15:42:39 2015 +0100 - Fix crash in Covariance if # threads > 1 requested without OpenMP. + Fix failed if() condition expansion if gflags is not found. - - Previously if options.num_threads > 1 was given to Covariance compiled - without OpenMP, a CHECK() would be triggered in program_evalutor. + - If a CMake-ified version of gflags is not detected, then + gflags_LIBRARIES is not set and the TARGET condition within a + multiconditional if() statement prevents configuration. - Change-Id: Iaade4f5ed5326b0c59a7014c750c41ee026e1124 + Change-Id: Ia92e97523d7a1478ab36539726b9540d7cfee5d0 -commit 6f89d850fb4ace0104abccf467c4fe37ad378b79 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Aug 27 11:51:50 2014 -0700 +commit cc8d47aabb9d63ba4588ba7295058a6191c2df83 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sun Aug 9 15:18:42 2015 +0100 - Further build breakage fixes. + Update all CMake to lowercase function name style. - 1. Allow the minimum number of linear solver iterations to be zero. - 2. Fix conjugate gradients solver's iteration loop to be sane again. + - Updated to new CMake style where function names are all lowercase, + this will be backwards compatible as CMake function names are + case insensitive. + - Updated using Emacs' M-x unscreamify-cmake-buffer. - Change-Id: I8594815fec940c2b30e28eb58ec5d8baacf13dae + Change-Id: If7219816f560270e59212813aeb021353a64a0e2 -commit dd596d0f0d6d08951efc2c11a639b546db2080c6 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Wed Aug 27 11:26:50 2014 -0700 +commit 1f106904c1f47460c35ac03258d6506bb2d60838 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sun Aug 9 14:55:02 2015 +0100 - Fix the broken build. + Update minimum iOS version to 7.0 for shared_ptr/unordered_map. + + - In order to correctly detect shared_ptr (& unordered_map) + the iOS version must be >= 7.0 (Xcode 5.0+). This only affects the + SIMULATOR(64) platform builds, as the OS (device) build uses the + latest SDK which is now likely 8.0+. - Change-Id: I083cf1cca1bf4cca956193022d450364e73f833a + Change-Id: Iefec8f03408b8cdc7a495f442ebba081f800adb0 -commit d906afae22b05b9b9a9a2657924f4c0bf1a9b5ea -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Mon Aug 25 22:32:38 2014 -0700 +commit 16ecd40523a408e7705c9fdb0e159cef2007b8ab +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sat Aug 8 17:32:31 2015 +0100 - A number of bug fixes. + Fix bug in gflags' <= 2.1.2 exported CMake configuration. - 1. Fix a build breakage in graph_test. - 2. Respect Solver::Options::min_num_linear_solver_iterations in - conjugate_gradients_solver.cc + - gflags <= 2.1.2 has a bug in its exported gflags-config.cmake: + https://github.com/gflags/gflags/issues/110 whereby it sets + gflags_LIBRARIES to a non-existent 'gflags' target. + - This causes linker errors if gflags is installed in a non-standard + location (as otherwise CMake resolves gflags to -lgflags which + links if gflags is installed somewhere on the current path). + - We now check for this case, and search for the correct gflags imported + target and update gflags_LIBRARIES to reference it if found, otherwise + proceed on to the original manual search to try to find gflags. - Thanks to Johannes Schönberger for reporting these. - - Change-Id: Ib32e3929bf5d92dd576ae5b53d4d88797095136e + Change-Id: Iceccc3ee53c7c2010e41cc45255f966e7b13d526 -commit dab955928c6d0942d6acc5b5f1c4c11260d0767d -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sun Aug 17 13:14:50 2014 -0700 +commit 56be8de007dfd65ed5a31c795eb4a08ad765f411 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Thu Jun 25 21:31:00 2015 +0100 - Add an unweighted graph. - - Rename Graph -> WeightedGraph. - Add a new Graph class, which is cheaper to construct and - work with if the weights are not needed. + Add docs for new CXX11 option & mask option for Windows. - This cuts down the cost of building the Hessian graph - significantly. + - The CXX11 option has no effect on Windows, as there, any new C++11 + features are enabled by default, as such to avoid confusion we only + present the option for non-Windows. - Change-Id: Id0cfc81dd2c0bb5ff8f63a1b55aa133c53c0c869 + Change-Id: I38925ae3bb8c16682d404468ba95c611a519b9b9 -commit a0c282adbd268c2ad82551fab31fe1cf8d0c4282 +commit cf863b6415ac4dbf3626e70adeac1ac0f3d87ee5 Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Sun Aug 24 22:19:03 2014 -0700 +Date: Thu Aug 6 14:52:18 2015 -0700 - Add EIGEN_STRONG_INLINE annotation to jet.h + Remove the spec file needed for generating RPMs. - This improves performance when using MSVC on Windows. On GCC - there will be no effect. + Now that ceres is part of RawHide, there is no need to carry + this spec file with the ceres distribution. - Change-Id: I555a81ff6823c2855d64773073f75af50c48d716 + Change-Id: Icc400b9874ba05ba05b353e2658f1de94c72299e -commit 20de0a7793c574e964350a623446136889f74632 -Author: Björn Piltz <bjornpiltz@gmail.com> -Date: Mon Aug 25 17:05:54 2014 +0200 +commit 560940fa277a469c1ab34f1aa303ff1af9c3cacf +Author: Sameer Agarwal <sameeragarwal@google.com> +Date: Sat Jul 11 22:21:31 2015 -0700 - Fixed Malformed regex + A refactor of the cubic interpolation code - I got the following error with MSVC: - Syntax error at index 9 in simple regular expression "NumGroups()": '(' is unsupported. + 1. Push the boundary handling logic into the underlying array + object. This has two very significant impacts: - Change-Id: Id1952831d81d3eb5d73bbed8c311914c4c8ab51f + a. The interpolation code becomes extremely simple to write + and to test. + + b. The user has more flexibility in implementing how out of bounds + values are handled. We provide one default implementation. + + Change-Id: Ic2f6cf9257ce7110c62e492688e5a6c8be1e7df2 -commit ccf8aea988269841d84d746e52164d5056c67a10 -Author: Björn Piltz <bjornpiltz@gmail.com> -Date: Mon Aug 25 16:16:01 2014 +0200 +commit dfdf19e111c2b0e6daeb6007728ec2f784106d49 +Author: Sameer Agarwal <sameeragarwal@google.com> +Date: Wed Aug 5 15:20:57 2015 -0700 - Fixed MSVC error C2124: divide or mod by zero - - Alternatively, if quiet_NaN is not available on all platforms a workaround would be: - volatile double zero = 0.0; - double x = 1.0/zero; - The 'volatile' is needed to shut up "warning C4723: potential divide by 0". + Lint cleanup from Jim Roseborough - Change-Id: If2bbdab8540595aa2e0079e1eb6b6fed6d4a6ef7 + Change-Id: Id6845c85644d40e635ed196ca74fc51a387aade4 -commit 8de27be218d42b282d7f15867733ad07058b0887 +commit 7444f23ae245476a7ac8421cc2f88d6947fd3e5f Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Tue Aug 19 08:22:40 2014 -0700 +Date: Mon Aug 3 12:22:44 2015 -0700 - Fix a bug in TrustRegionPreprocessor + Fix a typo in small_blas.h - TrustRegionPreprocessor was not setting Minimizer::Options::is_constrained. - This meant that the line search for bounds constraints was not being - invoked for bounds constrained problems. + The reason this rather serious looking typo has not + caused any problems uptil now is because NUM_ROW_B is + computed but never actually used. - And some minor lint cleanup. + Thanks to Werner Trobin for pointing this out. - Change-Id: I18852cfaf1b33fd90b7d8c196f2063c128126658 + Change-Id: Id2b4d9326ec21baec8a85423e3270aefbafb611e -commit 1745dd615b3897a3ef9896acfdba67eee1739bf4 -Author: Sameer Agarwal <sameeragarwal@google.com> -Date: Thu Jun 5 21:30:13 2014 -0700 +commit 5a48b92123b30a437f031eb24b0deaadc8f60d26 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sat Jul 4 17:59:52 2015 +0100 - Refactor SolverImpl. - - Replace SolverImpl with + Export Ceres build directory into local CMake package registry. - a. A minimizer specific preprocessor class. - b. A generic Solve function inside solver.cc - c. Presummarize and Postsummarize functions to handle - updates to the summary object. + - Optionally use CMake's export() functionality to export the Ceres + build directory as a package into the local CMake package registry. + - This enables the detection & use of Ceres from CMake *without* + requiring that Ceres be installed. - The existing SolverImpl class was a mixture of the above three - things and was increasingly complicated code to follow. This change, - breaks it into its three separate constituents, with the aims of - better separation of concerns and thus better testability and - reliability. + Change-Id: Ib5a7588446f490e1b405878475b6b1dd13accd1f + +commit d9790e77894ea99d38137d359d6118315b2d1601 +Author: Sameer Agarwal <sameeragarwal@google.com> +Date: Sun Jul 12 19:39:47 2015 -0700 + + Add ProductParameterization - The call to Solver::Solve() now consists of + Often a parameter block is the Cartesian product of a number of + manifolds. For example, a rigid transformation SE(3) = SO(3) x R^3 + In such cases, where you have the local parameterization + of the individual manifolds available, + ProductParameterization can be used to construct a local + parameterization of the cartesian product. - 1. Presummarize - summarize the given state of the problem and solver - options. - 2. Preprocess - Setup everything that is needed to call the minimizer. - This includes, removing redundant parameter and residual blocks, - setting up the reordering for the linear solver, creating the - linear solver, evaluator, inner iteration minimizer etc. - 3. Minimize. - 4. Post summarize - summarize the result of the preprocessing and the - solve. + Change-Id: I4b5bcbd2407a38739c7725b129789db5c3d65a20 + +commit 7b4fb69dad49eaefb5d2d47ef0d76f48ad7fef73 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Sun Jun 28 21:43:46 2015 +0100 + + Cleanup FindGflags & use installed gflags CMake config if present. + + - Split out gflags namespace detection methods: + check_cxx_source_compiles() & regex, into separate functions. + - Use installed/exported gflags CMake configuration (present for + versions >= 2.1) if available, unless user expresses a preference not + to, or specifies search directories, in which case fall back to manual + search for components. + -- Prefer installed gflags CMake configurations over exported gflags + build directories on all OSs. + - Remove custom version of check_cxx_source_compiles() that attempted + to force the build type of the test project. This only worked for + NMake on Windows, not MSVC as msbuild ignored our attempts to force + the build type. Now we always use the regex method on Windows if + we cannot find an installed gflags CMake configuration which works + even on MSVC by bypassing msbuild. + - Add default search paths for gflags on Windows. + + Change-Id: I083b267d97a7a5838a1314f3d41a61ae48d5a2d7 + +commit b3063c047906d4a44503dc0187fdcbbfcdda5f38 +Author: Alex Stewart <alexs.mac@gmail.com> +Date: Wed Jul 15 20:56:56 2015 +0100 + + Add default glog install location on Windows to search paths. - Change-Id: I80f35cfc9f2cbf78f1df4aceace27075779d8a3a + Change-Id: I083d368be48986e6780c11460f5a07b2f3b6c900 |