Commit Graph

20 Commits

Author SHA1 Message Date
Kuang Fangjun 0d3a84fce5 Fix typos in doc and errors in the demo code.
Change-Id: I237402958ed8747ae438643132fcab90113ac27d
2018-09-22 12:01:20 +08:00
Sameer Agarwal 3df43b960f Remove Android build using Android.mk.
CMake support in Android is now standard and the CMake file
has fuller richer functionality than the Android.mk file ever did.

https://github.com/ceres-solver/ceres-solver/issues/364

Change-Id: Ib79bcc19dd47495a81a5d07fafdf06eb8005984e
2018-07-10 06:10:12 +00:00
Alex Stewart 16f9b34c3b Remove Intel TBB threading support.
- In light of the C++11 threads threading option this is no longer
  necessary for cross-platform threading support and did not offer a
  noticeable performance gain over either the C++11 threads
  implementation or OpenMP.

Change-Id: Icb588d520888c19a1775171795b55bcaffb3d256
2018-07-03 18:05:36 +00:00
Alex Stewart 2166bad133 Replace include_directories() with target_include_directories().
- Now that we require CMake >= 3.x, we can roll the definition of the
  include directories for clients linking against Ceres into the
  exported Ceres CMake target via target_include_directories().
- This removes the requirement for CERES_INCLUDE_DIRS.

Change-Id: Ibe3bbf796339871d66138fc9520053d1766f09a8
2018-07-02 12:15:13 +01:00
Alex Stewart 8f41ca6abc Add Apple's Accelerate framework as a sparse linear algebra library.
- Currently DynamicSparseNormalCholeskySolver is unsupported for
  Accelerate.

Change-Id: I03b5a86bb22fef249c4aecd48947a613e8eff7a5
2018-06-29 09:43:03 +01:00
Linus Mårtensson 9f3d9aebed Add android CMake support
Change-Id: I78b4794786cc1b03946b6b15aa93e46a4303a39c
2018-06-26 15:59:44 +02:00
Alex Stewart d656d34809 Refactor Ceres threading option configuration.
- Previously we had separate variables for each of the threading
  backends, each of which were made mutually exclusive via
  cmake_dependent_option().  This has unfortunate side-effects when
  trying to disable options if they are not currently enabled, in which
  case they are not defined.
- As all the threading options are mutually exclusive, this replaces
  all threading option variables with a single variable: CERES_THREADS,
  which is constrained to take the value of only the available threading
  backends.

Change-Id: I0822eefbac9a30772907b7732add365b37cc8ca0
2018-06-20 23:20:57 +00:00
Alex Stewart 9671d850e6 Replace (MSVC/GCC/CLANG)_VERSION with CMAKE_CXX_COMPILER_VERSION.
- As raised in issue #377, GCC_VERSION is not always defined, in which
  case we were not enabling compiler optimisations.
- CMAKE_CXX_COMPILER_VERSION is the more modern, uniform method to
  verify the compiler version.
- Also removes legacy Apple-GCC (i.e. Apple's fork of GCC prior to their
  switch to Clang) logic, and Xcode 4.x logic (in June 2018, Xcode 9.x
  is the current version).
- Also removes addition of -march=native on Linux (was not added for
  OS X).  If users wish to append -march=native (which will affect the
  portability of the resulting output) they can do so manually as now
  explained in the docs.
- Fixes check for Clang on OS X.  As per CMP0025 (CMake 3.0+)
  CMAKE_CXX_COMPILER_ID reports AppleClang on OS X, not Clang. Thus
  using: if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") would fail for
  AppleClang.  Instead, MATCHES should be used instead of STREQUAL to
  support both Clang & AppleClang.

Change-Id: I9647030b76f4b85a9ef2deea82d80ed79812ae33
2018-06-20 19:43:12 +01:00
Alex Stewart 282b8b5f35 Require >= C++11 & CMake >= 3.5 when building Ceres.
- Removes CXX11 option, and all associate paraphernalia.  Ceres now
  requires a compiler with full >= C++11 support.  In MSVC terms this
  means >= 2013 Release 4.
- This deprecates the use of CERES_STD_UNORDERED_MAP and CERES_USE_CXX11
  as they will now always be defined.  They will be removed from the
  source in a future CL.
- For clients with CMake >= 3.8 we propagate via the exported/installed
  Ceres target the CXX version that was specified when Ceres was built.
  For versions < 3.8 (but >= 3.5) we specify the CXX features currently
  used in the Ceres public API.

Change-Id: I535b545b10156e4426659c270a4a0649e071df0e
2018-03-29 09:32:59 +01:00
Alex Stewart a80b8cfeac Fix C++11 detection for VS2010.
- Use cmake_dependent_option() for all threading models and encode their
  respective mutual exclusivity in the dependent-option s/t the job of
  ensuring mutual exclusivity is performed by CMake.
- Use of cmake_dependent_option() has the downside that options are
  removed from the GUI if their requirements for availability are not
  met.  So if CXX11 is OFF, then neither TBB nor CXX11_THREADS will
  even appear as options (they will be undefined, assumed OFF).
- Perform checks for availability of C++11 if CXX11 is enabled prior to
  testing other options to handle dependence of TBB & CXX11_THREADS on
  CXX11 actually being present.
- Add check for availability of C++11-specific math functions used in
  jet.h before reporting C++11 as found.
- Add check for <atomic> before allowing TBB or CXX11_THREADS, as both
  options require it and it may not always be available even if the
  other required C++11 components are.

Change-Id: Ife8cd182aeb1978539ce2c9966910ae59ebd9177
2018-03-19 09:40:48 +00:00
Sameer Agarwal c2f5cd10e7 Update docs and code in preparation for 1.14.0
Change-Id: I81b430fbff62fb5e3f4c75945f6d40361d546918
2018-03-13 10:10:13 -07:00
Alex Stewart df2d882540 Remove armv7 from target architectures when building for iOS >= 11.
- iOS 11+ requires a 64-bit architecture, so only arm64 is supported.

Change-Id: Ieb2ead13ba8722c6c0777b78f59f667331ad670c
2018-03-04 12:16:27 +00:00
Alex Stewart 488d401ac3 Cleanup import of TBB in CMake.
- Update FindSuiteSparse to use FindTBB.cmake to find TBB.
- Fix logic handling of TBB=ON if TBB is not found to continue with
  build after disabling TBB rather than throwing a fatal error.
- Use TBB_LIBRARIES instead of TBB_tbb_LIBRARY as a Ceres dependency,
  the former also includes the TBB malloc library.
- Add warning message about GPL licensing if TBB version < 2017.
- Add ‘TBB’ & ‘Mulithreading’ component options to find_package(Ceres),
  where ‘Mulithreading’ is equivalent to ‘TBB’ || ‘OpenMP’.

Change-Id: Ifc7f1d01b050ba6e2097ad1913b178805df4769a
2017-12-11 10:15:32 +00:00
Alex Stewart aab0193c7b Move discussion of dependency licensing to Sphinx docs.
- Also enable EIGENSPARSE option by default as LGPL licensing
  implications are less severe that SuiteSparse’s GPL implications which
  is enabled by default.

Change-Id: Ic7e4fef5cef614d5ce719eeefcc35bf4b63b8dac
2017-12-08 01:24:48 +00:00
Keir Mierle cb497df619 Add link for CLA in docs; minor fixes
Also fixes a typo in cost_function.h

Change-Id: I45f08fd27fd2f8e5cb5b3f08e0d4f9a3e8822a15
2017-10-24 17:18:02 -07:00
Yury Prokazov 4ffec20a44 Add TBB threading support.
There are platforms where OpenMP is not available. This
patch adds support for Intel Threading Building Blocks (TBB)
as an alternative threading backend.

Change-Id: I94497d7cba0c3cfaccfc992169236f17fe948ae9
2017-09-25 12:43:14 +02:00
Alex Stewart 30885841a5 Add docs explaining how to build Ceres with OpenMP on OS X.
Change-Id: If45c12876dc58a042bbdf017de77003a161dc16c
2017-08-31 10:02:11 +01:00
Alex Stewart cc73c77d50 Update LAPACK option to refer to direct use by Ceres only.
- Previously the LAPACK option meant would Ceres link against LAPACK,
  whether directly or indirectly via SuiteSparse (if SUITESPARSE=ON),
  as such if LAPACK=OFF, the use of SuiteSparse was disabled, even if
  it was found.
- To support the use-case of using a limited LAPACK implementation that
  satisfies SuiteSparse’s requirements, but potentially not Ceres’ we
  now adopt the more conventional terminology whereby the LAPACK option
  refers only to whether Ceres itself will directly call LAPACK
  routines, not whether it or any of its dependencies will.
- This means that the LAPACK and SUITESPARSE options are now
  independent.
- Also unnecessary calls to find_package(BLAS), as find_package(LAPACK)
  already searches for BLAS, and appends the resulting libraries to
  LAPACK_LIBRARIES if they are found.

Change-Id: I9cf5fa5e4cb621812f6f0526db8d16a7a39c9c8f
2017-08-13 18:27:21 +00:00
Sameer Agarwal 19333b0f55 Update version history & installation.rst
Update docs in preparation for 1.13.0.

Change-Id: I3d66f4094fe83c7d29b3ea4003c00ee158c6f9ac
2017-08-03 00:09:36 -07:00
Sameer Agarwal d1e954d246 Minor changes to the documentation.
1. Section title changes.
2. Moving the glog discussion into installation.rst
3. Re-working the faqs into two separate chapters.

Change-Id: I95dd25bace50f0f9077ef114504999190686963e
2016-11-27 15:12:11 -08:00