| #!/usr/bin/env python |
| |
| # Copyright (c) 2012 Google Inc. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """ |
| Make sure optimization settings are extracted properly. |
| """ |
| |
| import TestGyp |
| |
| import sys |
| |
| if sys.platform == 'win32': |
| test = TestGyp.TestGyp(formats=['ninja']) |
| |
| CHDIR = 'compiler-flags' |
| test.run_gyp('optimizations.gyp', chdir=CHDIR) |
| |
| # It's hard to map flags to output contents in a non-fragile way (especially |
| # handling both 2008/2010), so just verify the correct ninja command line |
| # contents. |
| |
| ninja_file = test.built_file_path('obj/test_opt_off.ninja', chdir=CHDIR) |
| test.must_contain(ninja_file, 'cflags = /Od') |
| |
| ninja_file = test.built_file_path('obj/test_opt_lev_size.ninja', chdir=CHDIR) |
| test.must_contain(ninja_file, 'cflags = /O1') |
| |
| ninja_file = test.built_file_path('obj/test_opt_lev_speed.ninja', chdir=CHDIR) |
| test.must_contain(ninja_file, 'cflags = /O2') |
| |
| ninja_file = test.built_file_path('obj/test_opt_lev_max.ninja', chdir=CHDIR) |
| test.must_contain(ninja_file, 'cflags = /Ox') |
| |
| ninja_file = test.built_file_path('obj/test_opt_unset.ninja', chdir=CHDIR) |
| test.must_not_contain(ninja_file, '/Od') |
| test.must_not_contain(ninja_file, '/O1') |
| test.must_not_contain(ninja_file, '/Ox') |
| # Set by default if none specified. |
| test.must_contain(ninja_file, '/O2') |
| |
| ninja_file = test.built_file_path('obj/test_opt_fpo.ninja', chdir=CHDIR) |
| test.must_contain(ninja_file, '/Oy') |
| test.must_not_contain(ninja_file, '/Oy-') |
| |
| ninja_file = test.built_file_path('obj/test_opt_fpo_off.ninja', chdir=CHDIR) |
| test.must_contain(ninja_file, '/Oy-') |
| |
| ninja_file = test.built_file_path('obj/test_opt_intrinsic.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/Oi') |
| test.must_not_contain(ninja_file, '/Oi-') |
| |
| ninja_file = test.built_file_path('obj/test_opt_intrinsic_off.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/Oi-') |
| |
| ninja_file = test.built_file_path('obj/test_opt_inline_off.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/Ob0') |
| |
| ninja_file = test.built_file_path('obj/test_opt_inline_manual.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/Ob1') |
| |
| ninja_file = test.built_file_path('obj/test_opt_inline_auto.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/Ob2') |
| |
| ninja_file = test.built_file_path('obj/test_opt_neither.ninja', |
| chdir=CHDIR) |
| test.must_not_contain(ninja_file, '/Os') |
| test.must_not_contain(ninja_file, '/Ot') |
| |
| ninja_file = test.built_file_path('obj/test_opt_size.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/Os') |
| |
| ninja_file = test.built_file_path('obj/test_opt_speed.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/Ot') |
| |
| ninja_file = test.built_file_path('obj/test_opt_wpo.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/GL') |
| |
| ninja_file = test.built_file_path('obj/test_opt_sp.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/GF') |
| |
| ninja_file = test.built_file_path('obj/test_opt_sp_off.ninja', |
| chdir=CHDIR) |
| test.must_not_contain(ninja_file, '/GF') |
| |
| ninja_file = test.built_file_path('obj/test_opt_fso.ninja', |
| chdir=CHDIR) |
| test.must_contain(ninja_file, '/GT') |
| |
| ninja_file = test.built_file_path('obj/test_opt_fso_off.ninja', |
| chdir=CHDIR) |
| test.must_not_contain(ninja_file, '/GT') |
| |
| test.pass_test() |