diff options
author | Ayke van Laethem <aykevanlaethem@gmail.com> | 2018-06-14 15:57:29 +0200 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2019-03-08 22:49:00 +1100 |
commit | 2e516074daee76fb3e0710a893a0f40532bb3252 (patch) | |
tree | d871d641c10aff22e3d80ad4711310c4b7be4b31 /tools/gen-cmodules.py | |
parent | cf22f4793cb04e8e63a0d11f479a69c9be6c93ba (diff) |
py: Implement a module system for external, user C modules.
This system makes it a lot easier to include external libraries as static,
native modules in MicroPython. Simply pass USER_C_MODULES (like
FROZEN_MPY_DIR) as a make parameter.
Diffstat (limited to 'tools/gen-cmodules.py')
-rwxr-xr-x | tools/gen-cmodules.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tools/gen-cmodules.py b/tools/gen-cmodules.py new file mode 100755 index 000000000..524e3c03d --- /dev/null +++ b/tools/gen-cmodules.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python + +# Generate genhdr/cmodules.h for inclusion in py/objmodule.c. + +from __future__ import print_function + +import sys +import os +from glob import glob + +def update_modules(path): + modules = [] + for module in sorted(os.listdir(path)): + if not os.path.isfile('%s/%s/micropython.mk' % (path, module)): + continue # not a module + modules.append(module) + + # Print header file for all external modules. + print('// Automatically generated by genmodules.py.\n') + for module in modules: + print('extern const struct _mp_obj_module_t %s_user_cmodule;' % module) + print('\n#define MICROPY_EXTRA_BUILTIN_MODULES \\') + for module in modules: + print(' { MP_ROM_QSTR(MP_QSTR_%s), MP_ROM_PTR(&%s_user_cmodule) }, \\' % (module, module)) + print() + +if __name__ == '__main__': + update_modules(sys.argv[1]) |