diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /build/moz.configure/compilers-util.configure | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'build/moz.configure/compilers-util.configure')
-rw-r--r-- | build/moz.configure/compilers-util.configure | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/build/moz.configure/compilers-util.configure b/build/moz.configure/compilers-util.configure new file mode 100644 index 000000000..32271a010 --- /dev/null +++ b/build/moz.configure/compilers-util.configure @@ -0,0 +1,62 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +@template +@imports('textwrap') +@imports(_from='mozbuild.configure', _import='SandboxDependsFunction') +def compiler_class(compiler): + class Compiler(SandboxDependsFunction): + # Generates a test program and attempts to compile it. In case of + # failure, the resulting check will return None. If the test program + # succeeds, it will return the output of the test program. + # - `includes` are the includes (as file names) that will appear at the + # top of the generated test program. + # - `body` is the code that will appear in the main function of the + # generated test program. `return 0;` is appended to the function + # body automatically. + # - `flags` are the flags to be passed to the compiler, in addition to + # `-c`. + # - `check_msg` is the message to be printed to accompany compiling the + # test program. + def try_compile(self, includes=None, body='', flags=None, + check_msg=None, when=None, onerror=lambda: None): + includes = includes or [] + source_lines = ['#include <%s>' % f for f in includes] + source = '\n'.join(source_lines) + '\n' + source += textwrap.dedent('''\ + int + main(void) + { + %s + ; + return 0; + } + ''' % body) + + if check_msg: + def checking_fn(fn): + return checking(check_msg)(fn) + else: + def checking_fn(fn): + return fn + + @depends_when(self, dependable(flags), extra_toolchain_flags, when=when) + @checking_fn + def func(compiler, flags, extra_flags): + flags = flags or [] + flags += extra_flags or [] + flags.append('-c') + + if try_invoke_compiler( + compiler.wrapper + [compiler.compiler] + compiler.flags, + compiler.language, source, flags, + onerror=onerror) is not None: + return True + + return func + + compiler.__class__ = Compiler + return compiler |