aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoakim Soderberg <joakim.soderberg@gmail.com>2013-04-24 14:14:00 +0000
committerJoakim Soderberg <joakim.soderberg@gmail.com>2013-04-24 14:14:00 +0000
commit8390c90a913f6e9cbb29f3288214c5cad743f6c2 (patch)
treefb6c91228e310e06aebe2ee3a5f95ce79f845cbf
parent3000831365312f96c1b4bb6dd70a3f7de1028831 (diff)
downloadjansson-8390c90a913f6e9cbb29f3288214c5cad743f6c2.zip
jansson-8390c90a913f6e9cbb29f3288214c5cad743f6c2.tar.gz
jansson-8390c90a913f6e9cbb29f3288214c5cad743f6c2.tar.bz2
Added more detailed CMake documentation.
- Also added better FindSphinx support so that we can detect the version and not have a fatal error if it's too old. - Added support for building latex documentation with -DBUILD_LATEX. Off by default. - Added suppor for building man pages with -DBUILD_MAN. On by default (unless sphins is too old to support it).
-rw-r--r--CMakeLists.txt120
-rw-r--r--cmake/FindSphinx.cmake345
-rw-r--r--doc/gettingstarted.rst95
3 files changed, 505 insertions, 55 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3e9b9eb..9b12dad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -263,45 +263,88 @@ install (FILES
DESTINATION include)
# For building Documentation (uses Sphinx)
-OPTION (BUILD_DOCS "Build documentation (uses python-sphinx)." OFF)
+OPTION (BUILD_DOCS "Build documentation (uses python-sphinx)." ON)
if (BUILD_DOCS)
- find_package(Sphinx REQUIRED)
+ find_package(Sphinx)
- # configured documentation tools and intermediate build results
- set(BINARY_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/_build")
-
- # Sphinx cache with pickled ReST documents
- set(SPHINX_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees")
-
- # HTML output directory
- set(SPHINX_HTML_DIR "${CMAKE_CURRENT_BINARY_DIR}/html")
-
- # CMake could be used to build the conf.py file too,
- # eg it could automatically write the version of the program or change the theme.
- # if(NOT DEFINED SPHINX_THEME)
- # set(SPHINX_THEME default)
- # endif()
- #
- # if(NOT DEFINED SPHINX_THEME_DIR)
- # set(SPHINX_THEME_DIR)
- # endif()
- #
- # configure_file(
- # "${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in"
- # "${BINARY_BUILD_DIR}/conf.py"
- # @ONLY)
-
- add_custom_target(jansson_docs ALL
- ${SPHINX_EXECUTABLE}
- # -q # Enable for quiet mode
- -b html
- -d "${SPHINX_CACHE_DIR}"
- # -c "${BINARY_BUILD_DIR}" # enable if using cmake-generated conf.py
- "${CMAKE_CURRENT_SOURCE_DIR}/doc"
- "${SPHINX_HTML_DIR}"
- COMMENT "Building HTML documentation with Sphinx")
-
- message (STATUS "Documentation has been built in ${SPHINX_HTML_DIR}")
+ if (NOT SPHINX_FOUND)
+ message(WARNING "Sphinx not found. Cannot generate documentation!")
+ else()
+ if (Sphinx_VERSION_STRING VERSION_LESS 1.0)
+ message(WARNING "Your Sphinx version is too old!
+ This project requires Sphinx v1.0 or above to produce
+ proper documentation (you have v${Sphinx_VERSION_STRING}).
+ You will get output but it will have errors.")
+ endif()
+
+ # configured documentation tools and intermediate build results
+ set(BINARY_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/_build")
+
+ # Sphinx cache with pickled ReST documents
+ set(SPHINX_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees")
+
+ # CMake could be used to build the conf.py file too,
+ # eg it could automatically write the version of the program or change the theme.
+ # if(NOT DEFINED SPHINX_THEME)
+ # set(SPHINX_THEME default)
+ # endif()
+ #
+ # if(NOT DEFINED SPHINX_THEME_DIR)
+ # set(SPHINX_THEME_DIR)
+ # endif()
+ #
+ # configure_file(
+ # "${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in"
+ # "${BINARY_BUILD_DIR}/conf.py"
+ # @ONLY)
+
+ # TODO: Add support for all sphinx builders: http://sphinx-doc.org/builders.html
+
+ # Add documentation targets.
+ set(DOC_TARGETS html)
+
+ OPTION(BUILD_MAN "Create a target for building man pages." ON)
+
+ if (BUILD_MAN)
+ if (Sphinx_VERSION_STRING VERSION_LESS 1.0)
+ message(WARNING "Sphinx version 1.0 > is required to build man pages. You have v${Sphinx_VERSION_STRING}.")
+ else()
+ list(APPEND DOC_TARGETS man)
+ endif()
+ endif()
+
+ OPTION(BUILD_LATEX "Create a target for building latex docs (to create PDF)." OFF)
+
+ if (BUILD_LATEX)
+ find_package(LATEX)
+
+ if (NOT LATEX_COMPILER)
+ message("Couldn't find Latex, can't build latex docs using Sphinx")
+ else()
+ message("Latex found! If you have problems building, see Sphinx documentation for required Latex packages.")
+ list(APPEND DOC_TARGETS latex)
+ endif()
+ endif()
+
+ # The doc target will build all documentation targets.
+ add_custom_target(doc)
+
+ foreach (DOC_TARGET ${DOC_TARGETS})
+ add_custom_target(${DOC_TARGET}
+ ${SPHINX_EXECUTABLE}
+ # -q # Enable for quiet mode
+ -b ${DOC_TARGET}
+ -d "${SPHINX_CACHE_DIR}"
+ # -c "${BINARY_BUILD_DIR}" # enable if using cmake-generated conf.py
+ "${CMAKE_CURRENT_SOURCE_DIR}/doc"
+ "${CMAKE_CURRENT_BINARY_DIR}/doc/${DOC_TARGET}"
+ COMMENT "Building ${DOC_TARGET} documentation with Sphinx")
+
+ add_dependencies(doc ${DOC_TARGET})
+ endforeach()
+
+ message("Building documentation enabled for: ${DOC_TARGETS}")
+ endif()
endif ()
@@ -388,5 +431,8 @@ if (NOT WITHOUT_TESTS)
endif ()
endforeach ()
endforeach ()
+
+ add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
+ DEPENDS json_process ${api_tests})
endif ()
diff --git a/cmake/FindSphinx.cmake b/cmake/FindSphinx.cmake
index 76f6e2a..aefdcd0 100644
--- a/cmake/FindSphinx.cmake
+++ b/cmake/FindSphinx.cmake
@@ -1,16 +1,337 @@
-find_program(SPHINX_EXECUTABLE NAMES sphinx-build
- HINTS
- $ENV{SPHINX_DIR}
- PATH_SUFFIXES bin
- DOC "Sphinx documentation generator"
-)
+#find_program(SPHINX_EXECUTABLE NAMES sphinx-build
+# HINTS
+# $ENV{SPHINX_DIR}
+# PATH_SUFFIXES bin
+# DOC "Sphinx documentation generator"
+#)
+#
+#include(FindPackageHandleStandardArgs)
+#
+## Get the version.
+#execute_process(
+# COMMAND "${SPHINX_EXECUTABLE} -h"
+# OUTPUT_VARIABLE _SPHINX_VERSION_STRING
+# ERROR_VARIABLE _SPHINX_VERSION_STRING)
+#
+#message("Sp ${_SPHINX_VERSION_STRING}")
+#if (_SPHINX_VERSION_STRING MATCHES "Sphinx v([0-9]+\\.[0-9]+\\.[0-9]+)")
+# set(SPHINX_VERSION_STRING "${CMAKE_MATCH_1}")
+# string (REPLACE "." ";" _SPHINX_VERSION "${SPHINX_VERSION_STRING}")
+# list(GET _SPHINX_VERSION 0 SPHINX_VERSION_MAJOR)
+# list(GET _SPHINX_VERSION 1 SPHINX_VERSION_MINOR)
+# list(GET _SPHINX_VERSION 2 SPHINX_VERSION_PATCH)
+# if (SPHINX_VERSION_PATCH EQUAL 0)
+# string (REGEX REPLACE "\\.0$" "" SPHINX_VERSION_STRING "${SPHINX_VERSION_STRING}")
+# endif ()
+#endif()
+#
+#find_package_handle_standard_args(Sphinx DEFAULT_MSG
+# SPHINX_EXECUTABLE
+# VERSION_VAR
+# SPHINX_VERSION_STRING
+#)
+#
+#mark_as_advanced(
+# SPHINX_EXECUTABLE
+# SPHINX_VERSION_STRING
+#)
+#
+#unset(_SPHINX_VERSION_STRING)
-include(FindPackageHandleStandardArgs)
+#
+# PART B. DOWNLOADING AGREEMENT - LICENSE FROM SBIA WITH RIGHT TO SUBLICENSE ("SOFTWARE LICENSE").
+# ------------------------------------------------------------------------------------------------
+#
+# 1. As used in this Software License, "you" means the individual downloading and/or
+# using, reproducing, modifying, displaying and/or distributing the Software and
+# the institution or entity which employs or is otherwise affiliated with such
+# individual in connection therewith. The Section of Biomedical Image Analysis,
+# Department of Radiology at the Universiy of Pennsylvania ("SBIA") hereby grants
+# you, with right to sublicense, with respect to SBIA's rights in the software,
+# and data, if any, which is the subject of this Software License (collectively,
+# the "Software"), a royalty-free, non-exclusive license to use, reproduce, make
+# derivative works of, display and distribute the Software, provided that:
+# (a) you accept and adhere to all of the terms and conditions of this Software
+# License; (b) in connection with any copy of or sublicense of all or any portion
+# of the Software, all of the terms and conditions in this Software License shall
+# appear in and shall apply to such copy and such sublicense, including without
+# limitation all source and executable forms and on any user documentation,
+# prefaced with the following words: "All or portions of this licensed product
+# (such portions are the "Software") have been obtained under license from the
+# Section of Biomedical Image Analysis, Department of Radiology at the University
+# of Pennsylvania and are subject to the following terms and conditions:"
+# (c) you preserve and maintain all applicable attributions, copyright notices
+# and licenses included in or applicable to the Software; (d) modified versions
+# of the Software must be clearly identified and marked as such, and must not
+# be misrepresented as being the original Software; and (e) you consider making,
+# but are under no obligation to make, the source code of any of your modifications
+# to the Software freely available to others on an open source basis.
+#
+# 2. The license granted in this Software License includes without limitation the
+# right to (i) incorporate the Software into proprietary programs (subject to
+# any restrictions applicable to such programs), (ii) add your own copyright
+# statement to your modifications of the Software, and (iii) provide additional
+# or different license terms and conditions in your sublicenses of modifications
+# of the Software; provided that in each case your use, reproduction or
+# distribution of such modifications otherwise complies with the conditions
+# stated in this Software License.
+#
+# 3. This Software License does not grant any rights with respect to third party
+# software, except those rights that SBIA has been authorized by a third
+# party to grant to you, and accordingly you are solely responsible for
+# (i) obtaining any permissions from third parties that you need to use,
+# reproduce, make derivative works of, display and distribute the Software,
+# and (ii) informing your sublicensees, including without limitation your
+# end-users, of their obligations to secure any such required permissions.
+#
+# 4. The Software has been designed for research purposes only and has not been
+# reviewed or approved by the Food and Drug Administration or by any other
+# agency. YOU ACKNOWLEDGE AND AGREE THAT CLINICAL APPLICATIONS ARE NEITHER
+# RECOMMENDED NOR ADVISED. Any commercialization of the Software is at the
+# sole risk of the party or parties engaged in such commercialization.
+# You further agree to use, reproduce, make derivative works of, display
+# and distribute the Software in compliance with all applicable governmental
+# laws, regulations and orders, including without limitation those relating
+# to export and import control.
+#
+# 5. The Software is provided "AS IS" and neither SBIA nor any contributor to
+# the software (each a "Contributor") shall have any obligation to provide
+# maintenance, support, updates, enhancements or modifications thereto.
+# SBIA AND ALL CONTRIBUTORS SPECIFICALLY DISCLAIM ALL EXPRESS AND IMPLIED
+# WARRANTIES OF ANY KIND INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+# IN NO EVENT SHALL SBIA OR ANY CONTRIBUTOR BE LIABLE TO ANY PARTY FOR
+# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY ARISING IN ANY WAY RELATED
+# TO THE SOFTWARE, EVEN IF SBIA OR ANY CONTRIBUTOR HAS BEEN ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGES. TO THE MAXIMUM EXTENT NOT PROHIBITED BY LAW OR
+# REGULATION, YOU FURTHER ASSUME ALL LIABILITY FOR YOUR USE, REPRODUCTION,
+# MAKING OF DERIVATIVE WORKS, DISPLAY, LICENSE OR DISTRIBUTION OF THE SOFTWARE
+# AND AGREE TO INDEMNIFY AND HOLD HARMLESS SBIA AND ALL CONTRIBUTORS FROM
+# AND AGAINST ANY AND ALL CLAIMS, SUITS, ACTIONS, DEMANDS AND JUDGMENTS ARISING
+# THEREFROM.
+#
+# 6. None of the names, logos or trademarks of SBIA or any of SBIA's affiliates
+# or any of the Contributors, or any funding agency, may be used to endorse
+# or promote products produced in whole or in part by operation of the Software
+# or derived from or based on the Software without specific prior written
+# permission from the applicable party.
+#
+# 7. Any use, reproduction or distribution of the Software which is not in accordance
+# with this Software License shall automatically revoke all rights granted to you
+# under this Software License and render Paragraphs 1 and 2 of this Software
+# License null and void.
+#
+# 8. This Software License does not grant any rights in or to any intellectual
+# property owned by SBIA or any Contributor except those rights expressly
+# granted hereunder.
+#
+#
+# PART C. MISCELLANEOUS
+# ---------------------
+#
+# This Agreement shall be governed by and construed in accordance with the laws
+# of The Commonwealth of Pennsylvania without regard to principles of conflicts
+# of law. This Agreement shall supercede and replace any license terms that you
+# may have agreed to previously with respect to Software from SBIA.
+#
+##############################################################################
+# @file FindSphinx.cmake
+# @brief Find Sphinx documentation build tools.
+#
+# @par Input variables:
+# <table border="0">
+# <tr>
+# @tp @b Sphinx_DIR @endtp
+# <td>Installation directory of Sphinx tools. Can also be set as environment variable.</td>
+# </tr>
+# <tr>
+# @tp @b SPHINX_DIR @endtp
+# <td>Alternative environment variable for @c Sphinx_DIR.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_FIND_COMPONENTS @endtp
+# <td>Sphinx build tools to look for, i.e., 'apidoc' and/or 'build'.</td>
+# </tr>
+# </table>
+#
+# @par Output variables:
+# <table border="0">
+# <tr>
+# @tp @b Sphinx_FOUND @endtp
+# <td>Whether all or only the requested Sphinx build tools were found.</td>
+# </tr>
+# <tr>
+# @tp @b SPHINX_FOUND @endtp
+# <td>Alias for @c Sphinx_FOUND.<td>
+# </tr>
+# <tr>
+# @tp @b SPHINX_EXECUTABLE @endtp
+# <td>Non-cached alias for @c Sphinx-build_EXECUTABLE.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_PYTHON_EXECUTABLE @endtp
+# <td>Python executable used to run sphinx-build. This is either the
+# by default found Python interpreter or a specific version as
+# specified by the shebang (#!) of the sphinx-build script.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_PYTHON_OPTIONS @endtp
+# <td>A list of Python options extracted from the shebang (#!) of the
+# sphinx-build script. The -E option is added by this module
+# if the Python executable is not the system default to avoid
+# problems with a differing setting of the @c PYTHONHOME.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx-build_EXECUTABLE @endtp
+# <td>Absolute path of the found sphinx-build tool.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx-apidoc_EXECUTABLE @endtp
+# <td>Absolute path of the found sphinx-apidoc tool.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_VERSION_STRING @endtp
+# <td>Sphinx version found e.g. 1.1.2.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_VERSION_MAJOR @endtp
+# <td>Sphinx major version found e.g. 1.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_VERSION_MINOR @endtp
+# <td>Sphinx minor version found e.g. 1.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_VERSION_PATCH @endtp
+# <td>Sphinx patch version found e.g. 2.</td>
+# </tr>
+# </table>
+#
+# @ingroup CMakeFindModules
+##############################################################################
-find_package_handle_standard_args(Sphinx DEFAULT_MSG
- SPHINX_EXECUTABLE
-)
+set (_Sphinx_REQUIRED_VARS)
+
+# ----------------------------------------------------------------------------
+# initialize search
+if (NOT Sphinx_DIR)
+ if (NOT $ENV{Sphinx_DIR} STREQUAL "")
+ set (Sphinx_DIR "$ENV{Sphinx_DIR}" CACHE PATH "Installation prefix of Sphinx (docutils)." FORCE)
+ else ()
+ set (Sphinx_DIR "$ENV{SPHINX_DIR}" CACHE PATH "Installation prefix of Sphinx (docutils)." FORCE)
+ endif ()
+endif ()
+
+# ----------------------------------------------------------------------------
+# default components to look for
+if (NOT Sphinx_FIND_COMPONENTS)
+ set (Sphinx_FIND_COMPONENTS "build")
+elseif (NOT Sphinx_FIND_COMPONENTS MATCHES "^(build|apidoc)$")
+ message (FATAL_ERROR "Invalid Sphinx component in: ${Sphinx_FIND_COMPONENTS}")
+endif ()
+
+# ----------------------------------------------------------------------------
+# find components, i.e., build tools
+foreach (_Sphinx_TOOL IN LISTS Sphinx_FIND_COMPONENTS)
+ if (Sphinx_DIR)
+ find_program (
+ Sphinx-${_Sphinx_TOOL}_EXECUTABLE
+ NAMES sphinx-${_Sphinx_TOOL} sphinx-${_Sphinx_TOOL}.py
+ HINTS "${Sphinx_DIR}"
+ PATH_SUFFIXES bin
+ DOC "The sphinx-${_Sphinx_TOOL} Python script."
+ NO_DEFAULT_PATH
+ )
+ else ()
+ find_program (
+ Sphinx-${_Sphinx_TOOL}_EXECUTABLE
+ NAMES sphinx-${_Sphinx_TOOL} sphinx-${_Sphinx_TOOL}.py
+ DOC "The sphinx-${_Sphinx_TOOL} Python script."
+ )
+ endif ()
+ mark_as_advanced (Sphinx-${_Sphinx_TOOL}_EXECUTABLE)
+ list (APPEND _Sphinx_REQUIRED_VARS Sphinx-${_Sphinx_TOOL}_EXECUTABLE)
+endforeach ()
-mark_as_advanced(
-  SPHINX_EXECUTABLE
+# ----------------------------------------------------------------------------
+# determine Python executable used by Sphinx
+if (Sphinx-build_EXECUTABLE)
+ # extract python executable from shebang of sphinx-build
+ find_package (PythonInterp QUIET)
+ set (Sphinx_PYTHON_EXECUTABLE "${PYTHON_EXECUTABLE}")
+ set (Sphinx_PYTHON_OPTIONS)
+ file (STRINGS "${Sphinx-build_EXECUTABLE}" FIRST_LINE LIMIT_COUNT 1)
+ if (FIRST_LINE MATCHES "^#!(.*/python.*)") # does not match "#!/usr/bin/env python" !
+ string (REGEX REPLACE "^ +| +$" "" Sphinx_PYTHON_EXECUTABLE "${CMAKE_MATCH_1}")
+ if (Sphinx_PYTHON_EXECUTABLE MATCHES "([^ ]+) (.*)")
+ set (Sphinx_PYTHON_EXECUTABLE "${CMAKE_MATCH_1}")
+ string (REGEX REPLACE " +" ";" Sphinx_PYTHON_OPTIONS "${CMAKE_MATCH_2}")
+ endif ()
+ endif ()
+ # this is done to avoid problems with multiple Python versions being installed
+ # remember: CMake command if(STR EQUAL STR) is bad and may cause many troubles !
+ string (REGEX REPLACE "([.+*?^$])" "\\\\\\1" _Sphinx_PYTHON_EXECUTABLE_RE "${PYTHON_EXECUTABLE}")
+ list (FIND Sphinx_PYTHON_OPTIONS -E IDX)
+ if (IDX EQUAL -1 AND NOT Sphinx_PYTHON_EXECUTABLE MATCHES "^${_Sphinx_PYTHON_EXECUTABLE_RE}$")
+ list (INSERT Sphinx_PYTHON_OPTIONS 0 -E)
+ endif ()
+ unset (_Sphinx_PYTHON_EXECUTABLE_RE)
+endif ()
+
+# ----------------------------------------------------------------------------
+# determine Sphinx version
+if (Sphinx-build_EXECUTABLE)
+ # intentionally use invalid -h option here as the help that is shown then
+ # will include the Sphinx version information
+ if (Sphinx_PYTHON_EXECUTABLE)
+ execute_process (
+ COMMAND "${Sphinx_PYTHON_EXECUTABLE}" ${Sphinx_PYTHON_OPTIONS} "${Sphinx-build_EXECUTABLE}" -h
+ OUTPUT_VARIABLE _Sphinx_VERSION
+ ERROR_VARIABLE _Sphinx_VERSION
+ )
+ elseif (UNIX)
+ execute_process (
+ COMMAND "${Sphinx-build_EXECUTABLE}" -h
+ OUTPUT_VARIABLE _Sphinx_VERSION
+ ERROR_VARIABLE _Sphinx_VERSION
+ )
+ endif ()
+ if (_Sphinx_VERSION MATCHES "Sphinx v([0-9]+\\.[0-9]+\\.[0-9]+)")
+ set (Sphinx_VERSION_STRING "${CMAKE_MATCH_1}")
+ string (REPLACE "." ";" _Sphinx_VERSION "${Sphinx_VERSION_STRING}")
+ list(GET _Sphinx_VERSION 0 Sphinx_VERSION_MAJOR)
+ list(GET _Sphinx_VERSION 1 Sphinx_VERSION_MINOR)
+ list(GET _Sphinx_VERSION 2 Sphinx_VERSION_PATCH)
+ if (Sphinx_VERSION_PATCH EQUAL 0)
+ string (REGEX REPLACE "\\.0$" "" Sphinx_VERSION_STRING "${Sphinx_VERSION_STRING}")
+ endif ()
+ endif()
+endif ()
+
+# ----------------------------------------------------------------------------
+# compatibility with FindPythonInterp.cmake and FindPerl.cmake
+set (SPHINX_EXECUTABLE "${Sphinx-build_EXECUTABLE}")
+
+# ----------------------------------------------------------------------------
+# handle the QUIETLY and REQUIRED arguments and set SPHINX_FOUND to TRUE if
+# all listed variables are TRUE
+include (FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS (
+ Sphinx
+ REQUIRED_VARS
+ ${_Sphinx_REQUIRED_VARS}
+# VERSION_VAR # This isn't available until CMake 2.8.8 so don't use it.
+ Sphinx_VERSION_STRING
)
+
+# ----------------------------------------------------------------------------
+# set Sphinx_DIR
+if (NOT Sphinx_DIR AND Sphinx-build_EXECUTABLE)
+ get_filename_component (Sphinx_DIR "${Sphinx-build_EXECUTABLE}" PATH)
+ string (REGEX REPLACE "/bin/?" "" Sphinx_DIR "${Sphinx_DIR}")
+ set (Sphinx_DIR "${Sphinx_DIR}" CACHE PATH "Installation directory of Sphinx tools." FORCE)
+endif ()
+
+unset (_Sphinx_VERSION)
+unset (_Sphinx_REQUIRED_VARS) \ No newline at end of file
diff --git a/doc/gettingstarted.rst b/doc/gettingstarted.rst
index 4423eed..0e008cd 100644
--- a/doc/gettingstarted.rst
+++ b/doc/gettingstarted.rst
@@ -59,17 +59,100 @@ used as described above.
CMake (various platforms, including Windows)
--------------------------------------------
-Jansson can be built using CMake. Create a build directory for an
-out-of-tree build, change to that directory, and run cmake (or ccmake,
-cmake-gui, or similar) to configure the project.
+Jansson can be built using CMake_. Create a build directory for an
+out-of-tree build, change to that directory, and run ``cmake`` (or ``ccmake``,
+``cmake-gui``, or similar) to configure the project.
-Then proceed to build the source with your system's native build
-tools. For example, on Unix::
+See the examples below for more detailed information.
+.. note:: In the below examples ``..`` is used as an argument for ``cmake``.
+ This is simply the path to the jansson project root directory.
+ In the example it is assumed you've created a sub-directory ``build``
+ and are using that. You could use any path you want.
+
+.. _build-cmake-unix:
+
+Unix (Make files)
+.................
+Generating make files on unix:
+
+.. parsed-literal::
+
+ bunzip2 -c jansson-|release|.tar.bz2 | tar xf -
+ cd jansson-|release|
+
+ mkdir build
+ cd build
+ cmake .. # or `ccmake ..` for a GUI.
+
+Then to build::
+
make
- make test
+ make check
+ make install
+
+Windows (Visual Studio)
+.......................
+Creating Visual Studio project files from the command line:
+
+.. parsed-literal::
+
+ <unpack>
+ cd jansson-|release|
+
+ md build
+ cd build
+ cmake -G "Visual Studio 10" ..
+
+You will now have a *Visual Studio Solution* in your build directory.
+To run the unit tests build the ``RUN_TESTS`` project.
+
+If you prefer a GUI the ``cmake`` line in the above example can
+be replaced with::
+
+ cmake-gui ..
+
+For command line help (including a list of available generators)
+for CMake_ simply run::
+
+ cmake
+
+To list available CMake_ settings (and what they are currently set to)
+for the project, run::
+
+ cmake -LH ..
+
+Mac OSX (Xcode)
+...............
+If you prefer using Xcode instead of make files on OSX,
+do the following. (Use the same steps as
+for :ref:`Unix <build-cmake-unix>`)::
+
+ ...
+ cmake -G "Xcode" ..
+
+Additional CMake settings
+.........................
+
+Shared library
+~~~~~~~~~~~~~~
+By default the CMake_ project will generate build files for building the
+static library. To build the shared version use::
+
+ ...
+ cmake -DBUILD_SHARED=1 ..
+
+Changing install directory (same as autoconf --prefix)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Just as with the autoconf_ project you can change the destination directory
+for ``make install``. The equivalent for autoconfs ``./configure --prefix``
+in CMake_ is::
+
+ ...
+ cmake -DCMAKE_INSTALL_PREFIX:PATH=/some/other/path ..
make install
+.. _CMake: http://www.cmake.org
Android
-------