-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathgyp_peeracle
More file actions
executable file
·171 lines (130 loc) · 6.24 KB
/
gyp_peeracle
File metadata and controls
executable file
·171 lines (130 loc) · 6.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/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))
webrtc_root = 'third_party/webrtc'
sys.path.insert(0, os.path.join(checkout_root, webrtc_root))
sys.path.insert(0, os.path.join(checkout_root, webrtc_root, 'build'))
import gyp_chromium
import gyp_helper
import vs_toolchain
sys.path.insert(0, os.path.join(checkout_root, webrtc_root, 'tools', 'gyp',
'pylib'))
sys.path.insert(0, os.path.join(checkout_root, webrtc_root, 'tools', 'clang',
'scripts'))
import gyp
import update
def GetSupplementalFiles():
"""Returns a list of the supplemental files that are included in all GYP
sources."""
# Can't use the one in gyp_chromium since the directory location of the root
# is different.
return glob.glob(os.path.join(checkout_root, 'build', 'supplement.gypi'))
from optparse import OptionParser
if __name__ == '__main__':
# Set the gyp defines
usage = 'usage: %prog [options]'
parser = OptionParser(usage=usage)
parser.add_option('--disable-java', default=False, action='store_true',
help='do not build Java bindings and samples')
parser.add_option('--disable-objc', default=False, action='store_true',
help='do not build Objective-C bindings and samples')
parser.add_option('--disable-tests', default=False, action='store_true',
help='do not build unit tests')
parser.add_option('--disable-samples', default=False, action='store_true',
help='do not build samples')
parser.add_option('--disable-vlcplugin', default=False, action='store_true',
help='do not build VLC plugin inside the samples')
parser.add_option('--disable-cpplint', default=False, action='store_true',
help='do not use the C++ linter before compiling')
parser.add_option('--disable-curl', default=False, action='store_true',
help='disable cURL')
parser.add_option('--disable-libwebsockets', default=False, action='store_true',
help='disable libwebsockets')
(options, args) = parser.parse_args()
gyp_defines = ''
gyp_defines += 'build_java=%d ' % (0 if options.disable_java else 1)
gyp_defines += 'build_objc=%d ' % (0 if options.disable_objc else 1)
gyp_defines += 'build_tests=%d ' % (0 if options.disable_tests else 1)
gyp_defines += 'build_samples=%d ' % (0 if options.disable_samples else 1)
gyp_defines += 'build_vlcplugin=%d ' % (0 if options.disable_vlcplugin else 1)
gyp_defines += 'use_cpplint=%d ' % (0 if options.disable_cpplint else 1)
gyp_defines += 'use_curl=%d ' % (0 if options.disable_curl else 1)
gyp_defines += 'use_libwebsockets=%d' % (0 if options.disable_libwebsockets else 1)
if 'GYP_DEFINES' in os.environ:
gyp_defines += ' ' + os.environ['GYP_DEFINES']
os.environ['GYP_DEFINES'] = gyp_defines
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)
sys.argv = [ sys.argv[0] ]
update.main()
# 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:
# 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 :/
os.chdir(checkout_root)
args.append('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'
# Enable check for missing sources in GYP files on Windows.
if sys.platform.startswith('win'):
gyp_generator_flags = os.getenv('GYP_GENERATOR_FLAGS', '')
if not 'msvs_error_on_missing_sources' in gyp_generator_flags:
os.environ['GYP_GENERATOR_FLAGS'] = (
gyp_generator_flags + ' msvs_error_on_missing_sources=1')
vs2013_runtime_dll_dirs = None
if int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', '0')):
vs2013_runtime_dll_dirs = vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs()
# Enforce gyp syntax checking. This adds about 20% execution time.
args.append('--check')
supplemental_includes = GetSupplementalFiles()
gyp_vars = gyp_chromium.GetGypVars(supplemental_includes)
# Automatically turn on crosscompile support for platforms that need it.
if all(('ninja' in os.environ.get('GYP_GENERATORS', ''),
gyp_vars.get('OS') in ['android', 'ios'],
'GYP_CROSSCOMPILE' not in os.environ)):
os.environ['GYP_CROSSCOMPILE'] = '1'
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...
gyp_rc = gyp.main(args)
if vs2013_runtime_dll_dirs:
x64_runtime, x86_runtime = vs2013_runtime_dll_dirs
vs_toolchain.CopyVsRuntimeDlls(
os.path.join(checkout_root, gyp_chromium.GetOutputDirectory()),
(x86_runtime, x64_runtime))
sys.exit(gyp_rc)