| #!/usr/bin/env python3 |
| # pylint: disable=invalid-name,missing-docstring |
| # |
| # Copyright 2022 Richard Hughes <richard@hughsie.com> |
| # |
| # SPDX-License-Identifier: LGPL-2.1-or-later |
| |
| import sys |
| |
| if len(sys.argv) < 3: |
| print("not enough arguments") |
| sys.exit(1) |
| |
| with open(sys.argv[1], "w") as f: |
| # empty argument is no plugins |
| plugin_names = [] |
| if sys.argv[3]: |
| for fullpath in sys.argv[3].split(","): |
| parts = fullpath.split("/") |
| name = parts[-1] |
| if name.startswith("libfu_plugin_"): |
| name = name[13:] |
| if name.endswith(".a"): |
| name = name[:-2] |
| plugin_names.append((parts[-2], name)) |
| |
| # includes |
| for dirname, name in plugin_names: |
| f.write( |
| '#include "{srcdir}/plugins/{dirname}/fu-{name}-plugin.h"\n'.format( |
| srcdir=sys.argv[2], dirname=dirname, name=name.replace("_", "-") |
| ) |
| ) |
| |
| # GTypes |
| gtypes = [f"fu_{name}_plugin_get_type" for _, name in plugin_names] |
| f.write( |
| "GType (*fu_plugin_externals[])(void) = { %s };\n" |
| % ", ".join(gtypes + ["NULL"]) |
| ) |
| |
| sys.exit(0) |