config/make-stl-wrappers.py
author peter chang <pchang@mozilla.com>
Fri, 14 Apr 2017 11:58:42 +0800
changeset 403254 5fa3e998d3e5b22301c663837ab4acb1b580ba9f
parent 337400 68da139d0866977c0ada86319fa94388f2255446
child 441900 828d43ec1b16edaac69c42f15561f26e209051f1
permissions -rw-r--r--
Bug 1345017 - Discard compositor animations on the next layer transaction, r=kats Animations in content side could be removed easily by changing CSS, but the CompositorAnimationStorage in parent side doesn't get updated. Therefore, we store the layer's CompositorAnimationsId before layer is destroyed in WebRenderLayerManager and then send out these discarded ids to parent on the next layer transaction. MozReview-Commit-ID: D4kbYsgLl4P

# 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/.
from __future__ import print_function
import os, re, string, sys
from mozbuild.util import FileAvoidWrite

def find_in_path(file, searchpath):
    for dir in searchpath.split(os.pathsep):
        f = os.path.join(dir, file)
        if os.path.exists(f):
            return f
    return ''

def header_path(header, compiler):
    if compiler == 'gcc':
        # we use include_next on gcc
        return header
    elif compiler == 'msvc':
        return find_in_path(header, os.environ.get('INCLUDE', ''))
    else:
        # hope someone notices this ...
        raise NotImplementedError(compiler)

def is_comment(line):
    return re.match(r'\s*#.*', line)

def main(outdir, compiler, template_file, header_list_file):
    if not os.path.isdir(outdir):
        os.mkdir(outdir)

    template = open(template_file, 'r').read()

    for header in open(header_list_file, 'r'):
        header = header.rstrip()
        if 0 == len(header) or is_comment(header):
            continue

        path = header_path(header, compiler)
        with FileAvoidWrite(os.path.join(outdir, header)) as f:
            f.write(string.Template(template).substitute(HEADER=header,
                                                         HEADER_PATH=path))


if __name__ == '__main__':
    if 5 != len(sys.argv):
        print("""Usage:
  python {0} OUT_DIR ('msvc'|'gcc') TEMPLATE_FILE HEADER_LIST_FILE
""".format(sys.argv[0]), file=sys.stderr)
        sys.exit(1)

    main(*sys.argv[1:])