Untitled diff

Created Diff never expires
7 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
116 lines
14 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
123 lines
#!/usr/bin/env python
#!/usr/bin/env python
#
#
# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
#
#
# Use of this source code is governed by a BSD-style license
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
# be found in the AUTHORS file in the root of the source tree.


# This script is used to run GYP for WebRTC. It contains selected parts of the
# This script is used to run GYP for WebRTC. It contains selected parts of the
# main function from the src/build/gyp_chromium file.
# main function from the src/build/gyp_chromium.py file while other parts are
# reused to minimize code duplication.


import gc
import glob
import glob
import os
import os
import shlex
import sys
import sys


script_dir = os.path.dirname(os.path.realpath(__file__))
script_dir = os.path.dirname(os.path.realpath(__file__))
checkout_root = os.path.abspath(os.path.join(script_dir, os.pardir, os.pardir))
checkout_root = os.path.abspath(os.path.join(script_dir, os.pardir, os.pardir))


sys.path.insert(0, os.path.join(checkout_root, 'build'))
sys.path.insert(0, os.path.join(checkout_root, 'build'))
import gyp_chromium
import gyp_chromium
import gyp_helper
import gyp_helper
import vs_toolchain
import vs_toolchain


sys.path.insert(0, os.path.join(checkout_root, 'tools', 'gyp', 'pylib'))
sys.path.insert(0, os.path.join(checkout_root, 'tools', 'gyp', 'pylib'))
import gyp
import gyp


def GetSupplementalFiles():
def GetSupplementalFiles():
"""Returns a list of the supplemental files that are included in all GYP
"""Returns a list of the supplemental files that are included in all GYP
sources."""
sources."""
# Can't use the one in gyp_chromium since the directory location of the root
# Can't use the one in gyp_chromium since the directory location of the root
# is different.
# is different.
return glob.glob(os.path.join(checkout_root, '*', 'supplement.gypi'))
return glob.glob(os.path.join(checkout_root, '*', 'supplement.gypi'))




if __name__ == '__main__':
def main():
# Disabling garbage collection saves about 5% processing time. Since this is a
# short-lived process it's not a problem.
gc.disable()

args = sys.argv[1:]
args = sys.argv[1:]


if int(os.environ.get('GYP_CHROMIUM_NO_ACTION', 0)):
if int(os.environ.get('GYP_CHROMIUM_NO_ACTION', 0)):
print 'Skipping gyp_webrtc due to GYP_CHROMIUM_NO_ACTION env var.'
print 'Skipping gyp_webrtc due to GYP_CHROMIUM_NO_ACTION env var.'
sys.exit(0)
sys.exit(0)


if 'SKIP_WEBRTC_GYP_ENV' not in os.environ:
if 'SKIP_WEBRTC_GYP_ENV' not in os.environ:
# Update the environment based on webrtc.gyp_env
# Update the environment based on webrtc.gyp_env
gyp_env_path = os.path.join(os.path.dirname(checkout_root),
gyp_env_path = os.path.join(os.path.dirname(checkout_root),
'webrtc.gyp_env')
'webrtc.gyp_env')
gyp_helper.apply_gyp_environment_from_file(gyp_env_path)
gyp_helper.apply_gyp_environment_from_file(gyp_env_path)


# This could give false positives since it doesn't actually do real option
# This could give false positives since it doesn't actually do real option
# parsing. Oh well.
# parsing. Oh well.
gyp_file_specified = False
gyp_file_specified = False
for arg in args:
for arg in args:
if arg.endswith('.gyp'):
if arg.endswith('.gyp'):
gyp_file_specified = True
gyp_file_specified = True
break
break


# If we didn't get a file, assume 'all.gyp' in the root of the checkout.
# If we didn't get a file, assume 'all.gyp' in the root of the checkout.
if not gyp_file_specified:
if not gyp_file_specified:
# Because of a bug in gyp, simply adding the abspath to all.gyp doesn't
# Because of a bug in gyp, simply adding the abspath to all.gyp doesn't
# work, but chdir'ing and adding the relative path does. Spooky :/
# work, but chdir'ing and adding the relative path does. Spooky :/
os.chdir(checkout_root)
os.chdir(checkout_root)
args.append('all.gyp')
args.append('all.gyp')


# There shouldn't be a circular dependency relationship between .gyp files,
# There shouldn't be a circular dependency relationship between .gyp files,
args.append('--no-circular-check')
args.append('--no-circular-check')


# Default to ninja unless GYP_GENERATORS is set.
# Default to ninja unless GYP_GENERATORS is set.
if not os.environ.get('GYP_GENERATORS'):
if not os.environ.get('GYP_GENERATORS'):
os.environ['GYP_GENERATORS'] = 'ninja'
os.environ['GYP_GENERATORS'] = 'ninja'


# Enable check for missing sources in GYP files on Windows.
# Enable check for missing sources in GYP files on Windows.
if sys.platform.startswith('win'):
if sys.platform.startswith('win'):
gyp_generator_flags = os.getenv('GYP_GENERATOR_FLAGS', '')
gyp_generator_flags = os.getenv('GYP_GENERATOR_FLAGS', '')
if not 'msvs_error_on_missing_sources' in gyp_generator_flags:
if not 'msvs_error_on_missing_sources' in gyp_generator_flags:
os.environ['GYP_GENERATOR_FLAGS'] = (
os.environ['GYP_GENERATOR_FLAGS'] = (
gyp_generator_flags + ' msvs_error_on_missing_sources=1')
gyp_generator_flags + ' msvs_error_on_missing_sources=1')


vs2013_runtime_dll_dirs = None
if int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', '1')):
vs2013_runtime_dll_dirs = vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs()

# Enforce gyp syntax checking. This adds about 20% execution time.
# Enforce gyp syntax checking. This adds about 20% execution time.
args.append('--check')
args.append('--check')


supplemental_includes = GetSupplementalFiles()
supplemental_includes = GetSupplementalFiles()
gyp_vars = gyp_chromium.GetGypVars(supplemental_includes)
gyp_vars = gyp_chromium.GetGypVars(supplemental_includes)


# Automatically turn on crosscompile support for platforms that need it.
# Automatically turn on crosscompile support for platforms that need it.
if all(('ninja' in os.environ.get('GYP_GENERATORS', ''),
if all(('ninja' in os.environ.get('GYP_GENERATORS', ''),
gyp_vars.get('OS') in ['android', 'ios'],
gyp_vars.get('OS') in ['android', 'ios'],
'GYP_CROSSCOMPILE' not in os.environ)):
'GYP_CROSSCOMPILE' not in os.environ)):
os.environ['GYP_CROSSCOMPILE'] = '1'
os.environ['GYP_CROSSCOMPILE'] = '1'


args.extend(['-I' + i for i in
args.extend(['-I' + i for i in
gyp_chromium.additional_include_files(supplemental_includes,
gyp_chromium.additional_include_files(supplemental_includes,
args)])
args)])


# Set the gyp depth variable to the root of the checkout.
# Set the gyp depth variable to the root of the checkout.
args.append('--depth=' + os.path.relpath(checkout_root))
args.append('--depth=' + os.path.relpath(checkout_root))


print 'Updating projects from gyp files...'
print 'Updating projects from gyp files...'
sys.stdout.flush()
sys.stdout.flush()


# Off we go...
# Off we go...
gyp_rc = gyp.main(args)
gyp_rc = gyp.main(args)


vs2013_runtime_dll_dirs = vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs()
if vs2013_runtime_dll_dirs:
if vs2013_runtime_dll_dirs:
x64_runtime, x86_runtime = vs2013_runtime_dll_dirs
x64_runtime, x86_runtime = vs2013_runtime_dll_dirs
vs_toolchain.CopyVsRuntimeDlls(
vs_toolchain.CopyVsRuntimeDlls(
os.path.join(checkout_root, gyp_chromium.GetOutputDirectory()),
os.path.join(checkout_root, gyp_chromium.GetOutputDirectory()),
(x86_runtime, x64_runtime))
(x86_runtime, x64_runtime))


sys.exit(gyp_rc)
sys.exit(gyp_rc)



if __name__ == '__main__':
sys.exit(main())