From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- build/moz.configure/compilers-util.configure | 62 ++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 build/moz.configure/compilers-util.configure (limited to 'build/moz.configure/compilers-util.configure') 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 -- cgit v1.2.3