lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon,  6 Jun 2016 18:32:20 +0200
From:	Markus Heiser <markus.heiser@...marIT.de>
To:	corbet@....net
Cc:	jani.nikula@...el.com, daniel.vetter@...ll.ch,
	grant.likely@...retlab.ca, mchehab@....samsung.com,
	keithp@...thp.com, linux-kernel@...r.kernel.org,
	linux-doc@...r.kernel.org, hverkuil@...all.nl,
	"Heiser, Markus" <markus.heiser@...marIT.de>
Subject: [PATCH 2/7] sphinx-doc: add basic sphinx-build infrastructure

From: "Heiser, Markus" <markus.heiser@...marIT.de>

Documentation/Makefile.reST and Documentation/conf.py

  Makefile and basic 'sphinx config' file to build the various reST
  documents and output formats. Provides the basic sphinx-doc build
  infrastructure including the *sphinx-subprojects* feature. With this
  feature each book can be build and distributed stand-alone.

Documentation/sphinx-static and Documentation/sphinx-tex

  Paths that contain sphinx-doc custom static files (such as style
  sheets).

Documentation/books

  In this folder, the books with reST markup are placed. To
  provide *sphinx-subprojects*, each book has its one folder and
  a (optional) Documentation/books/{book-name}.conf file
  which *overwrites* the basic configuration from Documentation/conf.py

The concept of the infrastructure was taken from the sphkerneldoc
project [1]

[1] http://return42.github.io/sphkerneldoc

Signed-off-by: Markus Heiser <markus.heiser@...marIT.de>
---
 Documentation/.gitignore                        |   2 +
 Documentation/Makefile.reST                     | 111 ++++++++
 Documentation/books/.gitignore                  |   0
 Documentation/conf.py                           | 357 ++++++++++++++++++++++++
 Documentation/sphinx-static/theme_overrides.css |  45 +++
 Documentation/sphinx-tex/Makefile               |  88 ++++++
 6 files changed, 603 insertions(+)
 create mode 100644 Documentation/.gitignore
 create mode 100644 Documentation/Makefile.reST
 create mode 100644 Documentation/books/.gitignore
 create mode 100644 Documentation/conf.py
 create mode 100644 Documentation/sphinx-static/theme_overrides.css
 create mode 100644 Documentation/sphinx-tex/Makefile

diff --git a/Documentation/.gitignore b/Documentation/.gitignore
new file mode 100644
index 0000000..1886a596
--- /dev/null
+++ b/Documentation/.gitignore
@@ -0,0 +1,2 @@
+cache/
+dist/
\ No newline at end of file
diff --git a/Documentation/Makefile.reST b/Documentation/Makefile.reST
new file mode 100644
index 0000000..67bdcd0
--- /dev/null
+++ b/Documentation/Makefile.reST
@@ -0,0 +1,111 @@
+# -*- coding: utf-8; mode: make -*-
+# Makefile for restructuredText (reST) content
+
+export PYTHONPATH := $(abspath ../scripts/site-python/):$(PYTHONPATH)
+
+ifndef obj
+  obj := .
+endif
+
+CACHE          := $(obj)/cache
+BOOKS_FOLDER   := books
+DIST           := $(obj)/dist
+
+# External programs used
+
+SPHINXBUILD    := sphinx-build
+PDFLATEX       := pdflatex
+
+BOOKS := $(filter %/, $(wildcard $(BOOKS_FOLDER)/*/))
+BOOKS := $(BOOKS:%/=%)
+BOOKS_HTML := $(patsubst %, %.html, $(BOOKS))
+BOOKS_HTML_CLEAN := $(patsubst %, %.clean, $(BOOKS))
+
+# sphinx-doc setup
+SPHINXOPTS  :=
+PAPER       :=
+
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+FMT = cat
+ifeq ($(shell which fmt >/dev/null 2>&1; echo $$?), 0)
+FMT = fmt
+endif
+
+# ------------------------------------------------------------------------------
+# requirements
+# ------------------------------------------------------------------------------
+
+.PHONY: sphinx-doc
+
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
+sphinx-doc: msg-SphinxDoc
+	$(error The '$(SPHINXBUILD)' command was not found)
+else
+sphinx-doc:
+	@:
+endif
+
+msg-SphinxDoc:
+	@echo "\nsphinx-doc:\n\n\
+ Make sure you have an updated Sphinx installed, grab it from\
+ http://sphinx-doc.org or install it from the python package\
+ manager (pip). \n\n\
+ On debian based OS these requirements are installed by::\n\n\
+   sudo apt-get install pip \n\n\
+   pip install Sphinx\n" | $(FMT)
+
+# ------------------------------------------------------------------------------
+# usage
+# ------------------------------------------------------------------------------
+
+.PHONY: help help-requirements
+help:
+	@echo "Please use \`make <target>' where <target> is one of ..."
+	@echo
+	@echo "all-HTML : builds all HTML outputs/targets"
+	@echo
+	@echo "make {book/*} : builds only the HTML of {book}, valid"
+	@echo "    values for {book/*} are: \n\n    $(BOOKS_HTML)" | $(FMT)
+	@echo
+	@echo "The output formats are placed into folder:"
+	@echo
+	@echo "    $(DIST)"
+	@echo
+
+help-requirements: msg-SphinxDoc
+
+
+# ------------------------------------------------------------------------------
+# main targets
+# ------------------------------------------------------------------------------
+
+.PHONY: all-HTML clean-HTML $(BOOKS_HTML)
+
+all-HTML: sphinx-doc $(BOOKS_HTML)
+clean-HTML: clean-books.html
+
+$(DIST):
+	mkdir -p $(DIST)
+
+# ------------------------------------------------------------------------------
+# BOOKs
+# ------------------------------------------------------------------------------
+
+# reST-book --> HTML (sphinx-doc projects)
+# ----------------------------------------
+
+$(BOOKS_HTML): sphinx-doc | $(DIST)
+	@echo "building $@ ..."
+	SPHPROJ_CONF=$(patsubst %.html,%.conf,$@) $(SPHINXBUILD) -c . -b html -d $(CACHE)/doctrees/$(patsubst %.html,%,$@) $(patsubst %.html,%,$@) $(DIST)/$(patsubst %.html,%,$@)
+
+$(BOOKS_HTML_CLEAN):
+	rm -rf $(DIST)/$(patsubst %.clean,%,$@) $(CACHE)/doctrees/$(patsubst %.clean,%,$@)
+
+.PHONY: clean-books.html
+clean-books.html: $(BOOKS_HTML_CLEAN)
+
diff --git a/Documentation/books/.gitignore b/Documentation/books/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/Documentation/conf.py b/Documentation/conf.py
new file mode 100644
index 0000000..50a7a67
--- /dev/null
+++ b/Documentation/conf.py
@@ -0,0 +1,357 @@
+# -*- coding: utf-8 -*-
+#
+# This is the common sphinx-build configuration used by the kernel documentation
+# book's build process. About config values consult:
+#
+# * http://www.sphinx-doc.org/en/stable/config.html
+#
+# Project (book) specific configuration is read from a file given by the
+# SPHPROJ_CONF environment (see function loadPrjConfig).
+
+import sys
+import os
+from os.path import join as pathjoin
+from os.path import abspath, dirname, splitext, basename, exists
+
+BASE_FOLDER = abspath(pathjoin(dirname(__file__)))
+
+# ------------------------------------------------------------------------------
+def loadPrjConfig():
+# ------------------------------------------------------------------------------
+
+    from sphinx.util.pycompat import execfile_
+    from sphinx.util.osutil import cd
+
+    config_file = os.environ.get("SPHPROJ_CONF", None)
+    if config_file is not None and exists(config_file):
+        config_file = abspath(config_file)
+        main_name   = splitext(basename(config_file))[0]
+        config = globals().copy()
+        config.update({
+            "main_name" : main_name
+        })
+        config['__file__'] = config_file
+        execfile_(config_file, config)
+        globals().update(config)
+
+# ------------------------------------------------------------------------------
+# extensions
+# ------------------------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here or add it to the PYTHONPATH
+
+# ------------------------------------------------------------------------------
+# General configuration
+# ------------------------------------------------------------------------------
+
+# The default language to highlight source code in.
+highlight_language = "none"
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# external links
+# --------------
+#
+# usage:  lorem :man:`dvbv5-scan` ipsum
+
+extlinks = {
+    'man'         : ('http://manpages.ubuntu.com/cgi-bin/search.py?q=%s', ' ')
+    , 'deb'       : ('http://packages.ubuntu.com/xenial/%s', ' ')
+    }
+
+# Intersphinx
+# -----------
+#
+# usage:  lorem :ref:`dtv_get_frontend <linux:dtv_get_frontend>` ipsum
+
+intersphinx_mapping = {}
+intersphinx_mapping['linux'] = ('https://return42.github.io/sphkerneldoc/linux_src_doc/', None)
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    "linuxdoc.rstFlatTable"
+    , "linuxdoc.rstKernelDoc"
+    , 'sphinx.ext.autodoc'
+    , 'sphinx.ext.extlinks'
+    #, 'sphinx.ext.autosummary'
+    #, 'sphinx.ext.doctest'
+    , 'sphinx.ext.todo'
+    , 'sphinx.ext.coverage'
+    #, 'sphinx.ext.pngmath'
+    #, 'sphinx.ext.mathjax'
+    , 'sphinx.ext.viewcode'
+    , 'sphinx.ext.intersphinx'
+    , 'sphinx.ext.ifconfig'
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['sphinx-templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The encoding of source files.
+source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['sphinx-tex', 'sphinx-static', 'sphinx-templates']
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+keep_warnings = False
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = True
+
+# If true, fatal errors (like missing function descripions) raise an
+# error. Default: True
+kernel_doc_raise_error = False
+
+# ------------------------------------------------------------------------------
+# 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_rtd_theme'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = pathjoin(BASE_FOLDER, "logo.gif")
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['sphinx-static']
+
+html_context = {
+    'css_files': [
+        '_static/theme_overrides.css',
+    ],
+}
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+#html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+html_show_sphinx = False
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Language to be used for generating the HTML full-text search index.
+# Sphinx supports the following languages:
+#   'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
+#   'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
+html_search_language = 'en'
+
+# A dictionary with options for the search language support, empty by default.
+# Now only 'ja' uses this config value
+#html_search_options = {'type': 'default'}
+
+# The name of a javascript file (relative to the configuration directory) that
+# implements a search results scorer. If empty, the default will be used.
+#html_search_scorer = 'scorer.js'
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Kernel-Doc'
+
+# ------------------------------------------------------------------------------
+# Options for LaTeX output
+# ------------------------------------------------------------------------------
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = pathjoin(BASE_FOLDER, "sphinx-tex", "logo.png")
+
+#latex_additional_files = [
+#    pathjoin(BASE_FOLDER,   "sphinx-tex", "Makefile")
+#]
+
+# If true, show page references after internal links.
+# latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+# ------------------------------------------------------------------------------
+# Options for manual page output
+# ------------------------------------------------------------------------------
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+# ------------------------------------------------------------------------------
+# Options for Texinfo output
+# ------------------------------------------------------------------------------
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#texinfo_no_detailmenu = False
+
+# ------------------------------------------------------------------------------
+# Options for Epub output
+# ------------------------------------------------------------------------------
+
+# Bibliographic Dublin Core info.
+# epub_title = project
+# epub_author = author
+# epub_publisher = author
+# epub_copyright = copyright
+
+# The basename for the epub file. It defaults to the project name.
+#epub_basename = project
+
+# The HTML theme for the epub output. Since the default themes are not
+# optimized for small screen space, using the same theme for HTML and epub
+# output is usually not wise. This defaults to 'epub', a theme designed to save
+# visual space.
+#epub_theme = 'epub'
+
+# The language of the text. It defaults to the language option
+# or 'en' if the language is not set.
+#epub_language = ''
+
+# The scheme of the identifier. Typical schemes are ISBN or URL.
+#epub_scheme = ''
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+#epub_identifier = ''
+
+# A unique identification for the text.
+#epub_uid = ''
+
+# A tuple containing the cover image and cover page html template filenames.
+#epub_cover = ()
+
+# A sequence of (type, uri, title) tuples for the guide element of content.opf.
+#epub_guide = ()
+
+# HTML files that should be inserted before the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+#epub_pre_files = []
+
+# HTML files that should be inserted after the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+#epub_post_files = []
+
+# A list of files that should not be packed into the epub file.
+epub_exclude_files = ['search.html']
+
+# The depth of the table of contents in toc.ncx.
+#epub_tocdepth = 3
+
+# Allow duplicate toc entries.
+#epub_tocdup = True
+
+# Choose between 'default' and 'includehidden'.
+#epub_tocscope = 'default'
+
+# Fix unsupported image types using the Pillow.
+#epub_fix_images = False
+
+# Scale large images.
+#epub_max_image_width = 0
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#epub_show_urls = 'inline'
+
+# If false, no index is generated.
+#epub_use_index = True
+
+# ------------------------------------------------------------------------------
+loadPrjConfig()
+# ------------------------------------------------------------------------------
diff --git a/Documentation/sphinx-static/theme_overrides.css b/Documentation/sphinx-static/theme_overrides.css
new file mode 100644
index 0000000..cd1277c
--- /dev/null
+++ b/Documentation/sphinx-static/theme_overrides.css
@@ -0,0 +1,45 @@
+/* -*- coding: utf-8; mode: css -*-
+ *
+ * This is a customization of the "Read The Doc" (RTD) theme.
+ *
+ */
+
+@...ia screen {
+
+    /* inline literal: drop the borderbox and red color */
+
+    code,.rst-content tt,.rst-content code {
+        color: inherit;
+        border: none;
+        background: inherit;
+        font-size: 85%;
+    }
+
+    .rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal {
+        color: inherit;
+    }
+
+    /* captions:
+     *
+     *   - captions should have 100% (not 85%) font size
+     *   - hide the permalink symbol as long as link is not hovered
+     */
+
+    caption, .wy-table caption, .rst-content table.field-list caption {
+        font-size: 100%;
+    }
+
+    caption a.headerlink { opacity: 0; }
+    caption a.headerlink:hover { opacity: 1; }
+
+    /* table:
+     *
+     *   - Sequences of whitespace should collapse into a single whitespace.
+     *   - make the overflow auto (scrollbar if needed)
+     *   - align caption "left" ("center" is unsuitable on vast tables)
+     */
+
+    .wy-table-responsive table td { white-space: normal; }
+    .wy-table-responsive { overflow: auto; }
+    .rst-content table.docutils caption { text-align: left; font-size: 100%; }
+}
diff --git a/Documentation/sphinx-tex/Makefile b/Documentation/sphinx-tex/Makefile
new file mode 100644
index 0000000..d2f7621
--- /dev/null
+++ b/Documentation/sphinx-tex/Makefile
@@ -0,0 +1,88 @@
+# Makefile for Sphinx LaTeX output
+
+ALLDOCS = $(basename $(wildcard *.tex))
+ALLPDF = $(addsuffix .pdf,$(ALLDOCS))
+ALLDVI = $(addsuffix .dvi,$(ALLDOCS))
+
+# Prefix for archive names
+ARCHIVEPRREFIX =
+
+# Additional LaTeX options
+LATEXOPTS = # -interaction=batchmode
+LATEX_ENV = max_print_line=120
+
+# format: pdf or dvi
+FMT = pdf
+
+LATEX     = $(LATEX_ENV) latex
+PDFLATEX  = $(LATEX_ENV) FIXME_xelatex
+MAKEINDEX = $(LATEX_ENV) makeindex
+
+all: $(ALLPDF)
+
+all-pdf: $(ALLPDF)
+
+dist-pdf:
+	mkdir -p $(DIST_BOOKS)
+	cp $(ALLPDF) $(DIST_BOOKS)
+
+all-dvi: $(ALLDVI)
+
+all-ps: all-dvi
+	for f in *.dvi; do dvips $$f; done
+
+all-pdf-ja:
+	for f in *.pdf *.png *.gif *.jpg *.jpeg; do extractbb $$f; done
+	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
+	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
+	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
+	-for f in *.idx; do mendex -U -f -d "`basename $$f .idx`.dic" -s python.ist $$f; done
+	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
+	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
+	for f in *.dvi; do dvipdfmx $$f; done
+
+zip: all-$(FMT)
+	mkdir $(ARCHIVEPREFIX)docs-$(FMT)
+	cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
+	zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT)
+	rm -r $(ARCHIVEPREFIX)docs-$(FMT)
+
+tar: all-$(FMT)
+	mkdir $(ARCHIVEPREFIX)docs-$(FMT)
+	cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
+	tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT)
+	rm -r $(ARCHIVEPREFIX)docs-$(FMT)
+
+gz: tar
+	gzip -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz
+
+bz2: tar
+	bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
+
+xz: tar
+	xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
+
+# The number of LaTeX runs is quite conservative, but I don't expect it
+# to get run often, so the little extra time won't hurt.
+%.dvi: %.tex
+	$(LATEX) $(LATEXOPTS) '$<'
+	$(LATEX) $(LATEXOPTS) '$<'
+	$(LATEX) $(LATEXOPTS) '$<'
+	-$(MAKEINDEX) -s python.ist '$(basename $<).idx'
+	$(LATEX) $(LATEXOPTS) '$<'
+	$(LATEX) $(LATEXOPTS) '$<'
+
+%.pdf: %.tex
+	$(PDFLATEX) $(LATEXOPTS) '$<'
+	$(PDFLATEX) $(LATEXOPTS) '$<'
+	$(PDFLATEX) $(LATEXOPTS) '$<'
+	-$(MAKEINDEX) -s python.ist '$(basename $<).idx'
+	$(PDFLATEX) $(LATEXOPTS) '$<'
+	$(PDFLATEX) $(LATEXOPTS) '$<'
+
+clean:
+	rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI)
+
+.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz
+.PHONY: all-pdf-ja
+
-- 
v4.7-rc-2

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ