# -*- coding: utf-8 -*- # Style_Check:Python_Fragment (meaning no pyflakes check) # # GNAT build configuration file import sys import os import time import re sys.path.append('.') import ada_pygments import latex_elements # Some configuration values for the various documentation handled by # this conf.py DOCS = { 'gnat_rm': { 'title': 'GNAT Reference Manual'}, 'gnat_ugn': { 'title': 'GNAT User\'s Guide for Native Platforms'}, 'gnat-style': { 'title': 'GNAT Coding Style: A Guide for GNAT Developers'}} # Then retrieve the source directory root_source_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) gnatvsn_spec = os.path.join(root_source_dir, '..', 'gnatvsn.ads') basever = os.path.join(root_source_dir, '..', '..', 'BASE-VER') texi_fsf = True # Set to False when FSF doc is switched to sphinx by default with open(gnatvsn_spec, 'r') as fd: gnatvsn_content = fd.read() def get_copyright(): return '2008-%s, Free Software Foundation' % time.strftime('%Y') def get_gnat_version(): m = re.search(r'Gnat_Static_Version_String : ' + r'constant String := "([^\(\)]+)\(.*\)?";', gnatvsn_content) if m: return m.group(1).strip() else: if texi_fsf and os.path.exists(basever): return '' try: with open(basever) as fd: return fd.read() except Exception: pass print('cannot find GNAT version in gnatvsn.ads or in ' + basever) sys.exit(1) def get_gnat_build_type(): m = re.search(r'Build_Type : constant Gnat_Build_Type := (.+);', gnatvsn_content) if m: return {'Gnatpro': 'PRO', 'FSF': 'FSF', 'GPL': 'GPL'}[m.group(1).strip()] else: print('cannot compute GNAT build type') sys.exit(1) # First retrieve the name of the documentation we are building doc_name = os.environ.get('DOC_NAME', None) if doc_name is None: print('DOC_NAME environment variable should be set') sys.exit(1) if doc_name not in DOCS: print('%s is not a valid documentation name' % doc_name) sys.exit(1) # Exclude sources that are not part of the current documentation exclude_patterns = [] for d in os.listdir(root_source_dir): if d not in ('share', doc_name, doc_name + '.rst'): exclude_patterns.append(d) print('ignoring %s' % d) if doc_name == 'gnat_rm': exclude_patterns.append('share/gnat_project_manager.rst') print('ignoring share/gnat_project_manager.rst') extensions = [] templates_path = ['_templates'] source_suffix = '.rst' master_doc = doc_name # General information about the project. project = DOCS[doc_name]['title'] copyright = get_copyright() version = get_gnat_version() release = get_gnat_version() pygments_style = None tags.add(get_gnat_build_type()) html_theme = 'sphinxdoc' if os.path.isfile('adacore_transparent.png'): html_logo = 'adacore_transparent.png' if os.path.isfile('favicon.ico'): html_favicon = 'favicon.ico' html_static_path = ['_static'] latex_additional_files = ['gnat.sty'] copyright_macros = { 'date': time.strftime("%b %d, %Y"), 'edition': 'GNAT %s Edition' % 'Pro' if get_gnat_build_type() == 'PRO' else 'GPL', 'name': 'GNU Ada', 'tool': 'GNAT', 'version': version} latex_elements = { 'preamble': '\\usepackage{gnat}\n' + latex_elements.TOC_DEPTH + latex_elements.PAGE_BLANK + latex_elements.TOC_CMD + latex_elements.LATEX_HYPHEN + latex_elements.doc_settings(DOCS[doc_name]['title'], get_gnat_version()), 'tableofcontents': latex_elements.TOC % copyright_macros} latex_documents = [ (master_doc, '%s.tex' % doc_name, project, 'AdaCore', 'manual')] texinfo_documents = [ (master_doc, doc_name, project, 'AdaCore', doc_name, doc_name, '')] def setup(app): app.add_lexer('ada', ada_pygments.AdaLexer) app.add_lexer('gpr', ada_pygments.GNATProjectLexer)