diff options
Diffstat (limited to 'emcc')
-rwxr-xr-x | emcc | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -807,16 +807,13 @@ try: # Embed and preload files if len(embed_files) + len(preload_files) > 0: if DEBUG: print >> sys.stderr, 'emcc: setting up files' - - assert not Compression.on - code = '' # Sanity checks for filename in embed_files: assert filename not in preload_files, 'Cannot both embed and preload file %s' % filename - # Expand directories + # Expand directories into individual files def add(filename, dirname, names): for name in names: combined = os.path.join(dirname, name) @@ -831,6 +828,13 @@ try: if filename in source: source.remove(filename) + if Compression.on: + # Compress each file + for filename in embed_files + preload_files: + Compression.compress(filename) + embed_files = map(lambda filename: Compression.compressed_name(filename), embed_files) + preload_files = map(lambda filename: Compression.compressed_name(filename), preload_files) + # Set up folders partial_dirs = [] for filename in embed_files + preload_files: @@ -864,12 +868,19 @@ try: var arrayBuffer = %(varname)s.response; // Note: not X.responseText assert(arrayBuffer, 'Loading file %(filename)s failed.'); var byteArray = new Uint8Array(arrayBuffer); + %(decompress)s; FS.createDataFile('/%(dirname)s', '%(basename)s', byteArray, true, true); removeRunDependency(); }; addRunDependency(); %(varname)s.send(null); - ''' % { 'varname': varname, 'filename': filename, 'dirname': os.path.dirname(filename), 'basename': os.path.basename(filename) } + ''' % { + 'varname': varname, + 'filename': filename, + 'dirname': os.path.dirname(filename), + 'basename': os.path.basename(filename) if not Compression.on else os.path.basename(filename)[:-len(Compression.compressed_name(''))], + 'decompress': '' if not Compression.on else 'byteArray = Module["decompress"](byteArray)' + } else: print >> sys.stderr, 'emcc: warning: preloading file %s as image because of suffix. it will not be available to load as a normal file' % filename code += ''' @@ -983,6 +994,7 @@ try: shutil.move(final, js_target) Compression.compress(js_target) decoding = open(Compression.decoder).read() + decoding += 'Module["decompress"] = function(data) { return %s(data) };\n' % Compression.js_name decoding += ''' var compiledCodeXHR = new XMLHttpRequest(); compiledCodeXHR.open('GET', '%s', true); @@ -992,7 +1004,7 @@ try: if (!arrayBuffer) throw('Loading compressed code failed.'); var byteArray = new Uint8Array(arrayBuffer); var decompressed = %s(byteArray); - var source = Array.prototype.slice.apply(decompressed).map(function(x) { return String.fromCharCode(x) }).join(''); + var source = Array.prototype.slice.apply(decompressed).map(function(x) { return String.fromCharCode(x) }).join(''); // createObjectURL instead? var scriptTag = document.createElement('script'); scriptTag.setAttribute('type', 'text/javascript'); scriptTag.innerHTML = source; |