Mono: Better versioning and gracefully unloading of Godot API assemblies
This commit is contained in:
parent
125fc8cc44
commit
f37090ccf4
15 changed files with 429 additions and 88 deletions
|
|
@ -31,11 +31,18 @@ def make_cs_files_header(src, dst):
|
|||
if i > 0:
|
||||
header.write(', ')
|
||||
header.write(byte_to_str(buf[buf_idx]))
|
||||
inserted_files += '\tr_files.insert(\"' + file + '\", ' \
|
||||
inserted_files += '\tr_files.insert("' + file + '", ' \
|
||||
'CompressedFile(_cs_' + name + '_compressed_size, ' \
|
||||
'_cs_' + name + '_uncompressed_size, ' \
|
||||
'_cs_' + name + '_compressed));\n'
|
||||
header.write(' };\n')
|
||||
version_file = os.path.join(src, 'VERSION.txt')
|
||||
with open(version_file, 'r') as content_file:
|
||||
try:
|
||||
glue_version = int(content_file.read()) # make sure the format is valid
|
||||
header.write('\n#define CS_GLUE_VERSION UINT32_C(' + str(glue_version) + ')\n')
|
||||
except ValueError:
|
||||
raise ValueError('Invalid C# glue version in: ' + version_file)
|
||||
header.write('\nstruct CompressedFile\n' '{\n'
|
||||
'\tint compressed_size;\n' '\tint uncompressed_size;\n' '\tconst unsigned char* data;\n'
|
||||
'\n\tCompressedFile(int p_comp_size, int p_uncomp_size, const unsigned char* p_data)\n'
|
||||
|
|
@ -80,23 +87,23 @@ def find_msbuild_unix(filename):
|
|||
import sys
|
||||
|
||||
hint_dirs = ['/opt/novell/mono/bin']
|
||||
if sys.platform == "darwin":
|
||||
if sys.platform == 'darwin':
|
||||
hint_dirs = ['/Library/Frameworks/Mono.framework/Versions/Current/bin'] + hint_dirs
|
||||
|
||||
for hint_dir in hint_dirs:
|
||||
hint_path = os.path.join(hint_dir, filename)
|
||||
if os.path.isfile(hint_path):
|
||||
return hint_path
|
||||
elif os.path.isfile(hint_path + ".exe"):
|
||||
return hint_path + ".exe"
|
||||
elif os.path.isfile(hint_path + '.exe'):
|
||||
return hint_path + '.exe'
|
||||
|
||||
for hint_dir in os.environ["PATH"].split(os.pathsep):
|
||||
for hint_dir in os.environ['PATH'].split(os.pathsep):
|
||||
hint_dir = hint_dir.strip('"')
|
||||
hint_path = os.path.join(hint_dir, filename)
|
||||
if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
|
||||
return hint_path
|
||||
if os.path.isfile(hint_path + ".exe") and os.access(hint_path + ".exe", os.X_OK):
|
||||
return hint_path + ".exe"
|
||||
if os.path.isfile(hint_path + '.exe') and os.access(hint_path + '.exe', os.X_OK):
|
||||
return hint_path + '.exe'
|
||||
|
||||
return None
|
||||
|
||||
|
|
@ -152,7 +159,7 @@ def mono_build_solution(source, target, env):
|
|||
xbuild_fallback = env['xbuild_fallback']
|
||||
|
||||
if xbuild_fallback and os.name == 'nt':
|
||||
print("Option 'xbuild_fallback' not supported on Windows")
|
||||
print('Option \'xbuild_fallback\' not supported on Windows')
|
||||
xbuild_fallback = False
|
||||
|
||||
if xbuild_fallback:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue