gstreamer/scripts/generate_init_static_plugins.py
Xavier Claessens 35285c51b8 Add gstreamer-full library containing all plugins and their deps
When building with -Ddefault_library=static, also build a single library
containing all built plugins. Any external dependencies are still
dynamically linked.

A monolithic library is easier to distribute, and in some envs like
Android is required.
2020-03-04 08:23:52 -05:00

40 lines
1 KiB
Python

#!/usr/bin/env python3
import argparse
import os
from string import Template
TEMPLATE = Template('''
#include <gst/gst.h>
$plugins_declaration
void
gst_init_static_plugins (void)
{
$plugins_registration
}
''')
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(dest="output", help="Output file")
parser.add_argument(dest="plugins", nargs=argparse.REMAINDER, help="The list of plugins")
options = parser.parse_args()
names = set()
for plugin in options.plugins:
filename = os.path.basename(plugin)
if filename.startswith('libgst') and filename.endswith('.a'):
names.add(filename[len('libgst'):-len('.a')])
registration = ['GST_PLUGIN_STATIC_REGISTER(%s);' % name for name in names]
declaration = ['GST_PLUGIN_STATIC_DECLARE(%s);' % name for name in names]
with open(options.output, "w") as f:
f.write(TEMPLATE.substitute({
'plugins_declaration': '\n'.join(declaration),
'plugins_registration': '\n '.join(registration),
}))