1dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org#!/usr/bin/env python 2dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 3dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org# Copyright (c) 2012 Google Inc. All rights reserved. 4dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org# Use of this source code is governed by a BSD-style license that can be 5dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org# found in the LICENSE file. 6dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 7dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org""" 8dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.orgVerifies that xcode-style GCC_... settings that require clang are handled 9dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.orgproperly. 10dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org""" 11dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 12dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.orgimport TestGyp 13dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 14dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.orgimport os 15dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.orgimport sys 16dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 17dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.orgif sys.platform == 'darwin': 18dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode']) 19dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 20dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org CHDIR = 'xcode-gcc' 21dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org test.run_gyp('test-clang.gyp', chdir=CHDIR) 22dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 23dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org test.build('test-clang.gyp', 'aliasing_yes', chdir=CHDIR) 24dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org test.run_built_executable('aliasing_yes', chdir=CHDIR, stdout="1\n") 25dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org test.build('test-clang.gyp', 'aliasing_no', chdir=CHDIR) 26dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org test.run_built_executable('aliasing_no', chdir=CHDIR, stdout="0\n") 27dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 28dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org # The default behavior changed: strict aliasing used to be off, now it's on 29dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org # by default. The important part is that this is identical for all generators 30dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org # (which it is). TODO(thakis): Enable this once the bots have a newer Xcode. 31dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org #test.build('test-clang.gyp', 'aliasing_default', chdir=CHDIR) 32dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org #test.run_built_executable('aliasing_default', chdir=CHDIR, stdout="1\n") 33dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org # For now, just check the generated ninja file: 34dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org if test.format == 'ninja': 35dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org contents = open(test.built_file_path('obj/aliasing_default.ninja', 36dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org chdir=CHDIR)).read() 37dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org if 'strict-aliasing' in contents: 38dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org test.fail_test() 39dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org 40dc4f7194a410b59b21e3d3df9d65b2bce985853cthakis@chromium.org test.pass_test() 41