#!/usr/bin/python2
#
# Copyright 2019 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import os

roots = [
    'bench',
    'dm',
    'docs',
    'example',
    'experimental',
    'fuzz',
    'gm',
    'include',
    'modules',
    'platform_tools/android/apps',
    'samplecode',
    'src',
    'tests',
    'third_party/etc1',
    'third_party/gif',
    'tools'
  ]

# Map short name -> absolute path for all Skia headers.
headers = {}
for root in roots:
  for path, _, files in os.walk(root):
    for file_name in files:
      if file_name.endswith('.h'):
        if file_name in headers:
          print path, file_name, headers[file_name]
        assert file_name not in headers
        headers[file_name] = os.path.abspath(os.path.join(path, file_name))

# Rewrite any #includes relative to Skia's top-level directory.
for root in roots:
  for path, _, files in os.walk(root):
    if 'generated' in path:
      continue
    for file_name in files:
      if (file_name.endswith('.h') or
          file_name.endswith('.c') or
          file_name.endswith('.m') or
          file_name.endswith('.mm') or
          file_name.endswith('.inc') or
          file_name.endswith('.fp') or
          file_name.endswith('.cc') or
          file_name.endswith('.cpp')):
        # Read the whole file into memory.
        file_path = os.path.join(path, file_name)
        lines = open(file_path).readlines()

        # Write it back out again line by line with substitutions for #includes.
        with open(file_path, 'w') as output:
          includes = []

          for line in lines:
            parts = line.split('"')
            if (len(parts) == 3
                and '#' in parts[0]
                and 'include' in parts[0]
                and os.path.basename(parts[1]) in headers):

              header = headers[os.path.basename(parts[1])]
              includes.append(parts[0] +
                              '"%s"' % os.path.relpath(header, '.') +
                              parts[2])
            else:
              for inc in sorted(includes):
                print >>output, inc.strip('\n')
              includes = []
              print >>output, line.strip('\n')


#!/usr/bin/python2
#
# Copyright 2019 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import os

roots = [
    'bench',
    'dm',
    'docs',
    'example',
    'experimental',
    'fuzz',
    'gm',
    'include',
    'modules',
    'platform_tools/android/apps',
    'samplecode',
    'src',
    'tests',
    'third_party/etc1',
    'third_party/gif',
    'tools'
  ]

# Map short name -> absolute path for all Skia headers.
headers = {}
for root in roots:
  for path, _, files in os.walk(root):
    for file_name in files:
      if file_name.endswith('.h'):
        if file_name in headers:
          print path, file_name, headers[file_name]
        assert file_name not in headers
        headers[file_name] = os.path.abspath(os.path.join(path, file_name))

# Rewrite any #includes relative to Skia's top-level directory.
for root in roots:
  for path, _, files in os.walk(root):
    if 'generated' in path:
      continue
    for file_name in files:
      if (file_name.endswith('.h') or
          file_name.endswith('.c') or
          file_name.endswith('.m') or
          file_name.endswith('.mm') or
          file_name.endswith('.inc') or
          file_name.endswith('.fp') or
          file_name.endswith('.cc') or
          file_name.endswith('.cpp')):
        # Read the whole file into memory.
        file_path = os.path.join(path, file_name)
        lines = open(file_path).readlines()

        # Write it back out again line by line with substitutions for #includes.
        with open(file_path, 'w') as output:
          includes = []

          for line in lines:
            parts = line.split('"')
            if (len(parts) == 3
                and '#' in parts[0]
                and 'include' in parts[0]
                and os.path.basename(parts[1]) in headers):

              header = headers[os.path.basename(parts[1])]
              includes.append(parts[0] +
                              '"%s"' % os.path.relpath(header, '.') +
                              parts[2])
            else:
              for inc in sorted(includes):
                print >>output, inc.strip('\n')
              includes = []
              print >>output, line.strip('\n')


#!/usr/bin/python2 # # Copyright 2019 Google Inc. # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Map short name -> absolute path for all Skia headers. # Rewrite any #includes relative to Skia's top-level directory. # Read the whole file into memory. # Write it back out again line by line with substitutions for #includes.