123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/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')
|