meson.build 3.75 KB
Newer Older
1
project('GStreamer manuals and tutorials', 'c',
Tim-Philipp Müller's avatar
Tim-Philipp Müller committed
2
  version: '1.17.1',
3
  meson_version: '>=0.48.0')
4
5

hotdoc = import('hotdoc')
6
hotdoc_subprojects = []
7
8

apiversion = '1.0'
9
10
11
12
13
14
if host_machine.system() == 'windows'
  pathsep = ';'
else
  pathsep = ':'
endif

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
python3 = import('python').find_installation()

built_subprojects = get_option('built_subprojects')
if built_subprojects != ''
  message('Have subprojects list from options')
else
  read_file_contents = '''
import os
import sys

assert len(sys.argv) >= 2
fname = sys.argv[1]

with open(fname, 'r') as f:
    for l in f:
        print(l)
'''

  # gst-build will generate this file for us to consume so that subproject
  # changes can still work
  fname = join_paths(meson.build_root(), 'GstDocumentedSubprojects')
  cmdres = run_command(
      python3,
      '-c', read_file_contents,
      fname,
    )
  if cmdres.returncode() == 0
    built_subprojects = cmdres.stdout().strip()
    message('Have subprojects from file: @0@'.format(fname))
  endif
endif

47
48
49
50
libs = ''
plugins_doc = ''
deps = []
plugins_sitemap = ''
51
52
if built_subprojects != ''
    foreach project_name: built_subprojects.split(',')
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
        sub = subproject(project_name)
        if sub.get_variable('build_hotdoc')
            message('Building @0@ documentation'.format(project_name))

            foreach lib: sub.get_variable('libs_doc')
              hotdoc_subprojects += [lib]
              libs += lib.full_path() + pathsep
              deps += [lib]
            endforeach

            foreach plugin_doc: sub.get_variable('plugins_doc')
              plugins_doc += plugin_doc.full_path() + pathsep
              hotdoc_subprojects += [plugin_doc]
              deps += [plugin_doc]
            endforeach
        else
            message('@0@ did not build hotdoc documentation, can\'t build API doc'.format(project_name))
        endif
    endforeach
endif
73
deps += [dependency('gstreamer-' + apiversion, fallback: ['gstreamer', 'gst_dep'])]
74
75
76
77
78
79
80
81

if get_option('use_portal_index')
  index = 'markdown/index.md'
else
  index = 'markdown/simple-index.md'
endif
sitemap_gen = find_program('scripts/generate_sitemap.py')
sitemap = configure_file(command: [sitemap_gen, '@INPUT@', '@OUTPUT@',
82
  'gi-index', libs, plugins_doc],
83
84
  input: 'sitemap.txt',
  output: 'sitemap.txt')
85

Thibault Saunier's avatar
Thibault Saunier committed
86
html_theme = 'https://github.com/hotdoc/hotdoc_lumen_theme/releases/download/0.999/hotdoc_lumen_theme-0.999.tar.xz?sha256=61088e983e7a5d171f2afc4e270c82f1ca251e38e375658ef230666691418629'
87
88
89

gstreamer_doc = hotdoc.generate_doc('GStreamer',
    project_version: apiversion,
90
91
    sitemap: sitemap,
    index: index,
92
    gi_index: index,
93
94
95
96
97
98
    install: true,
    extra_assets: [join_paths(meson.current_source_dir(), 'images')],
    syntax_highlighting_activate: true,
    html_theme: html_theme,
    include_paths: join_paths(meson.current_source_dir(), 'examples'),
    html_extra_theme: join_paths(meson.current_source_dir(), 'theme/extra'),
99
100
    dependencies: deps,
    subprojects: hotdoc_subprojects,
101
    disable_incremental_build: true,
102
103
    gst_list_plugins_page: 'gst-index',
    gst_index: join_paths(meson.current_source_dir(), 'markdown/plugins_doc.md'),
104
    devhelp_activate: true,
105
    devhelp_online: 'https://gstreamer.freedesktop.org/documentation/',
106
107
    build_always_stale: true,
    edit_on_github_repository: 'https://gitlab.freedesktop.org/gstreamer/gst-docs/',
108
)
109
110
111
112
113
114
115
116
117
118

cdata = configuration_data()
cdata.set('GST_API_VERSION', apiversion)
readme = configure_file(input: 'scripts/RELEASE_README.md',
               output: 'README.md',
               configuration : cdata)

run_target('release',
  command: [find_program('scripts/release.py'),
            gstreamer_doc.full_path(),
119
            'gstreamer-docs-@0@'.format(meson.project_version()),
120
121
122
            join_paths(meson.current_build_dir(), 'README.md')],
  depends: [gstreamer_doc]
)