Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: compile

Issue 29527808: Noissue - Use meson to build the C++ code (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Removed compile. meson > 0.40.0 Created Dec. 15, 2017, 5:37 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « README.md ('k') | meson.build » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
« no previous file with comments | « README.md ('k') | meson.build » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld