From 79397c21138f54fcff6ec067b44b847f1f7e0e98 Mon Sep 17 00:00:00 2001 From: Carlos Hernandez Date: Thu, 7 Aug 2014 17:51:38 -0700 Subject: Update ceres to the latest version in g3 Please pay special attention to the changes in Android.mk. They are the only real changes I had to make. Bug: 16953678 Change-Id: I44a644358e779aaff99a2ea822387fe49ac26888 --- docs/source/_templates/layout.html | 13 + docs/source/_themes/armstrong/LICENSE | 26 - docs/source/_themes/armstrong/globaltoc.html | 11 - docs/source/_themes/armstrong/layout.html | 80 --- docs/source/_themes/armstrong/rtd-themes.conf | 65 -- docs/source/_themes/armstrong/static/rtd.css_t | 781 --------------------- docs/source/_themes/armstrong/theme.conf | 65 -- docs/source/acknowledgements.rst | 25 - docs/source/bibliography.rst | 10 +- docs/source/building.rst | 603 +++++++++++----- docs/source/conf.py | 12 +- docs/source/contributing.rst | 22 +- docs/source/faqs.rst | 282 ++++++++ docs/source/features.rst | 92 +++ docs/source/history.rst | 27 + docs/source/index.rst | 84 ++- docs/source/introduction.rst | 81 --- docs/source/license.rst | 2 +- docs/source/modeling.rst | 323 ++++++--- docs/source/reading.rst | 10 - docs/source/solving.rst | 908 ++++++++++++++++--------- docs/source/tutorial.rst | 179 +++-- docs/source/version_history.rst | 221 +++++- 23 files changed, 2062 insertions(+), 1860 deletions(-) create mode 100644 docs/source/_templates/layout.html delete mode 100644 docs/source/_themes/armstrong/LICENSE delete mode 100644 docs/source/_themes/armstrong/globaltoc.html delete mode 100644 docs/source/_themes/armstrong/layout.html delete mode 100644 docs/source/_themes/armstrong/rtd-themes.conf delete mode 100644 docs/source/_themes/armstrong/static/rtd.css_t delete mode 100644 docs/source/_themes/armstrong/theme.conf delete mode 100644 docs/source/acknowledgements.rst create mode 100644 docs/source/faqs.rst create mode 100644 docs/source/features.rst create mode 100644 docs/source/history.rst delete mode 100644 docs/source/introduction.rst delete mode 100644 docs/source/reading.rst (limited to 'docs/source') diff --git a/docs/source/_templates/layout.html b/docs/source/_templates/layout.html new file mode 100644 index 0000000..61c8eb5 --- /dev/null +++ b/docs/source/_templates/layout.html @@ -0,0 +1,13 @@ +{% extends "!layout.html" %} + +{% block footer %} +{{ super() }} + +{% endblock %} diff --git a/docs/source/_themes/armstrong/LICENSE b/docs/source/_themes/armstrong/LICENSE deleted file mode 100644 index 894aa01..0000000 --- a/docs/source/_themes/armstrong/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2011 Bay Citizen & Texas Tribune - -Original ReadTheDocs.org code -Copyright (c) 2010 Charles Leifer, Eric Holscher, Bobby Grace - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - diff --git a/docs/source/_themes/armstrong/globaltoc.html b/docs/source/_themes/armstrong/globaltoc.html deleted file mode 100644 index 20d8641..0000000 --- a/docs/source/_themes/armstrong/globaltoc.html +++ /dev/null @@ -1,11 +0,0 @@ -{# - basic/globaltoc.html - ~~~~~~~~~~~~~~~~~~~~ - - Sphinx sidebar template: global table of contents. - - :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. - :license: BSD, see LICENSE for details. -#} -

{{ _('Ceres Solver') }}

-{{ toctree() }} diff --git a/docs/source/_themes/armstrong/layout.html b/docs/source/_themes/armstrong/layout.html deleted file mode 100644 index 3faa34c..0000000 --- a/docs/source/_themes/armstrong/layout.html +++ /dev/null @@ -1,80 +0,0 @@ -{% extends "basic/layout.html" %} - -{% set script_files = script_files + [pathto("_static/searchtools.js", 1)] %} - -{% block htmltitle %} -{{ super() }} - - - -{% endblock %} - - -{%- macro sidebar() %} - {%- if render_sidebar %} -
-
- {%- block sidebarlogo %} - {%- if logo %} - - {%- endif %} - {%- endblock %} - {%- if sidebars != None %} - {#- new style sidebar: explicitly include/exclude templates #} - {%- for sidebartemplate in sidebars %} - {%- include sidebartemplate %} - {%- endfor %} - {%- else %} - {#- old style sidebars: using blocks -- should be deprecated #} - {%- block sidebartoc %} - {%- include "globaltoc.html" %} - {%- endblock %} - {%- block sidebarsourcelink %} - {%- include "sourcelink.html" %} - {%- endblock %} - {%- if customsidebar %} - {%- include customsidebar %} - {%- endif %} - {%- block sidebarsearch %} - {%- include "searchbox.html" %} - {%- endblock %} - {%- endif %} -
-
- {%- endif %} -{%- endmacro %} - - -{% block footer %} - - - -{% if theme_analytics_code %} - - -{% endif %} - -{% endblock %} diff --git a/docs/source/_themes/armstrong/rtd-themes.conf b/docs/source/_themes/armstrong/rtd-themes.conf deleted file mode 100644 index 5930488..0000000 --- a/docs/source/_themes/armstrong/rtd-themes.conf +++ /dev/null @@ -1,65 +0,0 @@ -[theme] -inherit = default -stylesheet = rtd.css -pygment_style = default -show_sphinx = False - -[options] -show_rtd = True - -white = #ffffff -almost_white = #f8f8f8 -barely_white = #f2f2f2 -dirty_white = #eeeeee -almost_dirty_white = #e6e6e6 -dirtier_white = #dddddd -lighter_gray = #cccccc -gray_a = #aaaaaa -gray_9 = #999999 -light_gray = #888888 -gray_7 = #777777 -gray = #666666 -dark_gray = #444444 -gray_2 = #222222 -black = #111111 -light_color = #e8ecef -light_medium_color = #DDEAF0 -medium_color = #8ca1af -medium_color_link = #86989b -medium_color_link_hover = #a6b8bb -dark_color = #465158 - -h1 = #000000 -h2 = #465158 -h3 = #6c818f - -link_color = #444444 -link_color_decoration = #CCCCCC - -medium_color_hover = #697983 -green_highlight = #8ecc4c - - -positive_dark = #609060 -positive_medium = #70a070 -positive_light = #e9ffe9 - -negative_dark = #900000 -negative_medium = #b04040 -negative_light = #ffe9e9 -negative_text = #c60f0f - -ruler = #abc - -viewcode_bg = #f4debf -viewcode_border = #ac9 - -highlight = #ffe080 - -code_background = #eeeeee - -background = #465158 -background_link = #ffffff -background_link_half = #ffffff -background_text = #eeeeee -background_text_link = #86989b diff --git a/docs/source/_themes/armstrong/static/rtd.css_t b/docs/source/_themes/armstrong/static/rtd.css_t deleted file mode 100644 index 90354c3..0000000 --- a/docs/source/_themes/armstrong/static/rtd.css_t +++ /dev/null @@ -1,781 +0,0 @@ -/* - * rtd.css - * ~~~~~~~~~~~~~~~ - * - * Sphinx stylesheet -- sphinxdoc theme. Originally created by - * Armin Ronacher for Werkzeug. - * - * Customized for ReadTheDocs by Eric Pierce & Eric Holscher - * - * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* RTD colors - * light blue: {{ theme_light_color }} - * medium blue: {{ theme_medium_color }} - * dark blue: {{ theme_dark_color }} - * dark grey: {{ theme_grey_color }} - * - * medium blue hover: {{ theme_medium_color_hover }}; - * green highlight: {{ theme_green_highlight }} - * light blue (project bar): {{ theme_light_color }} - */ - -@import url("basic.css"); - -/* PAGE LAYOUT -------------------------------------------------------------- */ - -body { - font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; - text-align: center; - color: black; - background-color: {{ theme_background }}; - padding: 0; - margin: 0; -} - -div.document { - text-align: left; - background-color: {{ theme_light_color }}; -} - -div.bodywrapper { - background-color: {{ theme_white }}; - border-left: 1px solid {{ theme_lighter_gray }}; - border-bottom: 1px solid {{ theme_lighter_gray }}; - margin: 0 0 0 16em; -} - -div.body { - margin: 0; - padding: 0.5em 1.3em; - max-width: 55em; - min-width: 20em; -} - -div.related { - font-size: 1em; - background-color: {{ theme_background }}; -} - -div.documentwrapper { - float: left; - width: 100%; - background-color: {{ theme_light_color }}; -} - - -/* HEADINGS --------------------------------------------------------------- */ - -h1 { - margin: 0; - padding: 0.7em 0 0.3em 0; - font-size: 1.5em; - line-height: 1.15; - color: {{ theme_h1 }}; - clear: both; -} - -h2 { - margin: 2em 0 0.2em 0; - font-size: 1.35em; - padding: 0; - color: {{ theme_h2 }}; -} - -h3 { - margin: 1em 0 -0.3em 0; - font-size: 1.2em; - color: {{ theme_h3 }}; -} - -div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { - color: black; -} - -h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { - display: none; - margin: 0 0 0 0.3em; - padding: 0 0.2em 0 0.2em; - color: {{ theme_gray_a }} !important; -} - -h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, -h5:hover a.anchor, h6:hover a.anchor { - display: inline; -} - -h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, -h5 a.anchor:hover, h6 a.anchor:hover { - color: {{ theme_gray_7 }}; - background-color: {{ theme_dirty_white }}; -} - - -/* LINKS ------------------------------------------------------------------ */ - -/* Normal links get a pseudo-underline */ -a { - color: {{ theme_link_color }}; - text-decoration: none; - border-bottom: 1px solid {{ theme_link_color_decoration }}; -} - -/* Links in sidebar, TOC, index trees and tables have no underline */ -.sphinxsidebar a, -.toctree-wrapper a, -.indextable a, -#indices-and-tables a { - color: {{ theme_dark_gray }}; - text-decoration: none; - border-bottom: none; -} - -/* Most links get an underline-effect when hovered */ -a:hover, -div.toctree-wrapper a:hover, -.indextable a:hover, -#indices-and-tables a:hover { - color: {{ theme_black }}; - text-decoration: none; - border-bottom: 1px solid {{ theme_black }}; -} - -/* Footer links */ -div.footer a { - color: {{ theme_background_text_link }}; - text-decoration: none; - border: none; -} -div.footer a:hover { - color: {{ theme_medium_color_link_hover }}; - text-decoration: underline; - border: none; -} - -/* Permalink anchor (subtle grey with a red hover) */ -div.body a.headerlink { - color: {{ theme_lighter_gray }}; - font-size: 1em; - margin-left: 6px; - padding: 0 4px 0 4px; - text-decoration: none; - border: none; -} -div.body a.headerlink:hover { - color: {{ theme_negative_text }}; - border: none; -} - - -/* NAVIGATION BAR --------------------------------------------------------- */ - -div.related ul { - height: 2.5em; -} - -div.related ul li { - margin: 0; - padding: 0.65em 0; - float: left; - display: block; - color: {{ theme_background_link_half }}; /* For the >> separators */ - font-size: 0.8em; -} - -div.related ul li.right { - float: right; - margin-right: 5px; - color: transparent; /* Hide the | separators */ -} - -/* "Breadcrumb" links in nav bar */ -div.related ul li a { - order: none; - background-color: inherit; - font-weight: bold; - margin: 6px 0 6px 4px; - line-height: 1.75em; - color: {{ theme_background_link }}; - text-shadow: 0 1px rgba(0, 0, 0, 0.5); - padding: 0.4em 0.8em; - border: none; - border-radius: 3px; -} -/* previous / next / modules / index links look more like buttons */ -div.related ul li.right a { - margin: 0.375em 0; - background-color: {{ theme_medium_color_hover }}; - text-shadow: 0 1px rgba(0, 0, 0, 0.5); - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; -} -/* All navbar links light up as buttons when hovered */ -div.related ul li a:hover { - background-color: {{ theme_medium_color }}; - color: {{ theme_white }}; - text-decoration: none; - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; -} -/* Take extra precautions for tt within links */ -a tt, -div.related ul li a tt { - background: inherit !important; - color: inherit !important; -} - - -/* SIDEBAR ---------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 0; -} - -div.sphinxsidebar { - margin: 0; - margin-left: -100%; - float: left; - top: 3em; - left: 0; - padding: 0 1em; - width: 14em; - font-size: 1em; - text-align: left; - background-color: {{ theme_light_color }}; -} - -div.sphinxsidebar img { - max-width: 12em; -} - -div.sphinxsidebar h3, div.sphinxsidebar h4 { - margin: 1.2em 0 0.3em 0; - font-size: 1em; - padding: 0; - color: {{ theme_gray_2 }}; - font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; -} - -div.sphinxsidebar h3 a { - color: {{ theme_grey_color }}; -} - -div.sphinxsidebar ul, -div.sphinxsidebar p { - margin-top: 0; - padding-left: 0; - line-height: 130%; - background-color: {{ theme_light_color }}; -} - -/* No bullets for nested lists, but a little extra indentation */ -div.sphinxsidebar ul ul { - list-style-type: none; - margin-left: 1.5em; - padding: 0; -} - -/* A little top/bottom padding to prevent adjacent links' borders - * from overlapping each other */ -div.sphinxsidebar ul li { - padding: 1px 0; -} - -/* A little left-padding to make these align with the ULs */ -div.sphinxsidebar p.topless { - padding-left: 0 0 0 1em; -} - -/* Make these into hidden one-liners */ -div.sphinxsidebar ul li, -div.sphinxsidebar p.topless { - white-space: nowrap; - overflow: hidden; -} -/* ...which become visible when hovered */ -div.sphinxsidebar ul li:hover, -div.sphinxsidebar p.topless:hover { - overflow: visible; -} - -/* Search text box and "Go" button */ -#searchbox { - margin-top: 2em; - margin-bottom: 1em; - background: {{ theme_dirtier_white }}; - padding: 0.5em; - border-radius: 6px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; -} -#searchbox h3 { - margin-top: 0; -} - -/* Make search box and button abut and have a border */ -input, -div.sphinxsidebar input { - border: 1px solid {{ theme_gray_9 }}; - float: left; -} - -/* Search textbox */ -input[type="text"] { - margin: 0; - padding: 0 3px; - height: 20px; - width: 144px; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; -} -/* Search button */ -input[type="submit"] { - margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ - height: 22px; - color: {{ theme_dark_gray }}; - background-color: {{ theme_light_color }}; - padding: 1px 4px; - font-weight: bold; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; -} -input[type="submit"]:hover { - color: {{ theme_white }}; - background-color: {{ theme_green_highlight }}; -} - -div.sphinxsidebar p.searchtip { - clear: both; - padding: 0.5em 0 0 0; - background: {{ theme_dirtier_white }}; - color: {{ theme_gray }}; - font-size: 0.9em; -} - -/* Sidebar links are unusual */ -div.sphinxsidebar li a, -div.sphinxsidebar p a { - background: {{ theme_light_color }}; /* In case links overlap main content */ - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border: 1px solid transparent; /* To prevent things jumping around on hover */ - padding: 0 5px 0 5px; -} -div.sphinxsidebar li a:hover, -div.sphinxsidebar p a:hover { - color: {{ theme_black }}; - text-decoration: none; - border: 1px solid {{ theme_light_gray }}; -} - -/* Tweak any link appearing in a heading */ -div.sphinxsidebar h3 a { -} - - - - -/* OTHER STUFF ------------------------------------------------------------ */ - -cite, code, tt { - font-family: 'Consolas', 'Deja Vu Sans Mono', - 'Bitstream Vera Sans Mono', monospace; - font-size: 0.95em; - letter-spacing: 0.01em; -} - -tt { - background-color: {{ theme_code_background }}; - color: {{ theme_dark_gray }}; -} - -tt.descname, tt.descclassname, tt.xref { - border: 0; -} - -hr { - border: 1px solid {{ theme_ruler }}; - margin: 2em; -} - -pre, #_fontwidthtest { - font-family: 'Consolas', 'Deja Vu Sans Mono', - 'Bitstream Vera Sans Mono', monospace; - margin: 1em 2em; - font-size: 0.95em; - letter-spacing: 0.015em; - line-height: 120%; - padding: 0.5em; - border: 1px solid {{ theme_lighter_gray }}; - background-color: {{ theme_code_background }}; - border-radius: 6px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; -} - -pre a { - color: inherit; - text-decoration: underline; -} - -td.linenos pre { - padding: 0.5em 0; -} - -div.quotebar { - background-color: {{ theme_almost_white }}; - max-width: 250px; - float: right; - padding: 2px 7px; - border: 1px solid {{ theme_lighter_gray }}; -} - -div.topic { - background-color: {{ theme_almost_white }}; -} - -table { - border-collapse: collapse; - margin: 0 -0.5em 0 -0.5em; -} - -table td, table th { - padding: 0.2em 0.5em 0.2em 0.5em; -} - - -/* ADMONITIONS AND WARNINGS ------------------------------------------------- */ - -/* Shared by admonitions, warnings and sidebars */ -div.admonition, -div.warning, -div.sidebar { - font-size: 0.9em; - margin: 2em; - padding: 0; - /* - border-radius: 6px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - */ -} -div.admonition p, -div.warning p, -div.sidebar p { - margin: 0.5em 1em 0.5em 1em; - padding: 0; -} -div.admonition pre, -div.warning pre, -div.sidebar pre { - margin: 0.4em 1em 0.4em 1em; -} -div.admonition p.admonition-title, -div.warning p.admonition-title, -div.sidebar p.sidebar-title { - margin: 0; - padding: 0.1em 0 0.1em 0.5em; - color: white; - font-weight: bold; - font-size: 1.1em; - text-shadow: 0 1px rgba(0, 0, 0, 0.5); -} -div.admonition ul, div.admonition ol, -div.warning ul, div.warning ol, -div.sidebar ul, div.sidebar ol { - margin: 0.1em 0.5em 0.5em 3em; - padding: 0; -} - - -/* Admonitions and sidebars only */ -div.admonition, div.sidebar { - border: 1px solid {{ theme_positive_dark }}; - background-color: {{ theme_positive_light }}; -} -div.admonition p.admonition-title, -div.sidebar p.sidebar-title { - background-color: {{ theme_positive_medium }}; - border-bottom: 1px solid {{ theme_positive_dark }}; -} - - -/* Warnings only */ -div.warning { - border: 1px solid {{ theme_negative_dark }}; - background-color: {{ theme_negative_light }}; -} -div.warning p.admonition-title { - background-color: {{ theme_negative_medium }}; - border-bottom: 1px solid {{ theme_negative_dark }}; -} - - -/* Sidebars only */ -div.sidebar { - max-width: 200px; -} - - - -div.versioninfo { - margin: 1em 0 0 0; - border: 1px solid {{ theme_lighter_gray }}; - background-color: {{ theme_light_medium_color }}; - padding: 8px; - line-height: 1.3em; - font-size: 0.9em; -} - -.viewcode-back { - font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', - 'Verdana', sans-serif; -} - -div.viewcode-block:target { - background-color: {{ theme_viewcode_bg }}; - border-top: 1px solid {{ theme_viewcode_border }}; - border-bottom: 1px solid {{ theme_viewcode_border }}; -} - -dl { - margin: 1em 0 2.5em 0; -} - -/* Highlight target when you click an internal link */ -dt:target { - background: {{ theme_highlight }}; -} -/* Don't highlight whole divs */ -div.highlight { - background: transparent; -} -/* But do highlight spans (so search results can be highlighted) */ -span.highlight { - background: {{ theme_highlight }}; -} - -div.footer { - background-color: {{ theme_background }}; - color: {{ theme_background_text }}; - padding: 0 2em 2em 2em; - clear: both; - font-size: 0.8em; - text-align: center; -} - -p { - margin: 0.8em 0 0.5em 0; -} - -.section p img { - margin: 1em 2em; -} - - -/* MOBILE LAYOUT -------------------------------------------------------------- */ - -@media screen and (max-width: 600px) { - - h1, h2, h3, h4, h5 { - position: relative; - } - - ul { - padding-left: 1.75em; - } - - div.bodywrapper a.headerlink, #indices-and-tables h1 a { - color: {{ theme_almost_dirty_white }}; - font-size: 80%; - float: right; - line-height: 1.8; - position: absolute; - right: -0.7em; - visibility: inherit; - } - - div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { - line-height: 1.5; - } - - pre { - font-size: 0.7em; - overflow: auto; - word-wrap: break-word; - white-space: pre-wrap; - } - - div.related ul { - height: 2.5em; - padding: 0; - text-align: left; - } - - div.related ul li { - clear: both; - color: {{ theme_dark_color }}; - padding: 0.2em 0; - } - - div.related ul li:last-child { - border-bottom: 1px dotted {{ theme_medium_color }}; - padding-bottom: 0.4em; - margin-bottom: 1em; - width: 100%; - } - - div.related ul li a { - color: {{ theme_dark_color }}; - padding-right: 0; - } - - div.related ul li a:hover { - background: inherit; - color: inherit; - } - - div.related ul li.right { - clear: none; - padding: 0.65em 0; - margin-bottom: 0.5em; - } - - div.related ul li.right a { - color: {{ theme_white }}; - padding-right: 0.8em; - } - - div.related ul li.right a:hover { - background-color: {{ theme_medium_color }}; - } - - div.body { - clear: both; - min-width: 0; - word-wrap: break-word; - } - - div.bodywrapper { - margin: 0 0 0 0; - } - - div.sphinxsidebar { - float: none; - margin: 0; - width: auto; - } - - div.sphinxsidebar input[type="text"] { - height: 2em; - line-height: 2em; - width: 70%; - } - - div.sphinxsidebar input[type="submit"] { - height: 2em; - margin-left: 0.5em; - width: 20%; - } - - div.sphinxsidebar p.searchtip { - background: inherit; - margin-bottom: 1em; - } - - div.sphinxsidebar ul li, div.sphinxsidebar p.topless { - white-space: normal; - } - - .bodywrapper img { - display: block; - margin-left: auto; - margin-right: auto; - max-width: 100%; - } - - div.documentwrapper { - float: none; - } - - div.admonition, div.warning, pre, blockquote { - margin-left: 0em; - margin-right: 0em; - } - - .body p img { - margin: 0; - } - - #searchbox { - background: transparent; - } - - .related:not(:first-child) li { - display: none; - } - - .related:not(:first-child) li.right { - display: block; - } - - div.footer { - padding: 1em; - } - - .rtd_doc_footer .badge { - float: none; - margin: 1em auto; - position: static; - } - - .rtd_doc_footer .badge.revsys-inline { - margin-right: auto; - margin-bottom: 2em; - } - - table.indextable { - display: block; - width: auto; - } - - .indextable tr { - display: block; - } - - .indextable td { - display: block; - padding: 0; - width: auto !important; - } - - .indextable td dt { - margin: 1em 0; - } - - ul.search { - margin-left: 0.25em; - } - - ul.search li div.context { - font-size: 90%; - line-height: 1.1; - margin-bottom: 1; - margin-left: 0; - } - -} diff --git a/docs/source/_themes/armstrong/theme.conf b/docs/source/_themes/armstrong/theme.conf deleted file mode 100644 index 5930488..0000000 --- a/docs/source/_themes/armstrong/theme.conf +++ /dev/null @@ -1,65 +0,0 @@ -[theme] -inherit = default -stylesheet = rtd.css -pygment_style = default -show_sphinx = False - -[options] -show_rtd = True - -white = #ffffff -almost_white = #f8f8f8 -barely_white = #f2f2f2 -dirty_white = #eeeeee -almost_dirty_white = #e6e6e6 -dirtier_white = #dddddd -lighter_gray = #cccccc -gray_a = #aaaaaa -gray_9 = #999999 -light_gray = #888888 -gray_7 = #777777 -gray = #666666 -dark_gray = #444444 -gray_2 = #222222 -black = #111111 -light_color = #e8ecef -light_medium_color = #DDEAF0 -medium_color = #8ca1af -medium_color_link = #86989b -medium_color_link_hover = #a6b8bb -dark_color = #465158 - -h1 = #000000 -h2 = #465158 -h3 = #6c818f - -link_color = #444444 -link_color_decoration = #CCCCCC - -medium_color_hover = #697983 -green_highlight = #8ecc4c - - -positive_dark = #609060 -positive_medium = #70a070 -positive_light = #e9ffe9 - -negative_dark = #900000 -negative_medium = #b04040 -negative_light = #ffe9e9 -negative_text = #c60f0f - -ruler = #abc - -viewcode_bg = #f4debf -viewcode_border = #ac9 - -highlight = #ffe080 - -code_background = #eeeeee - -background = #465158 -background_link = #ffffff -background_link_half = #ffffff -background_text = #eeeeee -background_text_link = #86989b diff --git a/docs/source/acknowledgements.rst b/docs/source/acknowledgements.rst deleted file mode 100644 index 36c1562..0000000 --- a/docs/source/acknowledgements.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _chapter-acknowledgements: - -================ -Acknowledgements -================ - -A number of people have helped with the development and open sourcing -of Ceres. - -Fredrik Schaffalitzky when he was at Google started the development of -Ceres, and even though much has changed since then, many of the ideas -from his original design are still present in the current code. - -Amongst Ceres' users at Google two deserve special mention: William -Rucklidge and James Roseborough. William was the first user of -Ceres. He bravely took on the task of porting production code to an -as-yet unproven optimization library, reporting bugs and helping fix -them along the way. James is perhaps the most sophisticated user of -Ceres at Google. He has reported and fixed bugs and helped evolve the -API for the better. - -Since the initial release of Ceres, a number of people have -contributed to Ceres by porting it to new platforms, reporting bugs, -fixing bugs and adding new functionality. We acknowledge all of these -contributions in the :ref:`chapter-version-history`. diff --git a/docs/source/bibliography.rst b/docs/source/bibliography.rst index 7ba435a..bd99758 100644 --- a/docs/source/bibliography.rst +++ b/docs/source/bibliography.rst @@ -48,6 +48,12 @@ Bibliography preconditioning for bundle adjustment**, *In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition*, 2012. +.. [Kanzow] C. Kanzow, N. Yamashita and M. Fukushima, + **Levenberg–Marquardt methods with strong local convergence + properties for solving nonlinear equations with convex + constraints**, *Journal of Computational and Applied Mathematics*, + 177(2):375–397, 2005. + .. [Levenberg] K. Levenberg, **A method for the solution of certain nonlinear problems in least squares**, *Quart. Appl. Math*, 2(2):164–168, 1944. @@ -113,7 +119,3 @@ Bibliography Levenberg Marquardt Method for Large Sparse Nonlinear Least Squares**, *Journal of the Australian Mathematical Society Series B*, 26(4):387–403, 1985. - - - - diff --git a/docs/source/building.rst b/docs/source/building.rst index c326fd1..4860b0d 100644 --- a/docs/source/building.rst +++ b/docs/source/building.rst @@ -1,13 +1,20 @@ .. _chapter-building: -===================== -Building Ceres Solver -===================== +======================= +Building & Installation +======================= + +Getting the source code +======================= +.. _section-source: + +You can start with the `latest stable release +`_ . Or if you want +the latest version, you can clone the git repository + +.. code-block:: bash -Stable Ceres Solver releases are available for download at -`code.google.com `_. For the -more adventurous, the git repository is hosted on `Gerrit -`_. + git clone https://ceres-solver.googlesource.com/ceres-solver .. _section-dependencies: @@ -18,53 +25,88 @@ Ceres relies on a number of open source libraries, some of which are optional. For details on customizing the build process, see :ref:`section-customizing` . -1. `CMake `_ is a cross platform build -system. Ceres needs a relatively recent version of CMake (version -2.8.0 or better). - -2. `eigen3 `_ is -used for doing all the low level matrix and linear algebra operations. - -3. `google-glog `_ is -used for error checking and logging. Ceres needs glog version 0.3.1 or -later. Version 0.3 (which ships with Fedora 16) has a namespace bug -which prevents Ceres from building. - -4. `gflags `_ is a library for -processing command line flags. It is used by some of the examples and -tests. While it is not strictly necessary to build the library, we -strongly recommend building the library with gflags. - - -5. `SuiteSparse -`_ is used for -sparse matrix analysis, ordering and factorization. In particular -Ceres uses the AMD, CAMD, COLAMD and CHOLMOD libraries. This is an optional -dependency. - -6. `CXSparse `_ is -a sparse matrix library similar in scope to ``SuiteSparse`` but with -no dependencies on ``LAPACK`` and ``BLAS``. This makes for a simpler -build process and a smaller binary. The simplicity comes at a cost -- -for all but the most trivial matrices, ``SuiteSparse`` is -significantly faster than ``CXSparse``. - -7. `BLAS `_ and `LAPACK -`_ routines are needed by -SuiteSparse. We recommend `ATLAS -`_, which includes BLAS and LAPACK -routines. It is also possible to use `OpenBLAS -`_ . However, one needs to be -careful to `turn off the threading -`_ -inside ``OpenBLAS`` as it conflicts with use of threads in Ceres. +- `Eigen `_ + 3.2.1 or later. **Required** + + .. NOTE :: + + Ceres can also use Eigen as a sparse linear algebra + library. Please see the documentation for ``-DEIGENSPARSE`` for + more details. + +- `CMake `_ 2.8.0 or later. + **Required on all platforms except for Android.** + +- `Google Log `_ 0.3.1 or + later. **Recommended** + + .. NOTE:: + + Ceres has a minimal replacement of ``glog`` called ``miniglog`` + that can be enabled with the ``MINIGLOG`` build + option. ``miniglog`` is needed on Android as ``glog`` currently + does not build using the NDK. It can however be used on other + platforms too. + + **We do not advise using** ``miniglog`` **on platforms other than + Android due to the various performance and functionality + compromises in** ``miniglog``. + +- `Google Flags `_. Needed to build + examples and tests. + +- `SuiteSparse + `_. Needed for + solving large sparse linear systems. **Optional; strongly recomended + for large scale bundle adjustment** + +- `CXSparse `_. + Similar to ``SuiteSparse`` but simpler and slower. CXSparse has + no dependencies on ``LAPACK`` and ``BLAS``. This makes for a simpler + build process and a smaller binary. **Optional** + +- `BLAS `_ and `LAPACK + `_ routines are needed by + ``SuiteSparse``, and optionally used by Ceres directly for some + operations. + + On ``UNIX`` OSes other than Mac OS X we recommend `ATLAS + `_, which includes ``BLAS`` and + ``LAPACK`` routines. It is also possible to use `OpenBLAS + `_ . However, one needs to be + careful to `turn off the threading + `_ + inside ``OpenBLAS`` as it conflicts with use of threads in Ceres. + + MAC OS X ships with an optimized ``LAPACK`` and ``BLAS`` + implementation as part of the ``Accelerate`` framework. The Ceres + build system will automatically detect and use it. + + For Windows things are much more complicated. `LAPACK For + Windows `_ + has detailed instructions.. + + **Optional but required for** ``SuiteSparse``. .. _section-linux: -Building on Linux -================= -We will use `Ubuntu `_ as our example -platform. Start by installing all the dependencies. +Linux +===== + +We will use `Ubuntu `_ as our example linux +distribution. + +.. NOTE:: + + Up to at least Ubuntu 13.10, the SuiteSparse package in the official + package repository (built from SuiteSparse v3.4.0) **cannot** be used + to build Ceres as a *shared* library. Thus if you want to build + Ceres as a shared library using SuiteSparse, you must perform a + source install of SuiteSparse. It is recommended that you use the + current version of SuiteSparse (4.2.1 at the time of writing). + + +Start by installing all the dependencies. .. code-block:: bash @@ -86,19 +128,26 @@ platform. Start by installing all the dependencies. sudo apt-get install libatlas-base-dev # Eigen3 sudo apt-get install libeigen3-dev - # SuiteSparse and CXSparse + # SuiteSparse and CXSparse (optional) + # - If you want to build Ceres as a *static* library (the default) + # you can use the SuiteSparse package in the main Ubuntu package + # repository: sudo apt-get install libsuitesparse-dev + # - However, if you want to build Ceres as a *shared* library, you must + # perform a source install of SuiteSparse (and uninstall the Ubuntu + # package if it is currently installed. -We are now ready to build and test Ceres. +We are now ready to build, test, and install Ceres. .. code-block:: bash - tar zxf ceres-solver-1.7.0.tar.gz + tar zxf ceres-solver-1.9.0.tar.gz mkdir ceres-bin cd ceres-bin - cmake ../ceres-solver-1.7.0 + cmake ../ceres-solver-1.9.0 make -j3 make test + make install You can also try running the command line bundling application with one of the included problems, which comes from the University of Washington's BAL @@ -106,7 +155,7 @@ dataset [Agarwal]_. .. code-block:: bash - bin/simple_bundle_adjuster ../ceres-solver-1.7.0/data/problem-16-22106-pre.txt + bin/simple_bundle_adjuster ../ceres-solver-1.9.0/data/problem-16-22106-pre.txt This runs Ceres for a maximum of 10 iterations using the ``DENSE_SCHUR`` linear solver. The output should look something like @@ -114,63 +163,87 @@ this. .. code-block:: bash - 0: f: 4.185660e+06 d: 0.00e+00 g: 1.09e+08 h: 0.00e+00 rho: 0.00e+00 mu: 1.00e+04 li: 0 it: 1.16e-01 tt: 3.39e-01 - 1: f: 1.062590e+05 d: 4.08e+06 g: 8.99e+06 h: 5.36e+02 rho: 9.82e-01 mu: 3.00e+04 li: 1 it: 3.90e-01 tt: 7.29e-01 - 2: f: 4.992817e+04 d: 5.63e+04 g: 8.32e+06 h: 3.19e+02 rho: 6.52e-01 mu: 3.09e+04 li: 1 it: 3.52e-01 tt: 1.08e+00 - 3: f: 1.899774e+04 d: 3.09e+04 g: 1.60e+06 h: 1.24e+02 rho: 9.77e-01 mu: 9.26e+04 li: 1 it: 3.60e-01 tt: 1.44e+00 - 4: f: 1.808729e+04 d: 9.10e+02 g: 3.97e+05 h: 6.39e+01 rho: 9.51e-01 mu: 2.78e+05 li: 1 it: 3.62e-01 tt: 1.80e+00 - 5: f: 1.803399e+04 d: 5.33e+01 g: 1.48e+04 h: 1.23e+01 rho: 9.99e-01 mu: 8.33e+05 li: 1 it: 3.54e-01 tt: 2.16e+00 - 6: f: 1.803390e+04 d: 9.02e-02 g: 6.35e+01 h: 8.00e-01 rho: 1.00e+00 mu: 2.50e+06 li: 1 it: 3.59e-01 tt: 2.52e+00 - - Ceres Solver Report - ------------------- - Original Reduced - Parameter blocks 22122 22122 - Parameters 66462 66462 - Residual blocks 83718 83718 - Residual 167436 167436 - Trust Region Strategy LEVENBERG_MARQUARDT - - Given Used - Linear solver DENSE_SCHUR DENSE_SCHUR - Preconditioner N/A N/A - Threads: 1 1 - Linear solver threads 1 1 - Linear solver ordering AUTOMATIC 22106,16 - - Cost: - Initial 4.185660e+06 - Final 1.803390e+04 - Change 4.167626e+06 - - Number of iterations: - Successful 6 - Unsuccessful 0 - Total 6 - - Time (in seconds): - Preprocessor 2.229e-01 - - Evaluator::Residuals 7.438e-02 - Evaluator::Jacobians 6.790e-01 - Linear Solver 1.681e+00 - Minimizer 2.547e+00 - - Postprocessor 1.920e-02 - Total 2.823e+00 - - Termination: FUNCTION_TOLERANCE + iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time + 0 4.185660e+06 0.00e+00 1.09e+08 0.00e+00 0.00e+00 1.00e+04 0 7.59e-02 3.37e-01 + 1 1.062590e+05 4.08e+06 8.99e+06 5.36e+02 9.82e-01 3.00e+04 1 1.65e-01 5.03e-01 + 2 4.992817e+04 5.63e+04 8.32e+06 3.19e+02 6.52e-01 3.09e+04 1 1.45e-01 6.48e-01 + 3 1.899774e+04 3.09e+04 1.60e+06 1.24e+02 9.77e-01 9.26e+04 1 1.43e-01 7.92e-01 + 4 1.808729e+04 9.10e+02 3.97e+05 6.39e+01 9.51e-01 2.78e+05 1 1.45e-01 9.36e-01 + 5 1.803399e+04 5.33e+01 1.48e+04 1.23e+01 9.99e-01 8.33e+05 1 1.45e-01 1.08e+00 + 6 1.803390e+04 9.02e-02 6.35e+01 8.00e-01 1.00e+00 2.50e+06 1 1.50e-01 1.23e+00 + + Ceres Solver v1.10.0 Solve Report + ---------------------------------- + Original Reduced + Parameter blocks 22122 22122 + Parameters 66462 66462 + Residual blocks 83718 83718 + Residual 167436 167436 + + Minimizer TRUST_REGION + + Dense linear algebra library EIGEN + Trust region strategy LEVENBERG_MARQUARDT + + Given Used + Linear solver DENSE_SCHUR DENSE_SCHUR + Threads 1 1 + Linear solver threads 1 1 + Linear solver ordering AUTOMATIC 22106, 16 + + Cost: + Initial 4.185660e+06 + Final 1.803390e+04 + Change 4.167626e+06 + + Minimizer iterations 6 + Successful steps 6 + Unsuccessful steps 0 + + Time (in seconds): + Preprocessor 0.261 + + Residual evaluation 0.082 + Jacobian evaluation 0.412 + Linear solver 0.442 + Minimizer 1.051 + + Postprocessor 0.002 + Total 1.357 + + Termination: CONVERGENCE (Function tolerance reached. |cost_change|/cost: 1.769766e-09 <= 1.000000e-06) .. section-osx: -Building on Mac OS X -==================== +Mac OS X +======== +.. NOTE:: + + Ceres will not compile using Xcode 4.5.x (Clang version 4.1) due to a bug in that version of + Clang. If you are running Xcode 4.5.x, please update to Xcode >= 4.6.x before attempting to + build Ceres. + On OS X, we recommend using the `homebrew -`_ package manager to install the -dependencies. There is no need to install ``BLAS`` or ``LAPACK`` -separately as OS X ships with optimized ``BLAS`` and ``LAPACK`` -routines as part of the `vecLib +`_ package manager to install Ceres. + +.. code-block:: bash + + brew install ceres-solver + +will install the latest stable version along with all the required +dependencies and + +.. code-block:: bash + + brew install ceres-solver --HEAD + +will install the latest version in the git repo. + +You can also install each of the dependencies by hand using `homebrew +`_. There is no need to install +``BLAS`` or ``LAPACK`` separately as OS X ships with optimized +``BLAS`` and ``LAPACK`` routines as part of the `vecLib `_ framework. @@ -185,32 +258,51 @@ framework. # SuiteSparse and CXSparse brew install suite-sparse - -We are now ready to build and test Ceres. +We are now ready to build, test, and install Ceres. .. code-block:: bash - tar zxf ceres-solver-1.7.0.tar.gz + tar zxf ceres-solver-1.9.0.tar.gz mkdir ceres-bin cd ceres-bin - cmake ../ceres-solver-1.7.0 + cmake ../ceres-solver-1.9.0 make -j3 make test - + make install Like the Linux build, you should now be able to run ``bin/simple_bundle_adjuster``. .. _section-windows: -Building on Windows with Visual Studio -====================================== +Windows +======= On Windows, we support building with Visual Studio 2010 or newer. Note that the Windows port is less featureful and less tested than the -Linux or Mac OS X versions due to the unavailability of SuiteSparse -and ``CXSparse``. Building is also more involved since there is no -automated way to install the dependencies. +Linux or Mac OS X versions due to the lack of an officially supported +way of building SuiteSparse and CXSparse. There are however a number +of unofficial ways of building these libraries. Building on Windows +also a bit more involved since there is no automated way to install +dependencies. + +.. NOTE:: Using ``google-glog`` & ``miniglog`` with windows.h. + + The windows.h header if used with GDI (Graphics Device Interface) + defines ``ERROR``, which conflicts with the definition of ``ERROR`` + as a LogSeverity level in ``google-glog`` and ``miniglog``. There + are at least two possible fixes to this problem: + + #. Use ``google-glog`` and define ``GLOG_NO_ABBREVIATED_SEVERITIES`` + when building Ceres and your own project, as documented + `here `__. + Note that this fix will not work for ``miniglog``, + but use of ``miniglog`` is strongly discouraged on any platform for which + ``google-glog`` is available (which includes Windows). + #. If you do not require GDI, then define ``NOGDI`` **before** including + windows.h. This solution should work for both ``google-glog`` and + ``miniglog`` and is documented for ``google-glog`` + `here `__. #. Make a toplevel directory for deps & build & src somewhere: ``ceres/`` #. Get dependencies; unpack them as subdirectories in ``ceres/`` @@ -222,6 +314,18 @@ automated way to install the dependencies. #. ``google-glog`` Open up the Visual Studio solution and build it. #. ``gflags`` Open up the Visual Studio solution and build it. + #. (Experimental) ``SuiteSparse`` Previously SuiteSparse was not available + on Windows, recently it has become possible to build it on Windows using + the `suitesparse-metis-for-windows `_ + project. If you wish to use ``SuiteSparse``, follow their instructions + for obtaining and building it. + + #. (Experimental) ``CXSparse`` Previously CXSparse was not available on + Windows, there are now several ports that enable it to be, including: + `[1] `_ and + `[2] `_. If you wish to use + ``CXSparse``, follow their instructions for obtaining and building it. + #. Unpack the Ceres tarball into ``ceres``. For the tarball, you should get a directory inside ``ceres`` similar to ``ceres-solver-1.3.0``. Alternately, checkout Ceres via ``git`` to @@ -238,12 +342,22 @@ automated way to install the dependencies. #. Try running ``Configure``. It won't work. It'll show a bunch of options. You'll need to set: - #. ``GLOG_INCLUDE`` - #. ``GLOG_LIB`` - #. ``GFLAGS_LIB`` - #. ``GFLAGS_INCLUDE`` - - to the appropriate place where you unpacked/built them. + #. ``EIGEN_INCLUDE_DIR_HINTS`` + #. ``GLOG_INCLUDE_DIR_HINTS`` + #. ``GLOG_LIBRARY_DIR_HINTS`` + #. ``GFLAGS_INCLUDE_DIR_HINTS`` + #. ``GFLAGS_LIBRARY_DIR_HINTS`` + #. (Optional) ``SUITESPARSE_INCLUDE_DIR_HINTS`` + #. (Optional) ``SUITESPARSE_LIBRARY_DIR_HINTS`` + #. (Optional) ``CXSPARSE_INCLUDE_DIR_HINTS`` + #. (Optional) ``CXSPARSE_LIBRARY_DIR_HINTS`` + + to the appropriate directories where you unpacked/built them. If any of + the variables are not visible in the ``CMake`` GUI, create a new entry + for them. We recommend using the ``_(INCLUDE/LIBRARY)_DIR_HINTS`` + variables rather than setting the ``_INCLUDE_DIR`` & + ``_LIBRARY`` variables directly to keep all of the validity + checking, and to avoid having to specify the library files manually. #. You may have to tweak some more settings to generate a MSVC project. After each adjustment, try pressing Configure & Generate @@ -255,30 +369,66 @@ automated way to install the dependencies. To run the tests, select the ``RUN_TESTS`` target and hit **Build RUN_TESTS** from the build menu. -Like the Linux build, you should now be able to run ``bin/simple_bundle_adjuster``. +Like the Linux build, you should now be able to run +``bin/simple_bundle_adjuster``. Notes: #. The default build is Debug; consider switching it to release mode. #. Currently ``system_test`` is not working properly. -#. Building Ceres as a DLL is not supported; patches welcome. #. CMake puts the resulting test binaries in ``ceres-bin/examples/Debug`` by default. #. The solvers supported on Windows are ``DENSE_QR``, ``DENSE_SCHUR``, ``CGNR``, and ``ITERATIVE_SCHUR``. #. We're looking for someone to work with upstream ``SuiteSparse`` to port their build system to something sane like ``CMake``, and get a - supported Windows port. + fully supported Windows port. .. _section-android: -Building on Android -=================== +Android +======= +Download the ``Android NDK`` version ``r9d`` or later. Run +``ndk-build`` from inside the ``jni`` directory. Use the +``libceres.a`` that gets created. -Download the ``Android NDK``. Run ``ndk-build`` from inside the -``jni`` directory. Use the ``libceres.a`` that gets created. +.. _section-ios: + +iOS +=== + +.. NOTE:: + + You need iOS version 6.0 or higher to build Ceres Solver. + +To build Ceres for iOS, we need to force ``CMake`` to find the toolchains from +the iOS SDK instead of using the standard ones. For example: + +.. code-block:: bash + + cmake ../ceres-solver \ + -DCMAKE_TOOLCHAIN_FILE=../ceres-solver/cmake/iOS.cmake \ + -DEIGEN_INCLUDE_DIR=/path/to/eigen/header \ + -DIOS_PLATFORM= + +``PLATFORM`` can be one of ``OS``, ``SIMULATOR`` and ``SIMULATOR64``. You can +build for ``OS`` (``armv7``, ``armv7s``, ``arm64``), ``SIMULATOR`` (``i386``) or +``SIMULATOR64`` (``x86_64``) separately and use ``LIPO`` to merge them into +one static library. See ``cmake/iOS.cmake`` for more options. + +After building, you will get a ``libceres.a`` library, which you will need to +add to your Xcode project. + +The default CMake configuration builds a bare bones version of Ceres +Solver that only depends on Eigen (``MINIGLOG`` is compiled into Ceres if it is +used), this should be sufficient for solving small to moderate sized problems +(No ``SPARSE_SCHUR``, ``SPARSE_NORMAL_CHOLESKY`` linear solvers and no +``CLUSTER_JACOBI`` and ``CLUSTER_TRIDIAGONAL`` preconditioners). + +If you decide to use ``LAPACK`` and ``BLAS``, then you also need to add +``Accelerate.framework`` to your XCode project's linking dependency. .. _section-customizing: @@ -286,42 +436,147 @@ Customizing the build ===================== It is possible to reduce the libraries needed to build Ceres and -customize the build process by passing appropriate flags to -``CMake``. Use these flags only if you really know what you are doing. - -#. ``-DSUITESPARSE=OFF``: By default, Ceres will link to - ``SuiteSparse`` if all its dependencies are present. Use this flag - to build Ceres without ``SuiteSparse``. This will also disable - dependency checking for ``LAPACK`` and ``BLAS``. This will reduce - Ceres' dependencies down to ``Eigen``, ``gflags`` and - ``google-glog``. - -#. ``-DCXSPARSE=OFF``: By default, Ceres will link to ``CXSparse`` if - all its dependencies are present. Use this flag to builds Ceres - without ``CXSparse``. This will reduce Ceres' dependencies down to - ``Eigen``, ``gflags`` and ``google-glog``. - -#. ``-DGFLAGS=OFF``: Use this flag to build Ceres without +customize the build process by setting the appropriate options in +``CMake``. These options can either be set in the ``CMake`` GUI, +or via ``-D