1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
sphinx = find_program('sphinx-build', native : true, required : get_option('man-pages').enabled() or get_option('documentation').enabled())
sphinx_wrapper = meson.current_source_dir() / 'sphinx-wrapper.sh'
collect_authors = meson.current_source_dir() / 'collect-authors.sh'
man_pages = [
'flashrom.8'
]
if sphinx.found()
if get_option('man-pages').auto() or get_option('man-pages').enabled()
man_outputs = []
foreach page : man_pages
man_outputs += 'man' + page.substring(-1)
endforeach
custom_target(
'man-pages',
command : [sphinx_wrapper, '@OUTDIR@', ' '.join(man_outputs), sphinx, '-b', 'man', '-q', '-d', '@PRIVATE_DIR@', '-Drelease=' + flashrom_version, '@CURRENT_SOURCE_DIR@', '@OUTDIR@'],
build_always_stale : true, # sphinx handles rebuilds
output : man_outputs,
install : true,
install_dir : get_option('mandir'),
)
endif
if get_option('documentation').auto() or get_option('documentation').enabled()
with_authors_list = get_option('generate_authors_list')
git = find_program('git', native : true, required : with_authors_list)
git_dir = meson.project_source_root() / '.git'
# TODO: investigate whether this version can be lowered.
version_for_authors_list = '7.2.0'
# TODO: use sphinx.version().version_compare() instead, after we increase min required meson version to 0.62
sphinx_for_authors_list = find_program('sphinx-build',
native : true,
required : false,
version : '>=' + version_for_authors_list)
# When with_authors_list is requested, unsatisfied requirements are an error.
if with_authors_list.enabled()
if not git.found()
error('generate_authors_list was force-enabled but git is not available')
endif
if not fs.is_dir(git_dir)
error('generate_authors_list was force-enabled but a .git directory was not found in the source tree')
endif
if not sphinx_for_authors_list.found()
error('generate_authors_list was force-enabled but sphinx version is too old, min required is '
+ version_for_authors_list)
endif
endif
if (
(with_authors_list.enabled() or with_authors_list.auto())
and git.found() and fs.is_dir(git_dir)
and sphinx_for_authors_list.found()
)
# If requirements are met and authors list is allowed, generate it.
authors_lst = custom_target(
'authors_lst',
output : 'authors.lst',
command : [collect_authors, 'authors', '@OUTPUT0@', git_dir],
)
reviewers_lst = custom_target(
'reviewers_lst',
output : 'reviewers.lst',
command : [collect_authors, 'reviewers', '@OUTPUT0@', git_dir],
)
authors_list_options = [
'-Dflashrom_authors_list_files.authors=' + authors_lst.full_path(),
'-Dflashrom_authors_list_files.reviewers=' + reviewers_lst.full_path(),
]
doc_depends = [authors_lst, reviewers_lst]
else
# Disabled or prerequisites not met. Continue without the authors list.
# Checks earlier in this file will raise an error if the feature is enabled
# but the prerequisites aren't met.
authors_list_options = []
doc_depends = []
if with_authors_list.auto()
# Explain what wasn't satisfied to help the user understand why
# the authors list is missing.
if not git.found()
message('git not found; will not generate authors list')
elif not fs.is_dir(git_dir)
message('.git directory not found in project; will not generate authors list')
endif
endif
endif
custom_target(
'documentation',
command : [
sphinx, '-b', 'html', '-q', '-d', '@PRIVATE_DIR@',
'-Drelease=' + flashrom_version,
'@CURRENT_SOURCE_DIR@', '@OUTDIR@/html'
] + authors_list_options,
depends : doc_depends,
build_always_stale : true, # sphinx handles rebuilds
output : 'html',
install : true,
install_dir : get_option('datadir') + '/doc/flashrom'
)
endif
endif
|