| OLD | NEW | 
|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python | 
| 2 | 2 | 
| 3 # This file is part of Adblock Plus <https://adblockplus.org/>, | 3 # This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 4 # Copyright (C) 2006-2017 Eyeo GmbH | 4 # Copyright (C) 2006-2017 Eyeo GmbH | 
| 5 # | 5 # | 
| 6 # Adblock Plus is free software: you can redistribute it and/or modify | 6 # Adblock Plus is free software: you can redistribute it and/or modify | 
| 7 # it under the terms of the GNU General Public License version 3 as | 7 # it under the terms of the GNU General Public License version 3 as | 
| 8 # published by the Free Software Foundation. | 8 # published by the Free Software Foundation. | 
| 9 # | 9 # | 
| 10 # Adblock Plus is distributed in the hope that it will be useful, | 10 # Adblock Plus is distributed in the hope that it will be useful, | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 21 import sys | 21 import sys | 
| 22 | 22 | 
| 23 BASE_DIR = os.path.dirname(__file__) | 23 BASE_DIR = os.path.dirname(__file__) | 
| 24 SOURCE_DIR = os.path.join(BASE_DIR, 'compiled') | 24 SOURCE_DIR = os.path.join(BASE_DIR, 'compiled') | 
| 25 SOURCE_FILES = [ | 25 SOURCE_FILES = [ | 
| 26     os.path.join(path, f) | 26     os.path.join(path, f) | 
| 27     for (path, dirs, files) in os.walk(SOURCE_DIR) | 27     for (path, dirs, files) in os.walk(SOURCE_DIR) | 
| 28     for f in files | 28     for f in files | 
| 29     if f.endswith('.cpp') | 29     if f.endswith('.cpp') | 
| 30 ] | 30 ] | 
| 31 BINDINGS_FILE = os.path.join(SOURCE_DIR, 'bindings.cpp') |  | 
| 32 BINDINGS_GENERATOR = os.path.join(SOURCE_DIR, 'bindings.cpp.js') | 31 BINDINGS_GENERATOR = os.path.join(SOURCE_DIR, 'bindings.cpp.js') | 
| 33 BINDINGS_OUTPUT = os.path.join(SOURCE_DIR, 'bindings.js') | 32 BINDINGS_OUTPUT = os.path.join(SOURCE_DIR, 'bindings.js') | 
| 34 COMPILER_OUTPUT = os.path.join(BASE_DIR, 'lib', 'compiled.js') | 33 COMPILER_OUTPUT = os.path.join(BASE_DIR, 'lib', 'compiled.js') | 
| 35 GENERATION_PARAMS = { | 34 GENERATION_PARAMS = { | 
| 36     'SHELL_FILE': "'{}'".format(os.path.abspath(os.path.join(SOURCE_DIR, | 35     'SHELL_FILE': "'{}'".format(os.path.abspath(os.path.join(SOURCE_DIR, | 
| 37                                                              'shell.js'))), | 36                                                              'shell.js'))), | 
| 38     'ASM_JS': 2,  # "almost asm" | 37     'ASM_JS': 2,  # "almost asm" | 
| 39     'TOTAL_MEMORY': 16*1024*1024, | 38     'TOTAL_MEMORY': 16*1024*1024, | 
| 40     'TOTAL_STACK': 1*1024*1024, | 39     'TOTAL_STACK': 1*1024*1024, | 
| 41     'ALLOW_MEMORY_GROWTH': 1, | 40     'ALLOW_MEMORY_GROWTH': 1, | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
| 59         'EM_CONFIG': emscripten_config, | 58         'EM_CONFIG': emscripten_config, | 
| 60         'EMSCRIPTEN': scope['EMSCRIPTEN_ROOT'], | 59         'EMSCRIPTEN': scope['EMSCRIPTEN_ROOT'], | 
| 61         'PYTHON': scope.get('PYTHON', sys.executable), | 60         'PYTHON': scope.get('PYTHON', sys.executable), | 
| 62         'NODE_JS': scope.get('NODE_JS', 'node'), | 61         'NODE_JS': scope.get('NODE_JS', 'node'), | 
| 63     }) | 62     }) | 
| 64     return env | 63     return env | 
| 65 | 64 | 
| 66 | 65 | 
| 67 def generate_bindings(env): | 66 def generate_bindings(env): | 
| 68     params = [ | 67     params = [ | 
| 69         env['PYTHON'], os.path.join(env['EMSCRIPTEN'], 'emcc'), BINDINGS_FILE, | 68         env['PYTHON'], os.path.join(env['EMSCRIPTEN'], 'emcc'), | 
| 70         '-o', BINDINGS_GENERATOR, '-std=gnu++14', '-DPRINT_BINDINGS', | 69         '-o', BINDINGS_GENERATOR, '-std=gnu++14', '-DPRINT_BINDINGS', | 
| 71         '-s', 'WARN_ON_UNDEFINED_SYMBOLS=0', | 70     ] + SOURCE_FILES | 
| 72     ] |  | 
| 73     subprocess.check_call(params, env=env) | 71     subprocess.check_call(params, env=env) | 
| 74 | 72 | 
| 75     with open(BINDINGS_OUTPUT, 'w') as file: | 73     with open(BINDINGS_OUTPUT, 'w') as file: | 
| 76         subprocess.check_call([env['NODE_JS'], BINDINGS_GENERATOR], | 74         subprocess.check_call([env['NODE_JS'], BINDINGS_GENERATOR], | 
| 77                               stdout=file) | 75                               stdout=file) | 
| 78 | 76 | 
| 79 | 77 | 
| 80 def run_compiler(env, debug=False, tracing=False): | 78 def run_compiler(env, debug=False, tracing=False): | 
| 81     params = [ | 79     params = [ | 
| 82         env['PYTHON'], os.path.join(env['EMSCRIPTEN'], 'emcc'), | 80         env['PYTHON'], os.path.join(env['EMSCRIPTEN'], 'emcc'), | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 115     parser.add_argument( | 113     parser.add_argument( | 
| 116         '-t', '--tracing', | 114         '-t', '--tracing', | 
| 117         action='store_true', | 115         action='store_true', | 
| 118         help='Enable memory tracing' | 116         help='Enable memory tracing' | 
| 119     ) | 117     ) | 
| 120     args = parser.parse_args() | 118     args = parser.parse_args() | 
| 121 | 119 | 
| 122     env = getenv(args.emscripten_config) | 120     env = getenv(args.emscripten_config) | 
| 123     generate_bindings(env) | 121     generate_bindings(env) | 
| 124     run_compiler(env, debug=args.debug, tracing=args.tracing) | 122     run_compiler(env, debug=args.debug, tracing=args.tracing) | 
| OLD | NEW | 
|---|