Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
a52e38cfad | |||
d734efee26 | |||
1ad82d5c4b | |||
9d2c6f31db | |||
b5218d50f6 | |||
fc5ab3f9c6 | |||
901c3e55cd | |||
a2037a5341 | |||
|
85a4d068b7 | ||
|
32f4562704 | ||
|
09b2ebf8db | ||
|
7f674e7892 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -14,3 +14,6 @@ test/*/cmake_output
|
||||
|
||||
# generated by doc/extract_rst.py
|
||||
doc/module-reference.rst
|
||||
.idea/
|
||||
/tmp/
|
||||
_build
|
||||
|
16
Pipfile
16
Pipfile
@ -1,16 +0,0 @@
|
||||
[[source]]
|
||||
|
||||
url = "https://pypi.python.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
|
||||
[packages]
|
||||
|
||||
pycodestyle = "*"
|
||||
pytest = "*"
|
||||
PyYAML = "==4.2b4"
|
||||
|
||||
|
||||
[dev-packages]
|
||||
|
89
Pipfile.lock
generated
89
Pipfile.lock
generated
@ -1,89 +0,0 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "f86826fa4239dea24ceb6dbac0dd68caeb99b9c982dc6ace46ea32fbd09ab747"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.python.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"atomicwrites": {
|
||||
"hashes": [
|
||||
"sha256:0312ad34fcad8fac3704d441f7b317e50af620823353ec657a53e981f92920c0",
|
||||
"sha256:ec9ae8adaae229e4f8446952d204a3e4b5fdd2d099f9be3aaf556120135fb3ee"
|
||||
],
|
||||
"version": "==1.2.1"
|
||||
},
|
||||
"attrs": {
|
||||
"hashes": [
|
||||
"sha256:10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69",
|
||||
"sha256:ca4be454458f9dec299268d472aaa5a11f67a4ff70093396e1ceae9c76cf4bbb"
|
||||
],
|
||||
"version": "==18.2.0"
|
||||
},
|
||||
"more-itertools": {
|
||||
"hashes": [
|
||||
"sha256:38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4",
|
||||
"sha256:c0a5785b1109a6bd7fac76d6837fd1feca158e54e521ccd2ae8bfe393cc9d4fc",
|
||||
"sha256:fe7a7cae1ccb57d33952113ff4fa1bc5f879963600ed74918f1236e212ee50b9"
|
||||
],
|
||||
"version": "==5.0.0"
|
||||
},
|
||||
"pluggy": {
|
||||
"hashes": [
|
||||
"sha256:8ddc32f03971bfdf900a81961a48ccf2fb677cf7715108f85295c67405798616",
|
||||
"sha256:980710797ff6a041e9a73a5787804f848996ecaa6f8a1b1e08224a5894f2074a"
|
||||
],
|
||||
"version": "==0.8.1"
|
||||
},
|
||||
"py": {
|
||||
"hashes": [
|
||||
"sha256:bf92637198836372b520efcba9e020c330123be8ce527e535d185ed4b6f45694",
|
||||
"sha256:e76826342cefe3c3d5f7e8ee4316b80d1dd8a300781612ddbc765c17ba25a6c6"
|
||||
],
|
||||
"version": "==1.7.0"
|
||||
},
|
||||
"pycodestyle": {
|
||||
"hashes": [
|
||||
"sha256:cbc619d09254895b0d12c2c691e237b2e91e9b2ecf5e84c26b35400f93dcfb83",
|
||||
"sha256:cbfca99bd594a10f674d0cd97a3d802a1fdef635d4361e1a2658de47ed261e3a"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.4.0"
|
||||
},
|
||||
"pytest": {
|
||||
"hashes": [
|
||||
"sha256:41568ea7ecb4a68d7f63837cf65b92ce8d0105e43196ff2b26622995bb3dc4b2",
|
||||
"sha256:c3c573a29d7c9547fb90217ece8a8843aa0c1328a797e200290dc3d0b4b823be"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==4.1.1"
|
||||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
"sha256:254bf6fda2b7c651837acb2c718e213df29d531eebf00edb54743d10bcb694eb",
|
||||
"sha256:3108529b78577327d15eec243f0ff348a0640b0c3478d67ad7f5648f93bac3e2",
|
||||
"sha256:3c17fb92c8ba2f525e4b5f7941d850e7a48c3a59b32d331e2502a3cdc6648e76",
|
||||
"sha256:8d6d96001aa7f0a6a4a95e8143225b5d06e41b1131044913fecb8f85a125714b",
|
||||
"sha256:c8a88edd93ee29ede719080b2be6cb2333dfee1dccba213b422a9c8e97f2967b"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==4.2b4"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c",
|
||||
"sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
|
||||
],
|
||||
"version": "==1.12.0"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
}
|
@ -1,11 +1,12 @@
|
||||
[](https://travis-ci.org/dev-cafe/autocmake/builds)
|
||||
[](http://autocmake.readthedocs.org)
|
||||
[](../master/LICENSE)
|
||||
[](LICENSE)
|
||||
[](https://zenodo.org/badge/latestdoi/36069881)
|
||||
|
||||

|
||||
|
||||
A CMake plugin composer.
|
||||
Licensed under [BSD-3](../master/LICENSE).
|
||||
Licensed under [BSD-3](LICENSE).
|
||||
See http://autocmake.org.
|
||||
|
||||
|
||||
|
@ -52,7 +52,29 @@ def setup_build_path(build_path):
|
||||
os.makedirs(build_path, 0o755)
|
||||
|
||||
|
||||
def run_cmake(command, build_path, default_build_path):
|
||||
def add_quotes_to_argv(argv, arguments):
|
||||
"""
|
||||
This function tries to solve this problem:
|
||||
https://stackoverflow.com/questions/19120247/python-sys-argv-to-preserve-or
|
||||
|
||||
The problem is that sys.argv has been stripped of quotes by the shell but
|
||||
docopt's arguments contains quotes.
|
||||
|
||||
So what we do is cycle through all docopt arguments: if they are also
|
||||
present in sys.argv and contain spaces, we add quotes.
|
||||
"""
|
||||
setup_command = ' '.join(argv[:])
|
||||
|
||||
for k, v in arguments.items():
|
||||
if isinstance(v, str):
|
||||
if ' ' in v:
|
||||
if v in setup_command:
|
||||
setup_command = setup_command.replace(v, '"{}"'.format(v))
|
||||
|
||||
return setup_command
|
||||
|
||||
|
||||
def run_cmake(command, build_path, default_build_path, arguments):
|
||||
"""
|
||||
Execute CMake command.
|
||||
"""
|
||||
@ -88,7 +110,8 @@ def run_cmake(command, build_path, default_build_path):
|
||||
configuration_successful = configuring_done and generating_done and build_files_written
|
||||
|
||||
if configuration_successful:
|
||||
save_setup_command(sys.argv, build_path)
|
||||
setup_command = add_quotes_to_argv(sys.argv, arguments)
|
||||
save_setup_command(setup_command, build_path)
|
||||
print_build_help(build_path, default_build_path)
|
||||
|
||||
|
||||
@ -105,16 +128,16 @@ def print_build_help(build_path, default_build_path):
|
||||
print(' $ make')
|
||||
|
||||
|
||||
def save_setup_command(argv, build_path):
|
||||
def save_setup_command(setup_command, build_path):
|
||||
"""
|
||||
Save setup command to a file.
|
||||
"""
|
||||
file_name = os.path.join(build_path, 'setup_command')
|
||||
with open(file_name, 'w') as f:
|
||||
f.write(' '.join(argv[:]) + '\n')
|
||||
f.write(setup_command + '\n')
|
||||
|
||||
|
||||
def configure(root_directory, build_path, cmake_command, only_show):
|
||||
def configure(root_directory, build_path, cmake_command, arguments):
|
||||
"""
|
||||
Main configure function.
|
||||
"""
|
||||
@ -126,12 +149,12 @@ def configure(root_directory, build_path, cmake_command, only_show):
|
||||
# deal with build path
|
||||
if build_path is None:
|
||||
build_path = default_build_path
|
||||
if not only_show:
|
||||
if not arguments['--show']:
|
||||
setup_build_path(build_path)
|
||||
|
||||
cmake_command += ' -B' + build_path
|
||||
print('{0}\n'.format(cmake_command))
|
||||
if only_show:
|
||||
if arguments['--show']:
|
||||
sys.exit(0)
|
||||
|
||||
run_cmake(cmake_command, build_path, default_build_path)
|
||||
run_cmake(cmake_command, build_path, default_build_path, arguments)
|
||||
|
@ -1,5 +1,5 @@
|
||||
def extract_list(config, section):
|
||||
from collections import Iterable
|
||||
from collections.abc import Iterable
|
||||
l = []
|
||||
if 'modules' in config:
|
||||
for module in config['modules']:
|
||||
|
@ -150,7 +150,7 @@ def gen_setup(config, default_build_type, relative_path, setup_script_name):
|
||||
s.append("cmake_command = '{0} -H{1}'.format(gen_cmake_command(options, arguments), root_directory)")
|
||||
s.append("\n")
|
||||
s.append("# run cmake")
|
||||
s.append("configure.configure(root_directory, build_path, cmake_command, arguments['--show'])")
|
||||
s.append("configure.configure(root_directory, build_path, cmake_command, arguments)")
|
||||
|
||||
return s
|
||||
|
||||
|
@ -13,7 +13,7 @@ def test_replace():
|
||||
|
||||
|
||||
def interpolate(d, d_map):
|
||||
from collections import Mapping, Iterable
|
||||
from collections.abc import Mapping, Iterable
|
||||
from copy import copy
|
||||
|
||||
for k, v in d.items():
|
||||
|
@ -1,14 +1,9 @@
|
||||
def parse_cmake_module(s_in, overrides={}):
|
||||
import sys
|
||||
from collections import Mapping, Iterable, defaultdict
|
||||
from collections.abc import Mapping, Iterable
|
||||
from collections import defaultdict
|
||||
from autocmake.parse_yaml import parse_yaml
|
||||
|
||||
# we do not use the nicer sys.version_info.major
|
||||
# for compatibility with Python < 2.7
|
||||
if sys.version_info[0] > 2:
|
||||
from io import StringIO
|
||||
else:
|
||||
from StringIO import StringIO
|
||||
|
||||
parsed_config = defaultdict(lambda: None)
|
||||
|
||||
|
20
doc/Makefile
Normal file
20
doc/Makefile
Normal file
@ -0,0 +1,20 @@
|
||||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line, and also
|
||||
# from the environment for the first two.
|
||||
SPHINXOPTS ?=
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
SOURCEDIR = .
|
||||
BUILDDIR = _build
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
351
doc/conf.py
351
doc/conf.py
@ -1,345 +1,48 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# Autocmake documentation build configuration file, created by
|
||||
# sphinx-quickstart on Mon Jun 1 16:41:30 2015.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its
|
||||
# containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
# For the full list of built-in configuration values, see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
|
||||
# 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.
|
||||
sys.path.insert(0, os.path.abspath('.'))
|
||||
sys.path.insert(0, os.path.abspath("."))
|
||||
import extract_rst
|
||||
|
||||
sys.path.insert(0, os.path.abspath('..'))
|
||||
sys.path.insert(0, os.path.abspath(".."))
|
||||
from autocmake import __version__ as _version
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
# -- Project information -----------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#
|
||||
# needs_sphinx = '1.0'
|
||||
project = "Autocmake"
|
||||
copyright = f'2015-{time.strftime("%Y")}, Radovan Bast, Roberto Di Remigio, Jonas Juselius, and contributors'
|
||||
author = "Radovan Bast, Roberto Di Remigio, Jonas Juselius, and contributors"
|
||||
|
||||
# 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.todo',
|
||||
]
|
||||
|
||||
# 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']
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#
|
||||
# source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Autocmake'
|
||||
copyright = u'2015-2017, Radovan Bast, Roberto Di Remigio, Jonas Juselius, and contributors'
|
||||
author = u'Radovan Bast, Roberto Di Remigio, Jonas Juselius, and contributors'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = _version
|
||||
# The short X.Y version.
|
||||
version = '.'.join(release.split('.')[0:2])
|
||||
version = ".".join(release.split(".")[0:2])
|
||||
|
||||
# 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
|
||||
# -- General configuration ---------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
||||
|
||||
# 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.
|
||||
# This patterns also effect to html_static_path and html_extra_path
|
||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all
|
||||
# documents.
|
||||
#
|
||||
# default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
#
|
||||
# add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#
|
||||
# add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#
|
||||
# show_authors = False
|
||||
|
||||
# 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.
|
||||
extensions = [
|
||||
"sphinx.ext.todo",
|
||||
]
|
||||
todo_include_todos = True
|
||||
|
||||
templates_path = ["_templates"]
|
||||
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
root_doc = "index"
|
||||
pygments_style = "sphinx"
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
html_theme = 'default'
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
|
||||
|
||||
# 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 for this set of Sphinx documents.
|
||||
# "<project> v<release> documentation" by default.
|
||||
#
|
||||
# html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#
|
||||
# html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#
|
||||
# html_logo = None
|
||||
|
||||
# The name of an image file (relative to this directory) to use as a 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 = ['_static']
|
||||
|
||||
# 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 None, a 'Last updated on:' timestamp is inserted at every page
|
||||
# bottom, using the given strftime format.
|
||||
# The empty string is equivalent to '%b %d, %Y'.
|
||||
#
|
||||
# html_last_updated_fmt = None
|
||||
|
||||
# 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 = True
|
||||
|
||||
# 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', 'h', 'it', 'ja'
|
||||
# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr', 'zh'
|
||||
#
|
||||
# html_search_language = 'en'
|
||||
|
||||
# A dictionary with options for the search language support, empty by default.
|
||||
# 'ja' uses this config value.
|
||||
# 'zh' user can custom change `jieba` dictionary path.
|
||||
#
|
||||
# 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 = 'Autocmakedoc'
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#
|
||||
# 'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#
|
||||
# 'preamble': '',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#
|
||||
# 'figure_align': 'htbp',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'Autocmake.tex', u'Autocmake Documentation',
|
||||
author, 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#
|
||||
# latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#
|
||||
# latex_use_parts = False
|
||||
|
||||
# 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 = []
|
||||
|
||||
# It false, will not define \strong, \code, itleref, \crossref ... but only
|
||||
# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added
|
||||
# packages.
|
||||
#
|
||||
# latex_keep_old_macro_names = True
|
||||
|
||||
# If false, no module index is generated.
|
||||
#
|
||||
# latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, 'autocmake', u'Autocmake Documentation',
|
||||
[author], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#
|
||||
# man_show_urls = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'Autocmake', u'Autocmake Documentation',
|
||||
author, 'Autocmake', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# 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
|
||||
html_theme = "classic"
|
||||
html_theme_options = {"body_max_width": "none", "sidebarwidth": "16%"}
|
||||
html_static_path = ["_static"]
|
||||
html_sidebars = {"**": ["globaltoc.html", "sourcelink.html", "searchbox.html"]}
|
||||
|
@ -10,7 +10,7 @@ below::
|
||||
|
||||
name: numgrid
|
||||
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
|
||||
default_build_type: release
|
||||
|
||||
@ -75,7 +75,7 @@ Minimal example
|
||||
As a minimal example we take an ``autocmake.yml`` which only contains::
|
||||
|
||||
name: minime
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: C
|
||||
|
||||
If you don't have the ``update.py`` script yet, you need to fetch it from the web::
|
||||
|
@ -54,7 +54,7 @@ Now we edit ``cmake/autocmake.yml`` to look like this::
|
||||
|
||||
name: hello
|
||||
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
|
||||
language:
|
||||
- Fortran
|
||||
|
@ -73,7 +73,7 @@ Yes you can do that in ``autocmake.yml``. Here we for instance change the name t
|
||||
:emphasize-lines: 4
|
||||
|
||||
name: myproject
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
default_build_type: release
|
||||
setup_script: configure
|
||||
language:
|
||||
|
35
doc/make.bat
Normal file
35
doc/make.bat
Normal file
@ -0,0 +1,35 @@
|
||||
@ECHO OFF
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set SOURCEDIR=.
|
||||
set BUILDDIR=_build
|
||||
|
||||
%SPHINXBUILD% >NUL 2>NUL
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.https://www.sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
goto end
|
||||
|
||||
:help
|
||||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||
|
||||
:end
|
||||
popd
|
@ -4,4 +4,4 @@
|
||||
|
||||
name: myproject
|
||||
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
|
30
modules/sccache.cmake
Normal file
30
modules/sccache.cmake
Normal file
@ -0,0 +1,30 @@
|
||||
# (c) https://github.com/dev-cafe/autocmake/blob/master/AUTHORS.md
|
||||
# licensed under BSD-3: https://github.com/dev-cafe/autocmake/blob/master/LICENSE
|
||||
|
||||
#.rst:
|
||||
#
|
||||
# Adds sccache support.
|
||||
# The user should export the appropriate environment variables to
|
||||
# tweak the program's behaviour, as described in its manpage.
|
||||
# Notice that some additional compiler flags might be needed in order
|
||||
# to avoid unnecessary warnings.
|
||||
#
|
||||
# Variables defined::
|
||||
#
|
||||
# SCCACHE_FOUND
|
||||
#
|
||||
# autocmake.yml configuration::
|
||||
#
|
||||
# docopt: "--sccache=<USE_SCCACHE> Toggle use of sccache <ON/OFF> [default: ON]."
|
||||
# define: "'-DUSE_SCCACHE={0}'.format(arguments['--sccache'])"
|
||||
|
||||
if(USE_SCCACHE)
|
||||
find_program(SCCACHE_FOUND sccache)
|
||||
if(SCCACHE_FOUND)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE sccache)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK sccache)
|
||||
message(STATUS "Compiling with sccache")
|
||||
else()
|
||||
message(STATUS "sccache not available")
|
||||
endif()
|
||||
endif()
|
@ -1,3 +1,4 @@
|
||||
pycodestyle
|
||||
pytest
|
||||
pyyaml
|
||||
sphinx
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: CXX
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language:
|
||||
- CXX
|
||||
- C
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language:
|
||||
- C
|
||||
- CXX
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: CXX
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: Fortran
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language:
|
||||
- Fortran
|
||||
- C
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: Fortran
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: Fortran
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language:
|
||||
- Fortran
|
||||
- C
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: Fortran
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: CXX
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language:
|
||||
- CXX
|
||||
default_build_type: debug
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: CXX
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: example
|
||||
min_cmake_version: 2.8
|
||||
min_cmake_version: 3.1
|
||||
language: CXX
|
||||
default_build_type: debug
|
||||
modules:
|
||||
|
53
update.py
53
update.py
@ -1,15 +1,9 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
if sys.version_info[0] == 2 and sys.version_info[1] < 7:
|
||||
sys.stderr.write("ERROR: update.py requires at least Python 2.7\n")
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
AUTOCMAKE_GITHUB_URL = 'https://github.com/dev-cafe/autocmake/raw/master/'
|
||||
AUTOCMAKE_GITHUB_URL = 'https://github.com/AnotherFoxGuy/autocmake/raw/master/'
|
||||
|
||||
|
||||
def licensing_info():
|
||||
@ -40,15 +34,15 @@ def print_progress_bar(text, done, total, width):
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
def flat_add(l, x):
|
||||
def flat_add(lst, x):
|
||||
if isinstance(x, int):
|
||||
l.append(x)
|
||||
return l
|
||||
lst.append(x)
|
||||
return lst
|
||||
elif isinstance(x, str):
|
||||
l.append(x)
|
||||
return l
|
||||
lst.append(x)
|
||||
return lst
|
||||
else:
|
||||
return l + x
|
||||
return lst + x
|
||||
|
||||
|
||||
def fetch_modules(config, relative_path, download_directory):
|
||||
@ -56,7 +50,7 @@ def fetch_modules(config, relative_path, download_directory):
|
||||
Assemble modules which will
|
||||
be included in CMakeLists.txt.
|
||||
"""
|
||||
from collections import Iterable, namedtuple, defaultdict
|
||||
from collections import namedtuple, defaultdict
|
||||
from autocmake.extract import extract_list, to_d, to_l
|
||||
from autocmake.parse_rst import parse_cmake_module
|
||||
|
||||
@ -130,7 +124,6 @@ def fetch_modules(config, relative_path, download_directory):
|
||||
def process_yaml(argv):
|
||||
from autocmake.parse_yaml import parse_yaml
|
||||
from autocmake.generate import gen_cmakelists, gen_setup
|
||||
from autocmake.extract import extract_list
|
||||
|
||||
project_root = argv[1]
|
||||
if not os.path.isdir(project_root):
|
||||
@ -287,30 +280,22 @@ def fetch_url(src, dst):
|
||||
"""
|
||||
Fetch file from URL src and save it to dst.
|
||||
"""
|
||||
# we do not use the nicer sys.version_info.major
|
||||
# for compatibility with Python < 2.7
|
||||
if sys.version_info[0] > 2:
|
||||
import urllib.request
|
||||
|
||||
class URLopener(urllib.request.FancyURLopener):
|
||||
def http_error_default(self, url, fp, errcode, errmsg, headers):
|
||||
sys.stderr.write("ERROR: could not fetch {0}\n".format(url))
|
||||
sys.exit(-1)
|
||||
else:
|
||||
import urllib
|
||||
|
||||
class URLopener(urllib.FancyURLopener):
|
||||
def http_error_default(self, url, fp, errcode, errmsg, headers):
|
||||
sys.stderr.write("ERROR: could not fetch {0}\n".format(url))
|
||||
sys.exit(-1)
|
||||
|
||||
import shutil
|
||||
dirname = os.path.dirname(dst)
|
||||
if dirname != '':
|
||||
if not os.path.isdir(dirname):
|
||||
os.makedirs(dirname)
|
||||
|
||||
opener = URLopener()
|
||||
opener.retrieve(src, dst)
|
||||
try:
|
||||
with urllib.request.urlopen(src) as response, open(dst, 'wb') as out_file:
|
||||
shutil.copyfileobj(response, out_file)
|
||||
except urllib.error.HTTPError as e:
|
||||
sys.stderr.write(f"\n\nERROR: could not fetch {src}, request failed with error {e.code} \n\t {e.reason}\n")
|
||||
sys.exit(-1)
|
||||
except urllib.error.URLError as e:
|
||||
sys.stderr.write(f"\n\nERROR: could not fetch {src}, {e.reason}\n")
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
Loading…
x
Reference in New Issue
Block a user