| Index: compile | 
| =================================================================== | 
| deleted file mode 100755 | 
| --- a/compile | 
| +++ /dev/null | 
| @@ -1,133 +0,0 @@ | 
| -#!/usr/bin/env python | 
| - | 
| -# This file is part of Adblock Plus <https://adblockplus.org/>, | 
| -# Copyright (C) 2006-present eyeo GmbH | 
| -# | 
| -# Adblock Plus is free software: you can redistribute it and/or modify | 
| -# it under the terms of the GNU General Public License version 3 as | 
| -# published by the Free Software Foundation. | 
| -# | 
| -# Adblock Plus is distributed in the hope that it will be useful, | 
| -# but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| -# GNU General Public License for more details. | 
| -# | 
| -# You should have received a copy of the GNU General Public License | 
| -# along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| - | 
| -import argparse | 
| -import os | 
| -import subprocess | 
| -import sys | 
| - | 
| -BASE_DIR = os.path.dirname(__file__) | 
| -SOURCE_DIR = os.path.join(BASE_DIR, 'compiled') | 
| -JS_LIBRARY = os.path.join(SOURCE_DIR, 'library.js') | 
| -BINDINGS_GENERATOR = os.path.join(SOURCE_DIR, 'bindings.cpp.js') | 
| -BINDINGS_OUTPUT = os.path.join(SOURCE_DIR, 'bindings.js') | 
| -COMPILER_OUTPUT = os.path.join(BASE_DIR, 'lib', 'compiled.js') | 
| -GENERATION_PARAMS = { | 
| -    'SHELL_FILE': "'{}'".format(os.path.abspath(os.path.join(SOURCE_DIR, | 
| -                                                             'shell.js'))), | 
| -    'ASM_JS': 2,  # "almost asm" | 
| -    'TOTAL_MEMORY': 16*1024*1024, | 
| -    'TOTAL_STACK': 1*1024*1024, | 
| -    'ALLOW_MEMORY_GROWTH': 1, | 
| -    'NO_EXIT_RUNTIME': 1, | 
| -    'NO_DYNAMIC_EXECUTION': 1, | 
| -    'NO_FILESYSTEM': 1, | 
| -    'INVOKE_RUN': 0, | 
| -    'TEXTDECODER': 0, | 
| -    'EXPORTED_RUNTIME_METHODS': ['cwrap', 'ccall', 'stringToAscii'], | 
| -} | 
| -DEFINES = [] | 
| -ADDITIONAL_PARAMS = ['-O3', '-m32', '-std=c++1z', '--memory-init-file', '0', | 
| -                     '--emit-symbol-map', '-Wall', '-Werror', '-fno-exceptions', | 
| -                     '-fno-rtti', '--js-library', JS_LIBRARY] | 
| - | 
| - | 
| -def get_source_files(phase): | 
| -    for (path, dirs, files) in os.walk(SOURCE_DIR): | 
| -        for f in files: | 
| -            if os.path.splitext(f)[1] != '.cpp': | 
| -                continue | 
| -            if ( | 
| -                phase != 'bindings' and | 
| -                os.path.basename(path) == 'bindings' and | 
| -                not f.startswith('runtime_') | 
| -            ): | 
| -                continue | 
| -            yield os.path.join(path, f) | 
| - | 
| -def getenv(emscripten_config): | 
| -    scope = {} | 
| -    execfile(emscripten_config, scope, scope) | 
| -    env = os.environ.copy() | 
| -    env.update({ | 
| -        'EM_CONFIG': emscripten_config, | 
| -        'EMSCRIPTEN': scope['EMSCRIPTEN_ROOT'], | 
| -        'PYTHON': scope.get('PYTHON', sys.executable), | 
| -        'NODE_JS': scope.get('NODE_JS', 'node'), | 
| -    }) | 
| -    return env | 
| - | 
| - | 
| -def generate_bindings(env): | 
| -    params = [ | 
| -        env['PYTHON'], os.path.join(env['EMSCRIPTEN'], 'emcc'), | 
| -        '-o', BINDINGS_GENERATOR, '-std=c++1z', '--js-library', JS_LIBRARY, | 
| -        '--js-library', os.path.join(SOURCE_DIR, 'bindings', 'library.js'), | 
| -    ] + list(get_source_files('bindings')) | 
| -    subprocess.check_call(params, env=env) | 
| - | 
| -    with open(BINDINGS_OUTPUT, 'w') as file: | 
| -        subprocess.check_call([env['NODE_JS'], BINDINGS_GENERATOR], | 
| -                              stdout=file) | 
| - | 
| - | 
| -def run_compiler(env, debug=False, tracing=False): | 
| -    params = [ | 
| -        env['PYTHON'], os.path.join(env['EMSCRIPTEN'], 'emcc'), | 
| -        '-o', COMPILER_OUTPUT, | 
| -        '--post-js', BINDINGS_OUTPUT, | 
| -    ] | 
| -    # Order matters. We sort source files so that we always get the same | 
| -    # results for the same source code. | 
| -    params.extend(sorted(get_source_files('compile'))) | 
| -    params.extend('-D' + flag for flag in DEFINES) | 
| -    for key, value in GENERATION_PARAMS.iteritems(): | 
| -        params.extend(['-s', '{}={}'.format(key, str(value))]) | 
| -    if debug: | 
| -        params.append('-DDEBUG') | 
| -        params.append('-g3') | 
| -    if tracing: | 
| -        params.append('--tracing') | 
| -    params.extend(ADDITIONAL_PARAMS) | 
| -    subprocess.check_call(params, env=env) | 
| - | 
| - | 
| -if __name__ == '__main__': | 
| -    parser = argparse.ArgumentParser( | 
| -        description='Compile Emscripten-based C++ code to JavaScript' | 
| -    ) | 
| -    parser.add_argument( | 
| -        '--emscripten-config', | 
| -        metavar='DIR', | 
| -        default=os.path.expanduser('~/.emscripten'), | 
| -        help='Emscripten installation directory' | 
| -    ) | 
| -    parser.add_argument( | 
| -        '-d', '--debug', | 
| -        action='store_true', | 
| -        help='Disable code minification' | 
| -    ) | 
| -    parser.add_argument( | 
| -        '-t', '--tracing', | 
| -        action='store_true', | 
| -        help='Enable memory tracing' | 
| -    ) | 
| -    args = parser.parse_args() | 
| - | 
| -    env = getenv(args.emscripten_config) | 
| -    generate_bindings(env) | 
| -    run_compiler(env, debug=args.debug, tracing=args.tracing) | 
|  |