xref: /dpdk/doc/api/generate_examples.py (revision fac23f030cd87a5a7ba57e72157c0db03e331d30)
1#!/usr/bin/env python3
2# SPDX-License-Identifier: BSD-3-Clause
3# (c) 2018 Luca Boccassi <bluca@debian.org>
4# (c) 2022 Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
5
6import os, sys
7
8examples_dir, api_examples = sys.argv[1:]
9
10sources = []
11with open(f'{api_examples}.d', 'w') as dep:
12    print(f'{api_examples}:', end=' ', file=dep)
13    for root, _, files in os.walk(examples_dir):
14        for name in sorted(files):
15            is_source = name.endswith('.c')
16            if is_source or name == 'meson.build':
17                path = os.path.join(root, name)
18                if is_source:
19                    sources.append(path)
20                print(path , end=' ', file=dep)
21
22with open(api_examples, 'w') as out:
23    print('''/**
24@page examples DPDK Example Programs
25''', file=out)
26    for path in sorted(sources):
27        # Produce consistent output with forward slashes on all systems.
28        # Every \ in paths within examples directory is a separator, not escape.
29        relpath = os.path.relpath(path, examples_dir).replace('\\', '/')
30        print(f'@example examples/{relpath}', file=out)
31    print('*/', file=out)
32