diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2019-07-03 21:26:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-03 21:26:12 +0200 |
commit | e1478b7a87c1eec7bcf3438d0894cf4fe0135db2 (patch) | |
tree | af3611d72ff8ec0a6328af6b22e691ab854cb27e /modules/mono/build_scripts/make_android_mono_config.py | |
parent | 2832c5aa94009c757ca9ba94489e158886205f5b (diff) | |
parent | 9f1a8ce6a296868103b84c178375d3f82d9aa963 (diff) | |
download | redot-engine-e1478b7a87c1eec7bcf3438d0894cf4fe0135db2.tar.gz |
Merge pull request #30292 from neikeq/android_fixes
Mono: Android build and shared libraries fixes
Diffstat (limited to 'modules/mono/build_scripts/make_android_mono_config.py')
-rw-r--r-- | modules/mono/build_scripts/make_android_mono_config.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/modules/mono/build_scripts/make_android_mono_config.py b/modules/mono/build_scripts/make_android_mono_config.py new file mode 100644 index 0000000000..cd9210897d --- /dev/null +++ b/modules/mono/build_scripts/make_android_mono_config.py @@ -0,0 +1,69 @@ + +def generate_compressed_config(config_src, output_dir): + import os.path + from compat import byte_to_str + + # Header file + with open(os.path.join(output_dir, 'android_mono_config.gen.h'), 'w') as header: + header.write('''/* THIS FILE IS GENERATED DO NOT EDIT */ +#ifndef ANDROID_MONO_CONFIG_GEN_H +#define ANDROID_MONO_CONFIG_GEN_H + +#ifdef ANDROID_ENABLED + +#include "core/ustring.h" + +String get_godot_android_mono_config(); + +#endif // ANDROID_ENABLED + +#endif // ANDROID_MONO_CONFIG_GEN_H +''') + + # Source file + with open(os.path.join(output_dir, 'android_mono_config.gen.cpp'), 'w') as cpp: + with open(config_src, 'rb') as f: + buf = f.read() + decompr_size = len(buf) + import zlib + buf = zlib.compress(buf) + compr_size = len(buf) + + bytes_seq_str = '' + for i, buf_idx in enumerate(range(compr_size)): + if i > 0: + bytes_seq_str += ', ' + bytes_seq_str += byte_to_str(buf[buf_idx]) + + cpp.write('''/* THIS FILE IS GENERATED DO NOT EDIT */ +#include "android_mono_config.gen.h" + +#ifdef ANDROID_ENABLED + +#include "core/io/compression.h" +#include "core/pool_vector.h" + +namespace { + +// config +static const int config_compressed_size = %d; +static const int config_uncompressed_size = %d; +static const unsigned char config_compressed_data[] = { %s }; + +} // namespace + +String get_godot_android_mono_config() { + PoolVector<uint8_t> data; + data.resize(config_uncompressed_size); + PoolVector<uint8_t>::Write w = data.write(); + Compression::decompress(w.ptr(), config_uncompressed_size, config_compressed_data, + config_compressed_size, Compression::MODE_DEFLATE); + String s; + if (s.parse_utf8((const char *)w.ptr(), data.size())) { + ERR_FAIL_V(String()); + } + return s; +} + +#endif // ANDROID_ENABLED +''' % (compr_size, decompr_size, bytes_seq_str)) |