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