Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2502)

Unified Diff: build/gyp_chromium

Issue 175683002: Let gyp_chromium set GYP_CROSSCOMPILE for android and ios. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/envsetup.sh ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/gyp_chromium
diff --git a/build/gyp_chromium b/build/gyp_chromium
index ae1d4c2f66242d7c883b990078479bfd92f86836..5b565ff15311452042189ca8dfeaaf9e6d4d08f2 100755
--- a/build/gyp_chromium
+++ b/build/gyp_chromium
@@ -99,8 +99,30 @@ def ProcessGypDefinesItems(items):
result += [(key, '1')]
return result
+
def GetGypVarsForGN(supplemental_files):
"""Returns a dictionary of all GYP vars that we will be passing to GN."""
+ # Find the .gyp directory in the user's home directory.
+ home_dot_gyp = os.environ.get('GYP_CONFIG_DIR', None)
+ if home_dot_gyp:
+ home_dot_gyp = os.path.expanduser(home_dot_gyp)
+ if not home_dot_gyp:
+ home_vars = ['HOME']
+ if sys.platform in ('cygwin', 'win32'):
+ home_vars.append('USERPROFILE')
+ for home_var in home_vars:
+ home = os.getenv(home_var)
+ if home != None:
+ home_dot_gyp = os.path.join(home, '.gyp')
+ if not os.path.exists(home_dot_gyp):
+ home_dot_gyp = None
+ else:
+ break
+
+ if home_dot_gyp:
+ include_gypi = os.path.join(home_dot_gyp, "include.gypi")
+ if os.path.exists(include_gypi):
+ supplemental_files += [include_gypi]
# GYP defines from the supplemental.gypi files.
supp_items = []
@@ -130,7 +152,13 @@ def GetGypVarsForGN(supplemental_files):
cmdline_input_items += [sys.argv[i][2:]]
cmdline_items = ProcessGypDefinesItems(cmdline_input_items)
- return dict(supp_items + env_items + cmdline_items)
+ vars_dict = dict(supp_items + env_items + cmdline_items)
+ # It's not possible to set a default value for cpu_arch in GN, so do it here
+ # for now (http://crbug.com/344767).
+ if vars_dict.get('OS') == 'android' and not 'target_arch' in vars_dict:
+ vars_dict['target_arch'] = 'arm'
+ return vars_dict
+
def GetOutputDirectory():
"""Returns the output directory that GYP will use."""
@@ -150,38 +178,10 @@ def GetOutputDirectory():
return "out"
-def GetArgsStringForGN(supplemental_files):
+
+def GetArgsStringForGN(vars_dict):
"""Returns the args to pass to GN.
Based on a subset of the GYP variables that have been rewritten a bit."""
-
- # Find the .gyp directory in the user's home directory.
- home_dot_gyp = os.environ.get('GYP_CONFIG_DIR', None)
- if home_dot_gyp:
- home_dot_gyp = os.path.expanduser(home_dot_gyp)
- if not home_dot_gyp:
- home_vars = ['HOME']
- if sys.platform in ('cygwin', 'win32'):
- home_vars.append('USERPROFILE')
- for home_var in home_vars:
- home = os.getenv(home_var)
- if home != None:
- home_dot_gyp = os.path.join(home, '.gyp')
- if not os.path.exists(home_dot_gyp):
- home_dot_gyp = None
- else:
- break
-
- if home_dot_gyp:
- include_gypi = os.path.join(home_dot_gyp, "include.gypi")
- if os.path.exists(include_gypi):
- supplemental_files += [include_gypi]
-
- vars_dict = GetGypVarsForGN(supplemental_files)
- # It's not possible to let set a default value for cpu_arch in GN, so do it
- # here for now (http://crbug.com/344767).
- if vars_dict.get('OS') == 'android' and not 'target_arch' in vars_dict:
- vars_dict['target_arch'] = 'arm'
-
gn_args = ''
# Note: These are the additional flags passed to various builds by builders
@@ -300,7 +300,7 @@ def additional_include_files(supplemental_files, args=[]):
return result
-def RunGN(supplemental_includes):
+def RunGN(vars_dict):
"""Runs GN, returning True if it succeeded, printing an error and returning
false if not."""
@@ -327,7 +327,7 @@ def RunGN(supplemental_includes):
# to know they're being run under GYP.
args = [gnpath, 'gyp', '-q',
'--root=' + chrome_src,
- '--args=' + GetArgsStringForGN(supplemental_includes),
+ '--args=' + GetArgsStringForGN(vars_dict),
'--output=//' + GetOutputDirectory() + '/gn_build/']
return subprocess.call(args) == 0
@@ -479,7 +479,17 @@ if __name__ == '__main__':
args.append('--check')
supplemental_includes = GetSupplementalFiles()
- if not RunGN(supplemental_includes):
+ gn_vars_dict = GetGypVarsForGN(supplemental_includes)
+
+ # Automatically turn on crosscompile support for platforms that need it.
+ # (The Chrome OS build sets CC_host / CC_target which implicitly enables
+ # this mode.)
+ 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'
+
+ if not RunGN(gn_vars_dict):
sys.exit(1)
args.extend(
['-I' + i for i in additional_include_files(supplemental_includes, args)])
« no previous file with comments | « build/android/envsetup.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698