webrtc_m130/webrtc/build/gyp_webrtc

100 lines
3.4 KiB
Plaintext
Raw Normal View History

Add gyp_webrtc script to generate projects. The reason for this is that http://crrev.com/245412 introduces a dependency of Chrome's src/build/gyp_chromium to src/tools/find_depot_tools.py, which we don't have synced in WebRTC (src/tools is very big). Offline discussions shows that we cannot rely on syncing individual subdirectories from Chrome in the future, but maintaining our own gyp_webrtc file will at least buy us some time for now, so we can roll past that chromium_revision in WebRTC DEPS. Overview of differences between gyp_webrtc and gyp_chromium (and how we previously used gyp_chromium): * No .gyp file needs to be passed (defaults to all.gyp) * CHROMIUM_GYP_FILE is ignored (i.e. cannot be used to specify an alternate .gyp file to process) * Ninja is used by default on all platforms unless GYP_GENERATORS is set. * Gyp syntax check is always on * Gyp circular dependency check is always on * No support for automatic toolchain detection on Windows. * --depth argument is no longer needed since calculated by the script. * Support for a webrtc.gyp_env file sitting next to the .gclient file in the top dir of checkout, which can be used to override Gyp variables similar to chromium.gyp_env. * SKIP_WEBRTC_GYP_ENV can be set to skip reading webrtc.gyp_env. BUG=2863 TEST=Ran and verified behavior on Linux with: gclient runhooks webrtc/build/gyp_webrtc webrtc/build/gyp_webrtc -Dextra_gyp_flag=0 . build/android/envsetup.sh && gclient runhooks SKIP_WEBRTC_GYP_ENV=1 webrtc/build/gyp_webrtc GYP_GENERATORS=make webrtc/build/gyp_webrtc The patch also passes runhooks and compile step on all trybots. R=andrew@webrtc.org, fischman@webrtc.org Review URL: https://webrtc-codereview.appspot.com/7759004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5467 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-31 09:34:51 +00:00
#!/usr/bin/env python
#
# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
#
# 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
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# 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
# main function from the src/build/gyp_chromium file.
import glob
import os
import shlex
import sys
script_dir = os.path.dirname(os.path.realpath(__file__))
checkout_root = os.path.abspath(os.path.join(script_dir, os.pardir, os.pardir))
Roll chromium_revision 249215:255773 Overview of changes in Chrome DEPS: $ svn diff http://src.chromium.org/chrome/trunk/src/DEPS -r 249215:255773 which can be compared with the output of: $ grep chromium_deps DEPS in a WebRTC checkout, gives the following relevant changes: * third_party/icu 246118:249466 * third_party/libyuv 978:979 * third_party/libjpeg_turbo 239595:251747 * third_party/libsrtp 214783:250757 * third_party/nss 246067:254867 * tools/clang-format 198831:202065 * tools/gyp 1846:1860 Among a variety of updated DEPS, this enables us to use the new automatic download of Chromium's stripped down Visual Studio 2013 toolchain on Windows. For Windows, Visual Studio 2013 is also the default compiler in Chrome. This CL sets the GYP_MSVS_VERSION to 2010 unless otherwise specified. Doing that we can first fix our 2013 problems before we move over to having 2013 by default. The plan is to build 2013 at the WebRTC FYI waterfall at http://build.chromium.org/p/client.webrtc.fyi/waterfall to ensure we can support VS2013 before the switch. I realized we can sync Chromium's find_depot_tools.py script into it's own folder and just alter the PYTHONPATH for the gyp_webrtc script. That way there's no need to have the dummy module in webrtc/build anymore. The real script is also needed for the logic that handles checking VS2013 and downloading it if not found. BUG=chromium:340973 TEST=All trybots passing runhooks and compile step. R=tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/9299004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5667 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-10 09:51:17 +00:00
sys.path.insert(0, os.path.join(checkout_root, 'build'))
sys.path.insert(0, os.path.join(checkout_root, 'tools', 'find_depot_tools'))
Add gyp_webrtc script to generate projects. The reason for this is that http://crrev.com/245412 introduces a dependency of Chrome's src/build/gyp_chromium to src/tools/find_depot_tools.py, which we don't have synced in WebRTC (src/tools is very big). Offline discussions shows that we cannot rely on syncing individual subdirectories from Chrome in the future, but maintaining our own gyp_webrtc file will at least buy us some time for now, so we can roll past that chromium_revision in WebRTC DEPS. Overview of differences between gyp_webrtc and gyp_chromium (and how we previously used gyp_chromium): * No .gyp file needs to be passed (defaults to all.gyp) * CHROMIUM_GYP_FILE is ignored (i.e. cannot be used to specify an alternate .gyp file to process) * Ninja is used by default on all platforms unless GYP_GENERATORS is set. * Gyp syntax check is always on * Gyp circular dependency check is always on * No support for automatic toolchain detection on Windows. * --depth argument is no longer needed since calculated by the script. * Support for a webrtc.gyp_env file sitting next to the .gclient file in the top dir of checkout, which can be used to override Gyp variables similar to chromium.gyp_env. * SKIP_WEBRTC_GYP_ENV can be set to skip reading webrtc.gyp_env. BUG=2863 TEST=Ran and verified behavior on Linux with: gclient runhooks webrtc/build/gyp_webrtc webrtc/build/gyp_webrtc -Dextra_gyp_flag=0 . build/android/envsetup.sh && gclient runhooks SKIP_WEBRTC_GYP_ENV=1 webrtc/build/gyp_webrtc GYP_GENERATORS=make webrtc/build/gyp_webrtc The patch also passes runhooks and compile step on all trybots. R=andrew@webrtc.org, fischman@webrtc.org Review URL: https://webrtc-codereview.appspot.com/7759004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5467 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-31 09:34:51 +00:00
import gyp_chromium
import gyp_helper
import vs_toolchain
Add gyp_webrtc script to generate projects. The reason for this is that http://crrev.com/245412 introduces a dependency of Chrome's src/build/gyp_chromium to src/tools/find_depot_tools.py, which we don't have synced in WebRTC (src/tools is very big). Offline discussions shows that we cannot rely on syncing individual subdirectories from Chrome in the future, but maintaining our own gyp_webrtc file will at least buy us some time for now, so we can roll past that chromium_revision in WebRTC DEPS. Overview of differences between gyp_webrtc and gyp_chromium (and how we previously used gyp_chromium): * No .gyp file needs to be passed (defaults to all.gyp) * CHROMIUM_GYP_FILE is ignored (i.e. cannot be used to specify an alternate .gyp file to process) * Ninja is used by default on all platforms unless GYP_GENERATORS is set. * Gyp syntax check is always on * Gyp circular dependency check is always on * No support for automatic toolchain detection on Windows. * --depth argument is no longer needed since calculated by the script. * Support for a webrtc.gyp_env file sitting next to the .gclient file in the top dir of checkout, which can be used to override Gyp variables similar to chromium.gyp_env. * SKIP_WEBRTC_GYP_ENV can be set to skip reading webrtc.gyp_env. BUG=2863 TEST=Ran and verified behavior on Linux with: gclient runhooks webrtc/build/gyp_webrtc webrtc/build/gyp_webrtc -Dextra_gyp_flag=0 . build/android/envsetup.sh && gclient runhooks SKIP_WEBRTC_GYP_ENV=1 webrtc/build/gyp_webrtc GYP_GENERATORS=make webrtc/build/gyp_webrtc The patch also passes runhooks and compile step on all trybots. R=andrew@webrtc.org, fischman@webrtc.org Review URL: https://webrtc-codereview.appspot.com/7759004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5467 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-31 09:34:51 +00:00
sys.path.insert(0, os.path.join(checkout_root, 'tools', 'gyp', 'pylib'))
import gyp
if __name__ == '__main__':
args = sys.argv[1:]
if int(os.environ.get('GYP_CHROMIUM_NO_ACTION', 0)):
print 'Skipping gyp_webrtc due to GYP_CHROMIUM_NO_ACTION env var.'
sys.exit(0)
if 'SKIP_WEBRTC_GYP_ENV' not in os.environ:
# Update the environment based on webrtc.gyp_env
gyp_env_path = os.path.join(os.path.dirname(checkout_root),
'webrtc.gyp_env')
gyp_helper.apply_gyp_environment_from_file(gyp_env_path)
# 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, assume 'all.gyp' in the root of the checkout.
if not gyp_file_specified:
args.append(os.path.join(checkout_root, 'all.gyp'))
# There shouldn't be a circular dependency relationship between .gyp files,
args.append('--no-circular-check')
# Default to ninja unless GYP_GENERATORS is set.
if not os.environ.get('GYP_GENERATORS'):
os.environ['GYP_GENERATORS'] = 'ninja'
vs2013_runtime_dll_dirs = None
if int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', '1')):
vs2013_runtime_dll_dirs = vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs()
Roll chromium_revision 249215:255773 Overview of changes in Chrome DEPS: $ svn diff http://src.chromium.org/chrome/trunk/src/DEPS -r 249215:255773 which can be compared with the output of: $ grep chromium_deps DEPS in a WebRTC checkout, gives the following relevant changes: * third_party/icu 246118:249466 * third_party/libyuv 978:979 * third_party/libjpeg_turbo 239595:251747 * third_party/libsrtp 214783:250757 * third_party/nss 246067:254867 * tools/clang-format 198831:202065 * tools/gyp 1846:1860 Among a variety of updated DEPS, this enables us to use the new automatic download of Chromium's stripped down Visual Studio 2013 toolchain on Windows. For Windows, Visual Studio 2013 is also the default compiler in Chrome. This CL sets the GYP_MSVS_VERSION to 2010 unless otherwise specified. Doing that we can first fix our 2013 problems before we move over to having 2013 by default. The plan is to build 2013 at the WebRTC FYI waterfall at http://build.chromium.org/p/client.webrtc.fyi/waterfall to ensure we can support VS2013 before the switch. I realized we can sync Chromium's find_depot_tools.py script into it's own folder and just alter the PYTHONPATH for the gyp_webrtc script. That way there's no need to have the dummy module in webrtc/build anymore. The real script is also needed for the logic that handles checking VS2013 and downloading it if not found. BUG=chromium:340973 TEST=All trybots passing runhooks and compile step. R=tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/9299004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5667 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-10 09:51:17 +00:00
Add gyp_webrtc script to generate projects. The reason for this is that http://crrev.com/245412 introduces a dependency of Chrome's src/build/gyp_chromium to src/tools/find_depot_tools.py, which we don't have synced in WebRTC (src/tools is very big). Offline discussions shows that we cannot rely on syncing individual subdirectories from Chrome in the future, but maintaining our own gyp_webrtc file will at least buy us some time for now, so we can roll past that chromium_revision in WebRTC DEPS. Overview of differences between gyp_webrtc and gyp_chromium (and how we previously used gyp_chromium): * No .gyp file needs to be passed (defaults to all.gyp) * CHROMIUM_GYP_FILE is ignored (i.e. cannot be used to specify an alternate .gyp file to process) * Ninja is used by default on all platforms unless GYP_GENERATORS is set. * Gyp syntax check is always on * Gyp circular dependency check is always on * No support for automatic toolchain detection on Windows. * --depth argument is no longer needed since calculated by the script. * Support for a webrtc.gyp_env file sitting next to the .gclient file in the top dir of checkout, which can be used to override Gyp variables similar to chromium.gyp_env. * SKIP_WEBRTC_GYP_ENV can be set to skip reading webrtc.gyp_env. BUG=2863 TEST=Ran and verified behavior on Linux with: gclient runhooks webrtc/build/gyp_webrtc webrtc/build/gyp_webrtc -Dextra_gyp_flag=0 . build/android/envsetup.sh && gclient runhooks SKIP_WEBRTC_GYP_ENV=1 webrtc/build/gyp_webrtc GYP_GENERATORS=make webrtc/build/gyp_webrtc The patch also passes runhooks and compile step on all trybots. R=andrew@webrtc.org, fischman@webrtc.org Review URL: https://webrtc-codereview.appspot.com/7759004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5467 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-31 09:34:51 +00:00
# Enforce gyp syntax checking. This adds about 20% execution time.
args.append('--check')
supplemental_includes = gyp_chromium.GetSupplementalFiles()
gn_vars_dict = gyp_chromium.GetGypVars(supplemental_includes)
Roll chromium_revision 249215:255773 Overview of changes in Chrome DEPS: $ svn diff http://src.chromium.org/chrome/trunk/src/DEPS -r 249215:255773 which can be compared with the output of: $ grep chromium_deps DEPS in a WebRTC checkout, gives the following relevant changes: * third_party/icu 246118:249466 * third_party/libyuv 978:979 * third_party/libjpeg_turbo 239595:251747 * third_party/libsrtp 214783:250757 * third_party/nss 246067:254867 * tools/clang-format 198831:202065 * tools/gyp 1846:1860 Among a variety of updated DEPS, this enables us to use the new automatic download of Chromium's stripped down Visual Studio 2013 toolchain on Windows. For Windows, Visual Studio 2013 is also the default compiler in Chrome. This CL sets the GYP_MSVS_VERSION to 2010 unless otherwise specified. Doing that we can first fix our 2013 problems before we move over to having 2013 by default. The plan is to build 2013 at the WebRTC FYI waterfall at http://build.chromium.org/p/client.webrtc.fyi/waterfall to ensure we can support VS2013 before the switch. I realized we can sync Chromium's find_depot_tools.py script into it's own folder and just alter the PYTHONPATH for the gyp_webrtc script. That way there's no need to have the dummy module in webrtc/build anymore. The real script is also needed for the logic that handles checking VS2013 and downloading it if not found. BUG=chromium:340973 TEST=All trybots passing runhooks and compile step. R=tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/9299004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5667 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-10 09:51:17 +00:00
# Automatically turn on crosscompile support for platforms that need it.
if all(('ninja' in os.environ.get('GYP_GENERATORS', ''),
gn_vars_dict.get('OS') in ['android', 'ios'],
'GYP_CROSSCOMPILE' not in os.environ)):
os.environ['GYP_CROSSCOMPILE'] = '1'
Add gyp_webrtc script to generate projects. The reason for this is that http://crrev.com/245412 introduces a dependency of Chrome's src/build/gyp_chromium to src/tools/find_depot_tools.py, which we don't have synced in WebRTC (src/tools is very big). Offline discussions shows that we cannot rely on syncing individual subdirectories from Chrome in the future, but maintaining our own gyp_webrtc file will at least buy us some time for now, so we can roll past that chromium_revision in WebRTC DEPS. Overview of differences between gyp_webrtc and gyp_chromium (and how we previously used gyp_chromium): * No .gyp file needs to be passed (defaults to all.gyp) * CHROMIUM_GYP_FILE is ignored (i.e. cannot be used to specify an alternate .gyp file to process) * Ninja is used by default on all platforms unless GYP_GENERATORS is set. * Gyp syntax check is always on * Gyp circular dependency check is always on * No support for automatic toolchain detection on Windows. * --depth argument is no longer needed since calculated by the script. * Support for a webrtc.gyp_env file sitting next to the .gclient file in the top dir of checkout, which can be used to override Gyp variables similar to chromium.gyp_env. * SKIP_WEBRTC_GYP_ENV can be set to skip reading webrtc.gyp_env. BUG=2863 TEST=Ran and verified behavior on Linux with: gclient runhooks webrtc/build/gyp_webrtc webrtc/build/gyp_webrtc -Dextra_gyp_flag=0 . build/android/envsetup.sh && gclient runhooks SKIP_WEBRTC_GYP_ENV=1 webrtc/build/gyp_webrtc GYP_GENERATORS=make webrtc/build/gyp_webrtc The patch also passes runhooks and compile step on all trybots. R=andrew@webrtc.org, fischman@webrtc.org Review URL: https://webrtc-codereview.appspot.com/7759004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5467 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-31 09:34:51 +00:00
args.extend(['-I' + i for i in
gyp_chromium.additional_include_files(supplemental_includes,
args)])
# Set the gyp depth variable to the root of the checkout.
args.append('--depth=' + os.path.relpath(checkout_root))
print 'Updating projects from gyp files...'
sys.stdout.flush()
# Off we go...
Roll chromium_revision 249215:255773 Overview of changes in Chrome DEPS: $ svn diff http://src.chromium.org/chrome/trunk/src/DEPS -r 249215:255773 which can be compared with the output of: $ grep chromium_deps DEPS in a WebRTC checkout, gives the following relevant changes: * third_party/icu 246118:249466 * third_party/libyuv 978:979 * third_party/libjpeg_turbo 239595:251747 * third_party/libsrtp 214783:250757 * third_party/nss 246067:254867 * tools/clang-format 198831:202065 * tools/gyp 1846:1860 Among a variety of updated DEPS, this enables us to use the new automatic download of Chromium's stripped down Visual Studio 2013 toolchain on Windows. For Windows, Visual Studio 2013 is also the default compiler in Chrome. This CL sets the GYP_MSVS_VERSION to 2010 unless otherwise specified. Doing that we can first fix our 2013 problems before we move over to having 2013 by default. The plan is to build 2013 at the WebRTC FYI waterfall at http://build.chromium.org/p/client.webrtc.fyi/waterfall to ensure we can support VS2013 before the switch. I realized we can sync Chromium's find_depot_tools.py script into it's own folder and just alter the PYTHONPATH for the gyp_webrtc script. That way there's no need to have the dummy module in webrtc/build anymore. The real script is also needed for the logic that handles checking VS2013 and downloading it if not found. BUG=chromium:340973 TEST=All trybots passing runhooks and compile step. R=tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/9299004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5667 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-10 09:51:17 +00:00
gyp_rc = gyp.main(args)
if vs2013_runtime_dll_dirs:
x64_runtime, x86_runtime = vs2013_runtime_dll_dirs
vs_toolchain.CopyVsRuntimeDlls(
Roll chromium_revision 249215:255773 Overview of changes in Chrome DEPS: $ svn diff http://src.chromium.org/chrome/trunk/src/DEPS -r 249215:255773 which can be compared with the output of: $ grep chromium_deps DEPS in a WebRTC checkout, gives the following relevant changes: * third_party/icu 246118:249466 * third_party/libyuv 978:979 * third_party/libjpeg_turbo 239595:251747 * third_party/libsrtp 214783:250757 * third_party/nss 246067:254867 * tools/clang-format 198831:202065 * tools/gyp 1846:1860 Among a variety of updated DEPS, this enables us to use the new automatic download of Chromium's stripped down Visual Studio 2013 toolchain on Windows. For Windows, Visual Studio 2013 is also the default compiler in Chrome. This CL sets the GYP_MSVS_VERSION to 2010 unless otherwise specified. Doing that we can first fix our 2013 problems before we move over to having 2013 by default. The plan is to build 2013 at the WebRTC FYI waterfall at http://build.chromium.org/p/client.webrtc.fyi/waterfall to ensure we can support VS2013 before the switch. I realized we can sync Chromium's find_depot_tools.py script into it's own folder and just alter the PYTHONPATH for the gyp_webrtc script. That way there's no need to have the dummy module in webrtc/build anymore. The real script is also needed for the logic that handles checking VS2013 and downloading it if not found. BUG=chromium:340973 TEST=All trybots passing runhooks and compile step. R=tommi@webrtc.org Review URL: https://webrtc-codereview.appspot.com/9299004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5667 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-10 09:51:17 +00:00
os.path.join(checkout_root, gyp_chromium.GetOutputDirectory()),
(x86_runtime, x64_runtime))
sys.exit(gyp_rc)