Files
Rémi AchardandPatrick Hodoul 641abe535f Remove OpenColorIOHeaders target and hardcoded install paths (#1471)
* Remove OpenColorIOHeaders target

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Avoid hardcoding install paths

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Update remaining hardcoded install paths

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Replace LIB_SUFFIX by CMAKE_INSTALL_LIBDIR

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-09-09 14:47:20 -04:00

208 lines
5.6 KiB
Python

# -*- coding: utf-8 -*-
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
# See:
# http://sphinx.pocoo.org/config.html
import os
import shutil
import subprocess
import sys
import re
HERE = os.path.dirname(os.path.realpath(__file__))
ROOT = os.path.abspath(os.path.join(HERE, os.pardir))
# -- Build options ------------------------------------------------------------
# OCIO API has been modified. Update frozen API docs in source tree.
# Dependent on CMake build (so not RTD).
BUILD_FROZEN = "@OCIO_BUILD_FROZEN_DOCS@" == "ON"
# 'READTHEDOCS' env var set by Read the Docs
RTD_BUILD = os.environ.get("READTHEDOCS") == "True"
# 'CI' env var set by GitHub Actions. Only test frozen docs on Linux, since
# that's what RTD will use.
CI_BUILD = os.environ.get("CI") == "true" and sys.platform in ("linux", "linux2")
# -- Add local Sphinx extensions ----------------------------------------------
if RTD_BUILD:
# Add helper modules and extensions to path when not handled by CMake
sys.path.append(os.path.join(ROOT, "share", "docs"))
import configure_file
else:
configure_file = None
import expandvars
import prettymethods
import frozendoc
# -- General configuration ----------------------------------------------------
if RTD_BUILD:
# Extract project info from root CMakeLists.txt since there's no CMake
# configuration on RTD.
project = configure_file.get_project_name()
description = configure_file.get_project_description()
version, version_major, version_minor, version_patch \
= configure_file.get_project_version()
ocio_namespace = configure_file.get_ocio_namespace(
major=version_major,
minor=version_minor
)
else:
project = "@CMAKE_PROJECT_NAME@"
description = "@CMAKE_PROJECT_DESCRIPTION@"
version = "@CMAKE_PROJECT_VERSION@"
version_major = "@OpenColorIO_VERSION_MAJOR@"
version_minor = "@OpenColorIO_VERSION_MINOR@"
version_patch = "@OpenColorIO_VERSION_PATCH@"
ocio_namespace = "@OCIO_NAMESPACE@"
author = "Contributors to the {} Project".format(project)
copyright = "Copyright {}.".format(author)
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.napoleon",
"recommonmark",
"sphinx_tabs.tabs",
"breathe",
"expandvars",
"prettymethods",
"frozendoc",
]
source_suffix = {
".rst": "restructuredtext",
".md": "markdown",
".txt": "markdown",
}
master_doc = "index"
exclude_patterns = ["build", "*-prefix", "api/python", "site"]
rst_prolog = """
.. |OCIO| replace:: *OCIO*
.. |OpenColorIO| replace:: **OpenColorIO**
.. _Academy Software Foundation: https://www.aswf.io/
.. |Academy Software Foundation| replace:: `Academy Software Foundation`_
.. _ocio-user: https://lists.aswf.io/g/ocio-user
.. _ocio-dev: https://lists.aswf.io/g/ocio-dev
""".format(project=project)
# -- Extension Configuration --------------------------------------------------
# frozendoc
frozendoc_build = BUILD_FROZEN
# When enabled, frozendoc_build is also enabled to build and compare new frozen
# RST with frozen RST present in the source tree. This is only necessary in a
# CI job, where we want to confirm the contributor has built frozen RST along
# with any public API or documentation changes.
frozendoc_compare = CI_BUILD
# breathe
breathe_projects = {project: "_doxygen/xml"}
breathe_default_project = project
# pygments
pygments_style = "friendly"
# napoleon
napoleon_use_param = False
napoleon_include_init_with_doc = True
# expandvars
expandvars_define = {
"PYDIR": "frozen" if RTD_BUILD else "src",
"OCIO_NAMESPACE": ocio_namespace,
}
# -- Options for HTML output --------------------------------------------------
html_theme = "press"
html_logo = "_static/ocio_b.svg"
html_static_path = ["_static"]
html_theme_options = {
"external_links": [
("Github", "https://github.com/AcademySoftwareFoundation/OpenColorIO"),
]
}
# -- Options for LaTeX output -------------------------------------------------
latex_documents = [(
"index",
"{}.tex".format(project),
"{} Documentation".format(project),
author,
"manual",
False
)]
latex_elements = {
"preamble": "\setcounter{tocdepth}{2}",
}
latex_domain_indices = ["cpp-modindex", "py-modindex"]
# -- Options for manual page output -------------------------------------------
man_pages = [(
"index",
project.lower(),
"{} Documentation".format(project),
[author],
1
)]
# -- Options for Texinfo output -----------------------------------------------
texinfo_documents = [(
"index",
project,
"{} Documentation".format(project),
author,
project,
description,
"Miscellaneous",
True
)]
# -- Options for Epub output --------------------------------------------------
epub_title = project
epub_author = author
epub_publisher = author
epub_copyright = copyright
# -- Run Doxygen --------------------------------------------------------------
# When building docs for Read the Docs, only sphinx-build is called, so we must
# run doxygen first to build XML data for breathe. In all other cases doxygen
# is run when needed by CMake.
if RTD_BUILD:
# Configure needed *.in files
for src_filename, dst_filename in [
(
os.path.join(ROOT, "include", "OpenColorIO", "OpenColorABI.h.in"),
os.path.join(ROOT, "include", "OpenColorIO", "OpenColorABI.h")
),
(
os.path.join(ROOT, "docs", "Doxyfile.in"),
os.path.join(ROOT, "docs", "Doxyfile")
),
]:
configure_file.configure_file(src_filename, dst_filename)
# Generate Doxygen XML
subprocess.run(["doxygen", "Doxyfile"], check=True)