diff options
author | Gilles Roudière <gilles.roudiere@gmail.com> | 2022-10-12 16:21:34 +0200 |
---|---|---|
committer | Gilles Roudière <gilles.roudiere@gmail.com> | 2022-10-13 10:03:30 +0200 |
commit | 55010a2d9f91798f08bd2deded9445a4354ee3ee (patch) | |
tree | 11f6e7ffd2b58e8fce6b570bfa02d7db97f5fc37 /core/extension/make_interface_dumper.py | |
parent | 5aadc618b6ff152dbc0ca4ea901c34a97e164091 (diff) | |
download | redot-engine-55010a2d9f91798f08bd2deded9445a4354ee3ee.tar.gz |
Implement a way to dump the gdnative_interface.h file from the executable
Diffstat (limited to 'core/extension/make_interface_dumper.py')
-rw-r--r-- | core/extension/make_interface_dumper.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/core/extension/make_interface_dumper.py b/core/extension/make_interface_dumper.py new file mode 100644 index 0000000000..cc85c728d5 --- /dev/null +++ b/core/extension/make_interface_dumper.py @@ -0,0 +1,47 @@ +def run(target, source, env): + src = source[0] + dst = target[0] + f = open(src, "r", encoding="utf-8") + g = open(dst, "w", encoding="utf-8") + + g.write( + """/* THIS FILE IS GENERATED DO NOT EDIT */ +#ifndef GDNATIVE_INTERFACE_DUMP_H +#define GDNATIVE_INTERFACE_DUMP_H + +#ifdef TOOLS_ENABLED + +#include "core/io/file_access.h" +#include "core/string/ustring.h" + +class GDNativeInterfaceDump { + private: + static constexpr char const *gdnative_interface_dump =""" + ) + for line in f: + g.write('"' + line.rstrip().replace('"', '\\"') + '\\n"\n') + g.write(";\n") + + g.write( + """ + public: + static void generate_gdnative_interface_file(const String &p_path) { + Ref<FileAccess> fa = FileAccess::open(p_path, FileAccess::WRITE); + CharString cs(gdnative_interface_dump); + fa->store_buffer((const uint8_t *)cs.ptr(), cs.length()); + }; +}; + +#endif // TOOLS_ENABLED + +#endif // GDNATIVE_INTERFACE_DUMP_H +""" + ) + g.close() + f.close() + + +if __name__ == "__main__": + from platform_methods import subprocess_main + + subprocess_main(globals()) |