Commit Graph

64 Commits

Author SHA1 Message Date
Alex Stewart c4c7947211 Clean up iOS.cmake to use xcrun/xcodebuild & libtool.
- 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.

Change-Id: I5f83a60607db34d461ebe85f9dce861f53d98277
2015-09-20 20:12:04 +01:00
Sameer Agarwal a66d89dcda Get ready for 1.11.0RC1
Update version numbers.
Drop CERES_VERSION_ABI macro.

Change-Id: Ib3eadabb318afe206bb196a5221b195d26cbeaa0
2015-09-08 14:55:28 -07:00
Alex Stewart 1f106904c1 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: Iefec8f03408b8cdc7a495f442ebba081f800adb0
2015-08-09 14:55:02 +01:00
Alex Stewart 56be8de007 Add docs for new CXX11 option & mask option for Windows.
- 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: I38925ae3bb8c16682d404468ba95c611a519b9b9
2015-08-07 20:15:34 +01:00
Alex Stewart 5a48b92123 Export Ceres build directory into local CMake package registry.
- 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.

Change-Id: Ib5a7588446f490e1b405878475b6b1dd13accd1f
2015-08-03 16:46:05 +00:00
Alex Stewart bae78c88c7 Fix links to SuiteSparse & CXSparse.
- Thanks to Henrique Mendonça for reporting this.

Change-Id: I590f6138177b2e608eca9726f556d2f92d00d4d7
2015-06-28 14:02:10 +01:00
Alex Stewart b7e9a5762b Ensure Eigen is at least 3.1.0 for Eigen/SparseCore.
- Eigen/SparseCore is required by covariance_impl, this was added in
  v 3.1.0 of Eigen, and thus without at least this version Ceres will
  not compile.
- Note that Ubuntu 12.04 provides only version 3.0.5 in the mainline
  repository.
- Update docs to match CMake check for Eigen >= 3.2.2 to avoid warning
  about reduced sparse performance.

Change-Id: I291bb185d1c76e1e1422429169a76e3f1b828163
2015-06-27 16:03:41 +00:00
Alex Stewart 4707eb22e9 Remove use of :caption tag in Sphinx.
Change-Id: I1fb5f2504424506e1bba244bcb8efb25329564d1
2015-05-06 20:56:08 +01:00
Alex Stewart 08f3861b43 Fix CMake config file docs to include 2.8.x & 3.x styles.
- Include example use of new find_dependency() macro in CMake 3.x to
  find dependencies in <Project>Config.cmake files.
- Also fix typo in NNLS modeling docs.

Change-Id: Ie9862b69c0451ee8775826f2957f5e182d937439
2015-04-11 14:53:52 +01:00
Alex Stewart d95f9192dd Add documentation on CMake package installation process.
- A lot of users find the CMake package installation process confusing,
  particularly the use of imported targets when exporting their own
  projects which use Ceres.
- This patch adds a brief description of the overall process and the
  main bear-trap users are ensnared by.

Change-Id: I44c022bbd18a393868bf88ea9ddd807c5e08abc9
2015-04-06 16:22:32 +00:00
Filippo Basso 1eb927422b Update Ubuntu 14.04 installation instructions.
Change-Id: Ia824f305b638c1263752efe35690fc0e5db9f75a
2015-01-26 11:55:55 +01:00
Alex Stewart 257f6dae46 Add note about glog not currently compiling against gflags 2.1.
- Also fix a typo in pointer to EIGENSPARSE documentation.

Change-Id: I1448fcf3680a65362c6f9b2d8a5ab0259da92364
2015-01-06 20:17:08 +00:00
Sameer Agarwal 92e5379c88 Add a pointer to MacPorts.
Thanks to Markus Moll for maintaining the port and pointing me to
it.

Change-Id: Ia28fcbfb4946409de9e6b85d1dc332a25555195b
2014-12-06 15:54:15 -08:00
Sameer Agarwal 8f6918e2e5 Fix the link to Tal Ben-Nun's MSVC wrapper.
Change-Id: Iec2c6b5b0a2aa2e5e3b76200c5ac91000e41f267
2014-12-04 10:54:52 -08:00
Sameer Agarwal 68222eb819 Lint cleanup from Jim Roseborough
Change-Id: Ic55b8e48110bc651ae942d34fe5402a6e0422fe3
2014-12-01 12:31:46 -08:00
Sameer Agarwal 19d7ce97fe Add Tal Ben-Nun's MSVC wrapper.
Change-Id: Ifac9cdf0429c9dadd1ea49338ddcc3b83ac9ec11
2014-11-20 15:23:40 +00:00
Sameer Agarwal 39e397b793 Prepare for 1.10.0 release.
1. Add information about homebrew/science to the docs.
2. Update version history.
3. Update RPM spec file.

Change-Id: I800b81f9f2c8733a8add338cc0a205b7b8bc8573
2014-11-12 08:30:04 -08:00
Sameer Agarwal 7b6bd1cd31 Documentation update.
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.

Change-Id: If3a18f2850cbc98be1bc34435e9ea468785b8b27
2014-10-08 08:47:34 -07:00
Martin Baeuml 7e43460d42 Fix a few typos in the documentation.
Change-Id: I541db56b2b81ae758e233ce850d78c3cbb4b6fa3
2014-09-08 16:49:06 +02:00
Sameer Agarwal 031598295c Enable Eigen as sparse linear algebra library.
SPARSE_NORMAL_CHOLESKY and SPARSE_SCHUR can now be used
with EIGEN_SPARSE as the backend.

The performance is not as good as CXSparse. This needs to be
investigated. Is it because the quality of AMD ordering that
we are computing is not as good as the one for CXSparse? This
could be because we are working with the scalar matrix instead
of the block matrix.

Also, the upper/lower triangular story is not completely clear.
Both of these issues will be benchmarked and tackled in the
near future.

Also included in this change is a bunch of cleanup to the
SparseNormalCholeskySolver and SparseSchurComplementSolver
classes around the use of the of defines used to conditionally
compile out parts of the code.

The system_test has been updated to test EIGEN_SPARSE also.

Change-Id: I46a57e9c4c97782696879e0b15cfc7a93fe5496a
2014-07-31 22:05:34 -07:00
Sameer Agarwal c2131dea9c Add "make install" to the install instructions.
Alessandro Gentilini pointed out that the install instructions
don't actually install the library.

Also included are some other minor changes to dependency
description.

Change-Id: I50872114bca7a9774ef66f55ba78ed9b7adad93f
2014-07-13 13:50:43 -07:00
Alex Stewart da86231ddd Add fixes for multiple definitions of ERROR on Windows to docs.
- Explain the various ways to fix the problem of multiple definitions
  of ERROR from glog / miniglog vs windows.h.
- Add note about use of CMAKE_LIBRARY_PATH to aid FindBLAS & FindLAPACK.
- Fix minor style typo in code-block for sample Ceres output.

Change-Id: I21742614f4c5a8fe1ac8f66811b7777a72bcc503
2014-06-15 14:21:49 +01:00
Alex Stewart ec6bfa5b12 Compile miniglog into Ceres if enabled on all platforms.
- Previously if miniglog was being used (on a non-Android system), we
  compiled it into a separate library, against which Ceres then linked.
- This was unsatisfactory as it required miniglog being built as a
  static library when building Ceres as a Windows DLL, because miniglog
  did not use the dllexport/dllimport statements, whilst for other
  platforms when building Ceres as a shared library, miniglog needed to
  be compiled as a shared library.

- We now compile miniglog into Ceres on all platforms, not just on
  Android.
- miniglog now uses the CERES_EXPORT macro to support Windows DLLs.
  This means that miniglog now depends on Ceres' internal/port.h (and
  thus internal/config.h) which define the CERES_EXPORT macro and
  control its behaviour respectively.
- miniglog now also uses localtime_s, not localtime on Windows.

Change-Id: Ia55b9af8b4e6decf067eab92f0a5c2d14358a1e9
2014-06-09 19:02:07 +00:00
Sameer Agarwal 4fce29c29e Documentation update.
Update the documentation to reflect the new trust region solver
logging style.

Change-Id: Id2d6b9efeee86c690c349a225d344e9f97ddbcdf
2014-06-06 05:02:07 +00:00
Sameer Agarwal 451e71c6b7 Prepare for version 1.9.0
1. Update ceres-solver.spec with version bump
   and a new package description.
2. Update the docs to refer to 1.9.0
3. Update version history.
4. Change build requirements for Android to be r9d.

Change-Id: Ibab27976b214a11549cb2688b91f791a6388b0b5
2014-05-27 11:39:07 -07:00
Alex Stewart 9febb5f2ef Updating docs to include Windows options for SuiteSparse.
- A number of users are now successfully using the
  suitesparse-metis-for-windows project to build Ceres with SuiteSparse
  on Windows.
- Also fixing missing requirement for sphinx_rdm_theme if building
  the Ceres docs.

Change-Id: I1a36c13166f96743557de2ac3b7c9b84531d1f24
2014-05-27 13:26:10 +00:00
Keir Mierle d0f194a454 Tweak iOS build instructions
Change-Id: I05a8e46f6db0eb5914f88a04dca90dec4441b5c1
2014-05-27 06:32:41 +00:00
Alex Stewart 1bc7b38ac1 Support user passing a custom CMAKE_MODULE_PATH (for BLAS / LAPACK).
- Previously we set CMAKE_MODULE_PATH explicitly rather than appending
  to it when adding our local cmake directory.
- This meant the user could not easily pass their own directory which
  would also be used.  This would be useful if they had their own
  custom FindBLAS / FindLAPACK scripts that they wanted to overload
  the defaults shipped with CMake.

Change-Id: I0c1fda1b6fd81eab68755aa036f64af3efbb226d
2014-05-26 19:54:03 +01:00
Keir Mierle 6a9367711f Tweak build dependencies in the documentation
Change-Id: Ice4cc42bbcf00dafb66785fc96a048618a0b834f
2014-05-23 01:53:18 +00:00
Keir Mierle 4425473ef5 Fix formatting in building docs
Change-Id: I75aa4f12733462d592775b4df766c05c50f20b60
2014-05-23 01:00:22 +00:00
Sameer Agarwal 8c62487e43 Preparations for 1.9.0 release.
Version bump.
minor docs update.

Change-Id: I2fbe20ba4af6b2e186fe244c96ce6d6464fe0469
2014-05-16 09:48:41 -07:00
Sameer Agarwal 0831275a78 Documentation update.
1. Update iOS build instructions.
2. Update version history.

Change-Id: I49d62e86ecff39190b50c050cb12eef4e2773357
2014-05-16 08:32:23 -07:00
Alex Stewart ea76585068 Adding autogenerated Ceres config.h to #define Ceres compile options.
- Previously we passed all compile options to Ceres via add_definitions
  in CMake.  This was fine for private definitions (used only by Ceres)
  but required additional work for public definitions to ensure they
  were correctly propagated to clients via CMake using
  target_compile_definitions() (>= 2.8.11) or add_definitions().
- A drawback to these approaches is that they did not work for chained
  dependencies on Ceres, as in if in the users project B <- A <- Ceres,
  then although the required Ceres public compile definitions would
  be used when compiling A, they would not be propagated to B.

- This patch replaces the addition of compile definitions via
  add_definitions() with an autogenerated config.h header which
  is installed with Ceres and defines all of the enabled Ceres compile
  options.
- This removes the need for the user to propagate any compile
  definitions in their projects, and additionally allows post-install
  inspect of the options with which Ceres was compiled.

Change-Id: Idbdb6abdad0eb31e7540370e301afe87a07f2260
2014-05-09 10:57:31 +01:00
Björn Piltz 5d7eed87b4 Suppport for MSVC DLLs.
Change-Id: Ibbcc4ba4e59f5bbf1cb91fe81c7d3b9042d03493
2014-04-28 19:56:24 +00:00
Sameer Agarwal c4cd29dd7c Merge landing page with introduction.
The existing introduction was a bit redundant and also
was not really an introduction. Also updated the build
instructions to reflect the new reality on Mac OSX.

Also updated the beginning of the tutorial to be a bit
gentler and updated the history to be more consistent

Change-Id: Ife38c1949252cf9f4c6301856957f2d38365f313
2014-04-16 23:40:12 -07:00
Keir Mierle 406ac78167 Rework Ceres documentation as new website
This reworks the Ceres Sphinx documentation such that it can
function as the main Ceres website, now hosted at
ceres-solver.org. This also changes to the theme sphinx_rtd_theme
used by Read The Docs; this theme has strong mobile support and is
well enough designed.

Change-Id: I63232d985859a6dac94ff58f08bf81eb2b9e7f99
2014-04-07 15:28:21 +00:00
Sameer Agarwal 75e2232b29 Fix spacing in building.rst
Change-Id: I4c68d732c80d7ff2bdbc812bf0b7c7fb98c43957
2014-03-28 11:21:02 -07:00
Richard Bowen b555b489b8 Changes documentation to reflect changes in output format.
Change-Id: Ic0ba234283e791edcad29aec067905dcb2130813
2014-03-27 15:51:58 -07:00
Sameer Agarwal 879fc2827a Remove CERES_NO_LINE_SEARCH_MINIMIZER.
Now that the trust region minimizer depends on the line search
minimizer, conditional compilation of the line search minimizer
will lead to build breakages, so this option is now not available.

It is not expected to have as significant impact on users as the
amount of code in the line search minimization algorithm is
rather small to begin with.

Change-Id: I2aa6b6e6e3931b6428dbda654f14faf1ac6dd130
2014-02-25 11:35:54 -08:00
Sameer Agarwal 1a041c35b7 Update to 1.8.0.
Change-Id: Id42e594f03e3575d06e18c1ef66df64f43d86839
2013-11-12 14:19:25 -08:00
Alex Stewart f51f56382c Documentation update.
- Adding documentation for MSVC CRT option.
- Updating documentation to reflect that LINE_SEARCH_MINIMIZER is now
  ON by default.

Change-Id: I75b1b5957c3ab46f38631736ad1c65315bc92847
2013-10-22 14:37:42 +01:00
Sameer Agarwal 7f336af614 Fix a minor documentation formatting bug
Change-Id: I2294e51d51e41a51c24630eeb49243e945faadfe
2013-10-17 23:38:57 -07:00
Alex Stewart 78cc2c4719 Cleaning up exported CeresConfig.cmake.
- Adding FindPackage scripts for all of Ceres dependencies.
- Moving depend.cmake contents to CeresConfig.cmake and cleaning up
  search for Ceres & required dependencies, no longer push Ceres
  options into client.
- Fixing uninstall to remove ceres include root directory.
- Fixing main CMakeLists to install miniglog header if enabled.
- Making miniglog library shared/static with Ceres library.

Change-Id: If926bebd11720230c5136597ccba672394ed9777
2013-10-17 19:13:08 +00:00
Alex Stewart f5f21b5897 Adding check for broken version of Clang with Xcode 4.5.x.
- Also updating EXECUTE_PROCESS() calls to compiler to handle case
  when a compilation wrapper (e.g. ccache) is used.

Change-Id: I32837233a06ed1843125fb04852f82a9b8503769
2013-10-10 19:54:54 +01:00
Sameer Agarwal c7ebfb8e5e Documentation update
Change-Id: I10c6c8375f27c7fa4cd1c381b4f39d784fa946e1
2013-10-09 22:13:01 -07:00
Sameer Agarwal 8ba41e8b45 Lint cleanup from William Rucklidge
Change-Id: Ib2ea43203ac06551162ab306d7dece504e4f07aa
2013-10-09 11:35:40 -07:00
Alex Stewart fc8ede2d5e Making LAPACK a CMake option and updating build docs.
Change-Id: Iffd11866aa04a26b70cc788f992276e96c06eb6d
2013-10-08 23:48:58 +01:00
Alex Stewart 0b07d3e9f9 Making all config options in CMake & SuiteSparse cleanup.
- Also marking all library and include directories found via
  find_library/path advanced (not directly visible in CMake GUI unless
  toggled to show advanced options).
- Updating documentation to reflect SuiteSparse requirements on Ubuntu
  and ability to control build options in CMake GUI.
- Splitting out all SuiteSparse related find_XX directives into a
  FindSuiteSparse script.

Change-Id: I0d69e02392ec547a7c365ba3e06f2ebc61cacf16
2013-10-07 19:50:24 +01:00
Sameer Agarwal 3a2158d728 NumericDiffCostFunction supports dynamic number of residuals.
1. Update AutoDiffCostFunction template parameters to be consistent
with NumericDiffCostFunction.

2. Update the documentation for NumericDiffCostFunction and
AutoDiffCostFunction.

Change-Id: I113038abb5bedebb0f6f326f2a4ac31480d785fc
2013-10-03 20:09:59 +00:00
Sameer Agarwal 16924168ce Update version from 1.6.0 -> 1.7.0rc1.
Change-Id: I420a8907142bffad0e3aa6c7196541ca2309c099
2013-07-18 13:35:01 -07:00