OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2009 Google Inc. All rights reserved. | 3 # Copyright (c) 2009 Google Inc. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 import copy | 7 import copy |
8 import gyp.input | 8 import gyp.input |
9 import optparse | 9 import optparse |
10 import os.path | 10 import os.path |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 help='sets generator flag FLAG to VAL') | 258 help='sets generator flag FLAG to VAL') |
259 parser.add_option('--generator-output', dest='generator_output', | 259 parser.add_option('--generator-output', dest='generator_output', |
260 action='store', default=None, metavar='DIR', type='path', | 260 action='store', default=None, metavar='DIR', type='path', |
261 env_name='GYP_GENERATOR_OUTPUT', | 261 env_name='GYP_GENERATOR_OUTPUT', |
262 help='puts generated build files under DIR') | 262 help='puts generated build files under DIR') |
263 parser.add_option('--ignore-environment', dest='use_environment', | 263 parser.add_option('--ignore-environment', dest='use_environment', |
264 action='store_false', default=True, regenerate=False, | 264 action='store_false', default=True, regenerate=False, |
265 help='do not read options from environment variables') | 265 help='do not read options from environment variables') |
266 parser.add_option('--check', dest='check', action='store_true', | 266 parser.add_option('--check', dest='check', action='store_true', |
267 help='check format of gyp files') | 267 help='check format of gyp files') |
| 268 parser.add_option('--toplevel-dir', dest='toplevel_dir', action='store', |
| 269 default=None, metavar='DIR', type='path', |
| 270 help='directory to use as the root of the source tree') |
268 # --no-circular-check disables the check for circular relationships between | 271 # --no-circular-check disables the check for circular relationships between |
269 # .gyp files. These relationships should not exist, but they've only been | 272 # .gyp files. These relationships should not exist, but they've only been |
270 # observed to be harmful with the Xcode generator. Chromium's .gyp files | 273 # observed to be harmful with the Xcode generator. Chromium's .gyp files |
271 # currently have some circular relationships on non-Mac platforms, so this | 274 # currently have some circular relationships on non-Mac platforms, so this |
272 # option allows the strict behavior to be used on Macs and the lenient | 275 # option allows the strict behavior to be used on Macs and the lenient |
273 # behavior to be used elsewhere. | 276 # behavior to be used elsewhere. |
274 # TODO(mark): Remove this option when http://crbug.com/35878 is fixed. | 277 # TODO(mark): Remove this option when http://crbug.com/35878 is fixed. |
275 parser.add_option('--no-circular-check', dest='circular_check', | 278 parser.add_option('--no-circular-check', dest='circular_check', |
276 action='store_false', default=True, regenerate=False, | 279 action='store_false', default=True, regenerate=False, |
277 help="don't check for circular relationships between files") | 280 help="don't check for circular relationships between files") |
278 | 281 |
279 # We read a few things from ~/.gyp, so set up a var for that. | 282 # We read a few things from ~/.gyp, so set up a var for that. |
280 home_vars = ['HOME'] | 283 home_vars = ['HOME'] |
281 if sys.platform in ('cygwin', 'win32'): | 284 if sys.platform in ('cygwin', 'win32'): |
282 home_vars.append('USERPROFILE') | 285 home_vars.append('USERPROFILE') |
283 home = None | 286 home = None |
284 for home_var in home_vars: | 287 for home_var in home_vars: |
285 home = os.getenv(home_var) | 288 home = os.getenv(home_var) |
286 if home != None: | 289 if home != None: |
287 break | 290 break |
288 home_dot_gyp = None | 291 home_dot_gyp = None |
289 if home != None: | 292 if home != None: |
290 home_dot_gyp = os.path.join(home, '.gyp') | 293 home_dot_gyp = os.path.join(home, '.gyp') |
291 if not os.path.exists(home_dot_gyp): | 294 if not os.path.exists(home_dot_gyp): |
292 home_dot_gyp = None | 295 home_dot_gyp = None |
293 | 296 |
294 # TODO(thomasvl): add support for ~/.gyp/defaults | 297 # TODO(thomasvl): add support for ~/.gyp/defaults |
295 | 298 |
296 (options, build_files_arg) = parser.parse_args(args) | 299 options, build_files_arg = parser.parse_args(args) |
297 build_files = build_files_arg | 300 build_files = build_files_arg |
298 | 301 |
299 if not options.formats: | 302 if not options.formats: |
300 # If no format was given on the command line, then check the env variable. | 303 # If no format was given on the command line, then check the env variable. |
301 generate_formats = [] | 304 generate_formats = [] |
302 if options.use_environment: | 305 if options.use_environment: |
303 generate_formats = os.environ.get('GYP_GENERATORS', []) | 306 generate_formats = os.environ.get('GYP_GENERATORS', []) |
304 if generate_formats: | 307 if generate_formats: |
305 generate_formats = re.split('[\s,]', generate_formats) | 308 generate_formats = re.split('[\s,]', generate_formats) |
306 if generate_formats: | 309 if generate_formats: |
(...skipping 13 matching lines...) Expand all Loading... |
320 g_o = os.environ.get('GYP_GENERATOR_OUTPUT') | 323 g_o = os.environ.get('GYP_GENERATOR_OUTPUT') |
321 if g_o: | 324 if g_o: |
322 options.generator_output = g_o | 325 options.generator_output = g_o |
323 | 326 |
324 for mode in options.debug: | 327 for mode in options.debug: |
325 gyp.debug[mode] = 1 | 328 gyp.debug[mode] = 1 |
326 | 329 |
327 # Do an extra check to avoid work when we're not debugging. | 330 # Do an extra check to avoid work when we're not debugging. |
328 if DEBUG_GENERAL in gyp.debug.keys(): | 331 if DEBUG_GENERAL in gyp.debug.keys(): |
329 DebugOutput(DEBUG_GENERAL, 'running with these options:') | 332 DebugOutput(DEBUG_GENERAL, 'running with these options:') |
330 for (option, value) in options.__dict__.items(): | 333 for option, value in sorted(options.__dict__.items()): |
331 if option[0] == '_': | 334 if option[0] == '_': |
332 continue | 335 continue |
333 if isinstance(value, basestring): | 336 if isinstance(value, basestring): |
334 DebugOutput(DEBUG_GENERAL, " %s: '%s'" % (option, value)) | 337 DebugOutput(DEBUG_GENERAL, " %s: '%s'" % (option, value)) |
335 else: | 338 else: |
336 DebugOutput(DEBUG_GENERAL, " %s: %s" % (option, str(value))) | 339 DebugOutput(DEBUG_GENERAL, " %s: %s" % (option, str(value))) |
337 | 340 |
338 if not build_files: | 341 if not build_files: |
339 build_files = FindBuildFiles() | 342 build_files = FindBuildFiles() |
340 if not build_files: | 343 if not build_files: |
(...skipping 22 matching lines...) Expand all Loading... |
363 # build file. | 366 # build file. |
364 if options.depth: | 367 if options.depth: |
365 break | 368 break |
366 | 369 |
367 if not options.depth: | 370 if not options.depth: |
368 raise Exception, \ | 371 raise Exception, \ |
369 'Could not automatically locate src directory. This is a ' + \ | 372 'Could not automatically locate src directory. This is a ' + \ |
370 'temporary Chromium feature that will be removed. Use ' + \ | 373 'temporary Chromium feature that will be removed. Use ' + \ |
371 '--depth as a workaround.' | 374 '--depth as a workaround.' |
372 | 375 |
| 376 # If toplevel-dir is not set, we assume that depth is the root of our source |
| 377 # tree. |
| 378 if not options.toplevel_dir: |
| 379 options.toplevel_dir = options.depth |
| 380 |
373 # -D on the command line sets variable defaults - D isn't just for define, | 381 # -D on the command line sets variable defaults - D isn't just for define, |
374 # it's for default. Perhaps there should be a way to force (-F?) a | 382 # it's for default. Perhaps there should be a way to force (-F?) a |
375 # variable's value so that it can't be overridden by anything else. | 383 # variable's value so that it can't be overridden by anything else. |
376 cmdline_default_variables = {} | 384 cmdline_default_variables = {} |
377 defines = [] | 385 defines = [] |
378 if options.use_environment: | 386 if options.use_environment: |
379 defines += ShlexEnv('GYP_DEFINES') | 387 defines += ShlexEnv('GYP_DEFINES') |
380 if options.defines: | 388 if options.defines: |
381 defines += options.defines | 389 defines += options.defines |
382 cmdline_default_variables = NameValueListToDict(defines) | 390 cmdline_default_variables = NameValueListToDict(defines) |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 # need to have dependencies defined before dependents reference them should | 452 # need to have dependencies defined before dependents reference them should |
445 # generate targets in the order specified in flat_list. | 453 # generate targets in the order specified in flat_list. |
446 generator.GenerateOutput(flat_list, targets, data, params) | 454 generator.GenerateOutput(flat_list, targets, data, params) |
447 | 455 |
448 # Done | 456 # Done |
449 return 0 | 457 return 0 |
450 | 458 |
451 | 459 |
452 if __name__ == '__main__': | 460 if __name__ == '__main__': |
453 sys.exit(main(sys.argv[1:])) | 461 sys.exit(main(sys.argv[1:])) |
OLD | NEW |