skia2/gyp_skia
epoger@google.com fd03db0fe9 Manually update copyright notices in files that defied the automated process
used in http://codereview.appspot.com/4816058/ ('Automatic update of all copyright notices to reflect new license terms.')

Note that the following files have been left alone, because they name
copyright holders outside of Google.  Please let me know if we need to update
these files:

experimental/CiCarbonSampleMain.c
src/opts/memset16_neon.S
src/opts/memset32_neon.S
src/opts/opts_check_arm.cpp
src/ports/SkDebug_brew.cpp
src/ports/SkMemory_brew.cpp
src/ports/SkOSFile_brew.cpp
Review URL: http://codereview.appspot.com/4806054

git-svn-id: http://skia.googlecode.com/svn/trunk@1981 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-28 14:24:55 +00:00

96 lines
3.1 KiB
Python
Executable File

#!/usr/bin/python
# Copyright 2011 The Android Open Source Project
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This script is a wrapper which invokes gyp with the correct --depth argument,
# and supports the automatic regeneration of build files if all.gyp is
# changed (Linux-only).
import glob
import os
import shlex
import sys
script_dir = os.path.dirname(__file__)
# Directory within which we can find the gyp source.
gyp_source_dir = os.path.join(script_dir, 'third_party', 'externals', 'gyp')
# Directory within which we can find most of Skia's gyp configuration files.
gyp_config_dir = os.path.join(script_dir, 'gyp')
# Directory within which we want all generated files (including Makefiles)
# to be written.
output_dir = os.path.join(os.path.abspath(script_dir), 'out')
sys.path.append(os.path.join(gyp_source_dir, 'pylib'))
import gyp
def additional_include_files(args=[]):
# Determine the include files specified on the command line.
# This doesn't cover all the different option formats you can use,
# but it's mainly intended to avoid duplicating flags on the automatic
# makefile regeneration which only uses this format.
specified_includes = set()
for arg in args:
if arg.startswith('-I') and len(arg) > 2:
specified_includes.add(os.path.realpath(arg[2:]))
result = []
def AddInclude(path):
if os.path.realpath(path) not in specified_includes:
result.append(path)
return result
if __name__ == '__main__':
args = sys.argv[1:]
# Set CWD to the directory containing this script.
# This allows us to launch it from other directories, in spite of gyp's
# finickyness about the current working directory.
# See http://b.corp.google.com/issue?id=5019517 ('Linux make build
# (from out dir) no longer runs skia_gyp correctly')
os.chdir(os.path.abspath(script_dir))
# This could give false positives since it doesn't actually do real option
# parsing. Oh well.
gyp_file_specified = False
for arg in args:
if arg.endswith('.gyp'):
gyp_file_specified = True
break
# If we didn't get a file, then fall back to assuming 'skia.gyp' from the
# same directory as the script.
# The gypfile must be passed as a relative path, not an absolute path,
# or else the gyp code doesn't write into the proper output dir.
if not gyp_file_specified:
args.append('skia.gyp')
args.extend(['-I' + i for i in additional_include_files(args)])
args.extend(['--depth', '.'])
# Tell gyp to write the Makefiles into output_dir
args.extend(['--generator-output', os.path.abspath(output_dir)])
# Tell make to write its output into the same dir
args.extend(['-Goutput_dir=.'])
# Special arguments for generating Visual Studio projects:
# - msvs_version forces generation of Visual Studio 2010 project so that we
# can use msbuild.exe
# - msvs_abspath_output is a workaround for
# http://code.google.com/p/gyp/issues/detail?id=201
args.extend(['-Gmsvs_version=2010'])
args.extend(['-Gmsvs_abspath_output'])
print 'Updating projects from gyp files...'
sys.stdout.flush()
# Off we go...
sys.exit(gyp.main(args))