Files
OpenROAD/docs/conf.py
2026-02-17 05:47:38 +00:00

188 lines
5.2 KiB
Python

# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
# -- Project information -----------------------------------------------------
project = "OpenROAD"
copyright = "The OpenROAD Authors, 2021"
author = "OpenROAD Team"
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.ifconfig",
"sphinx.ext.mathjax",
"sphinx.ext.napoleon",
"sphinx.ext.todo",
"sphinx_external_toc",
"sphinx_copybutton",
"myst_parser",
"sphinxcontrib.mermaid",
"sphinx_tabs.tabs",
]
myst_enable_extensions = [
"amsmath",
"colon_fence",
"deflist",
"dollarmath",
"html_admonition",
"html_image",
"replacements",
"smartquotes",
"substitution",
"tasklist",
"html_image",
]
external_toc_path = "toc.yml"
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
source_suffix = [".rst", ".md"]
# The master toctree document.
master_doc = "index"
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = [
"_build",
"Thumbs.db",
".DS_Store",
"**/LICENSE",
"**/LICENSE.md",
"README.md",
"misc/NewToolDocExample.md",
"docs/releases/PostAlpha2.1BranchMethodology.md",
"main/src/odb/src/def/README.md",
"main/src/odb/src/def/doc/README.md",
"main/src/odb/src/lef/README.md",
"main/docs",
"md", # manpage dir
"man", # manpage dir
"cat", # manpage dir
"html", # manpage dir
]
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
# Mermaid related args
mermaid_output_format = "svg"
mermaid_params = [
"-p",
"puppeteer-config.json",
"--theme",
"forest",
"--width",
"200",
"--backgroundColor",
"transparent",
]
mermaid_init_js = (
"mermaid.initialize({startOnLoad:true, flowchart:{useMaxWidth:false}})"
)
mermaid_verbose = True
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "sphinx_book_theme"
html_theme_options = {
"repository_url": "https://github.com/The-OpenROAD-Project/OpenROAD",
"repository_branch": "master",
"show_navbar_depth": 2,
"use_issues_button": True,
# "use_repository_button": True,
"use_download_button": True,
# list for more fine-grained ordering of icons
"icon_links": [
{
"name": "The OpenROAD Project",
"url": "https://theopenroadproject.org/",
"icon": "fa-solid fa-globe",
},
{
"name": "Twitter",
"url": "https://twitter.com/OpenROAD_EDA",
"icon": "fa-brands fa-twitter",
},
{
"name": "Email",
"url": "mailto:openroad@ucsd.edu",
"icon": "fa-solid fa-envelope",
},
{
"name": "GitHub",
"url": "https://github.com/The-OpenROAD-Project/OpenROAD",
"icon": "fa-brands fa-github",
},
{
"name": "Stars",
"url": "https://github.com/The-OpenROAD-Project/OpenROAD/stargazers",
"icon": "https://img.shields.io/github/stars/The-OpenROAD-Project/OpenROAD",
"type": "url",
},
],
}
def swap_prefix(file, old, new):
with open(file, "r") as f:
lines = f.read()
lines = lines.replace(old, new)
with open(file, "wt") as f:
f.write(lines)
def setup(app):
import os
if not os.path.exists("./main"):
os.symlink("..", "./main")
# also symlink readme
import shutil
if not os.path.exists("./main/README2.md"):
shutil.copy("main/README.md", "main/README2.md")
# these prefix swaps will be reverted and is needed for sphinx compilation.
for filename in ["../README.md", "../README2.md"]:
swap_prefix(filename, "(docs/", "(../")
swap_prefix(filename, "```mermaid", "```{mermaid}\n:align: center\n")
# for populating OR Messages page.
command = "python getMessages.py"
_ = os.popen(command).read()
if not os.path.exists("../_readthedocs/html/doxygen_output"):
os.makedirs("../_readthedocs/html/doxygen_output", exist_ok=True)
command = "cd .. ; doxygen"
_ = os.popen(command).read()