@@ -149,6 +149,16 @@ def DontUseClang(args, target_os, host_cpu, target_cpu):
149
149
# We don't have clang on Windows.
150
150
return target_os == 'win'
151
151
152
+ def SetIsClang (args , gn_args ):
153
+ dont_use_clang = DontUseClang (args , gn_args ['target_os' ],
154
+ gn_args ['host_cpu' ],
155
+ gn_args ['target_cpu' ])
156
+ gn_args ['is_clang' ] = args .clang and not dont_use_clang
157
+ if 'toolchain_prefix' in gn_args :
158
+ gn_args ['is_clang' ] = not gn_args ['toolchain_prefix' ]
159
+ gn_args ['is_asan' ] = args .asan and gn_args ['is_clang' ]
160
+ gn_args ['is_msan' ] = args .msan and gn_args ['is_clang' ]
161
+ gn_args ['is_tsan' ] = args .tsan and gn_args ['is_clang' ]
152
162
153
163
def UseSysroot (args , gn_args ):
154
164
# Don't try to use a Linux sysroot if we aren't on Linux.
@@ -157,6 +167,10 @@ def UseSysroot(args, gn_args):
157
167
# Don't use the sysroot if we're given another sysroot.
158
168
if TargetSysroot (args ):
159
169
return False
170
+ # Don't use the sysroot if crossbuild.
171
+ crossbuild = gn_args ['target_cpu' ] != gn_args ['host_cpu' ]
172
+ if crossbuild :
173
+ return False
160
174
# Otherwise use the sysroot.
161
175
return True
162
176
@@ -219,16 +233,7 @@ def ToGnArgs(args, mode, arch, target_os):
219
233
if mode == 'product' :
220
234
gn_args ['dart_runtime_mode' ] = 'release'
221
235
else :
222
- gn_args ['dart_runtime_mode' ] = 'develop'
223
-
224
- dont_use_clang = DontUseClang (args , gn_args ['target_os' ],
225
- gn_args ['host_cpu' ],
226
- gn_args ['target_cpu' ])
227
- gn_args ['is_clang' ] = args .clang and not dont_use_clang
228
-
229
- gn_args ['is_asan' ] = args .asan and gn_args ['is_clang' ]
230
- gn_args ['is_msan' ] = args .msan and gn_args ['is_clang' ]
231
- gn_args ['is_tsan' ] = args .tsan and gn_args ['is_clang' ]
236
+ gn_args ['dart_runtime_mode' ] = 'develop'
232
237
233
238
if not args .platform_sdk and not gn_args ['target_cpu' ].startswith ('arm' ):
234
239
gn_args ['dart_platform_sdk' ] = args .platform_sdk
@@ -245,6 +250,10 @@ def ToGnArgs(args, mode, arch, target_os):
245
250
toolchain = ToolchainPrefix (args )
246
251
if toolchain :
247
252
gn_args ['toolchain_prefix' ] = ParseStringMap (arch , toolchain )
253
+
254
+ SetIsClang (args , gn_args )
255
+
256
+ gn_args ['use_stdgnu' ] = args .use_stdgnu
248
257
249
258
goma_dir = os .environ .get ('GOMA_DIR' )
250
259
goma_home_dir = os .path .join (os .getenv ('HOME' , '' ), 'goma' )
@@ -414,6 +423,11 @@ def parse_args(args):
414
423
other_group .add_argument ('--toolchain-prefix' , '-t' ,
415
424
type = str ,
416
425
help = 'Comma-separated list of arch=/path/to/toolchain-prefix mappings' )
426
+ other_group .add_argument ('--use-stdgnu' , '-stdgnu' ,
427
+ help = 'Use -std=gnu++XX instead of default -std=c++XX. Needed to crosscompile gproftools.' ,
428
+ default = False ,
429
+ dest = 'use_stdgnu' ,
430
+ action = 'store_true' )
417
431
other_group .add_argument ('--tsan' ,
418
432
help = 'Build with TSAN' ,
419
433
default = UseTSAN (),
0 commit comments