+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies actions which are not depended on by other targets get executed.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('bare.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-test.build('bare.gyp', chdir='relocate/src')
-
-file_content = 'Hello from bare.py\n'
-
-test.built_file_must_match('out.txt', file_content, chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'bare',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'action1',
- 'inputs': [
- 'bare.py',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/out.txt',
- ],
- 'action': ['python', 'bare.py', '<(PRODUCT_DIR)/out.txt'],
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-f = open(sys.argv[1], 'wb')
-f.write('Hello from bare.py\n')
-f.close()
+++ /dev/null
-# Copyright (c) 2015 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.
-
-{
- 'targets': [
- {
- 'target_name': 'depfile_target',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'depfile_action',
- 'inputs': [
- 'input.txt',
- ],
- 'outputs': [
- 'output.txt',
- ],
- 'depfile': 'depfile.d',
- 'action': [ ]
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""Verifies that depfile fields are output in ninja rules."""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if test.format == 'ninja':
- test.run_gyp('depfile.gyp')
- contents = open(test.built_file_path('obj/depfile_target.ninja')).read()
-
- expected = 'depfile = depfile.d'
- if expected not in contents:
- test.fail_test()
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies two actions can be attached to the same input files.
-"""
-
-import sys
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('actions.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-# Test of fine-grained dependencies for generators that can build individual
-# files on demand.
-# In particular:
-# - TargetA depends on TargetB.
-# - TargetA and TargetB are 'none' type with actions attached.
-# - TargetA has multiple actions.
-# - An output from one of the actions in TargetA (not the first listed),
-# is requested as the build target.
-# Ensure that TargetB gets built.
-#
-# This sub-test can only be done with generators/build tools that can
-# be asked to build individual files rather than whole targets (make, ninja).
-if test.format in ['make', 'ninja']:
- # Select location of target based on generator.
- if test.format == 'make':
- target = 'multi2.txt'
- elif test.format == 'ninja':
- if sys.platform in ['win32', 'cygwin']:
- target = '..\\..\\multi2.txt'
- else:
- target = '../../multi2.txt'
- else:
- assert False
- test.build('actions.gyp', chdir='relocate/src', target=target)
- test.must_contain('relocate/src/multi2.txt', 'hello there')
- test.must_contain('relocate/src/multi_dep.txt', 'hello there')
-
-
-# Test that two actions can be attached to the same inputs.
-test.build('actions.gyp', test.ALL, chdir='relocate/src')
-test.must_contain('relocate/src/output1.txt', 'hello there')
-test.must_contain('relocate/src/output2.txt', 'hello there')
-test.must_contain('relocate/src/output3.txt', 'hello there')
-test.must_contain('relocate/src/output4.txt', 'hello there')
-
-# Test that process_outputs_as_sources works in conjuction with merged
-# actions.
-test.run_built_executable(
- 'multiple_action_source_filter',
- chdir='relocate/src',
- stdout=(
- '{\n'
- 'bar\n'
- 'car\n'
- 'dar\n'
- 'ear\n'
- '}\n'
- ),
-)
-
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'variables': {
- # Have a long string so that actions will exceed xp 512 character
- # command limit on xp.
- 'long_string':
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- 'abcdefghijklmnopqrstuvwxyz0123456789'
- },
- 'targets': [
- {
- 'target_name': 'multiple_action_target',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'action1',
- 'inputs': [
- 'copy.py',
- 'input.txt',
- ],
- 'outputs': [
- 'output1.txt',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(_outputs)', '<(long_string)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'action2',
- 'inputs': [
- 'copy.py',
- 'input.txt',
- ],
- 'outputs': [
- 'output2.txt',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(_outputs)', '<(long_string)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'action3',
- 'inputs': [
- 'copy.py',
- 'input.txt',
- ],
- 'outputs': [
- 'output3.txt',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(_outputs)', '<(long_string)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'action4',
- 'inputs': [
- 'copy.py',
- 'input.txt',
- ],
- 'outputs': [
- 'output4.txt',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(_outputs)', '<(long_string)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'multiple_action_source_filter',
- 'type': 'executable',
- 'sources': [
- 'main.c',
- # TODO(bradnelson): add foo.c here once this issue is fixed:
- # http://code.google.com/p/gyp/issues/detail?id=175
- ],
- 'actions': [
- {
- 'action_name': 'action1',
- 'inputs': [
- 'foo.c',
- 'filter.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/output1.c',
- ],
- 'process_outputs_as_sources': 1,
- 'action': [
- 'python', 'filter.py', 'foo', 'bar', 'foo.c', '<@(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'action2',
- 'inputs': [
- 'foo.c',
- 'filter.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/output2.c',
- ],
- 'process_outputs_as_sources': 1,
- 'action': [
- 'python', 'filter.py', 'foo', 'car', 'foo.c', '<@(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'action3',
- 'inputs': [
- 'foo.c',
- 'filter.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/output3.c',
- ],
- 'process_outputs_as_sources': 1,
- 'action': [
- 'python', 'filter.py', 'foo', 'dar', 'foo.c', '<@(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'action4',
- 'inputs': [
- 'foo.c',
- 'filter.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/output4.c',
- ],
- 'process_outputs_as_sources': 1,
- 'action': [
- 'python', 'filter.py', 'foo', 'ear', 'foo.c', '<@(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'multiple_dependent_target',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'action1',
- 'inputs': [
- 'copy.py',
- 'input.txt',
- ],
- 'outputs': [
- 'multi1.txt',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(_outputs)', '<(long_string)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'action2',
- 'inputs': [
- 'copy.py',
- 'input.txt',
- ],
- 'outputs': [
- 'multi2.txt',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(_outputs)', '<(long_string)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- 'dependencies': [
- 'multiple_required_target',
- ],
- },
- {
- 'target_name': 'multiple_required_target',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'multi_dep',
- 'inputs': [
- 'copy.py',
- 'input.txt',
- ],
- 'outputs': [
- 'multi_dep.txt',
- ],
- 'process_outputs_as_sources': 1,
- 'action': [
- 'python', '<@(_inputs)', '<(_outputs)', '<(long_string)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2011 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.
-
-import shutil
-import sys
-
-shutil.copyfile(sys.argv[1], sys.argv[2])
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2011 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.
-
-
-import sys
-
-data = open(sys.argv[3], 'r').read()
-fh = open(sys.argv[4], 'w')
-fh.write(data.replace(sys.argv[1], sys.argv[2]))
-fh.close()
+++ /dev/null
-/*
- * Copyright (c) 2011 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.
- */
-
-#include <stdio.h>
-
-void foo(void) {
- printf("foo\n");
-}
+++ /dev/null
-hello there
+++ /dev/null
-/*
- * Copyright (c) 2011 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.
- */
-
-#include <stdio.h>
-
-void bar(void);
-void car(void);
-void dar(void);
-void ear(void);
-
-int main() {
- printf("{\n");
- bar();
- car();
- dar();
- ear();
- printf("}\n");
- return 0;
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies actions can be in 'none' type targets with source files.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('none_with_source_files.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-test.build('none_with_source_files.gyp', chdir='relocate/src')
-
-file_content = 'foo.cc\n'
-
-test.built_file_must_match('fake.out', file_content, chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/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.
-
-
-import sys
-
-fh = open(sys.argv[-1], 'wb')
-for filename in sys.argv[1:-1]:
- fh.write(open(filename).read())
-fh.close()
+++ /dev/null
-# 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.
-
-# Test that 'none' type targets can have .cc files in them.
-
-{
- 'targets': [
- {
- 'target_name': 'none_with_sources',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'foo.cc',
- ],
- 'actions': [
- {
- 'action_name': 'fake_cross',
- 'inputs': [
- 'fake_cross.py',
- '<@(_sources)',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/fake.out',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<@(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- }
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Test actions that output to PRODUCT_DIR.
-"""
-
-import TestGyp
-
-# TODO fix this for xcode: http://code.google.com/p/gyp/issues/detail?id=88
-test = TestGyp.TestGyp(formats=['!xcode'])
-
-test.run_gyp('none.gyp', chdir='src')
-
-test.build('none.gyp', test.ALL, chdir='src')
-
-file_content = 'Hello from make-file.py\n'
-subdir_file_content = 'Hello from make-subdir-file.py\n'
-
-test.built_file_must_match('file.out', file_content, chdir='src')
-test.built_file_must_match('subdir_file.out', subdir_file_content, chdir='src')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = 'Hello from make-file.py\n'
-
-open(sys.argv[1], 'wb').write(contents)
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'file',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'actions': [
- {
- 'action_name': 'make-file',
- 'inputs': [
- 'make-file.py',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/file.out',
- ],
- 'action': [
- 'python', '<(_inputs)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- }
- ],
- 'dependencies': [
- 'subdir/subdir.gyp:subdir_file',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = 'Hello from make-subdir-file.py\n'
-
-open(sys.argv[1], 'wb').write(contents)
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'subdir_file',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'actions': [
- {
- 'action_name': 'make-subdir-file',
- 'inputs': [
- 'make-subdir-file.py',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/subdir_file.out',
- ],
- 'action': [
- 'python', '<(_inputs)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- }
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-import os
-import sys
-
-outfile = sys.argv[1]
-open(outfile, 'w').write('const char kFoo[] = "%s";' % sys.argv[2])
+++ /dev/null
-#include <stdio.h>
-
-#include "MyHeader.h"
-
-int main() {
- printf("%s\n", kFoo);
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-{
- 'targets': [
- {
- 'target_name': 'generate_header',
- 'type': 'none',
- 'actions': [
- {
- 'inputs': [ ],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/MyHeader.h',
- ],
- 'action_name': 'generate header',
- 'action': ['python', './action.py',
- '<(SHARED_INTERMEDIATE_DIR)/MyHeader.h', 'foobar output' ],
- },
- ],
- 'msvs_cygwin_shell': 0,
- },
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'dependencies': [
- 'generate_header',
- ],
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- 'sources': [ 'main.cc' ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies simple actions when using an explicit build target of 'all'.
-"""
-
-import glob
-import os
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_all')
-
-test.run_gyp('actions.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-# Some gyp files use an action that mentions an output but never
-# writes it as a means to making the action run on every build. That
-# doesn't mesh well with ninja's semantics. TODO(evan): figure out
-# how to work always-run actions in to ninja.
-# Android also can't do this as it doesn't have order-only dependencies.
-if test.format in ['ninja', 'android', 'xcode-ninja']:
- test.build('actions.gyp', test.ALL, chdir='relocate/src')
-else:
- # Test that an "always run" action increases a counter on multiple
- # invocations, and that a dependent action updates in step.
- test.build('actions.gyp', test.ALL, chdir='relocate/src')
- test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '1')
- test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '1')
- test.build('actions.gyp', test.ALL, chdir='relocate/src')
- test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '2')
- test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '2')
-
- # The "always run" action only counts to 2, but the dependent target
- # will count forever if it's allowed to run. This verifies that the
- # dependent target only runs when the "always run" action generates
- # new output, not just because the "always run" ran.
- test.build('actions.gyp', test.ALL, chdir='relocate/src')
- test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '2')
- test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '2')
-
-expect = """\
-Hello from program.c
-Hello from make-prog1.py
-Hello from make-prog2.py
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir1'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('program', chdir=chdir, stdout=expect)
-
-
-test.must_match('relocate/src/subdir2/file.out', "Hello from make-file.py\n")
-
-
-expect = "Hello from generate_main.py\n"
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir3'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('null_input', chdir=chdir, stdout=expect)
-
-
-# Clean out files which may have been created if test.ALL was run.
-def clean_dep_files():
- for file in (glob.glob('relocate/src/dep_*.txt') +
- glob.glob('relocate/src/deps_all_done_*.txt')):
- if os.path.exists(file):
- os.remove(file)
-
-# Confirm our clean.
-clean_dep_files()
-test.must_not_exist('relocate/src/dep_1.txt')
-test.must_not_exist('relocate/src/deps_all_done_first_123.txt')
-
-# Make sure all deps finish before an action is run on a 'None' target.
-# If using the Make builder, add -j to make things more difficult.
-arguments = []
-if test.format == 'make':
- arguments = ['-j']
-test.build('actions.gyp', 'action_with_dependencies_123', chdir='relocate/src',
- arguments=arguments)
-test.must_exist('relocate/src/deps_all_done_first_123.txt')
-
-# Try again with a target that has deps in reverse. Output files from
-# previous tests deleted. Confirm this execution did NOT run the ALL
-# target which would mess up our dep tests.
-clean_dep_files()
-test.build('actions.gyp', 'action_with_dependencies_321', chdir='relocate/src',
- arguments=arguments)
-test.must_exist('relocate/src/deps_all_done_first_321.txt')
-test.must_not_exist('relocate/src/deps_all_done_first_123.txt')
-
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies simple actions when using the default build target.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_default')
-
-test.run_gyp('actions.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-# Some gyp files use an action that mentions an output but never
-# writes it as a means to making the action run on every build. That
-# doesn't mesh well with ninja's semantics. TODO(evan): figure out
-# how to work always-run actions in to ninja.
-# Android also can't do this as it doesn't have order-only dependencies.
-if test.format in ['ninja', 'android', 'xcode-ninja']:
- test.build('actions.gyp', test.ALL, chdir='relocate/src')
-else:
- # Test that an "always run" action increases a counter on multiple
- # invocations, and that a dependent action updates in step.
- test.build('actions.gyp', chdir='relocate/src')
- test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '1')
- test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '1')
- test.build('actions.gyp', chdir='relocate/src')
- test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '2')
- test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '2')
-
- # The "always run" action only counts to 2, but the dependent target
- # will count forever if it's allowed to run. This verifies that the
- # dependent target only runs when the "always run" action generates
- # new output, not just because the "always run" ran.
- test.build('actions.gyp', test.ALL, chdir='relocate/src')
- test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '2')
- test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '2')
-
-expect = """\
-Hello from program.c
-Hello from make-prog1.py
-Hello from make-prog2.py
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir1'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('program', chdir=chdir, stdout=expect)
-
-
-test.must_match('relocate/src/subdir2/file.out', "Hello from make-file.py\n")
-
-
-expect = "Hello from generate_main.py\n"
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir3'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('null_input', chdir=chdir, stdout=expect)
-
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies behavior for different action configuration errors:
-exit status of 1, and the expected error message must be in stderr.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_errors')
-
-
-test.run_gyp('action_missing_name.gyp', chdir='src', status=1, stderr=None)
-expect = [
- "Anonymous action in target broken_actions2. An action must have an 'action_name' field.",
-]
-test.must_contain_all_lines(test.stderr(), expect)
-
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that dependencies on generated headers work, even if the header has
-a mixed-case file name.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if test.format == 'android':
- # This test currently fails on android. Investigate why, fix the issues
- # responsible, and reenable this test on android. See bug:
- # https://code.google.com/p/gyp/issues/detail?id=436
- test.skip_test(message='Test fails on android. Fix and reenable.\n')
-
-CHDIR = 'generated-header'
-
-test.run_gyp('test.gyp', chdir=CHDIR)
-test.build('test.gyp', 'program', chdir=CHDIR)
-test.up_to_date('test.gyp', 'program', chdir=CHDIR)
-
-expect = 'foobar output\n'
-test.run_built_executable('program', chdir=CHDIR, stdout=expect)
-
-# Change what's written to the generated header, regyp and rebuild, and check
-# that the change makes it to the executable and that the build is clean.
-test.sleep()
-test.write('generated-header/test.gyp',
- test.read('generated-header/test.gyp').replace('foobar', 'barbaz'))
-
-test.run_gyp('test.gyp', chdir=CHDIR)
-test.build('test.gyp', 'program', chdir=CHDIR)
-test.up_to_date('test.gyp', 'program', chdir=CHDIR)
-
-expect = 'barbaz output\n'
-test.run_built_executable('program', chdir=CHDIR, stdout=expect)
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'broken_actions2',
- 'type': 'none',
- 'actions': [
- {
- 'inputs': [
- 'no_name.input',
- ],
- 'action': [
- 'python',
- '-c',
- 'print \'missing name\'',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'pull_in_all_actions',
- 'type': 'none',
- 'dependencies': [
- 'subdir1/executable.gyp:*',
- 'subdir2/none.gyp:*',
- 'subdir3/null_input.gyp:*',
- ],
- },
- {
- 'target_name': 'depend_on_always_run_action',
- 'type': 'none',
- 'dependencies': [ 'subdir1/executable.gyp:counter' ],
- 'actions': [
- {
- 'action_name': 'use_always_run_output',
- 'inputs': [
- 'subdir1/actions-out/action-counter.txt',
- 'subdir1/counter.py',
- ],
- 'outputs': [
- 'subdir1/actions-out/action-counter_2.txt',
- ],
- 'action': [
- 'python', 'subdir1/counter.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
-
- # Three deps which don't finish immediately.
- # Each one has a small delay then creates a file.
- # Delays are 1.0, 1.1, and 2.0 seconds.
- {
- 'target_name': 'dep_1',
- 'type': 'none',
- 'actions': [{
- 'inputs': [ 'actions.gyp' ],
- 'outputs': [ 'dep_1.txt' ],
- 'action_name': 'dep_1',
- 'action': [ 'python', '-c',
- 'import time; time.sleep(1); open(\'dep_1.txt\', \'w\')' ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- }],
- },
- {
- 'target_name': 'dep_2',
- 'type': 'none',
- 'actions': [{
- 'inputs': [ 'actions.gyp' ],
- 'outputs': [ 'dep_2.txt' ],
- 'action_name': 'dep_2',
- 'action': [ 'python', '-c',
- 'import time; time.sleep(1.1); open(\'dep_2.txt\', \'w\')' ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- }],
- },
- {
- 'target_name': 'dep_3',
- 'type': 'none',
- 'actions': [{
- 'inputs': [ 'actions.gyp' ],
- 'outputs': [ 'dep_3.txt' ],
- 'action_name': 'dep_3',
- 'action': [ 'python', '-c',
- 'import time; time.sleep(2.0); open(\'dep_3.txt\', \'w\')' ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- }],
- },
-
- # An action which assumes the deps have completed.
- # Does NOT list the output files of it's deps as inputs.
- # On success create the file deps_all_done_first.txt.
- {
- 'target_name': 'action_with_dependencies_123',
- 'type': 'none',
- 'dependencies': [ 'dep_1', 'dep_2', 'dep_3' ],
- 'actions': [{
- 'inputs': [ 'actions.gyp' ],
- 'outputs': [ 'deps_all_done_first_123.txt' ],
- 'action_name': 'action_with_dependencies_123',
- 'action': [ 'python', 'confirm-dep-files.py', '<(_outputs)' ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- }],
- },
- # Same as above but with deps in reverse.
- {
- 'target_name': 'action_with_dependencies_321',
- 'type': 'none',
- 'dependencies': [ 'dep_3', 'dep_2', 'dep_1' ],
- 'actions': [{
- 'inputs': [ 'actions.gyp' ],
- 'outputs': [ 'deps_all_done_first_321.txt' ],
- 'action_name': 'action_with_dependencies_321',
- 'action': [ 'python', 'confirm-dep-files.py', '<(_outputs)' ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- }],
- },
-
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""Confirms presence of files generated by our targets we depend on.
-If they exist, create a new file.
-
-Note target's input files are explicitly NOT defined in the gyp file
-so they can't easily be passed to this script as args.
-"""
-
-import os
-import sys
-
-outfile = sys.argv[1] # Example value we expect: deps_all_done_first_123.txt
-if (os.path.exists("dep_1.txt") and
- os.path.exists("dep_2.txt") and
- os.path.exists("dep_3.txt")):
- open(outfile, "w")
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2010 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.
-
-import sys
-import time
-
-output = sys.argv[1]
-persistoutput = "%s.persist" % sys.argv[1]
-
-count = 0
-try:
- count = open(persistoutput, 'r').read()
-except:
- pass
-count = int(count) + 1
-
-if len(sys.argv) > 2:
- max_count = int(sys.argv[2])
- if count > max_count:
- count = max_count
-
-oldcount = 0
-try:
- oldcount = open(output, 'r').read()
-except:
- pass
-
-# Save the count in a file that is undeclared, and thus hidden, to gyp. We need
-# to do this because, prior to running commands, some build systems deletes
-# any declared outputs, so we would lose our count if we just wrote to the
-# given output file.
-open(persistoutput, 'w').write('%d' % (count))
-
-# Only write the given output file if the count has changed.
-if int(oldcount) != count:
- open(output, 'w').write('%d' % (count))
- # Sleep so the next run changes the file time sufficiently to make the build
- # detect the file as changed.
- time.sleep(1)
-
-sys.exit(0)
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'program.c',
- ],
- 'actions': [
- {
- 'action_name': 'make-prog1',
- 'inputs': [
- 'make-prog1.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/prog1.c',
- ],
- 'action': [
- 'python', '<(_inputs)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- {
- 'action_name': 'make-prog2',
- 'inputs': [
- 'make-prog2.py',
- ],
- 'outputs': [
- 'actions-out/prog2.c',
- ],
- 'action': [
- 'python', '<(_inputs)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'counter',
- 'type': 'none',
- 'actions': [
- {
- # This action should always run, regardless of whether or not it's
- # inputs or the command-line change. We do this by creating a dummy
- # first output, which is always missing, thus causing the build to
- # always try to recreate it. Actual output files should be listed
- # after the dummy one, and dependent targets should list the real
- # output(s) in their inputs
- # (see '../actions.gyp:depend_on_always_run_action').
- 'action_name': 'action_counter',
- 'inputs': [
- 'counter.py',
- ],
- 'outputs': [
- 'actions-out/action-counter.txt.always',
- 'actions-out/action-counter.txt',
- ],
- 'action': [
- 'python', '<(_inputs)', 'actions-out/action-counter.txt', '2',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = r"""
-#include <stdio.h>
-
-void prog1(void)
-{
- printf("Hello from make-prog1.py\n");
-}
-"""
-
-open(sys.argv[1], 'w').write(contents)
-
-sys.exit(0)
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = r"""
-#include <stdio.h>
-
-void prog2(void)
-{
- printf("Hello from make-prog2.py\n");
-}
-"""
-
-open(sys.argv[1], 'w').write(contents)
-
-sys.exit(0)
+++ /dev/null
-#include <stdio.h>
-
-extern void prog1(void);
-extern void prog2(void);
-
-int main(void)
-{
- printf("Hello from program.c\n");
- prog1();
- prog2();
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = "Hello from make-file.py\n"
-
-open(sys.argv[1], 'wb').write(contents)
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'file',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'actions': [
- {
- 'action_name': 'make-file',
- 'inputs': [
- 'make-file.py',
- ],
- 'outputs': [
- 'file.out',
- # TODO: enhance testing infrastructure to test this
- # without having to hard-code the intermediate dir paths.
- #'<(INTERMEDIATE_DIR)/file.out',
- ],
- 'action': [
- 'python', '<(_inputs)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- }
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = """
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from generate_main.py\\n");
- return 0;
-}
-"""
-
-open(sys.argv[1], 'w').write(contents)
-
-sys.exit(0)
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'null_input',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'actions': [
- {
- 'action_name': 'generate_main',
- 'process_outputs_as_sources': 1,
- 'inputs': [],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/main.c',
- ],
- 'action': [
- # TODO: we can't just use <(_outputs) here?!
- 'python', 'generate_main.py', '<(INTERMEDIATE_DIR)/main.c',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies simple actions when using an explicit build target of 'all'.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('all.gyp',
- '-G', 'xcode_ninja_target_pattern=^all_targets$',
- chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-# Build all.
-test.build('all.gyp', chdir='relocate/src')
-
-if test.format=='xcode':
- chdir = 'relocate/src/dir1'
-else:
- chdir = 'relocate/src'
-
-# Output is as expected.
-file_content = 'Hello from emit.py\n'
-test.built_file_must_match('out2.txt', file_content, chdir=chdir)
-
-test.built_file_must_not_exist('out.txt', chdir='relocate/src')
-test.built_file_must_not_exist('foolib1',
- type=test.SHARED_LIB,
- chdir=chdir)
-
-# xcode-ninja doesn't generate separate workspaces for sub-gyps by design
-if test.format == 'xcode-ninja':
- test.pass_test()
-
-# TODO(mmoss) Make consistent with msvs, with 'dir1' before 'out/Default'?
-if test.format in ('make', 'ninja', 'android', 'cmake'):
- chdir='relocate/src'
-else:
- chdir='relocate/src/dir1'
-
-# Build the action explicitly.
-test.build('actions.gyp', 'action1_target', chdir=chdir)
-
-# Check that things got run.
-file_content = 'Hello from emit.py\n'
-test.built_file_must_exist('out.txt', chdir=chdir)
-
-# Build the shared library explicitly.
-test.build('actions.gyp', 'foolib1', chdir=chdir)
-
-test.built_file_must_exist('foolib1',
- type=test.SHARED_LIB,
- chdir=chdir,
- subdir='dir1')
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'all_targets',
- 'type': 'none',
- 'dependencies': ['dir1/actions.gyp:*'],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'action1_target',
- 'type': 'none',
- 'suppress_wildcard': 1,
- 'actions': [
- {
- 'action_name': 'action1',
- 'inputs': [
- 'emit.py',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/out.txt',
- ],
- 'action': ['python', 'emit.py', '<(PRODUCT_DIR)/out.txt'],
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'action2_target',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'action2',
- 'inputs': [
- 'emit.py',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/out2.txt',
- ],
- 'action': ['python', 'emit.py', '<(PRODUCT_DIR)/out2.txt'],
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'foolib1',
- 'type': 'shared_library',
- 'suppress_wildcard': 1,
- 'sources': ['lib1.c'],
- },
- ],
- 'conditions': [
- ['OS=="linux"', {
- 'target_defaults': {
- 'cflags': ['-fPIC'],
- },
- }],
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-f = open(sys.argv[1], 'wb')
-f.write('Hello from emit.py\n')
-f.close()
+++ /dev/null
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-int func1(void) {
- return 42;
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
-}
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2014 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.
-
-"""Tests for analyzer
-"""
-
-import json
-import TestGyp
-
-found = 'Found dependency'
-found_all = 'Found dependency (all)'
-not_found = 'No dependencies'
-
-
-def _CreateConfigFile(files, targets):
- """Creates the analyzer conflig file, which is used as the input to analyzer.
- See description of analyzer.py for description of the arguments."""
- f = open('test_file', 'w')
- to_write = {'files': files, 'targets': targets }
- json.dump(to_write, f)
- f.close()
-
-
-def _CreateBogusConfigFile():
- f = open('test_file','w')
- f.write('bogus')
- f.close()
-
-
-def _ReadOutputFileContents():
- f = open('analyzer_output', 'r')
- result = json.load(f)
- f.close()
- return result
-
-
-# NOTE: this would be clearer if it subclassed TestGypCustom, but that trips
-# over a bug in pylint (E1002).
-test = TestGyp.TestGypCustom(format='analyzer')
-
-def CommonArgs():
- return ('-Gconfig_path=test_file',
- '-Ganalyzer_output_path=analyzer_output')
-
-
-def run_analyzer(*args, **kw):
- """Runs the test specifying a particular config and output path."""
- args += CommonArgs()
- test.run_gyp('test.gyp', *args, **kw)
-
-
-def run_analyzer2(*args, **kw):
- """Same as run_analyzer(), but passes in test2.gyp instead of test.gyp."""
- args += CommonArgs()
- test.run_gyp('test2.gyp', *args, **kw)
-
-
-def run_analyzer3(*args, **kw):
- """Same as run_analyzer(), but passes in test3.gyp instead of test.gyp."""
- args += CommonArgs()
- test.run_gyp('test3.gyp', *args, **kw)
-
-
-def run_analyzer4(*args, **kw):
- """Same as run_analyzer(), but passes in test3.gyp instead of test.gyp."""
- args += CommonArgs()
- test.run_gyp('test4.gyp', *args, **kw)
-
-
-def EnsureContains(targets=set(), matched=False, build_targets=set()):
- """Verifies output contains |targets|."""
- result = _ReadOutputFileContents()
- if result.get('error', None):
- print 'unexpected error', result.get('error')
- test.fail_test()
-
- if result.get('invalid_targets', None):
- print 'unexpected invalid_targets', result.get('invalid_targets')
- test.fail_test()
-
- actual_targets = set(result['targets'])
- if actual_targets != targets:
- print 'actual targets:', actual_targets, '\nexpected targets:', targets
- test.fail_test()
-
- actual_build_targets = set(result['build_targets'])
- if actual_build_targets != build_targets:
- print 'actual build_targets:', actual_build_targets, \
- '\nexpected build_targets:', build_targets
- test.fail_test()
-
- if matched and result['status'] != found:
- print 'expected', found, 'got', result['status']
- test.fail_test()
- elif not matched and result['status'] != not_found:
- print 'expected', not_found, 'got', result['status']
- test.fail_test()
-
-
-def EnsureMatchedAll(targets):
- result = _ReadOutputFileContents()
- if result.get('error', None):
- print 'unexpected error', result.get('error')
- test.fail_test()
-
- if result.get('invalid_targets', None):
- print 'unexpected invalid_targets', result.get('invalid_targets')
- test.fail_test()
-
- if result['status'] != found_all:
- print 'expected', found_all, 'got', result['status']
- test.fail_test()
-
- actual_targets = set(result['targets'])
- if actual_targets != targets:
- print 'actual targets:', actual_targets, '\nexpected targets:', targets
- test.fail_test()
-
-
-def EnsureError(expected_error_string):
- """Verifies output contains the error string."""
- result = _ReadOutputFileContents()
- if result.get('error', '').find(expected_error_string) == -1:
- print 'actual error:', result.get('error', ''), '\nexpected error:', \
- expected_error_string
- test.fail_test()
-
-
-def EnsureStdoutContains(expected_error_string):
- if test.stdout().find(expected_error_string) == -1:
- print 'actual stdout:', test.stdout(), '\nexpected stdout:', \
- expected_error_string
- test.fail_test()
-
-
-def EnsureInvalidTargets(expected_invalid_targets):
- """Verifies output contains invalid_targets."""
- result = _ReadOutputFileContents()
- actual_invalid_targets = set(result['invalid_targets'])
- if actual_invalid_targets != expected_invalid_targets:
- print 'actual invalid_targets:', actual_invalid_targets, \
- '\nexpected :', expected_invalid_targets
- test.fail_test()
-
-# Verifies config_path must be specified.
-test.run_gyp('test.gyp')
-EnsureStdoutContains('Must specify files to analyze via config_path')
-
-# Verifies config_path must point to a valid file.
-test.run_gyp('test.gyp', '-Gconfig_path=bogus_file',
- '-Ganalyzer_output_path=analyzer_output')
-EnsureError('Unable to open file bogus_file')
-
-# Verify 'invalid_targets' is present when bad target is specified.
-_CreateConfigFile(['exe2.c'], ['bad_target'])
-run_analyzer()
-EnsureInvalidTargets({'bad_target'})
-
-# Verifies config_path must point to a valid json file.
-_CreateBogusConfigFile()
-run_analyzer()
-EnsureError('Unable to parse config file test_file')
-
-# Trivial test of a source.
-_CreateConfigFile(['foo.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe'})
-
-# Conditional source that is excluded.
-_CreateConfigFile(['conditional_source.c'], [])
-run_analyzer()
-EnsureContains(matched=False)
-
-# Conditional source that is included by way of argument.
-_CreateConfigFile(['conditional_source.c'], [])
-run_analyzer('-Dtest_variable=1')
-EnsureContains(matched=True, build_targets={'exe'})
-
-# Two unknown files.
-_CreateConfigFile(['unknown1.c', 'unoknow2.cc'], [])
-run_analyzer()
-EnsureContains()
-
-# Two unknown files.
-_CreateConfigFile(['unknown1.c', 'subdir/subdir_sourcex.c'], [])
-run_analyzer()
-EnsureContains()
-
-# Included dependency
-_CreateConfigFile(['unknown1.c', 'subdir/subdir_source.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe', 'exe3'})
-
-# Included inputs to actions.
-_CreateConfigFile(['action_input.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe'})
-
-# Don't consider outputs.
-_CreateConfigFile(['action_output.c'], [])
-run_analyzer()
-EnsureContains(matched=False)
-
-# Rule inputs.
-_CreateConfigFile(['rule_input.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe'})
-
-# Ignore path specified with PRODUCT_DIR.
-_CreateConfigFile(['product_dir_input.c'], [])
-run_analyzer()
-EnsureContains(matched=False)
-
-# Path specified via a variable.
-_CreateConfigFile(['subdir/subdir_source2.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe'})
-
-# Verifies paths with // are fixed up correctly.
-_CreateConfigFile(['parent_source.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe', 'exe3'})
-
-# Verifies relative paths are resolved correctly.
-_CreateConfigFile(['subdir/subdir_source.h'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe'})
-
-# Various permutations when passing in targets.
-_CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], ['exe', 'exe3'])
-run_analyzer()
-EnsureContains(matched=True, targets={'exe3'}, build_targets={'exe2', 'exe3'})
-
-_CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], ['exe'])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe2', 'exe3'})
-
-# Verifies duplicates are ignored.
-_CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], ['exe', 'exe'])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe2', 'exe3'})
-
-_CreateConfigFile(['exe2.c'], ['exe'])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe2'})
-
-_CreateConfigFile(['exe2.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe2'})
-
-_CreateConfigFile(['subdir/subdir2b_source.c', 'exe2.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe2', 'exe3'})
-
-_CreateConfigFile(['subdir/subdir2b_source.c'], ['exe3'])
-run_analyzer()
-EnsureContains(matched=True, targets={'exe3'}, build_targets={'exe3'})
-
-_CreateConfigFile(['exe2.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe2'})
-
-_CreateConfigFile(['foo.c'], [])
-run_analyzer()
-EnsureContains(matched=True, build_targets={'exe'})
-
-# Assertions when modifying build (gyp/gypi) files, especially when said files
-# are included.
-_CreateConfigFile(['subdir2/d.cc'], ['exe', 'exe2', 'foo', 'exe3'])
-run_analyzer2()
-EnsureContains(matched=True, targets={'exe', 'foo'}, build_targets={'exe'})
-
-_CreateConfigFile(['subdir2/subdir.includes.gypi'],
- ['exe', 'exe2', 'foo', 'exe3'])
-run_analyzer2()
-EnsureContains(matched=True, targets={'exe', 'foo'}, build_targets={'exe'})
-
-_CreateConfigFile(['subdir2/subdir.gyp'], ['exe', 'exe2', 'foo', 'exe3'])
-run_analyzer2()
-EnsureContains(matched=True, targets={'exe', 'foo'}, build_targets={'exe'})
-
-_CreateConfigFile(['test2.includes.gypi'], ['exe', 'exe2', 'foo', 'exe3'])
-run_analyzer2()
-EnsureContains(matched=True, targets={'exe', 'exe2', 'exe3'},
- build_targets={'exe', 'exe2', 'exe3'})
-
-# Verify modifying a file included makes all targets dirty.
-_CreateConfigFile(['common.gypi'], ['exe', 'exe2', 'foo', 'exe3'])
-run_analyzer2('-Icommon.gypi')
-EnsureMatchedAll({'exe', 'exe2', 'foo', 'exe3'})
-
-# Assertions from test3.gyp.
-_CreateConfigFile(['d.c', 'f.c'], ['a'])
-run_analyzer3()
-EnsureContains(matched=True, targets={'a'}, build_targets={'a', 'b'})
-
-_CreateConfigFile(['f.c'], ['a'])
-run_analyzer3()
-EnsureContains(matched=True, targets={'a'}, build_targets={'a', 'b'})
-
-_CreateConfigFile(['f.c'], [])
-run_analyzer3()
-EnsureContains(matched=True, build_targets={'a', 'b'})
-
-_CreateConfigFile(['c.c', 'e.c'], [])
-run_analyzer3()
-EnsureContains(matched=True, build_targets={'a', 'b', 'c', 'e'})
-
-_CreateConfigFile(['d.c'], ['a'])
-run_analyzer3()
-EnsureContains(matched=True, targets={'a'}, build_targets={'a', 'b'})
-
-_CreateConfigFile(['a.c'], ['a', 'b'])
-run_analyzer3()
-EnsureContains(matched=True, targets={'a'}, build_targets={'a'})
-
-_CreateConfigFile(['a.c'], ['a', 'b'])
-run_analyzer3()
-EnsureContains(matched=True, targets={'a'}, build_targets={'a'})
-
-_CreateConfigFile(['d.c'], ['a', 'b'])
-run_analyzer3()
-EnsureContains(matched=True, targets={'a', 'b'}, build_targets={'a', 'b'})
-
-_CreateConfigFile(['f.c'], ['a'])
-run_analyzer3()
-EnsureContains(matched=True, targets={'a'}, build_targets={'a', 'b'})
-
-_CreateConfigFile(['a.c'], ['a'])
-run_analyzer3()
-EnsureContains(matched=True, targets={'a'}, build_targets={'a'})
-
-_CreateConfigFile(['a.c'], [])
-run_analyzer3()
-EnsureContains(matched=True, build_targets={'a'})
-
-_CreateConfigFile(['d.c'], [])
-run_analyzer3()
-EnsureContains(matched=True, build_targets={'a', 'b'})
-
-# Assertions around test4.gyp.
-_CreateConfigFile(['f.c'], [])
-run_analyzer4()
-EnsureContains(matched=True, build_targets={'e', 'f'})
-
-_CreateConfigFile(['d.c'], [])
-run_analyzer4()
-EnsureContains(matched=True, build_targets={'a', 'b', 'c', 'd'})
-
-_CreateConfigFile(['i.c'], [])
-run_analyzer4()
-EnsureContains(matched=True, build_targets={'h'})
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'variables': {
- 'trailing_dir_path': '../',
- },
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'static_library',
- 'sources': [
- 'subdir_source.c',
- '<(trailing_dir_path)/parent_source.c',
- ],
- },
- {
- 'target_name': 'subdir2a',
- 'type': 'static_library',
- 'sources': [
- 'subdir2_source.c',
- ],
- 'dependencies': [
- 'subdir2b',
- ],
- },
- {
- 'target_name': 'subdir2b',
- 'type': 'static_library',
- 'sources': [
- 'subdir2b_source.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'subdir2',
- 'type': 'static_library',
- 'sources': [
- '../subdir_source.h',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'static_library',
- 'sources': [
- 'subdir_source.c',
- ],
- 'includes': [
- 'subdir.includes.gypi',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'sources': [
- 'd.cc'
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-# These gyp files create the following dependencies:
-#
-# test.gyp:
-# #exe -> subdir/subdir.gyp#foo, subdir/subdir2/subdir2.gyp#subdir2
-# foo.c
-# subdir/subdir_source2.c
-# conditional_source.c (if test_variable==1)
-# action_input.c
-# action_output.c
-# rule_input.c
-# rule_output.pdf
-# #exe2
-# exe2.c
-# #exe3 -> subdir/subdir.gyp#foo, subdir/subdir.gyp#subdir2a
-# exe3.c
-# #all (type none) -> exe, exe3
-#
-# subdir/subdir.gyp
-# #foo
-# subdir/subdir_source.c
-# parent_source.c
-# #subdir2a -> subdir2b
-# subdir/subdir2_source.c
-# #subdir2b
-# subdir/subdir2b_source.c
-#
-# subdir/subdir2/subdir2.gyp
-# #subdir2
-# subdir/subdir_source.h
-
-{
- 'variables': {
- 'test_variable%': 0,
- 'variable_path': 'subdir',
- },
- 'targets': [
- {
- 'target_name': 'exe',
- 'type': 'executable',
- 'dependencies': [
- 'subdir/subdir.gyp:foo',
- 'subdir/subdir2/subdir2.gyp:subdir2',
- ],
- 'sources': [
- 'foo.c',
- '<(variable_path)/subdir_source2.c',
- ],
- 'conditions': [
- ['test_variable==1', {
- 'sources': [
- 'conditional_source.c',
- ],
- }],
- ],
- 'actions': [
- {
- 'action_name': 'action',
- 'inputs': [
- '<(PRODUCT_DIR)/product_dir_input.c',
- 'action_input.c',
- '../bad_path1.h',
- '../../bad_path2.h',
- ],
- 'outputs': [
- 'action_output.c',
- ],
- },
- ],
- 'rules': [
- {
- 'rule_name': 'rule',
- 'extension': 'pdf',
- 'inputs': [
- 'rule_input.c',
- ],
- 'outputs': [
- 'rule_output.pdf',
- ],
- },
- ],
- },
- {
- 'target_name': 'exe2',
- 'type': 'executable',
- 'sources': [
- 'exe2.c',
- ],
- },
- {
- 'target_name': 'exe3',
- 'type': 'executable',
- 'dependencies': [
- 'subdir/subdir.gyp:foo',
- 'subdir/subdir.gyp:subdir2a',
- ],
- 'sources': [
- 'exe3.c',
- ],
- },
- {
- 'target_name': 'all',
- 'type': 'none',
- 'dependencies': [
- 'exe',
- 'exe3',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'exe',
- 'type': 'executable',
- 'dependencies': [
- 'subdir2/subdir.gyp:foo',
- ],
- },
- {
- 'target_name': 'exe2',
- 'type': 'executable',
- 'includes': [
- 'test2.includes.gypi',
- ],
- },
- ],
- 'includes': [
- 'test2.toplevel_includes.gypi',
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'sources': [
- 'a.cc',
- 'b.cc'
- ],
- 'includes': [
- 'test2.includes.includes.gypi',
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'sources': [
- 'c.cc'
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'exe3',
- 'type': 'executable',
- 'sources': [
- 'e.cc',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'all',
- 'type': 'none',
- 'dependencies': [
- 'a',
- 'b',
- ],
- },
- {
- 'target_name': 'a',
- 'type': 'executable',
- 'sources': [
- 'a.c',
- ],
- 'dependencies': [
- 'c',
- 'd',
- ],
- },
- {
- 'target_name': 'b',
- 'type': 'executable',
- 'sources': [
- 'b.c',
- ],
- 'dependencies': [
- 'd',
- 'e',
- ],
- },
- {
- 'target_name': 'c',
- 'type': 'executable',
- 'sources': [
- 'c.c',
- ],
- },
- {
- 'target_name': 'd',
- 'type': 'none',
- 'sources': [
- 'd.c',
- ],
- 'dependencies': [
- 'f',
- 'g',
- ],
- },
- {
- 'target_name': 'e',
- 'type': 'executable',
- 'sources': [
- 'e.c',
- ],
- },
- {
- 'target_name': 'f',
- 'type': 'static_library',
- 'sources': [
- 'f.c',
- ],
- },
- {
- 'target_name': 'g',
- 'type': 'executable',
- 'sources': [
- 'g.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'executable',
- 'sources': [
- 'a.c',
- ],
- 'dependencies': [
- 'b',
- 'c',
- ],
- },
- {
- 'target_name': 'b',
- 'type': 'executable',
- 'sources': [
- 'b.c',
- ],
- 'dependencies': [
- 'd',
- ],
- },
- {
- 'target_name': 'c',
- 'type': 'executable',
- 'sources': [
- 'c.c',
- ],
- 'dependencies': [
- 'b',
- 'd',
- ],
- },
- {
- 'target_name': 'd',
- 'type': 'executable',
- 'sources': [
- 'd.c',
- ],
- },
- {
- 'target_name': 'e',
- 'type': 'executable',
- 'dependencies': [
- 'test5.gyp:f',
- ],
- },
- {
- 'target_name': 'h',
- 'type': 'none',
- 'dependencies': [
- 'i',
- ],
- 'rules': [
- {
- 'rule_name': 'rule',
- 'extension': 'pdf',
- 'inputs': [
- 'rule_input.c',
- ],
- 'outputs': [
- 'rule_output.pdf',
- ],
- },
- ],
- },
- {
- 'target_name': 'i',
- 'type': 'static_library',
- 'sources': [
- 'i.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'f',
- 'type': 'executable',
- 'sources': [
- 'f.c',
- ],
- },
- {
- 'target_name': 'g',
- 'type': 'executable',
- 'sources': [
- 'g.c',
- ],
- 'dependencies': [
- 'f',
- ],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2014 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.
- */
-
-const char* getString()
-{
-#ifdef __LP64__
- return "Hello, 64-bit world!\n";
-#else
- return "Hello, 32-bit world!\n";
-#endif
-}
+++ /dev/null
-A boring test file
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that it's possible to build host targets correctly in a multilib
-configuration, explicitly forcing either 32 or 64 bit.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['android'])
-
-test.run_gyp('host_32or64.gyp')
-
-# Force building as 32-bit
-test.build('host_32or64.gyp', 'generate_output',
- arguments=['GYP_HOST_VAR_PREFIX=$(HOST_2ND_ARCH_VAR_PREFIX)',
- 'GYP_HOST_MULTILIB=32'])
-
-test.built_file_must_match('host_32or64.output', 'Hello, 32-bit world!\n')
-
-# Force building as 64-bit
-test.build('host_32or64.gyp', 'generate_output',
- arguments=['GYP_HOST_VAR_PREFIX=',
- 'GYP_HOST_MULTILIB=64'])
-
-test.built_file_must_match('host_32or64.output', 'Hello, 64-bit world!\n')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that it's possible for gyp actions to use the result of calling a make
-function with "$()".
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['android'])
-
-test.run_gyp('make_functions.gyp')
-
-test.build('make_functions.gyp', test.ALL)
-
-file_content = 'A boring test file\n'
-test.built_file_must_match('file.in', file_content)
-test.built_file_must_match('file.out', file_content)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that disabling target aliases works.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['android'])
-
-test.run_gyp('hello.gyp', '-G', 'write_alias_targets=0')
-
-test.build('hello.gyp', 'hello', status=2, stderr=None)
-
-test.build('hello.gyp', 'gyp_all_modules', status=2, stderr=None)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that it's possible to set Android build system settings using the
-aosp_build_settings key, with list values.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['android'])
-
-test.run_gyp('settings-list.gyp')
-
-test.build('settings-list.gyp', 'hello')
-
-test.run_built_executable('hello.foo', stdout="Hello, world!\n")
-
-test.up_to_date('settings-list.gyp', test.DEFAULT)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that it's possible to set Android build system settings using the
-aosp_build_settings key.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['android'])
-
-test.run_gyp('settings.gyp')
-
-test.build('settings.gyp', 'hello')
-
-test.run_built_executable('hello.foo', stdout="Hello, world!\n")
-
-test.up_to_date('settings.gyp', test.DEFAULT)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that action input/output filenames with spaces are rejected.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['android'])
-
-stderr = ('gyp: Action input filename "name with spaces" in target do_actions '
- 'contains a space\n')
-test.run_gyp('space_filenames.gyp', status=1, stderr=stderr)
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2014 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.
- */
-
-#include <stdio.h>
-
-int main()
-{
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib32or64',
- 'type': 'static_library',
- 'toolsets': [ 'host' ],
- 'sources': [
- '32or64.c',
- ],
- },
- {
- 'target_name': 'host_32or64',
- 'type': 'executable',
- 'toolsets': [ 'host' ],
- 'dependencies': [ 'lib32or64#host' ],
- 'sources': [
- 'writefile.c',
- ],
- },
- {
- 'target_name': 'generate_output',
- 'type': 'none',
- 'dependencies': [ 'host_32or64#host' ],
- 'actions': [
- {
- 'action_name': 'generate',
- 'inputs': [ '<(PRODUCT_DIR)/host_32or64' ],
- 'outputs': [ '<(PRODUCT_DIR)/host_32or64.output' ],
- 'action': [ '<@(_inputs)', '<@(_outputs)' ],
- }
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'file-in',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)',
- 'files': [ 'file.in' ],
- },
- ],
- },
- {
- 'target_name': 'file-out',
- 'type': 'none',
- 'dependencies': [ 'file-in' ],
- 'actions': [
- {
- 'action_name': 'copy-file',
- 'inputs': [ '$(strip <(PRODUCT_DIR)/file.in)' ],
- 'outputs': [ '<(PRODUCT_DIR)/file.out' ],
- 'action': [ 'cp', '$(strip <(PRODUCT_DIR)/file.in)', '<(PRODUCT_DIR)/file.out' ],
- }
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- 'aosp_build_settings': {
- 'LOCAL_MODULE_SUFFIX': ['.foo'],
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- 'aosp_build_settings': {
- 'LOCAL_MODULE_SUFFIX': '.foo',
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'do_actions',
- 'type': 'none',
- 'actions': [{
- 'action_name': 'should_be_forbidden',
- 'inputs': [ 'name with spaces' ],
- 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/name with spaces' ],
- 'action': [ 'true' ],
- }],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2014 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.
- */
-
-#include <stdio.h>
-
-extern const char* getString(void);
-
-int main(int argc, char* argv[])
-{
- if (argc < 2) return 2;
- FILE* f = fopen(argv[1], "w");
- if (f == NULL) return 1;
- fprintf(f, "%s", getString());
- fclose(f);
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that building a target with invalid arflags fails.
-"""
-
-import os
-import sys
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['ninja'])
-test.run_gyp('test.gyp')
-expected_status = 0 if sys.platform in ['darwin', 'win32'] else 1
-test.build('test.gyp', target='lib', status=expected_status)
-test.pass_test()
+++ /dev/null
-{
- 'targets': [
- {
- 'target_name': 'lib',
- 'type': 'static_library',
- 'sources': ['lib.cc'],
- 'arflags': ['--nonexistent'],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-A basic test of compiling assembler files.
-"""
-
-import sys
-import TestGyp
-
-if sys.platform != 'win32':
- # TODO(bradnelson): get this working for windows.
- test = TestGyp.TestGyp(formats=['!msvs'])
-
- test.run_gyp('assembly.gyp', chdir='src')
-
- test.relocate('src', 'relocate/src')
-
- test.build('assembly.gyp', test.ALL, chdir='relocate/src')
-
- expect = """\
-Hello from program.c
-Got 42.
-"""
- test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
- test.pass_test()
+++ /dev/null
-#!/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 that manual rules on Windows override the built in ones.
-"""
-
-import sys
-import TestGyp
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
- CHDIR = 'src'
- test.run_gyp('override.gyp', chdir=CHDIR)
- test.build('override.gyp', test.ALL, chdir=CHDIR)
- expect = """\
-Hello from program.c
-Got 42.
-"""
- test.run_built_executable('program', chdir=CHDIR, stdout=expect)
- test.pass_test()
+++ /dev/null
-@echo off
-:: Mock windows assembler.
-cl /MD /c %1 /Fo"%2"
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'target_defaults': {
- 'conditions': [
- ['OS=="win"', {
- 'defines': ['PLATFORM_WIN'],
- }],
- ['OS=="mac" or OS=="ios"', {
- 'defines': ['PLATFORM_MAC'],
- }],
- ['OS=="linux"', {
- 'defines': ['PLATFORM_LINUX'],
- }],
- ['OS=="android"', {
- 'defines': ['PLATFORM_ANDROID'],
- }],
- ],
- },
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'dependencies': ['lib1'],
- 'sources': [
- 'program.c',
- ],
- },
- {
- 'target_name': 'lib1',
- 'type': 'static_library',
- 'sources': [
- 'lib1.S',
- ],
- },
- ],
- 'conditions': [
- ['OS=="win"', {
- 'target_defaults': {
- 'rules': [
- {
- 'rule_name': 'assembler',
- 'msvs_cygwin_shell': 0,
- 'extension': 'S',
- 'inputs': [
- 'as.bat',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).obj',
- ],
- 'action':
- ['as.bat', 'lib1.c', '<(_outputs)'],
- 'message': 'Building assembly file <(RULE_INPUT_PATH)',
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- },],
- ],
-}
+++ /dev/null
-#if PLATFORM_WINDOWS || PLATFORM_MAC
-# define IDENTIFIER(n) _##n
-#else /* Linux */
-# define IDENTIFIER(n) n
-#endif
-
-.globl IDENTIFIER(lib1_function)
-IDENTIFIER(lib1_function):
-#if !defined(PLATFORM_ANDROID)
- movl $42, %eax
- ret
-#else /* Android (assuming ARM) */
- mov r0, #42
- bx lr
-#endif
+++ /dev/null
-int lib1_function(void) {
- return 42;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [
- 'program.c',
- 'override_asm.asm',
- ],
- 'rules': [
- {
- # Test that if there's a specific .asm rule, it overrides the
- # built in one on Windows.
- 'rule_name': 'assembler',
- 'msvs_cygwin_shell': 0,
- 'extension': 'asm',
- 'inputs': [
- 'as.bat',
- ],
- 'outputs': [
- 'output.obj',
- ],
- 'action': ['as.bat', 'lib1.c', '<(_outputs)'],
- 'message': 'Building assembly file <(RULE_INPUT_PATH)',
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-; 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.
-
-; This is a placeholder. It should not be referenced if overrides work
-; correctly.
-
-Bad stuff that shouldn't assemble.
+++ /dev/null
-#include <stdio.h>
-
-extern int lib1_function(void);
-
-int main(void)
-{
- fprintf(stdout, "Hello from program.c\n");
- fflush(stdout);
- fprintf(stdout, "Got %d.\n", lib1_function());
- fflush(stdout);
- return 0;
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies simplest-possible build of a "Hello, world!" program
-using the default build target.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_default')
-
-if test.format == 'android':
- # This test currently fails on android. Investigate why, fix the issues
- # responsible, and reenable this test on android. See bug:
- # https://code.google.com/p/gyp/issues/detail?id=436
- test.skip_test(message='Test fails on android. Fix and reenable.\n')
-
-if test.format == 'xcode-ninja':
- # The xcode-ninja generator doesn't support --build
- # cf. https://code.google.com/p/gyp/issues/detail?id=453
- test.skip_test()
-
-test.run_gyp('hello.gyp', '--build=Default')
-
-test.run_built_executable('hello', stdout="Hello, world!\n")
-
-test.up_to_date('hello.gyp', test.DEFAULT)
-
-test.pass_test()
+++ /dev/null
-/*
- * 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.
- */
-
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verify the settings that cause a set of programs to be created in
-a specific build directory, and that no intermediate built files
-get created outside of that build directory hierarchy even when
-referred to with deeply-nested ../../.. paths.
-"""
-
-import TestGyp
-
-# TODO(mmoss): Make only supports (theoretically) a single, global build
-# directory (through GYP_GENERATOR_FLAGS 'output_dir'), rather than
-# gyp-file-specific settings (e.g. the stuff in builddir.gypi) that the other
-# generators support, so this doesn't work yet for make.
-# TODO(mmoss) Make also has the issue that the top-level Makefile is written to
-# the "--depth" location, which is one level above 'src', but then this test
-# moves 'src' somewhere else, leaving the Makefile behind, so make can't find
-# its sources. I'm not sure if make is wrong for writing outside the current
-# directory, or if the test is wrong for assuming everything generated is under
-# the current directory.
-# Android, Ninja, and CMake do not support setting the build directory.
-test = TestGyp.TestGyp(formats=['!make', '!ninja', '!android', '!cmake'])
-
-test.run_gyp('prog1.gyp', '--depth=..', chdir='src')
-if test.format == 'msvs':
- if test.uses_msbuild:
- test.must_contain('src/prog1.vcxproj',
- '<OutDir>..\\builddir\\Default\\</OutDir>')
- else:
- test.must_contain('src/prog1.vcproj',
- 'OutputDirectory="..\\builddir\\Default\\"')
-
-test.relocate('src', 'relocate/src')
-
-test.subdir('relocate/builddir')
-
-# Make sure that all the built ../../etc. files only get put under builddir,
-# by making all of relocate read-only and then making only builddir writable.
-test.writable('relocate', False)
-test.writable('relocate/builddir', True)
-
-# Suppress the test infrastructure's setting SYMROOT on the command line.
-test.build('prog1.gyp', test.ALL, SYMROOT=None, chdir='relocate/src')
-
-expect1 = """\
-Hello from prog1.c
-Hello from func1.c
-"""
-
-expect2 = """\
-Hello from subdir2/prog2.c
-Hello from func2.c
-"""
-
-expect3 = """\
-Hello from subdir2/subdir3/prog3.c
-Hello from func3.c
-"""
-
-expect4 = """\
-Hello from subdir2/subdir3/subdir4/prog4.c
-Hello from func4.c
-"""
-
-expect5 = """\
-Hello from subdir2/subdir3/subdir4/subdir5/prog5.c
-Hello from func5.c
-"""
-
-def run_builddir(prog, expect):
- dir = 'relocate/builddir/Default/'
- test.run(program=test.workpath(dir + prog), stdout=expect)
-
-run_builddir('prog1', expect1)
-run_builddir('prog2', expect2)
-run_builddir('prog3', expect3)
-run_builddir('prog4', expect4)
-run_builddir('prog5', expect5)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verify the settings that cause a set of programs to be created in
-a specific build directory, and that no intermediate built files
-get created outside of that build directory hierarchy even when
-referred to with deeply-nested ../../.. paths.
-"""
-
-import TestGyp
-
-# TODO(mmoss): Make only supports (theoretically) a single, global build
-# directory (through GYP_GENERATOR_FLAGS 'output_dir'), rather than
-# gyp-file-specific settings (e.g. the stuff in builddir.gypi) that the other
-# generators support, so this doesn't work yet for make.
-# TODO(mmoss) Make also has the issue that the top-level Makefile is written to
-# the "--depth" location, which is one level above 'src', but then this test
-# moves 'src' somewhere else, leaving the Makefile behind, so make can't find
-# its sources. I'm not sure if make is wrong for writing outside the current
-# directory, or if the test is wrong for assuming everything generated is under
-# the current directory.
-# Android, Ninja, and CMake do not support setting the build directory.
-test = TestGyp.TestGyp(formats=['!make', '!ninja', '!android', '!cmake'])
-
-test.run_gyp('prog1.gyp', '--depth=..', chdir='src')
-if test.format == 'msvs':
- if test.uses_msbuild:
- test.must_contain('src/prog1.vcxproj',
- '<OutDir>..\\builddir\\Default\\</OutDir>')
- else:
- test.must_contain('src/prog1.vcproj',
- 'OutputDirectory="..\\builddir\\Default\\"')
-
-test.relocate('src', 'relocate/src')
-
-test.subdir('relocate/builddir')
-
-# Make sure that all the built ../../etc. files only get put under builddir,
-# by making all of relocate read-only and then making only builddir writable.
-test.writable('relocate', False)
-test.writable('relocate/builddir', True)
-
-# Suppress the test infrastructure's setting SYMROOT on the command line.
-test.build('prog1.gyp', SYMROOT=None, chdir='relocate/src')
-
-expect1 = """\
-Hello from prog1.c
-Hello from func1.c
-"""
-
-expect2 = """\
-Hello from subdir2/prog2.c
-Hello from func2.c
-"""
-
-expect3 = """\
-Hello from subdir2/subdir3/prog3.c
-Hello from func3.c
-"""
-
-expect4 = """\
-Hello from subdir2/subdir3/subdir4/prog4.c
-Hello from func4.c
-"""
-
-expect5 = """\
-Hello from subdir2/subdir3/subdir4/subdir5/prog5.c
-Hello from func5.c
-"""
-
-def run_builddir(prog, expect):
- dir = 'relocate/builddir/Default/'
- test.run(program=test.workpath(dir + prog), stdout=expect)
-
-run_builddir('prog1', expect1)
-run_builddir('prog2', expect2)
-run_builddir('prog3', expect3)
-run_builddir('prog4', expect4)
-run_builddir('prog5', expect5)
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'target_defaults': {
- 'configurations': {
- 'Default': {
- 'msvs_configuration_attributes': {
- 'OutputDirectory': '<(DEPTH)\\builddir/Default',
- },
- },
- },
- },
- 'xcode_settings': {
- 'SYMROOT': '<(DEPTH)/builddir',
- },
-}
+++ /dev/null
-#include <stdio.h>
-
-void func1(void)
-{
- printf("Hello from func1.c\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-void func2(void)
-{
- printf("Hello from func2.c\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-void func3(void)
-{
- printf("Hello from func3.c\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-void func4(void)
-{
- printf("Hello from func4.c\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-void func5(void)
-{
- printf("Hello from func5.c\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void func1(void);
-
-int main(void)
-{
- printf("Hello from prog1.c\n");
- func1();
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- 'builddir.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'pull_in_all',
- 'type': 'none',
- 'dependencies': [
- 'prog1',
- 'subdir2/prog2.gyp:prog2',
- 'subdir2/subdir3/prog3.gyp:prog3',
- 'subdir2/subdir3/subdir4/prog4.gyp:prog4',
- 'subdir2/subdir3/subdir4/subdir5/prog5.gyp:prog5',
- ],
- },
- {
- 'target_name': 'prog1',
- 'type': 'executable',
- 'sources': [
- 'prog1.c',
- 'func1.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void func2(void);
-
-int main(void)
-{
- printf("Hello from subdir2/prog2.c\n");
- func2();
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../builddir.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog2',
- 'type': 'executable',
- 'sources': [
- 'prog2.c',
- '../func2.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void func3(void);
-
-int main(void)
-{
- printf("Hello from subdir2/subdir3/prog3.c\n");
- func3();
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../../builddir.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog3',
- 'type': 'executable',
- 'sources': [
- 'prog3.c',
- '../../func3.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void func4(void);
-
-int main(void)
-{
- printf("Hello from subdir2/subdir3/subdir4/prog4.c\n");
- func4();
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../../../builddir.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog4',
- 'type': 'executable',
- 'sources': [
- 'prog4.c',
- '../../../func4.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void func5(void);
-
-int main(void)
-{
- printf("Hello from subdir2/subdir3/subdir4/subdir5/prog5.c\n");
- func5();
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../../../../builddir.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog5',
- 'type': 'executable',
- 'sources': [
- 'prog5.c',
- '../../../../func5.c',
- ],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2010 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. */
-
-#include <stdio.h>
-
-int main(void)
-{
-#ifdef FOO
- printf("FOO defined\n");
-#else
- printf("FOO not defined\n");
-#endif
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'cflags',
- 'type': 'executable',
- 'sources': [
- 'cflags.c',
- ],
- },
- {
- 'target_name': 'cflags_host',
- 'toolsets': ['host'],
- 'type': 'executable',
- 'sources': [
- 'cflags.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies the use of the environment during regeneration when the gyp file
-changes, specifically via build of an executable with C preprocessor
-definition specified by CFLAGS.
-
-In this test, gyp and build both run in same local environment.
-"""
-
-import TestGyp
-
-# CPPFLAGS works in ninja but not make; CFLAGS works in both
-FORMATS = ('make', 'ninja')
-
-test = TestGyp.TestGyp(formats=FORMATS)
-
-# First set CFLAGS to blank in case the platform doesn't support unsetenv.
-with TestGyp.LocalEnv({'CFLAGS': '',
- 'GYP_CROSSCOMPILE': '1'}):
- test.run_gyp('cflags.gyp')
- test.build('cflags.gyp')
-
-expect = """FOO not defined\n"""
-test.run_built_executable('cflags', stdout=expect)
-test.run_built_executable('cflags_host', stdout=expect)
-
-test.sleep()
-
-with TestGyp.LocalEnv({'CFLAGS': '-DFOO=1',
- 'GYP_CROSSCOMPILE': '1'}):
- test.run_gyp('cflags.gyp')
- test.build('cflags.gyp')
-
-expect = """FOO defined\n"""
-test.run_built_executable('cflags', stdout=expect)
-
-# Environment variables shouldn't influence the flags for the host.
-expect = """FOO not defined\n"""
-test.run_built_executable('cflags_host', stdout=expect)
-
-test.sleep()
-
-with TestGyp.LocalEnv({'CFLAGS': ''}):
- test.run_gyp('cflags.gyp')
- test.build('cflags.gyp')
-
-expect = """FOO not defined\n"""
-test.run_built_executable('cflags', stdout=expect)
-
-test.sleep()
-
-with TestGyp.LocalEnv({'CFLAGS': '-DFOO=1'}):
- test.run_gyp('cflags.gyp')
- test.build('cflags.gyp')
-
-expect = """FOO defined\n"""
-test.run_built_executable('cflags', stdout=expect)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies that .hpp files are ignored when included in the source list on all
-platforms.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('headers.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('headers.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from program.c
-Hello from lib1.c
-"""
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'dependencies': [
- 'lib1'
- ],
- 'sources': [
- 'program.cpp',
- ],
- },
- {
- 'target_name': 'lib1',
- 'type': 'static_library',
- 'sources': [
- 'lib1.hpp',
- 'lib1.cpp',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-#include "lib1.hpp"
-
-void lib1_function(void) {
- fprintf(stdout, "Hello from lib1.c\n");
- fflush(stdout);
-}
+++ /dev/null
-#ifndef _lib1_hpp
-#define _lib1_hpp
-
-extern void lib1_function(void);
-
-#endif
+++ /dev/null
-#include <stdio.h>
-#include "lib1.hpp"
-
-int main(void) {
- fprintf(stdout, "Hello from program.c\n");
- fflush(stdout);
- lib1_function();
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'test.c',
- 'cxxtest.cc',
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- # PYTHON and PWD are replaced by the test code before this
- # gyp file runs
- 'make_global_settings': [
- ['CC', r'$PYTHON $PWD/my_cc.py FOO'],
- ['CXX', r'$PYTHON $PWD/my_cxx.py FOO'],
- ['CC.host', r'$PYTHON $PWD/my_cc.py BAR'],
- ['CXX.host', r'$PYTHON $PWD/my_cxx.py BAR'],
-
- ['LD', r'$PYTHON $PWD/my_ld.py FOO_LINK'],
- ['LD.host', r'$PYTHON $PWD/my_ld.py BAR_LINK'],
- ['LINK', r'$PYTHON $PWD/my_ld.py FOO_LINK'],
- ['LINK.host', r'$PYTHON $PWD/my_ld.py BAR_LINK'],
- ],
-
- # The above global settings should mean that
- # that these targets are built using the fake
- # toolchain above.
- 'targets': [
- {
- 'toolset': '$TOOLSET',
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'test.c',
- 'cxxtest.cc',
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'toolset': 'host',
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'test.c',
- 'cxxtest.cc',
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello-lib',
- 'type': 'shared_library',
- 'sources': [
- 'test.c',
- 'cxxtest.cc',
- ],
- },
- ],
-}
+++ /dev/null
-// 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.
-
-// Deliberate C syntax error as this file should never be passed to
-// the actual compiler
-#error Should not be passed to a real compiler
+++ /dev/null
-#!/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.
-"""
-Verifies that the user can override the compiler and linker using
-CC/CXX/NM/READELF environment variables.
-"""
-
-import TestGyp
-import os
-import copy
-import sys
-
-here = os.path.dirname(os.path.abspath(__file__))
-
-if sys.platform == 'win32':
- # cross compiling not supported by ninja on windows
- # and make not supported on windows at all.
- sys.exit(0)
-
-# Clear any existing compiler related env vars.
-for key in ['CC', 'CXX', 'LINK', 'CC_host', 'CXX_host', 'LINK_host',
- 'NM_target', 'READELF_target']:
- if key in os.environ:
- del os.environ[key]
-
-
-def CheckCompiler(test, gypfile, check_for, run_gyp):
- if run_gyp:
- test.run_gyp(gypfile)
- test.build(gypfile)
-
- test.must_contain_all_lines(test.stdout(), check_for)
-
-
-test = TestGyp.TestGyp(formats=['ninja'])
-# Must set the test format to something with a flavor (the part after the '-')
-# in order to test the desired behavior. Since we want to run a non-host
-# toolchain, we have to set the flavor to something that the ninja generator
-# doesn't know about, so it doesn't default to the host-specific tools (e.g.,
-# 'otool' on mac to generate the .TOC).
-#
-# Note that we can't just pass format=['ninja-some_toolchain'] to the
-# constructor above, because then this test wouldn't be recognized as a ninja
-# format test.
-test.formats = ['ninja-my_flavor' if f == 'ninja' else f for f in test.formats]
-
-
-def TestTargetOverideSharedLib():
- # The std output from nm and readelf is redirected to files, so we can't
- # expect their output to appear. Instead, check for the files they create to
- # see if they actually ran.
- expected = ['my_cc.py', 'my_cxx.py', 'FOO']
-
- # Check that CC, CXX, NM, READELF, set target compiler
- env = {'CC': 'python %s/my_cc.py FOO' % here,
- 'CXX': 'python %s/my_cxx.py FOO' % here,
- 'NM': 'python %s/my_nm.py' % here,
- 'READELF': 'python %s/my_readelf.py' % here}
-
- with TestGyp.LocalEnv(env):
- CheckCompiler(test, 'compiler-shared-lib.gyp', expected, True)
- test.must_contain(test.built_file_path('RAN_MY_NM'), 'RAN_MY_NM')
- test.must_contain(test.built_file_path('RAN_MY_READELF'), 'RAN_MY_READELF')
- test.unlink(test.built_file_path('RAN_MY_NM'))
- test.unlink(test.built_file_path('RAN_MY_READELF'))
-
- # Run the same tests once the eviron has been restored. The generated
- # projects should have embedded all the settings in the project files so the
- # results should be the same.
- CheckCompiler(test, 'compiler-shared-lib.gyp', expected, False)
- test.must_contain(test.built_file_path('RAN_MY_NM'), 'RAN_MY_NM')
- test.must_contain(test.built_file_path('RAN_MY_READELF'), 'RAN_MY_READELF')
-
-
-TestTargetOverideSharedLib()
-test.pass_test()
+++ /dev/null
-#!/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.
-"""
-Verifies that the user can override the compiler and linker using CC/CXX/LD
-environment variables.
-"""
-
-import TestGyp
-import os
-import copy
-import sys
-
-here = os.path.dirname(os.path.abspath(__file__))
-
-if sys.platform == 'win32':
- # cross compiling not supported by ninja on windows
- # and make not supported on windows at all.
- sys.exit(0)
-
-# Clear any existing compiler related env vars.
-for key in ['CC', 'CXX', 'LINK', 'CC_host', 'CXX_host', 'LINK_host']:
- if key in os.environ:
- del os.environ[key]
-
-
-def CheckCompiler(test, gypfile, check_for, run_gyp):
- if run_gyp:
- test.run_gyp(gypfile)
- test.build(gypfile)
-
- test.must_contain_all_lines(test.stdout(), check_for)
-
-
-test = TestGyp.TestGyp(formats=['ninja', 'make'])
-
-def TestTargetOveride():
- expected = ['my_cc.py', 'my_cxx.py', 'FOO' ]
-
- # ninja just uses $CC / $CXX as linker.
- if test.format not in ['ninja', 'xcode-ninja']:
- expected.append('FOO_LINK')
-
- # Check that CC, CXX and LD set target compiler
- oldenv = os.environ.copy()
- try:
- os.environ['CC'] = 'python %s/my_cc.py FOO' % here
- os.environ['CXX'] = 'python %s/my_cxx.py FOO' % here
- os.environ['LINK'] = 'python %s/my_ld.py FOO_LINK' % here
-
- CheckCompiler(test, 'compiler-exe.gyp', expected, True)
- finally:
- os.environ.clear()
- os.environ.update(oldenv)
-
- # Run the same tests once the eviron has been restored. The
- # generated should have embedded all the settings in the
- # project files so the results should be the same.
- CheckCompiler(test, 'compiler-exe.gyp', expected, False)
-
-
-def TestTargetOverideCompilerOnly():
- # Same test again but with that CC, CXX and not LD
- oldenv = os.environ.copy()
- try:
- os.environ['CC'] = 'python %s/my_cc.py FOO' % here
- os.environ['CXX'] = 'python %s/my_cxx.py FOO' % here
-
- CheckCompiler(test, 'compiler-exe.gyp',
- ['my_cc.py', 'my_cxx.py', 'FOO'],
- True)
- finally:
- os.environ.clear()
- os.environ.update(oldenv)
-
- # Run the same tests once the eviron has been restored. The
- # generated should have embedded all the settings in the
- # project files so the results should be the same.
- CheckCompiler(test, 'compiler-exe.gyp',
- ['my_cc.py', 'my_cxx.py', 'FOO'],
- False)
-
-
-def TestHostOveride():
- expected = ['my_cc.py', 'my_cxx.py', 'HOST' ]
- if test.format != 'ninja': # ninja just uses $CC / $CXX as linker.
- expected.append('HOST_LINK')
-
- # Check that CC_host sets host compilee
- oldenv = os.environ.copy()
- try:
- os.environ['CC_host'] = 'python %s/my_cc.py HOST' % here
- os.environ['CXX_host'] = 'python %s/my_cxx.py HOST' % here
- os.environ['LINK_host'] = 'python %s/my_ld.py HOST_LINK' % here
- CheckCompiler(test, 'compiler-host.gyp', expected, True)
- finally:
- os.environ.clear()
- os.environ.update(oldenv)
-
- # Run the same tests once the eviron has been restored. The
- # generated should have embedded all the settings in the
- # project files so the results should be the same.
- CheckCompiler(test, 'compiler-host.gyp', expected, False)
-
-
-TestTargetOveride()
-TestTargetOverideCompilerOnly()
-
-test.pass_test()
+++ /dev/null
-#!/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.
-"""
-Verifies that make_global_settings can be used to override the
-compiler settings.
-"""
-
-import TestGyp
-import os
-import copy
-import sys
-from string import Template
-
-
-if sys.platform == 'win32':
- # cross compiling not support by ninja on windows
- # and make not supported on windows at all.
- sys.exit(0)
-
-test = TestGyp.TestGyp(formats=['ninja', 'make'])
-
-gypfile = 'compiler-global-settings.gyp'
-
-replacements = { 'PYTHON': '/usr/bin/python', 'PWD': os.getcwd()}
-
-# Process the .in gyp file to produce the final gyp file
-# since we need to include absolute paths in the make_global_settings
-# section.
-replacements['TOOLSET'] = 'target'
-s = Template(open(gypfile + '.in').read())
-output = open(gypfile, 'w')
-output.write(s.substitute(replacements))
-output.close()
-
-old_env = dict(os.environ)
-os.environ['GYP_CROSSCOMPILE'] = '1'
-test.run_gyp(gypfile)
-os.environ.clear()
-os.environ.update(old_env)
-
-test.build(gypfile)
-test.must_contain_all_lines(test.stdout(), ['my_cc.py', 'my_cxx.py', 'FOO'])
-
-# The xcode generator chokes on the 'host' toolset. Skip the rest of
-# this test (cf. https://code.google.com/p/gyp/issues/detail?id=454).
-if test.format == 'xcode-ninja':
- test.pass_test()
-
-# Same again but with the host toolset.
-replacements['TOOLSET'] = 'host'
-s = Template(open(gypfile + '.in').read())
-output = open(gypfile, 'w')
-output.write(s.substitute(replacements))
-output.close()
-
-old_env = dict(os.environ)
-os.environ['GYP_CROSSCOMPILE'] = '1'
-test.run_gyp(gypfile)
-os.environ.clear()
-os.environ.update(old_env)
-
-test.build(gypfile)
-test.must_contain_all_lines(test.stdout(), ['my_cc.py', 'my_cxx.py', 'BAR'])
-
-# Check that CC_host overrides make_global_settings
-old_env = dict(os.environ)
-os.environ['CC_host'] = '%s %s/my_cc.py SECRET' % (replacements['PYTHON'],
- replacements['PWD'])
-test.run_gyp(gypfile)
-os.environ.clear()
-os.environ.update(old_env)
-
-test.build(gypfile)
-test.must_contain_all_lines(test.stdout(), ['SECRET', 'my_cxx.py', 'BAR'])
-
-test.pass_test()
+++ /dev/null
-#!/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.
-import sys
-print sys.argv
+++ /dev/null
-#!/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.
-import sys
-print sys.argv
+++ /dev/null
-#!/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.
-import sys
-print sys.argv
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2014 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.
-import sys
-print sys.argv
-with open('RAN_MY_NM', 'w') as f:
- f.write('RAN_MY_NM')
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2014 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.
-import sys
-print sys.argv
-with open('RAN_MY_READELF', 'w') as f:
- f.write('RAN_MY_READELF')
+++ /dev/null
-// 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.
-
-// Deliberate C syntax error as this file should never be passed to
-// the actual compiler
-#error Should not be passed to a real compiler
+++ /dev/null
-# Copyright (c) 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'targets': [
- {
- 'variables': { 'test_var': 0 },
- 'target_name': 'program0',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'includes': [ 'elseif_conditions.gypi' ],
- },
- {
- 'variables': { 'test_var': 1 },
- 'target_name': 'program1',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'includes': [ 'elseif_conditions.gypi' ],
- },
- {
- 'variables': { 'test_var': 2 },
- 'target_name': 'program2',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'includes': [ 'elseif_conditions.gypi' ],
- },
- {
- 'variables': { 'test_var': 3 },
- 'target_name': 'program3',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'includes': [ 'elseif_conditions.gypi' ],
- },
- {
- 'variables': { 'test_var': 4 },
- 'target_name': 'program4',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'includes': [ 'elseif_conditions.gypi' ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Trigger an error because of two consecutive string conditions.
-
-{
- 'targets': [
- {
- 'variables': { 'test_var': 0 },
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'conditions': [
- ['test_var==0', 'test_var==1', {
- }],
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Trigger an error because of two consecutive string conditions, even if the
-# conditions are not actually evaluated.
-
-{
- 'targets': [
- {
- 'variables': { 'test_var': 0 },
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'conditions': [
- ['test_var==0', {
- }, 'test_var==1', 'test_var==2', {
- }],
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Trigger an error because there are unexpected trailing items in a condition.
-
-{
- 'targets': [
- {
- 'variables': { 'test_var': 0 },
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'conditions': [
- ['test_var==0' {
- }, 'test_var==1', {
- }, {
- }, 'test_var==2', {
- }],
- ],
- },
- ],
-}
+++ /dev/null
-{
- 'conditions': [
- ['test_var==0', {
- 'defines': ['FOO="first_if"'],
- }, 'test_var==1', {
- 'defines': ['FOO="first_else_if"'],
- }, 'test_var==2', {
- 'defines': ['FOO="second_else_if"'],
- }, 'test_var==3', {
- 'defines': ['FOO="third_else_if"'],
- }, {
- 'defines': ['FOO="last_else"'],
- }],
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verify that "else-if" conditions work.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('elseif.gyp')
-test.build('elseif.gyp', test.ALL)
-test.run_built_executable(
- 'program0', stdout='first_if\n')
-test.run_built_executable(
- 'program1', stdout='first_else_if\n')
-test.run_built_executable(
- 'program2', stdout='second_else_if\n')
-test.run_built_executable(
- 'program3', stdout='third_else_if\n')
-test.run_built_executable(
- 'program4', stdout='last_else\n')
-
-# Verify that bad condition blocks fail at gyp time.
-test.run_gyp('elseif_bad1.gyp', status=1, stderr=None)
-test.run_gyp('elseif_bad2.gyp', status=1, stderr=None)
-test.run_gyp('elseif_bad3.gyp', status=1, stderr=None)
-
-test.pass_test()
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#include <stdio.h>
-
-int main() {
- printf("%s\n", FOO);
- return 0;
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
-#ifdef FOO
- printf("Foo configuration\n");
-#endif
-#ifdef DEBUG
- printf("Debug configuration\n");
-#endif
-#ifdef RELEASE
- printf("Release configuration\n");
-#endif
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'executable',
- 'sources': [
- 'configurations.c',
- ],
- 'configurations': {
- 'Debug': {
- 'defines': [
- 'DEBUG',
- ],
- },
- 'Release': {
- 'defines': [
- 'RELEASE',
- ],
- },
- 'Foo': {
- 'defines': [
- 'FOO',
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies build of an executable in three different configurations.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if test.format == 'android':
- # This test currently fails on android. Investigate why, fix the issues
- # responsible, and reenable this test on android. See bug:
- # https://code.google.com/p/gyp/issues/detail?id=436
- test.skip_test(message='Test fails on android. Fix and reenable.\n')
-
-test.run_gyp('configurations.gyp')
-
-test.set_configuration('Release')
-test.build('configurations.gyp')
-test.run_built_executable('configurations', stdout="Release configuration\n")
-
-test.set_configuration('Debug')
-test.build('configurations.gyp')
-test.run_built_executable('configurations', stdout="Debug configuration\n")
-
-test.set_configuration('Foo')
-test.build('configurations.gyp')
-test.run_built_executable('configurations', stdout="Foo configuration\n")
-
-test.pass_test()
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
-#ifdef BASE
- printf("Base configuration\n");
-#endif
-#ifdef COMMON
- printf("Common configuration\n");
-#endif
-#ifdef COMMON2
- printf("Common2 configuration\n");
-#endif
-#ifdef DEBUG
- printf("Debug configuration\n");
-#endif
-#ifdef RELEASE
- printf("Release configuration\n");
-#endif
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'target_defaults': {
- 'configurations': {
- 'Base': {
- 'abstract': 1,
- 'defines': ['BASE'],
- },
- 'Common': {
- 'abstract': 1,
- 'inherit_from': ['Base'],
- 'defines': ['COMMON'],
- },
- 'Common2': {
- 'abstract': 1,
- 'defines': ['COMMON2'],
- },
- 'Debug': {
- 'inherit_from': ['Common', 'Common2'],
- 'defines': ['DEBUG'],
- },
- 'Release': {
- 'inherit_from': ['Common', 'Common2'],
- 'defines': ['RELEASE'],
- },
- },
- },
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'executable',
- 'sources': [
- 'configurations.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'target_defaults': {
- 'default_configuration': 'A',
- 'configurations': {
- 'A': {
- 'defines': ['SOMETHING'],
- },
- 'B': {
- 'inherit_from': ['A'],
- },
- },
- 'cflags': ['-g'],
- },
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'executable',
- 'sources': [
- 'configurations.c',
- ],
- },
- ],
-}
+++ /dev/null
-{'_DEPTH': '.',
- 'included_files': ['duplicates.gyp'],
- 'targets': [{'configurations': {'A': {'cflags': ['-g'],
- 'defines': ['SOMETHING']},
- 'B': {'cflags': ['-g'],
- 'defines': ['SOMETHING'],
- 'inherit_from': ['A']}},
- 'default_configuration': 'A',
- 'sources': ['configurations.c'],
- 'target_name': 'configurations',
- 'toolset': 'target',
- 'type': 'executable'}]}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright 2014 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.
-
-"""
-Verifies that configurations do not duplicate other settings.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(format='gypd')
-
-test.run_gyp('duplicates.gyp')
-
-# Verify the duplicates.gypd against the checked-in expected contents.
-#
-# Normally, we should canonicalize line endings in the expected
-# contents file setting the Subversion svn:eol-style to native,
-# but that would still fail if multiple systems are sharing a single
-# workspace on a network-mounted file system. Consequently, we
-# massage the Windows line endings ('\r\n') in the output to the
-# checked-in UNIX endings ('\n').
-
-contents = test.read('duplicates.gypd').replace(
- '\r', '').replace('\\\\', '/')
-expect = test.read('duplicates.gypd.golden').replace('\r', '')
-if not test.match(contents, expect):
- print "Unexpected contents of `duplicates.gypd'"
- test.diff(expect, contents, 'duplicates.gypd ')
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies build of an executable in three different configurations.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if test.format == 'android':
- # This test currently fails on android. Investigate why, fix the issues
- # responsible, and reenable this test on android. See bug:
- # https://code.google.com/p/gyp/issues/detail?id=436
- test.skip_test(message='Test fails on android. Fix and reenable.\n')
-
-test.run_gyp('configurations.gyp')
-
-test.set_configuration('Release')
-test.build('configurations.gyp')
-test.run_built_executable('configurations',
- stdout=('Base configuration\n'
- 'Common configuration\n'
- 'Common2 configuration\n'
- 'Release configuration\n'))
-
-test.set_configuration('Debug')
-test.build('configurations.gyp')
-test.run_built_executable('configurations',
- stdout=('Base configuration\n'
- 'Common configuration\n'
- 'Common2 configuration\n'
- 'Debug configuration\n'))
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'actions': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'all_dependent_settings': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'configurations': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'dependencies': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'direct_dependent_settings': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2010 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.
-
-"""
-Verifies build of an executable in three different configurations.
-"""
-
-import TestGyp
-
-# Keys that do not belong inside a configuration dictionary.
-invalid_configuration_keys = [
- 'actions',
- 'all_dependent_settings',
- 'configurations',
- 'dependencies',
- 'direct_dependent_settings',
- 'libraries',
- 'link_settings',
- 'sources',
- 'standalone_static_library',
- 'target_name',
- 'type',
-]
-
-test = TestGyp.TestGyp()
-
-for test_key in invalid_configuration_keys:
- test.run_gyp('%s.gyp' % test_key, status=1, stderr=None)
- expect = ['%s not allowed in the Debug configuration, found in target '
- '%s.gyp:configurations#target' % (test_key, test_key)]
- test.must_contain_all_lines(test.stderr(), expect)
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'libraries': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'link_settings': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'sources': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'standalone_static_library': 1,
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'target_name': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'none',
- 'configurations': {
- 'Debug': {
- 'type': [
- ],
- },
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'target_defaults': {
- 'configurations': {
- 'Debug_Win32': {
- 'msvs_configuration_platform': 'Win32',
- },
- 'Debug_x64': {
- 'msvs_configuration_platform': 'x64',
- },
- },
- },
- 'targets': [
- {
- 'target_name': 'left',
- 'type': 'static_library',
- 'sources': [
- 'left.c',
- ],
- 'configurations': {
- 'Debug_Win32': {
- 'msvs_target_platform': 'x64',
- },
- },
- },
- {
- 'target_name': 'right',
- 'type': 'static_library',
- 'sources': [
- 'right.c',
- ],
- },
- {
- 'target_name': 'front_left',
- 'type': 'executable',
- 'dependencies': ['left'],
- 'sources': [
- 'front.c',
- ],
- 'configurations': {
- 'Debug_Win32': {
- 'msvs_target_platform': 'x64',
- },
- },
- },
- {
- 'target_name': 'front_right',
- 'type': 'executable',
- 'dependencies': ['right'],
- 'sources': [
- 'front.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-const char *message(void);
-
-int main(void) {
- printf("%s\n", message());
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Tests the msvs specific msvs_target_platform option.
-"""
-
-import TestGyp
-import TestCommon
-
-
-def RunX64(exe, stdout):
- try:
- test.run_built_executable(exe, stdout=stdout)
- except WindowsError, e:
- # Assume the exe is 64-bit if it can't load on 32-bit systems.
- # Both versions of the error are required because different versions
- # of python seem to return different errors for invalid exe type.
- if e.errno != 193 and '[Error 193]' not in str(e):
- raise
-
-
-test = TestGyp.TestGyp(formats=['msvs'])
-
-test.run_gyp('configurations.gyp')
-
-test.set_configuration('Debug|x64')
-test.build('configurations.gyp', rebuild=True)
-RunX64('front_left', stdout=('left\n'))
-RunX64('front_right', stdout=('right\n'))
-
-test.set_configuration('Debug|Win32')
-test.build('configurations.gyp', rebuild=True)
-RunX64('front_left', stdout=('left\n'))
-test.run_built_executable('front_right', stdout=('right\n'))
-
-test.pass_test()
+++ /dev/null
-const char *message(void) {
- return "left";
-}
+++ /dev/null
-const char *message(void) {
- return "right";
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void) {
- if (sizeof(void*) == 4) {
- printf("Running Win32\n");
- } else if (sizeof(void*) == 8) {
- printf("Running x64\n");
- } else {
- printf("Unexpected platform\n");
- }
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'target_defaults': {
- 'configurations': {
- 'Debug': {
- 'msvs_configuration_platform': 'Win32',
- },
- 'Debug_x64': {
- 'inherit_from': ['Debug'],
- 'msvs_configuration_platform': 'x64',
- },
- },
- },
- 'targets': [
- {
- 'target_name': 'configurations',
- 'type': 'executable',
- 'sources': [
- 'configurations.c',
- ],
- },
- {
- 'target_name': 'configurations64',
- 'type': 'executable',
- 'sources': [
- 'configurations.c',
- ],
- 'configurations': {
- 'Debug': {
- 'msvs_target_platform': 'x64',
- },
- },
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies build of an executable in three different configurations.
-"""
-
-import TestGyp
-
-import sys
-
-formats = ['msvs']
-if sys.platform == 'win32':
- formats += ['ninja']
-test = TestGyp.TestGyp(formats=formats)
-
-test.run_gyp('configurations.gyp')
-test.set_configuration('Debug|Win32')
-test.build('configurations.gyp', test.ALL)
-
-for machine, suffix in [('14C machine (x86)', ''),
- ('8664 machine (x64)', '64')]:
- output = test.run_dumpbin(
- '/headers', test.built_file_path('configurations%s.exe' % suffix))
- if machine not in output:
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies file copies using an explicit build target of 'all'.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('copies.gyp',
- '-G', 'xcode_ninja_target_pattern=^(?!copies_null)',
- chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('copies.gyp', test.ALL, chdir='relocate/src')
-
-test.must_match(['relocate', 'src', 'copies-out', 'file1'], 'file1 contents\n')
-
-test.built_file_must_match('copies-out/file2',
- 'file2 contents\n',
- chdir='relocate/src')
-
-test.built_file_must_match('copies-out/directory/file3',
- 'file3 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out/directory/file4',
- 'file4 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out/directory/subdir/file5',
- 'file5 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out/subdir/file6',
- 'file6 contents\n',
- chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that copying files preserves file attributes.
-"""
-
-import TestGyp
-
-import os
-import stat
-import sys
-
-
-def check_attribs(path, expected_exec_bit):
- out_path = test.built_file_path(path, chdir='src')
-
- in_stat = os.stat(os.path.join('src', path))
- out_stat = os.stat(out_path)
- if out_stat.st_mode & stat.S_IXUSR != expected_exec_bit:
- test.fail_test()
-
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('copies-attribs.gyp', chdir='src')
-
-test.build('copies-attribs.gyp', chdir='src')
-
-if sys.platform != 'win32':
- out_path = test.built_file_path('executable-file.sh', chdir='src')
- test.must_contain(out_path,
- '#!/bin/bash\n'
- '\n'
- 'echo echo echo echo cho ho o o\n')
- check_attribs('executable-file.sh', expected_exec_bit=stat.S_IXUSR)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies file copies using the build tool default.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('copies.gyp',
- '-G', 'xcode_ninja_target_pattern=^(?!copies_null)',
- chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('copies.gyp', chdir='relocate/src')
-
-test.must_match(['relocate', 'src', 'copies-out', 'file1'], 'file1 contents\n')
-
-test.built_file_must_match('copies-out/file2',
- 'file2 contents\n',
- chdir='relocate/src')
-
-test.built_file_must_match('copies-out/directory/file3',
- 'file3 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out/directory/file4',
- 'file4 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out/directory/subdir/file5',
- 'file5 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out/subdir/file6',
- 'file6 contents\n',
- chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies file copies where two copies sections in the same target have the
-same destination directory.
-"""
-
-import TestGyp
-
-# The Android build system doesn't allow output to go to arbitrary places.
-test = TestGyp.TestGyp(formats=['!android'])
-test.run_gyp('copies-samedir.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-test.build('copies-samedir.gyp', 'copies_samedir', chdir='relocate/src')
-
-test.built_file_must_match('copies-out-samedir/file1',
- 'file1 contents\n',
- chdir='relocate/src')
-
-test.built_file_must_match('copies-out-samedir/file2',
- 'file2 contents\n',
- chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies file copies with a trailing slash in the destination directory.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-test.run_gyp('copies-slash.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-test.build('copies-slash.gyp', chdir='relocate/src')
-
-test.built_file_must_match('copies-out-slash/directory/file3',
- 'file3 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out-slash/directory/file4',
- 'file4 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out-slash/directory/subdir/file5',
- 'file5 contents\n',
- chdir='relocate/src')
-
-test.built_file_must_match('copies-out-slash-2/directory/file3',
- 'file3 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out-slash-2/directory/file4',
- 'file4 contents\n',
- chdir='relocate/src')
-test.built_file_must_match('copies-out-slash-2/directory/subdir/file5',
- 'file5 contents\n',
- chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies file copies where the destination is one level above an expansion that
-yields a make variable.
-"""
-
-import TestGyp
-
-# The Android build system doesn't allow output to go to arbitrary places.
-test = TestGyp.TestGyp(formats=['!android'])
-test.run_gyp('copies-updir.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-test.build('copies-updir.gyp', 'copies_up', chdir='relocate/src')
-
-test.built_file_must_match('../copies-out-updir/file1',
- 'file1 contents\n',
- chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'copies1',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)',
- 'files': [
- 'executable-file.sh',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'copies_samedir',
- 'type': 'none',
- 'dependencies': [
- 'copies_samedir_dependency',
- ],
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out-samedir',
- 'files': [
- 'file1',
- ],
- },
- ],
- },
- {
- 'target_name': 'copies_samedir_dependency',
- 'type': 'none',
- 'direct_dependent_settings': {
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out-samedir',
- 'files': [
- 'file2',
- ],
- },
- ],
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- # A trailing slash on the destination directory should be ignored.
- {
- 'target_name': 'copies_recursive_trailing_slash',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out-slash/',
- 'files': [
- 'directory/',
- ],
- },
- ],
- },
- # Even if the source directory is below <(PRODUCT_DIR).
- {
- 'target_name': 'copies_recursive_trailing_slash_in_product_dir',
- 'type': 'none',
- 'dependencies': [ ':copies_recursive_trailing_slash' ],
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out-slash-2/',
- 'files': [
- '<(PRODUCT_DIR)/copies-out-slash/directory/',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'copies_up',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/../copies-out-updir',
- 'files': [
- 'file1',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'copies1',
- 'type': 'none',
- 'copies': [
- {
- 'destination': 'copies-out',
- 'files': [
- 'file1',
- ],
- },
- ],
- },
- {
- 'target_name': 'copies2',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out',
- 'files': [
- 'file2',
- ],
- },
- ],
- },
- # Copy a directory tree.
- {
- 'target_name': 'copies_recursive',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out',
- 'files': [
- 'directory/',
- ],
- },
- ],
- },
- # Copy a directory from deeper in the tree (this should not reproduce the
- # entire directory path in the destination, only the final directory).
- {
- 'target_name': 'copies_recursive_depth',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out',
- 'files': [
- 'parentdir/subdir/',
- ],
- },
- ],
- },
- # Verify that a null 'files' list doesn't gag the generators.
- {
- 'target_name': 'copies_null',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-null',
- 'files': [],
- },
- ],
- },
- ],
-}
+++ /dev/null
-file3 contents
+++ /dev/null
-file4 contents
+++ /dev/null
-file5 contents
+++ /dev/null
-#!/bin/bash
-
-echo echo echo echo cho ho o o
+++ /dev/null
-file1 contents
+++ /dev/null
-file2 contents
+++ /dev/null
-file6 contents
+++ /dev/null
-#!/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.
-
-"""Test that custom generators can be passed to --format
-"""
-
-import TestGyp
-
-test = TestGyp.TestGypCustom(format='mygenerator.py')
-test.run_gyp('test.gyp')
-
-# mygenerator.py should generate a file called MyBuildFile containing
-# "Testing..." alongside the gyp file.
-test.must_match('MyBuildFile', 'Testing...\n')
-
-test.pass_test()
+++ /dev/null
-# 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.
-
-"""Custom gyp generator that doesn't do much."""
-
-import gyp.common
-
-generator_default_variables = {}
-
-def GenerateOutput(target_list, target_dicts, data, params):
- f = open("MyBuildFile", "wb")
- f.write("Testing...\n")
- f.close()
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'exe',
- 'type': 'executable',
- 'sources': [
- 'main.c',
- ],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2010 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. */
-
-#include <stdio.h>
-
-int main(void)
-{
-#ifdef ABC
- printf("With define\n");
-#else
- printf("No define\n");
-#endif
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'cxxflags',
- 'type': 'executable',
- 'sources': [
- 'cxxflags.cc',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies the use of the environment during regeneration when the gyp file
-changes, specifically via build of an executable with C++ flags specified by
-CXXFLAGS.
-
-In this test, gyp happens within a local environment, but build outside of it.
-"""
-
-import TestGyp
-
-FORMATS = ('ninja',)
-
-test = TestGyp.TestGyp(formats=FORMATS)
-
-# We reset the environ after calling gyp. When the auto-regeneration happens,
-# the same define should be reused anyway.
-with TestGyp.LocalEnv({'CXXFLAGS': ''}):
- test.run_gyp('cxxflags.gyp')
-
-test.build('cxxflags.gyp')
-
-expect = """\
-No define
-"""
-test.run_built_executable('cxxflags', stdout=expect)
-
-test.sleep()
-
-with TestGyp.LocalEnv({'CXXFLAGS': '-DABC'}):
- test.run_gyp('cxxflags.gyp')
-
-test.build('cxxflags.gyp')
-
-expect = """\
-With define
-"""
-test.run_built_executable('cxxflags', stdout=expect)
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2010 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. */
-
-#include <stdio.h>
-
-int main(void)
-{
- printf(TEST_FORMAT, TEST_ARGS);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'defines_escaping',
- 'type': 'executable',
- 'sources': [
- 'defines-escaping.c',
- ],
- 'defines': [
- 'TEST_FORMAT="<(test_format)"',
- 'TEST_ARGS=<(test_args)',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2010 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.
-
-"""
-Verifies build of an executable with C++ define specified by a gyp define using
-various special characters such as quotes, commas, etc.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-# Tests string literals, percents, and backslash escapes.
-try:
- os.environ['GYP_DEFINES'] = (
- r"""test_format='\n%s\n' """
- r"""test_args='"Simple test of %s with a literal"'""")
- test.run_gyp('defines-escaping.gyp')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.build('defines-escaping.gyp')
-
-expect = """
-Simple test of %s with a literal
-"""
-test.run_built_executable('defines_escaping', stdout=expect)
-
-
-# Test multiple comma-and-space-separated string literals.
-try:
- os.environ['GYP_DEFINES'] = \
- r"""test_format='\n%s and %s\n' test_args='"foo", "bar"'"""
- test.run_gyp('defines-escaping.gyp')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines-escaping.c')
-test.build('defines-escaping.gyp')
-
-expect = """
-foo and bar
-"""
-test.run_built_executable('defines_escaping', stdout=expect)
-
-
-# Test string literals containing quotes.
-try:
- os.environ['GYP_DEFINES'] = (
- r"""test_format='\n%s %s %s %s %s\n' """
- r"""test_args='"\"These,\"","""
- r""" "\"words,\"","""
- r""" "\"are,\"","""
- r""" "\"in,\"","""
- r""" "\"quotes.\""'""")
- test.run_gyp('defines-escaping.gyp')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines-escaping.c')
-test.build('defines-escaping.gyp')
-
-expect = """
-"These," "words," "are," "in," "quotes."
-"""
-test.run_built_executable('defines_escaping', stdout=expect)
-
-
-# Test string literals containing single quotes.
-try:
- os.environ['GYP_DEFINES'] = (
- r"""test_format='\n%s %s %s %s %s\n' """
- r"""test_args="\"'These,'\","""
- r""" \"'words,'\","""
- r""" \"'are,'\","""
- r""" \"'in,'\","""
- r""" \"'quotes.'\"" """)
- test.run_gyp('defines-escaping.gyp')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines-escaping.c')
-test.build('defines-escaping.gyp')
-
-expect = """
-'These,' 'words,' 'are,' 'in,' 'quotes.'
-"""
-test.run_built_executable('defines_escaping', stdout=expect)
-
-
-# Test string literals containing different numbers of backslashes before quotes
-# (to exercise Windows' quoting behaviour).
-try:
- os.environ['GYP_DEFINES'] = (
- r"""test_format='\n%s\n%s\n%s\n' """
- r"""test_args='"\\\"1 visible slash\\\"","""
- r""" "\\\\\"2 visible slashes\\\\\"","""
- r""" "\\\\\\\"3 visible slashes\\\\\\\""'""")
- test.run_gyp('defines-escaping.gyp')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines-escaping.c')
-test.build('defines-escaping.gyp')
-
-expect = r"""
-\"1 visible slash\"
-\\"2 visible slashes\\"
-\\\"3 visible slashes\\\"
-"""
-test.run_built_executable('defines_escaping', stdout=expect)
-
-
-# Test that various scary sequences are passed unfettered.
-try:
- os.environ['GYP_DEFINES'] = (
- r"""test_format='\n%s\n' """
- r"""test_args='"$foo, " `foo`;"'""")
- test.run_gyp('defines-escaping.gyp')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines-escaping.c')
-test.build('defines-escaping.gyp')
-
-expect = """
-$foo, " `foo`;
-"""
-test.run_built_executable('defines_escaping', stdout=expect)
-
-
-# VisualStudio 2010 can't handle passing %PATH%
-if not (test.format == 'msvs' and test.uses_msbuild):
- try:
- os.environ['GYP_DEFINES'] = (
- """test_format='%s' """
- """test_args='"%PATH%"'""")
- test.run_gyp('defines-escaping.gyp')
- finally:
- del os.environ['GYP_DEFINES']
-
- test.sleep()
- test.touch('defines-escaping.c')
- test.build('defines-escaping.gyp')
-
- expect = "%PATH%"
- test.run_built_executable('defines_escaping', stdout=expect)
-
-
-# Test commas and semi-colons preceded by backslashes (to exercise Windows'
-# quoting behaviour).
-try:
- os.environ['GYP_DEFINES'] = (
- r"""test_format='\n%s\n%s\n' """
- r"""test_args='"\\, \\\\;","""
- # Same thing again, but enclosed in visible quotes.
- r""" "\"\\, \\\\;\""'""")
- test.run_gyp('defines-escaping.gyp')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines-escaping.c')
-test.build('defines-escaping.gyp')
-
-expect = r"""
-\, \\;
-"\, \\;"
-"""
-test.run_built_executable('defines_escaping', stdout=expect)
-
-# We deliberately do not test having an odd number of quotes in a string
-# literal because that isn't feasible in MSVS.
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'variables': {
- 'value%': '5',
- },
- 'targets': [
- {
- 'target_name': 'defines',
- 'type': 'executable',
- 'sources': [
- 'defines.c',
- ],
- 'defines': [
- 'VALUE=<(value)',
- ],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-#include <stdio.h>
-
-int main(void)
-{
-#ifdef FOO
- printf("FOO is defined\n");
-#endif
- printf("VALUE is %d\n", VALUE);
-
-#ifdef PAREN_VALUE
- printf("2*PAREN_VALUE is %d\n", 2*PAREN_VALUE);
-#endif
-
-#ifdef HASH_VALUE
- printf("HASH_VALUE is %s\n", HASH_VALUE);
-#endif
-
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'defines',
- 'type': 'executable',
- 'sources': [
- 'defines.c',
- ],
- 'defines': [
- 'FOO',
- 'VALUE=1',
- 'PAREN_VALUE=(1+2+3)',
- 'HASH_VALUE="a#1"',
- ],
- },
- ],
- 'conditions': [
- ['OS=="fakeos"', {
- 'targets': [
- {
- 'target_name': 'fakeosprogram',
- 'type': 'executable',
- 'sources': [
- 'defines.c',
- ],
- 'defines': [
- 'FOO',
- 'VALUE=1',
- ],
- },
- ],
- }],
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies that a default gyp define can be overridden.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-# CMake loudly warns about passing '#' to the compiler and drops the define.
-expect_stderr = ''
-if test.format == 'cmake':
- expect_stderr = (
-"""WARNING: Preprocessor definitions containing '#' may not be passed on the"""
-""" compiler command line because many compilers do not support it.\n"""
-"""CMake is dropping a preprocessor definition: HASH_VALUE="a#1"\n"""
-"""Consider defining the macro in a (configured) header file.\n\n""")
-
-# Command-line define
-test.run_gyp('defines.gyp', '-D', 'OS=fakeos')
-test.build('defines.gyp', stderr=expect_stderr)
-test.built_file_must_exist('fakeosprogram', type=test.EXECUTABLE)
-# Clean up the exe so subsequent tests don't find an old exe.
-os.remove(test.built_file_path('fakeosprogram', type=test.EXECUTABLE))
-
-# Without "OS" override, fokeosprogram shouldn't be built.
-test.run_gyp('defines.gyp')
-test.build('defines.gyp', stderr=expect_stderr)
-test.built_file_must_not_exist('fakeosprogram', type=test.EXECUTABLE)
-
-# Environment define
-os.environ['GYP_DEFINES'] = 'OS=fakeos'
-test.run_gyp('defines.gyp')
-test.build('defines.gyp', stderr=expect_stderr)
-test.built_file_must_exist('fakeosprogram', type=test.EXECUTABLE)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies build of an executable with C++ define specified by a gyp define, and
-the use of the environment during regeneration when the gyp file changes.
-"""
-
-import os
-import TestGyp
-
-# Regenerating build files when a gyp file changes is currently only supported
-# by the make generator.
-test = TestGyp.TestGyp(formats=['make'])
-
-try:
- os.environ['GYP_DEFINES'] = 'value=50'
- test.run_gyp('defines.gyp')
-finally:
- # We clear the environ after calling gyp. When the auto-regeneration happens,
- # the same define should be reused anyway. Reset to empty string first in
- # case the platform doesn't support unsetenv.
- os.environ['GYP_DEFINES'] = ''
- del os.environ['GYP_DEFINES']
-
-test.build('defines.gyp')
-
-expect = """\
-FOO is defined
-VALUE is 1
-2*PAREN_VALUE is 12
-HASH_VALUE is a#1
-"""
-test.run_built_executable('defines', stdout=expect)
-
-# Sleep so that the changed gyp file will have a newer timestamp than the
-# previously generated build files.
-test.sleep()
-test.write('defines.gyp', test.read('defines-env.gyp'))
-
-test.build('defines.gyp', test.ALL)
-
-expect = """\
-VALUE is 50
-"""
-test.run_built_executable('defines', stdout=expect)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies build of an executable with C++ define specified by a gyp define.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-# With the value only given in environment, it should be used.
-try:
- os.environ['GYP_DEFINES'] = 'value=10'
- test.run_gyp('defines-env.gyp')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.build('defines-env.gyp')
-
-expect = """\
-VALUE is 10
-"""
-test.run_built_executable('defines', stdout=expect)
-
-
-# With the value given in both command line and environment,
-# command line should take precedence.
-try:
- os.environ['GYP_DEFINES'] = 'value=20'
- test.run_gyp('defines-env.gyp', '-Dvalue=25')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines.c')
-test.build('defines-env.gyp')
-
-expect = """\
-VALUE is 25
-"""
-test.run_built_executable('defines', stdout=expect)
-
-
-# With the value only given in environment, it should be ignored if
-# --ignore-environment is specified.
-try:
- os.environ['GYP_DEFINES'] = 'value=30'
- test.run_gyp('defines-env.gyp', '--ignore-environment')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines.c')
-test.build('defines-env.gyp')
-
-expect = """\
-VALUE is 5
-"""
-test.run_built_executable('defines', stdout=expect)
-
-
-# With the value given in both command line and environment, and
-# --ignore-environment also specified, command line should still be used.
-try:
- os.environ['GYP_DEFINES'] = 'value=40'
- test.run_gyp('defines-env.gyp', '--ignore-environment', '-Dvalue=45')
-finally:
- del os.environ['GYP_DEFINES']
-
-test.sleep()
-test.touch('defines.c')
-test.build('defines-env.gyp')
-
-expect = """\
-VALUE is 45
-"""
-test.run_built_executable('defines', stdout=expect)
-
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies build of an executable with C++ defines.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('defines.gyp')
-
-expect = """\
-FOO is defined
-VALUE is 1
-2*PAREN_VALUE is 12
-"""
-
-#CMake loudly warns about passing '#' to the compiler and drops the define.
-expect_stderr = ''
-if test.format == 'cmake':
- expect_stderr = (
-"""WARNING: Preprocessor definitions containing '#' may not be passed on the"""
-""" compiler command line because many compilers do not support it.\n"""
-"""CMake is dropping a preprocessor definition: HASH_VALUE="a#1"\n"""
-"""Consider defining the macro in a (configured) header file.\n\n""")
-else:
- expect += """HASH_VALUE is a#1
-"""
-
-test.build('defines.gyp', stderr=expect_stderr)
-
-test.run_built_executable('defines', stdout=expect)
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-extern int funcB();
-
-int funcA() {
- return funcB();
-}
+++ /dev/null
-int funcB() {
- return 2;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'b',
- 'type': 'static_library',
- 'sources': [
- 'b.c',
- ],
- },
- {
- 'target_name': 'b3',
- 'type': 'static_library',
- 'sources': [
- 'b3.c',
- ],
- },
- ],
-}
+++ /dev/null
-/*
- * Copyright (c) 2011 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.
- */
-
-int funcB() {
- return 3;
-}
+++ /dev/null
-int funcC() {
- return 3
- // Intentional syntax error. This file should never be compiled, so this
- // shouldn't be a problem.
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'c_unused',
- 'type': 'static_library',
- 'sources': [
- 'c.c',
- ],
- },
- {
- 'target_name': 'd',
- 'type': 'static_library',
- 'sources': [
- 'd.c',
- ],
- },
- ],
-}
+++ /dev/null
-int funcD() {
- return 4;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'double_dependency',
- 'type': 'shared_library',
- 'dependencies': [
- 'double_dependent.gyp:double_dependent',
- ],
- 'conditions': [
- ['1==1', {
- 'dependencies': [
- 'double_dependent.gyp:*',
- ],
- }],
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'double_dependent',
- 'type': 'none',
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'static_library',
- 'sources': [
- 'a.c',
- ],
- # This only depends on the "d" target; other targets in c.gyp
- # should not become part of the build (unlike with 'c/c.gyp:*').
- 'dependencies': ['c/c.gyp:d'],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verify that pulling in a dependency a second time in a conditional works for
-shared_library targets. Regression test for http://crbug.com/122588
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('double_dependency.gyp')
-
-# If running gyp worked, all is well.
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verify that dependencies don't pull unused targets into the build.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('extra_targets.gyp',
- '-G', 'xcode_ninja_target_pattern=^a$')
-
-# This should fail if it tries to build 'c_unused' since 'c/c.c' has a syntax
-# error and won't compile.
-test.build('extra_targets.gyp', test.ALL)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verify that a link time only dependency will get pulled into the set of built
-targets, even if no executable uses it.
-"""
-
-import TestGyp
-
-import sys
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('lib_only.gyp')
-
-test.build('lib_only.gyp', test.ALL)
-
-test.built_file_must_exist('a', type=test.STATIC_LIB)
-
-# TODO(bradnelson/mark):
-# On linux and windows a library target will at least pull its link dependencies
-# into the generated project, since not doing so confuses users.
-# This is not currently implemented on mac, which has the opposite behavior.
-if sys.platform == 'darwin':
- if test.format == 'xcode':
- test.built_file_must_not_exist('b', type=test.STATIC_LIB)
- else:
- assert test.format in ('make', 'ninja', 'xcode-ninja')
- test.built_file_must_exist('b', type=test.STATIC_LIB)
-else:
- # Make puts the resulting library in a directory matching the input gyp file;
- # for the 'b' library, that is in the 'b' subdirectory.
- test.built_file_must_exist('b', type=test.STATIC_LIB, subdir='b')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verify that static library dependencies don't traverse none targets, unless
-explicitly specified.
-"""
-
-import TestGyp
-
-import sys
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('none_traversal.gyp')
-
-test.build('none_traversal.gyp', test.ALL)
-
-test.run_built_executable('needs_chain', stdout="2\n")
-test.run_built_executable('doesnt_need_chain', stdout="3\n")
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verify that link_settings in a shared_library are not propagated to targets
-that depend on the shared_library, but are used in the shared_library itself.
-"""
-
-import TestGyp
-import sys
-
-CHDIR='sharedlib-linksettings'
-
-test = TestGyp.TestGyp()
-test.run_gyp('test.gyp', chdir=CHDIR)
-test.build('test.gyp', test.ALL, chdir=CHDIR)
-test.run_built_executable('program', stdout="1\n2\n", chdir=CHDIR)
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'static_library',
- 'sources': [
- 'a.c',
- ],
- 'dependencies': ['b/b.gyp:b'],
- },
- ],
-}
+++ /dev/null
-/*
- * Copyright (c) 2011 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.
- */
-
-#include <stdio.h>
-
-extern int funcA();
-
-int main() {
- printf("%d\n", funcA());
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'needs_chain',
- 'type': 'executable',
- 'sources': [
- 'a.c',
- 'main.c',
- ],
- 'dependencies': ['chain'],
- },
- {
- 'target_name': 'chain',
- 'type': 'none',
- 'dependencies': ['b/b.gyp:b'],
- },
- {
- 'target_name': 'doesnt_need_chain',
- 'type': 'executable',
- 'sources': [
- 'main.c',
- ],
- 'dependencies': ['no_chain', 'other_chain'],
- },
- {
- 'target_name': 'no_chain',
- 'type': 'none',
- 'sources': [
- ],
- 'dependencies': ['b/b.gyp:b'],
- 'dependencies_traverse': 0,
- },
- {
- 'target_name': 'other_chain',
- 'type': 'static_library',
- 'sources': [
- 'a.c',
- ],
- 'dependencies': ['b/b.gyp:b3'],
- },
- ],
-}
+++ /dev/null
-/*
- * Copyright (c) 2013 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.
- */
-
-#include <stdio.h>
-
-/*
- * This will fail to compile if TEST_DEFINE was propagated from sharedlib to
- * program.
- */
-#ifdef TEST_DEFINE
-#error TEST_DEFINE is already defined!
-#endif
-
-#define TEST_DEFINE 2
-
-extern int staticLibFunc();
-
-int main() {
- printf("%d\n", staticLibFunc());
- printf("%d\n", TEST_DEFINE);
- return 0;
-}
+++ /dev/null
-/*
- * Copyright (c) 2013 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.
- */
-
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-int sharedLibFunc() {
- /*
- * This will fail to compile if TEST_DEFINE was not obtained from sharedlib's
- * link_settings.
- */
- return TEST_DEFINE;
-}
+++ /dev/null
-/*
- * Copyright (c) 2013 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.
- */
-
-/*
- * This will fail to compile if TEST_DEFINE was propagated from sharedlib to
- * staticlib.
- */
-#ifdef TEST_DEFINE
-#error TEST_DEFINE is defined!
-#endif
-
-#ifdef _WIN32
-__declspec(dllimport)
-#else
-extern
-#endif
-int sharedLibFunc();
-
-int staticLibFunc() {
- return sharedLibFunc();
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'target_defaults': {
- 'allow_sharedlib_linksettings_propagation': 0,
- },
- 'targets': [
- {
- 'target_name': 'sharedlib',
- 'type': 'shared_library',
- 'sources': [ 'sharedlib.c' ],
- 'link_settings': {
- 'defines': [ 'TEST_DEFINE=1' ],
- },
- 'conditions': [
- ['OS=="linux"', {
- # Support 64-bit shared libs (also works fine for 32-bit).
- 'cflags': ['-fPIC'],
- }],
- ],
- },
- {
- 'target_name': 'staticlib',
- 'type': 'static_library',
- 'sources': [ 'staticlib.c' ],
- 'dependencies': [ 'sharedlib' ],
- },
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [ 'program.c' ],
- 'dependencies': [ 'staticlib' ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies dependencies do the copy step.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('copies.gyp', chdir='src')
-
-test.build('copies.gyp', 'proj2', chdir='src')
-
-test.run_built_executable('proj1',
- chdir='src',
- stdout="Hello from file1.c\n")
-test.run_built_executable('proj2',
- chdir='src',
- stdout="Hello from file2.c\n")
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'proj1',
- 'type': 'executable',
- 'sources': [
- 'file1.c',
- ],
- },
- {
- 'target_name': 'proj2',
- 'type': 'executable',
- 'sources': [
- 'file2.c',
- ],
- 'dependencies': [
- 'proj1',
- ]
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from file1.c\n");
- return 0;
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from file2.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'empty_target',
- 'type': 'none',
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies building a target with nothing succeeds.
-"""
-
-import os
-import sys
-import TestGyp
-
-test = TestGyp.TestGyp()
-test.run_gyp('empty-target.gyp')
-test.build('empty-target.gyp', target='empty_target')
-test.pass_test()
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'target0',
- 'type': 'none',
- 'dependencies': [ 'target1' ],
- },
- {
- 'target_name': 'target1',
- 'type': 'none',
- 'dependencies': [ 'target2' ],
- },
- {
- 'target_name': 'target2',
- 'type': 'none',
- 'dependencies': [ 'target0' ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- { 'target_name' : 'foo', 'type': 'executable' },
- ],
- 'targets': [
- { 'target_name' : 'bar', 'type': 'executable' },
- ]
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'executable',
- 'rules': [
- {
- 'rule_name': 'bar',
- 'extension': '',
- },
- {
- 'rule_name': 'bar',
- 'extension': '',
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'foo'
- },
- {
- 'target_name': 'foo'
- },
- ]
-}
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'top',
- 'type': 'none',
- 'dependencies': [ 'file_cycle1.gyp:middle' ],
- },
- {
- 'target_name': 'bottom',
- 'type': 'none',
- },
- ],
-}
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'middle',
- 'type': 'none',
- 'dependencies': [ 'file_cycle0.gyp:bottom' ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Test that two targets with the same name generates an error.
-"""
-
-import os
-import sys
-
-import TestGyp
-import TestCmd
-
-# TODO(sbc): Remove the use of match_re below, done because scons
-# error messages were not consistent with other generators.
-# Also remove input.py:generator_wants_absolute_build_file_paths.
-
-test = TestGyp.TestGyp()
-
-stderr = ('gyp: Duplicate target definitions for '
- '.*duplicate_targets.gyp:foo#target\n')
-test.run_gyp('duplicate_targets.gyp', status=1, stderr=stderr,
- match=TestCmd.match_re)
-
-stderr = ('.*: Unable to find targets in build file .*missing_targets.gyp.*')
-test.run_gyp('missing_targets.gyp', status=1, stderr=stderr,
- match=TestCmd.match_re_dotall)
-
-stderr = ('gyp: rule bar exists in duplicate, target '
- '.*duplicate_rule.gyp:foo#target\n')
-test.run_gyp('duplicate_rule.gyp', status=1, stderr=stderr,
- match=TestCmd.match_re)
-
-stderr = ("gyp: Key 'targets' repeated at level 1 with key path '' while "
- "reading .*duplicate_node.gyp.*")
-test.run_gyp('duplicate_node.gyp', '--check', status=1, stderr=stderr,
- match=TestCmd.match_re_dotall)
-
-stderr = (".*target0.*target1.*target2.*target0.*")
-test.run_gyp('dependency_cycle.gyp', status=1, stderr=stderr,
- match=TestCmd.match_re_dotall)
-
-stderr = (".*file_cycle0.*file_cycle1.*file_cycle0.*")
-test.run_gyp('file_cycle0.gyp', status=1, stderr=stderr,
- match=TestCmd.match_re_dotall)
-
-stderr = ("gyp: Dependency '.*missing_dep.gyp:missing.gyp#target' not found "
- "while trying to load target .*missing_dep.gyp:foo#target\n")
-test.run_gyp('missing_dep.gyp', status=1, stderr=stderr,
- match=TestCmd.match_re)
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'static_library',
- 'dependencies': [
- 'missing.gyp'
- ]
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'target_defaults': {
- },
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'colon',
- 'type': 'executable',
- 'sources': [
- 'a:b.c',
- ],
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/',
- # MSVS2008 gets confused if the same file is in 'sources' and 'copies'
- 'files': [ 'a:b.c-d', ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Tests that filenames that contain colons are handled correctly.
-(This is important for absolute paths on Windows.)
-"""
-
-import os
-import sys
-import TestGyp
-
-# TODO: Make colons in filenames work with make, if required.
-test = TestGyp.TestGyp(formats=['!make', '!android'])
-CHDIR = 'colon'
-
-source_name = 'colon/a:b.c'
-copies_name = 'colon/a:b.c-d'
-if sys.platform == 'win32':
- # Windows uses : as drive separator and doesn't allow it in regular filenames.
- # Use abspath() to create a path that contains a colon instead.
- abs_source = os.path.abspath('colon/file.c')
- test.write('colon/test.gyp',
- test.read('colon/test.gyp').replace("'a:b.c'", repr(abs_source)))
- source_name = abs_source
-
- abs_copies = os.path.abspath('colon/file.txt')
- test.write('colon/test.gyp',
- test.read('colon/test.gyp').replace("'a:b.c-d'", repr(abs_copies)))
- copies_name = abs_copies
-
-# Create the file dynamically, Windows is unhappy if a file with a colon in
-# its name is checked in.
-test.write(source_name, 'int main() {}')
-test.write(copies_name, 'foo')
-
-test.run_gyp('test.gyp', chdir=CHDIR)
-test.build('test.gyp', test.ALL, chdir=CHDIR)
-test.built_file_must_exist(os.path.basename(copies_name), chdir=CHDIR)
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- 'bogus.c',
- 'also/not/real.c',
- 'also/not/real2.c',
- ],
- 'sources!': [
- 'bogus.c',
- 'also/not/real.c',
- 'also/not/real2.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2010 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.
-
-"""
-Verifies that exclusions (e.g. sources!) are respected. Excluded sources
-that do not exist should not prevent the build from succeeding.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('exclusion.gyp')
-test.build('exclusion.gyp')
-
-# executables
-test.built_file_must_exist('hello' + test._exe, test.EXECUTABLE, bare=True)
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2010 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. */
-
-#include <stdio.h>
-
-int func1(void) {
- return 42;
-}
-
-int main(void) {
- printf("Hello, world!\n");
- printf("%d\n", func1());
- return 0;
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that actions can be + a source scanner can be used to implement,
-cross-compiles (for Native Client at this point).
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('cross.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('cross.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-From test1.cc
-From test2.c
-From test3.cc
-From test4.c
-"""
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
-test.pass_test()
+++ /dev/null
-From bogus1.cc
+++ /dev/null
-From bogus2.c
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': ['cross_compile.gypi'],
- 'target_defaults': {
- 'variables': {
- 'nix_lame%': 0,
- },
- 'target_conditions': [
- ['nix_lame==1', {
- 'sources/': [
- ['exclude', 'lame'],
- ],
- }],
- ],
- },
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'dependencies': [
- 'program_inc',
- ],
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- 'sources': [
- 'program.cc',
- ],
- },
- {
- 'target_name': 'program_inc',
- 'type': 'none',
- 'dependencies': ['cross_program'],
- 'actions': [
- {
- 'action_name': 'program_inc',
- 'inputs': ['<(SHARED_INTERMEDIATE_DIR)/cross_program.fake'],
- 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/cross_program.h'],
- 'action': ['python', 'tochar.py', '<@(_inputs)', '<@(_outputs)'],
- },
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'target_name': 'cross_program',
- 'type': 'none',
- 'variables': {
- 'cross': 1,
- 'nix_lame': 1,
- },
- 'dependencies': ['cross_lib'],
- 'sources': [
- 'test1.cc',
- 'test2.c',
- 'very_lame.cc',
- '<(SHARED_INTERMEDIATE_DIR)/cross_lib.fake',
- ],
- },
- {
- 'target_name': 'cross_lib',
- 'type': 'none',
- 'variables': {
- 'cross': 1,
- 'nix_lame': 1,
- },
- 'sources': [
- 'test3.cc',
- 'test4.c',
- 'bogus1.cc',
- 'bogus2.c',
- 'sort_of_lame.cc',
- ],
- 'sources!': [
- 'bogus1.cc',
- 'bogus2.c',
- ],
- },
- ],
-}
+++ /dev/null
-{
- 'target_defaults': {
- 'variables': {
- 'cross%': 0,
- },
- 'target_conditions': [
- ['cross==1', {
- 'actions': [
- {
- 'action_name': 'cross compile >(_target_name)',
- 'inputs': ['^@(_sources)'],
- 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/>(_target_name).fake'],
- 'action': [
- 'python', 'fake_cross.py', '>@(_outputs)', '^@(_sources)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- }],
- ],
- },
-}
+++ /dev/null
-#!/usr/bin/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.
-
-import sys
-
-fh = open(sys.argv[1], 'w')
-
-filenames = sys.argv[2:]
-
-for filename in filenames:
- subfile = open(filename)
- data = subfile.read()
- subfile.close()
- fh.write(data)
-
-fh.close()
+++ /dev/null
-/*
- * 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.
- */
-
-#include <stdio.h>
-
-static char data[] = {
-#include "cross_program.h"
-};
-
-int main(void) {
- fwrite(data, 1, sizeof(data), stdout);
- return 0;
-}
+++ /dev/null
-From test1.cc
+++ /dev/null
-From test2.c
+++ /dev/null
-From test3.cc
+++ /dev/null
-From test4.c
+++ /dev/null
-#!/usr/bin/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.
-
-import sys
-
-src = open(sys.argv[1])
-dst = open(sys.argv[2], 'w')
-for ch in src.read():
- dst.write('%d,\n' % ord(ch))
-src.close()
-dst.close()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'pull_in_all_actions',
- 'type': 'none',
- 'dependencies': [
- 'subdir1/executable.gyp:*',
- 'subdir2/none.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'program.c',
- ],
- 'actions': [
- {
- 'action_name': 'make-prog1',
- 'inputs': [
- 'make-prog1.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/prog1.c',
- ],
- 'action': [
- 'python', '<(_inputs)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- {
- 'action_name': 'make-prog2',
- 'inputs': [
- 'make-prog2.py',
- ],
- 'outputs': [
- 'actions-out/prog2.c',
- ],
- 'action': [
- 'python', '<(_inputs)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = r"""
-#include <stdio.h>
-
-void prog1(void)
-{
- printf("Hello from make-prog1.py\n");
-}
-"""
-
-open(sys.argv[1], 'w').write(contents)
-
-sys.exit(0)
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = r"""
-#include <stdio.h>
-
-void prog2(void)
-{
- printf("Hello from make-prog2.py\n");
-}
-"""
-
-open(sys.argv[1], 'w').write(contents)
-
-sys.exit(0)
+++ /dev/null
-#include <stdio.h>
-
-extern void prog1(void);
-extern void prog2(void);
-
-int main(void)
-{
- printf("Hello from program.c\n");
- prog1();
- prog2();
- return 0;
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = "Hello from make-file.py\n"
-
-open(sys.argv[1], 'wb').write(contents)
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'file',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'actions': [
- {
- 'action_name': 'make-file',
- 'inputs': [
- 'make-file.py',
- ],
- 'outputs': [
- 'actions-out/file.out',
- # TODO: enhance testing infrastructure to test this
- # without having to hard-code the intermediate dir paths.
- #'<(INTERMEDIATE_DIR)/file.out',
- ],
- 'action': [
- 'python', '<(_inputs)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- }
- ],
- },
- ],
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'pull_in_subdir',
- 'type': 'none',
- 'dependencies': [
- 'subdir/subdir.gyp:*',
- ],
- },
- {
- 'target_name': 'copies1',
- 'type': 'none',
- 'copies': [
- {
- 'destination': 'copies-out',
- 'files': [
- 'file1',
- ],
- },
- ],
- },
- {
- 'target_name': 'copies2',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out',
- 'files': [
- 'file2',
- ],
- },
- ],
- },
- # Verify that a null 'files' list doesn't gag the generators.
- {
- 'target_name': 'copies_null',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-null',
- 'files': [],
- },
- ],
- },
- ],
-}
+++ /dev/null
-file1 contents
+++ /dev/null
-file2 contents
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-file3 contents
+++ /dev/null
-file4 contents
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'copies3',
- 'type': 'none',
- 'copies': [
- {
- 'destination': 'copies-out',
- 'files': [
- 'file3',
- ],
- },
- ],
- },
- {
- 'target_name': 'copies4',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/copies-out',
- 'files': [
- 'file4',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies --generator-output= behavior when using actions.
-"""
-
-import TestGyp
-
-# Android doesn't support --generator-output.
-test = TestGyp.TestGyp(formats=['!android'])
-
-# All the generated files should go under 'gypfiles'. The source directory
-# ('actions') should be untouched.
-test.writable(test.workpath('actions'), False)
-test.run_gyp('actions.gyp',
- '--generator-output=' + test.workpath('gypfiles'),
- chdir='actions')
-
-test.writable(test.workpath('actions'), True)
-
-test.relocate('actions', 'relocate/actions')
-test.relocate('gypfiles', 'relocate/gypfiles')
-
-test.writable(test.workpath('relocate/actions'), False)
-
-# Some of the action outputs use "pure" relative paths (i.e. without prefixes
-# like <(INTERMEDIATE_DIR) or <(PROGRAM_DIR)). Even though we are building under
-# 'gypfiles', such outputs will still be created relative to the original .gyp
-# sources. Projects probably wouldn't normally do this, since it kind of defeats
-# the purpose of '--generator-output', but it is supported behaviour.
-test.writable(test.workpath('relocate/actions/build'), True)
-test.writable(test.workpath('relocate/actions/subdir1/build'), True)
-test.writable(test.workpath('relocate/actions/subdir1/actions-out'), True)
-test.writable(test.workpath('relocate/actions/subdir2/build'), True)
-test.writable(test.workpath('relocate/actions/subdir2/actions-out'), True)
-
-test.build('actions.gyp', test.ALL, chdir='relocate/gypfiles')
-
-expect = """\
-Hello from program.c
-Hello from make-prog1.py
-Hello from make-prog2.py
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/actions/subdir1'
-else:
- chdir = 'relocate/gypfiles'
-test.run_built_executable('program', chdir=chdir, stdout=expect)
-
-test.must_match('relocate/actions/subdir2/actions-out/file.out',
- "Hello from make-file.py\n")
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies file copies with --generator-output using an explicit build
-target of 'all'.
-"""
-
-import TestGyp
-
-# Android doesn't support --generator-output.
-test = TestGyp.TestGyp(formats=['!android'])
-
-test.writable(test.workpath('copies'), False)
-
-test.run_gyp('copies.gyp',
- '--generator-output=' + test.workpath('gypfiles'),
- '-G', 'xcode_ninja_target_pattern=^(?!copies_null)',
- chdir='copies')
-
-test.writable(test.workpath('copies'), True)
-
-test.relocate('copies', 'relocate/copies')
-test.relocate('gypfiles', 'relocate/gypfiles')
-
-test.writable(test.workpath('relocate/copies'), False)
-
-test.writable(test.workpath('relocate/copies/build'), True)
-test.writable(test.workpath('relocate/copies/copies-out'), True)
-test.writable(test.workpath('relocate/copies/subdir/build'), True)
-test.writable(test.workpath('relocate/copies/subdir/copies-out'), True)
-
-test.build('copies.gyp', test.ALL, chdir='relocate/gypfiles')
-
-test.must_match(['relocate', 'copies', 'copies-out', 'file1'],
- "file1 contents\n")
-
-if test.format == 'xcode':
- chdir = 'relocate/copies/build'
-elif test.format in ['make', 'ninja', 'xcode-ninja', 'cmake']:
- chdir = 'relocate/gypfiles/out'
-else:
- chdir = 'relocate/gypfiles'
-test.must_match([chdir, 'Default', 'copies-out', 'file2'], "file2 contents\n")
-
-test.must_match(['relocate', 'copies', 'subdir', 'copies-out', 'file3'],
- "file3 contents\n")
-
-if test.format == 'xcode':
- chdir = 'relocate/copies/subdir/build'
-elif test.format in ['make', 'ninja', 'xcode-ninja', 'cmake']:
- chdir = 'relocate/gypfiles/out'
-else:
- chdir = 'relocate/gypfiles'
-test.must_match([chdir, 'Default', 'copies-out', 'file4'], "file4 contents\n")
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright 2014 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.
-
-"""
-Verifies building a project hierarchy created when the --generator-output=
-and --depth= options is used to put the build configuration files in a separate
-directory tree.
-"""
-
-import TestGyp
-import os
-
-# This is a regression test for the make generator only.
-test = TestGyp.TestGyp(formats=['make'])
-
-test.writable(test.workpath('src'), False)
-
-toplevel_dir = os.path.basename(test.workpath())
-
-test.run_gyp(os.path.join(toplevel_dir, 'src', 'prog1.gyp'),
- '-Dset_symroot=1',
- '--generator-output=gypfiles',
- depth=toplevel_dir,
- chdir='..')
-
-test.writable(test.workpath('src/build'), True)
-test.writable(test.workpath('src/subdir2/build'), True)
-test.writable(test.workpath('src/subdir3/build'), True)
-
-test.build('prog1.gyp', test.ALL, chdir='gypfiles')
-
-chdir = 'gypfiles'
-
-expect = """\
-Hello from %s
-Hello from inc.h
-Hello from inc1/include1.h
-Hello from inc2/include2.h
-Hello from inc3/include3.h
-Hello from subdir2/deeper/deeper.h
-"""
-
-if test.format == 'xcode':
- chdir = 'src'
-test.run_built_executable('prog1', chdir=chdir, stdout=expect % 'prog1.c')
-
-if test.format == 'xcode':
- chdir = 'src/subdir2'
-test.run_built_executable('prog2', chdir=chdir, stdout=expect % 'prog2.c')
-
-if test.format == 'xcode':
- chdir = 'src/subdir3'
-test.run_built_executable('prog3', chdir=chdir, stdout=expect % 'prog3.c')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies mac bundles work with --generator-output.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=[])
-
- MAC_BUNDLE_DIR = 'mac-bundle'
- GYPFILES_DIR = 'gypfiles'
- test.writable(test.workpath(MAC_BUNDLE_DIR), False)
- test.run_gyp('test.gyp',
- '--generator-output=' + test.workpath(GYPFILES_DIR),
- chdir=MAC_BUNDLE_DIR)
- test.writable(test.workpath(MAC_BUNDLE_DIR), True)
-
- test.build('test.gyp', test.ALL, chdir=GYPFILES_DIR)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a project hierarchy created with the --generator-output=
-option can be built even when it's relocated to a different path.
-"""
-
-import TestGyp
-
-# Android doesn't support --generator-output.
-test = TestGyp.TestGyp(formats=['!android'])
-
-test.writable(test.workpath('src'), False)
-
-test.run_gyp('prog1.gyp',
- '-Dset_symroot=1',
- '--generator-output=' + test.workpath('gypfiles'),
- chdir='src')
-
-test.writable(test.workpath('src'), True)
-
-test.relocate('src', 'relocate/src')
-test.relocate('gypfiles', 'relocate/gypfiles')
-
-test.writable(test.workpath('relocate/src'), False)
-
-test.writable(test.workpath('relocate/src/build'), True)
-test.writable(test.workpath('relocate/src/subdir2/build'), True)
-test.writable(test.workpath('relocate/src/subdir3/build'), True)
-
-test.build('prog1.gyp', test.ALL, chdir='relocate/gypfiles')
-
-chdir = 'relocate/gypfiles'
-
-expect = """\
-Hello from %s
-Hello from inc.h
-Hello from inc1/include1.h
-Hello from inc2/include2.h
-Hello from inc3/include3.h
-Hello from subdir2/deeper/deeper.h
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/src'
-test.run_built_executable('prog1', chdir=chdir, stdout=expect % 'prog1.c')
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir2'
-test.run_built_executable('prog2', chdir=chdir, stdout=expect % 'prog2.c')
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir3'
-test.run_built_executable('prog3', chdir=chdir, stdout=expect % 'prog3.c')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies --generator-output= behavior when using rules.
-"""
-
-import TestGyp
-
-# Android doesn't support --generator-output.
-test = TestGyp.TestGyp(formats=['!android'])
-
-test.writable(test.workpath('rules'), False)
-
-test.run_gyp('rules.gyp',
- '--generator-output=' + test.workpath('gypfiles'),
- chdir='rules')
-
-test.writable(test.workpath('rules'), True)
-
-test.relocate('rules', 'relocate/rules')
-test.relocate('gypfiles', 'relocate/gypfiles')
-
-test.writable(test.workpath('relocate/rules'), False)
-
-test.writable(test.workpath('relocate/rules/build'), True)
-test.writable(test.workpath('relocate/rules/subdir1/build'), True)
-test.writable(test.workpath('relocate/rules/subdir2/build'), True)
-test.writable(test.workpath('relocate/rules/subdir2/rules-out'), True)
-
-test.build('rules.gyp', test.ALL, chdir='relocate/gypfiles')
-
-expect = """\
-Hello from program.c
-Hello from function1.in1
-Hello from function2.in1
-Hello from define3.in0
-Hello from define4.in0
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/rules/subdir1'
-else:
- chdir = 'relocate/gypfiles'
-test.run_built_executable('program', chdir=chdir, stdout=expect)
-
-test.must_match('relocate/rules/subdir2/rules-out/file1.out',
- "Hello from file1.in0\n")
-test.must_match('relocate/rules/subdir2/rules-out/file2.out',
- "Hello from file2.in0\n")
-test.must_match('relocate/rules/subdir2/rules-out/file3.out',
- "Hello from file3.in1\n")
-test.must_match('relocate/rules/subdir2/rules-out/file4.out',
- "Hello from file4.in1\n")
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies building a target from a .gyp file a few subdirectories
-deep when the --generator-output= option is used to put the build
-configuration files in a separate directory tree.
-"""
-
-import TestGyp
-
-# Android doesn't support --generator-output.
-test = TestGyp.TestGyp(formats=['!android'])
-
-test.writable(test.workpath('src'), False)
-
-test.writable(test.workpath('src/subdir2/deeper/build'), True)
-
-test.run_gyp('deeper.gyp',
- '-Dset_symroot=1',
- '--generator-output=' + test.workpath('gypfiles'),
- chdir='src/subdir2/deeper')
-
-test.build('deeper.gyp', test.ALL, chdir='gypfiles')
-
-chdir = 'gypfiles'
-
-if test.format == 'xcode':
- chdir = 'src/subdir2/deeper'
-test.run_built_executable('deeper',
- chdir=chdir,
- stdout="Hello from deeper.c\n")
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies building a target when the --generator-output= option is used to put
-the build configuration files in a separate directory tree referenced by a
-symlink.
-"""
-
-import TestGyp
-import os
-
-# Android doesn't support --generator-output.
-test = TestGyp.TestGyp(formats=['!android'])
-if not hasattr(os, 'symlink'):
- test.skip_test('Missing os.symlink -- skipping test.\n')
-
-test.writable(test.workpath('src'), False)
-
-test.writable(test.workpath('src/subdir2/deeper/build'), True)
-
-test.subdir(test.workpath('build'))
-test.subdir(test.workpath('build/deeper'))
-test.symlink('build/deeper', test.workpath('symlink'))
-
-test.writable(test.workpath('build/deeper'), True)
-test.run_gyp('deeper.gyp',
- '-Dset_symroot=2',
- '--generator-output=' + test.workpath('symlink'),
- chdir='src/subdir2/deeper')
-
-chdir = 'symlink'
-test.build('deeper.gyp', test.ALL, chdir=chdir)
-
-if test.format == 'xcode':
- chdir = 'src/subdir2/deeper'
-test.run_built_executable('deeper',
- chdir=chdir,
- stdout="Hello from deeper.c\n")
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies building a project hierarchy created when the --generator-output=
-option is used to put the build configuration files in a separate
-directory tree.
-"""
-
-import TestGyp
-
-# Android doesn't support --generator-output.
-test = TestGyp.TestGyp(formats=['!android'])
-
-test.writable(test.workpath('src'), False)
-
-test.run_gyp('prog1.gyp',
- '-Dset_symroot=1',
- '--generator-output=' + test.workpath('gypfiles'),
- chdir='src')
-
-test.writable(test.workpath('src/build'), True)
-test.writable(test.workpath('src/subdir2/build'), True)
-test.writable(test.workpath('src/subdir3/build'), True)
-
-test.build('prog1.gyp', test.ALL, chdir='gypfiles')
-
-chdir = 'gypfiles'
-
-expect = """\
-Hello from %s
-Hello from inc.h
-Hello from inc1/include1.h
-Hello from inc2/include2.h
-Hello from inc3/include3.h
-Hello from subdir2/deeper/deeper.h
-"""
-
-if test.format == 'xcode':
- chdir = 'src'
-test.run_built_executable('prog1', chdir=chdir, stdout=expect % 'prog1.c')
-
-if test.format == 'xcode':
- chdir = 'src/subdir2'
-test.run_built_executable('prog2', chdir=chdir, stdout=expect % 'prog2.c')
-
-if test.format == 'xcode':
- chdir = 'src/subdir3'
-test.run_built_executable('prog3', chdir=chdir, stdout=expect % 'prog3.c')
-
-test.pass_test()
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.google.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>ause</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>${MACOSX_DEPLOYMENT_TARGET}</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
+++ /dev/null
-int main() {}
+++ /dev/null
-A text file.
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App Gyp',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'main.c',
- ],
- 'mac_bundle_resources': [
- 'resource.sb',
- ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- 'ORDER_FILE': 'app.order',
- 'GCC_PREFIX_HEADER': 'header.h',
- 'GCC_PRECOMPILE_PREFIX_HEADER': 'YES',
- },
- },
- ],
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import sys
-
-contents = open(sys.argv[1], 'r').read()
-open(sys.argv[2], 'wb').write(contents)
-
-sys.exit(0)
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'pull_in_all_actions',
- 'type': 'none',
- 'dependencies': [
- 'subdir1/executable.gyp:*',
- 'subdir2/none.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-#define STRING3 "Hello from define3.in0\n"
+++ /dev/null
-#define STRING4 "Hello from define4.in0\n"
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'program.c',
- 'function1.in1',
- 'function2.in1',
- 'define3.in0',
- 'define4.in0',
- ],
- 'include_dirs': [
- '<(INTERMEDIATE_DIR)',
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file_0',
- 'extension': 'in0',
- 'inputs': [
- '../copy-file.py',
- ],
- 'outputs': [
- # TODO: fix Make to support generated files not
- # in a variable-named path like <(INTERMEDIATE_DIR)
- #'<(RULE_INPUT_ROOT).c',
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).h',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 0,
- },
- {
- 'rule_name': 'copy_file_1',
- 'extension': 'in1',
- 'inputs': [
- '../copy-file.py',
- ],
- 'outputs': [
- # TODO: fix Make to support generated files not
- # in a variable-named path like <(INTERMEDIATE_DIR)
- #'<(RULE_INPUT_ROOT).c',
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).c',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-void function1(void)
-{
- printf("Hello from function1.in1\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-void function2(void)
-{
- printf("Hello from function2.in1\n");
-}
+++ /dev/null
-#include <stdio.h>
-#include "define3.h"
-#include "define4.h"
-
-extern void function1(void);
-extern void function2(void);
-extern void function3(void);
-extern void function4(void);
-
-int main(void)
-{
- printf("Hello from program.c\n");
- function1();
- function2();
- printf("%s", STRING3);
- printf("%s", STRING4);
- return 0;
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-Hello from file1.in0
+++ /dev/null
-Hello from file2.in0
+++ /dev/null
-Hello from file3.in1
+++ /dev/null
-Hello from file4.in1
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'files',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'file1.in0',
- 'file2.in0',
- 'file3.in1',
- 'file4.in1',
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file_0',
- 'extension': 'in0',
- 'inputs': [
- '../copy-file.py',
- ],
- 'outputs': [
- 'rules-out/<(RULE_INPUT_ROOT).out',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 0,
- },
- {
- 'rule_name': 'copy_file_1',
- 'extension': 'in1',
- 'inputs': [
- '../copy-file.py',
- ],
- 'outputs': [
- 'rules-out/<(RULE_INPUT_ROOT).out',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-#define INC_STRING "inc.h"
+++ /dev/null
-#define INCLUDE1_STRING "inc1/include1.h"
+++ /dev/null
-#include <stdio.h>
-
-#include "inc.h"
-#include "include1.h"
-#include "include2.h"
-#include "include3.h"
-#include "deeper.h"
-
-int main(void)
-{
- printf("Hello from prog1.c\n");
- printf("Hello from %s\n", INC_STRING);
- printf("Hello from %s\n", INCLUDE1_STRING);
- printf("Hello from %s\n", INCLUDE2_STRING);
- printf("Hello from %s\n", INCLUDE3_STRING);
- printf("Hello from %s\n", DEEPER_STRING);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- 'symroot.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog1',
- 'type': 'executable',
- 'dependencies': [
- 'subdir2/prog2.gyp:prog2',
- ],
- 'include_dirs': [
- '.',
- 'inc1',
- 'subdir2/inc2',
- 'subdir3/inc3',
- 'subdir2/deeper',
- ],
- 'sources': [
- 'prog1.c',
- ],
- },
- ],
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from deeper.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../../symroot.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'deeper',
- 'type': 'executable',
- 'sources': [
- 'deeper.c',
- ],
- },
- ],
-}
+++ /dev/null
-#define DEEPER_STRING "subdir2/deeper/deeper.h"
+++ /dev/null
-#define INCLUDE2_STRING "inc2/include2.h"
+++ /dev/null
-#include <stdio.h>
-
-#include "inc.h"
-#include "include1.h"
-#include "include2.h"
-#include "include3.h"
-#include "deeper.h"
-
-int main(void)
-{
- printf("Hello from prog2.c\n");
- printf("Hello from %s\n", INC_STRING);
- printf("Hello from %s\n", INCLUDE1_STRING);
- printf("Hello from %s\n", INCLUDE2_STRING);
- printf("Hello from %s\n", INCLUDE3_STRING);
- printf("Hello from %s\n", DEEPER_STRING);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../symroot.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog2',
- 'type': 'executable',
- 'include_dirs': [
- '..',
- '../inc1',
- 'inc2',
- '../subdir3/inc3',
- 'deeper',
- ],
- 'dependencies': [
- '../subdir3/prog3.gyp:prog3',
- ],
- 'sources': [
- 'prog2.c',
- ],
- },
- ],
-}
+++ /dev/null
-A place-holder for this Xcode build output directory, so that the
-test script can verify that .xcodeproj files are not created in
-their normal location by making the src/ read-only, and then
-selectively making this build directory writable.
+++ /dev/null
-#define INCLUDE3_STRING "inc3/include3.h"
+++ /dev/null
-#include <stdio.h>
-
-#include "inc.h"
-#include "include1.h"
-#include "include2.h"
-#include "include3.h"
-#include "deeper.h"
-
-int main(void)
-{
- printf("Hello from prog3.c\n");
- printf("Hello from %s\n", INC_STRING);
- printf("Hello from %s\n", INCLUDE1_STRING);
- printf("Hello from %s\n", INCLUDE2_STRING);
- printf("Hello from %s\n", INCLUDE3_STRING);
- printf("Hello from %s\n", DEEPER_STRING);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../symroot.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog3',
- 'type': 'executable',
- 'include_dirs': [
- '..',
- '../inc1',
- '../subdir2/inc2',
- 'inc3',
- '../subdir2/deeper',
- ],
- 'sources': [
- 'prog3.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'variables': {
- 'set_symroot%': 0,
- },
- 'conditions': [
- ['set_symroot == 1', {
- 'xcode_settings': {
- 'SYMROOT': '<(DEPTH)/build',
- },
- }],
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_target',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'test_action',
- 'inputs': [],
- 'outputs': [ 'action.txt' ],
- 'action': [
- 'python',
- 'echo.py',
- '<(key)',
- '<(_outputs)',
- ],
- 'msvs_cygwin_shell': 0,
- }
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-import sys
-
-f = open(sys.argv[2], 'w+')
-f.write(sys.argv[1])
-f.close()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that when multiple values are supplied for a gyp define, the last one
-is used.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-os.environ['GYP_DEFINES'] = 'key=value1 key=value2 key=value3'
-test.run_gyp('defines.gyp')
-
-test.build('defines.gyp')
-test.must_contain('action.txt', 'value3')
-
-# The last occurrence of a repeated set should take precedence over other
-# values.
-os.environ['GYP_DEFINES'] = 'key=repeated_value key=value1 key=repeated_value'
-test.run_gyp('defines.gyp')
-
-if test.format == 'msvs' and not test.uses_msbuild:
- # msvs versions before 2010 don't detect build rule changes not reflected
- # in file system timestamps. Rebuild to see differences.
- test.build('defines.gyp', rebuild=True)
-elif test.format == 'android':
- # The Android build system doesn't currently have a way to get files whose
- # build rules have changed (but whose timestamps haven't) to be rebuilt.
- # See bug http://code.google.com/p/gyp/issues/detail?id=308
- test.unlink('action.txt')
- test.build('defines.gyp')
-else:
- test.build('defines.gyp')
-test.must_contain('action.txt', 'repeated_value')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that when the same value is repeated for a gyp define, duplicates are
-stripped from the regeneration rule.
-"""
-
-import os
-import TestGyp
-
-# Regenerating build files when a gyp file changes is currently only supported
-# by the make generator.
-test = TestGyp.TestGyp(formats=['make'])
-
-os.environ['GYP_DEFINES'] = 'key=repeated_value key=value1 key=repeated_value'
-test.run_gyp('defines.gyp')
-test.build('defines.gyp')
-
-# The last occurrence of a repeated set should take precedence over other
-# values. See gyptest-multiple-values.py.
-test.must_contain('action.txt', 'repeated_value')
-
-# So the regeneration rule needs to use the correct order.
-test.must_not_contain(
- 'Makefile', '"-Dkey=repeated_value" "-Dkey=value1" "-Dkey=repeated_value"')
-test.must_contain('Makefile', '"-Dkey=value1" "-Dkey=repeated_value"')
-
-# Sleep so that the changed gyp file will have a newer timestamp than the
-# previously generated build files.
-test.sleep()
-os.utime("defines.gyp", None)
-
-test.build('defines.gyp')
-test.must_contain('action.txt', 'repeated_value')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verify that a hard_dependency that is exported is pulled in as a dependency
-for a target if the target is a static library and if the generator will
-remove dependencies between static libraries.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if test.format == 'dump_dependency_json':
- test.skip_test('Skipping test; dependency JSON does not adjust ' \
- 'static libraries.\n')
-
-test.run_gyp('hard_dependency.gyp', chdir='src')
-
-chdir = 'relocate/src'
-test.relocate('src', chdir)
-
-test.build('hard_dependency.gyp', 'c', chdir=chdir)
-
-# The 'a' static library should be built, as it has actions with side-effects
-# that are necessary to compile 'c'. Even though 'c' does not directly depend
-# on 'a', because 'a' is a hard_dependency that 'b' exports, 'c' should import
-# it as a hard_dependency and ensure it is built before building 'c'.
-test.built_file_must_exist('a', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_not_exist('b', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_exist('c', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_not_exist('d', type=test.STATIC_LIB, chdir=chdir)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verify that a hard_dependency that is not exported is not pulled in as a
-dependency for a target if the target does not explicitly specify a dependency
-and none of its dependencies export the hard_dependency.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if test.format == 'dump_dependency_json':
- test.skip_test('Skipping test; dependency JSON does not adjust ' \
- 'static libaries.\n')
-
-test.run_gyp('hard_dependency.gyp', chdir='src')
-
-chdir = 'relocate/src'
-test.relocate('src', chdir)
-
-test.build('hard_dependency.gyp', 'd', chdir=chdir)
-
-# Because 'c' does not export a hard_dependency, only the target 'd' should
-# be built. This is because the 'd' target does not need the generated headers
-# in order to be compiled.
-test.built_file_must_not_exist('a', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_not_exist('b', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_not_exist('c', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_exist('d', type=test.STATIC_LIB, chdir=chdir)
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-#include "a.h"
-
-int funcA() {
- return 42;
-}
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-#ifndef A_H_
-#define A_H_
-
-#include "generated.h"
-
-int funcA();
-
-#endif // A_H_
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-#include "a.h"
-
-int funcB() {
- return funcA();
-}
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-#ifndef B_H_
-#define B_H_
-
-#include "a.h"
-
-int funcB();
-
-#endif // B_H_
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-#include "b.h"
-#include "c.h"
-
-int funcC() {
- return funcB();
-}
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-#ifndef C_H_
-#define C_H_
-
-int funcC();
-
-#endif // C_H_
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-#include "c.h"
-
-int funcD() {
- return funcC();
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-import sys
-
-f = open(sys.argv[1], 'wb')
-f.write('/* Hello World */\n')
-f.close()
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'static_library',
- 'sources': [
- 'a.c',
- 'a.h',
- ],
- 'hard_dependency': 1,
- 'actions': [
- {
- 'action_name': 'generate_headers',
- 'inputs': [
- 'emit.py'
- ],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/generated.h'
- ],
- 'action': [
- 'python',
- 'emit.py',
- '<(SHARED_INTERMEDIATE_DIR)/generated.h',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- },
- },
- {
- 'target_name': 'b',
- 'type': 'static_library',
- 'sources': [
- 'b.c',
- 'b.h',
- ],
- 'dependencies': [
- 'a',
- ],
- 'export_dependent_settings': [
- 'a',
- ],
- },
- {
- 'target_name': 'c',
- 'type': 'static_library',
- 'sources': [
- 'c.c',
- 'c.h',
- ],
- 'dependencies': [
- 'b',
- ],
- },
- {
- 'target_name': 'd',
- 'type': 'static_library',
- 'sources': [
- 'd.c',
- ],
- 'dependencies': [
- 'c',
- ],
- }
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies simplest-possible build of a "Hello, world!" program
-using an explicit build target of 'all'.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_all')
-
-test.run_gyp('hello.gyp')
-
-test.build('hello.gyp', test.ALL)
-
-test.run_built_executable('hello', stdout="Hello, world!\n")
-
-test.up_to_date('hello.gyp', test.ALL)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies simplest-possible build of a "Hello, world!" program
-using the default build target.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_default')
-
-test.run_gyp('hello.gyp')
-
-test.build('hello.gyp')
-
-test.run_built_executable('hello', stdout="Hello, world!\n")
-
-test.up_to_date('hello.gyp', test.DEFAULT)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies that Makefiles don't get rebuilt when a source gyp file changes and
-the disable_regeneration generator flag is set.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('hello.gyp', '-Gauto_regeneration=0')
-
-test.build('hello.gyp', test.ALL)
-
-test.run_built_executable('hello', stdout="Hello, world!\n")
-
-# Sleep so that the changed gyp file will have a newer timestamp than the
-# previously generated build files.
-test.sleep()
-test.write('hello.gyp', test.read('hello2.gyp'))
-
-test.build('hello.gyp', test.ALL)
-
-# Should still be the old executable, as regeneration was disabled.
-test.run_built_executable('hello', stdout="Hello, world!\n")
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that Makefiles get rebuilt when a source gyp file changes and
---generator-output is used.
-"""
-
-import TestGyp
-
-# Regenerating build files when a gyp file changes is currently only supported
-# by the make and Android generators, and --generator-output is not supported
-# by Android and ninja, so we can only test for make.
-test = TestGyp.TestGyp(formats=['make'])
-
-CHDIR='generator-output'
-
-test.run_gyp('hello.gyp', '--generator-output=%s' % CHDIR)
-
-test.build('hello.gyp', test.ALL, chdir=CHDIR)
-
-test.run_built_executable('hello', stdout="Hello, world!\n", chdir=CHDIR)
-
-# Sleep so that the changed gyp file will have a newer timestamp than the
-# previously generated build files.
-test.sleep()
-test.write('hello.gyp', test.read('hello2.gyp'))
-
-test.build('hello.gyp', test.ALL, chdir=CHDIR)
-
-test.run_built_executable('hello', stdout="Hello, two!\n", chdir=CHDIR)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that Makefiles get rebuilt when a source gyp file changes.
-"""
-
-import TestGyp
-
-# Regenerating build files when a gyp file changes is currently only supported
-# by the make generator.
-test = TestGyp.TestGyp(formats=['make'])
-
-test.run_gyp('hello.gyp')
-
-test.build('hello.gyp', test.ALL)
-
-test.run_built_executable('hello', stdout="Hello, world!\n")
-
-# Sleep so that the changed gyp file will have a newer timestamp than the
-# previously generated build files.
-test.sleep()
-test.write('hello.gyp', test.read('hello2.gyp'))
-
-test.build('hello.gyp', test.ALL)
-
-test.run_built_executable('hello', stdout="Hello, two!\n")
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies simplest-possible build of a "Hello, world!" program
-using an explicit build target of 'hello'.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_target')
-
-test.run_gyp('hello.gyp')
-
-test.build('hello.gyp', 'hello')
-
-test.run_built_executable('hello', stdout="Hello, world!\n")
-
-test.up_to_date('hello.gyp', 'hello')
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello, two!\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello2.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies inclusion of $HOME/.gyp/include.gypi works when --config-dir is
-specified.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-os.environ['HOME'] = os.path.abspath('home2')
-
-test.run_gyp('all.gyp', '--config-dir=~/.gyp_new', chdir='src')
-
-# After relocating, we should still be able to build (build file shouldn't
-# contain relative reference to ~/.gyp/include.gypi)
-test.relocate('src', 'relocate/src')
-
-test.build('all.gyp', test.ALL, chdir='relocate/src')
-
-test.run_built_executable('printfoo',
- chdir='relocate/src',
- stdout='FOO is fromhome3\n')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies inclusion of $HOME/.gyp_new/include.gypi works when GYP_CONFIG_DIR
-is set.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-os.environ['HOME'] = os.path.abspath('home')
-os.environ['GYP_CONFIG_DIR'] = os.path.join(os.path.abspath('home2'),
- '.gyp_new')
-
-test.run_gyp('all.gyp', chdir='src')
-
-# After relocating, we should still be able to build (build file shouldn't
-# contain relative reference to ~/.gyp_new/include.gypi)
-test.relocate('src', 'relocate/src')
-
-test.build('all.gyp', test.ALL, chdir='relocate/src')
-
-test.run_built_executable('printfoo',
- chdir='relocate/src',
- stdout='FOO is fromhome3\n')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies inclusion of $HOME/.gyp/include.gypi works properly with relocation
-and with regeneration.
-"""
-
-import os
-import TestGyp
-
-# Regenerating build files when a gyp file changes is currently only supported
-# by the make generator.
-test = TestGyp.TestGyp(formats=['make'])
-
-os.environ['HOME'] = os.path.abspath('home')
-
-test.run_gyp('all.gyp', chdir='src')
-
-# After relocating, we should still be able to build (build file shouldn't
-# contain relative reference to ~/.gyp/include.gypi)
-test.relocate('src', 'relocate/src')
-
-test.build('all.gyp', test.ALL, chdir='relocate/src')
-
-test.run_built_executable('printfoo',
- chdir='relocate/src',
- stdout='FOO is fromhome\n')
-
-# Building should notice any changes to ~/.gyp/include.gypi and regyp.
-test.sleep()
-
-test.write('home/.gyp/include.gypi', test.read('home2/.gyp/include.gypi'))
-
-test.build('all.gyp', test.ALL, chdir='relocate/src')
-
-test.run_built_executable('printfoo',
- chdir='relocate/src',
- stdout='FOO is fromhome2\n')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies inclusion of $HOME/.gyp/include.gypi works.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-os.environ['HOME'] = os.path.abspath('home')
-
-test.run_gyp('all.gyp', chdir='src')
-
-# After relocating, we should still be able to build (build file shouldn't
-# contain relative reference to ~/.gyp/include.gypi)
-test.relocate('src', 'relocate/src')
-
-test.build('all.gyp', test.ALL, chdir='relocate/src')
-
-test.run_built_executable('printfoo',
- chdir='relocate/src',
- stdout='FOO is fromhome\n')
-
-test.pass_test()
+++ /dev/null
-{
- 'variables': {
- 'foo': '"fromhome"',
- },
-}
+++ /dev/null
-{
- 'variables': {
- 'foo': '"fromhome2"',
- },
-}
+++ /dev/null
-{
- 'variables': {
- 'foo': '"fromhome3"',
- },
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'variables': {
- 'foo%': '"fromdefault"',
- },
- 'targets': [
- {
- 'target_name': 'printfoo',
- 'type': 'executable',
- 'sources': [
- 'printfoo.c',
- ],
- 'defines': [
- 'FOO=<(foo)',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("FOO is %s\n", FOO);
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies use of include_dirs when using an explicit build target of 'all'.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('includes.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('includes.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from includes.c
-Hello from inc.h
-Hello from include1.h
-Hello from subdir/inc2/include2.h
-Hello from shadow2/shadow.h
-"""
-test.run_built_executable('includes', stdout=expect, chdir='relocate/src')
-
-if test.format == 'xcode':
- chdir='relocate/src/subdir'
-else:
- chdir='relocate/src'
-
-expect = """\
-Hello from subdir/subdir_includes.c
-Hello from subdir/inc.h
-Hello from include1.h
-Hello from subdir/inc2/include2.h
-"""
-test.run_built_executable('subdir_includes', stdout=expect, chdir=chdir)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies use of include_dirs when using the default build target.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('includes.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('includes.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from includes.c
-Hello from inc.h
-Hello from include1.h
-Hello from subdir/inc2/include2.h
-Hello from shadow2/shadow.h
-"""
-test.run_built_executable('includes', stdout=expect, chdir='relocate/src')
-
-if test.format == 'xcode':
- chdir='relocate/src/subdir'
-else:
- chdir='relocate/src'
-
-expect = """\
-Hello from subdir/subdir_includes.c
-Hello from subdir/inc.h
-Hello from include1.h
-Hello from subdir/inc2/include2.h
-"""
-test.run_built_executable('subdir_includes', stdout=expect, chdir=chdir)
-
-test.pass_test()
+++ /dev/null
-#define INC_STRING "inc.h"
+++ /dev/null
-#define INCLUDE1_STRING "include1.h"
+++ /dev/null
-#include <stdio.h>
-
-#include "inc.h"
-#include "include1.h"
-#include "include2.h"
-#include "shadow.h"
-
-int main(void)
-{
- printf("Hello from includes.c\n");
- printf("Hello from %s\n", INC_STRING);
- printf("Hello from %s\n", INCLUDE1_STRING);
- printf("Hello from %s\n", INCLUDE2_STRING);
- /* Test that include_dirs happen first: The gyp file has a -Ishadow1
- cflag and an include_dir of shadow2. Including shadow.h should get
- the shadow.h from the include_dir. */
- printf("Hello from %s\n", SHADOW_STRING);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'includes',
- 'type': 'executable',
- 'dependencies': [
- 'subdir/subdir_includes.gyp:subdir_includes',
- ],
- 'cflags': [
- '-Ishadow1',
- ],
- 'include_dirs': [
- '.',
- 'inc1',
- 'shadow2',
- 'subdir/inc2',
- ],
- 'sources': [
- 'includes.c',
- ],
- },
- ],
-}
+++ /dev/null
-#define SHADOW_STRING "shadow1/shadow.h"
+++ /dev/null
-#define SHADOW_STRING "shadow2/shadow.h"
+++ /dev/null
-#define INC_STRING "subdir/inc.h"
+++ /dev/null
-#define INCLUDE2_STRING "subdir/inc2/include2.h"
+++ /dev/null
-#include <stdio.h>
-
-#include "inc.h"
-#include "include1.h"
-#include "include2.h"
-
-int main(void)
-{
- printf("Hello from subdir/subdir_includes.c\n");
- printf("Hello from %s\n", INC_STRING);
- printf("Hello from %s\n", INCLUDE1_STRING);
- printf("Hello from %s\n", INCLUDE2_STRING);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'subdir_includes',
- 'type': 'executable',
- 'include_dirs': [
- '.',
- '../inc1',
- 'inc2',
- ],
- 'sources': [
- 'subdir_includes.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that targets have independent INTERMEDIATE_DIRs.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('test.gyp', chdir='src')
-
-test.build('test.gyp', 'target1', chdir='src')
-# Check stuff exists.
-intermediate_file1 = test.read('src/outfile.txt')
-test.must_contain(intermediate_file1, 'target1')
-
-shared_intermediate_file1 = test.read('src/shared_outfile.txt')
-test.must_contain(shared_intermediate_file1, 'shared_target1')
-
-test.run_gyp('test2.gyp', chdir='src')
-
-# Force the shared intermediate to be rebuilt.
-test.sleep()
-test.touch('src/shared_infile.txt')
-test.build('test2.gyp', 'target2', chdir='src')
-# Check INTERMEDIATE_DIR file didn't get overwritten but SHARED_INTERMEDIATE_DIR
-# file did.
-intermediate_file2 = test.read('src/outfile.txt')
-test.must_contain(intermediate_file1, 'target1')
-test.must_contain(intermediate_file2, 'target2')
-
-shared_intermediate_file2 = test.read('src/shared_outfile.txt')
-if shared_intermediate_file1 != shared_intermediate_file2:
- test.fail_test(shared_intermediate_file1 + ' != ' + shared_intermediate_file2)
-
-test.must_contain(shared_intermediate_file1, 'shared_target2')
-test.must_contain(shared_intermediate_file2, 'shared_target2')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-# Takes 3 arguments. Writes the 1st argument to the file in the 2nd argument,
-# and writes the absolute path to the file in the 2nd argument to the file in
-# the 3rd argument.
-
-import os
-import shlex
-import sys
-
-if len(sys.argv) == 3 and ' ' in sys.argv[2]:
- sys.argv[2], fourth = shlex.split(sys.argv[2].replace('\\', '\\\\'))
- sys.argv.append(fourth)
-
-#print >>sys.stderr, sys.argv
-
-with open(sys.argv[2], 'w') as f:
- f.write(sys.argv[1])
-
-with open(sys.argv[3], 'w') as f:
- f.write(os.path.abspath(sys.argv[2]))
+++ /dev/null
-dummy input
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'target1',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'intermediate',
- 'inputs': [],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/intermediate_out.txt',
- 'outfile.txt',
- ],
- 'action': [
- 'python', 'script.py', 'target1', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'shared_intermediate',
- 'inputs': [
- 'shared_infile.txt',
- ],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/intermediate_out.txt',
- 'shared_outfile.txt',
- ],
- 'action': [
- 'python', 'script.py', 'shared_target1', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'target2',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'intermediate',
- 'inputs': [],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/intermediate_out.txt',
- 'outfile.txt',
- ],
- 'action': [
- 'python', 'script.py', 'target2', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'shared_intermediate',
- 'inputs': [
- 'shared_infile.txt',
- ],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/intermediate_out.txt',
- 'shared_outfile.txt',
- ],
- 'action': [
- 'python', 'script.py', 'shared_target2', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-/* Localized versions of Info.plist keys */
-
-NSHumanReadableCopyright = "Copyright ©2011 Google Inc."
+++ /dev/null
-/* Localized versions of Info.plist keys */
-
-NSHumanReadableCopyright = "Copyright ©2011 Google Inc.";
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1060</int>
- <string key="IBDocument.SystemVersion">10A324</string>
- <string key="IBDocument.InterfaceBuilderVersion">719</string>
- <string key="IBDocument.AppKitVersion">1015</string>
- <string key="IBDocument.HIToolboxVersion">418.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">719</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="371"/>
- <integer value="29"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomObject" id="1021">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSCustomObject" id="1014">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1050">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSMenu" id="649796088">
- <string key="NSTitle">AMainMenu</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="694149608">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">TestApp</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="35465992">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="502551668">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="110575045">
- <string key="NSTitle">TestApp</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="238522557">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">About TestApp</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="304266470">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="609285721">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Preferences…</string>
- <string key="NSKeyEquiv">,</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="481834944">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1046388886">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Services</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="752062318">
- <string key="NSTitle">Services</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <string key="NSName">_NSServicesMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="646227648">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="755159360">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide TestApp</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="342932134">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide Others</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="908899353">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Show All</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1056857174">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="632727374">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Quit TestApp</string>
- <string key="NSKeyEquiv">q</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSAppleMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="379814623">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">File</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="720053764">
- <string key="NSTitle">File</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="705341025">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">New</string>
- <string key="NSKeyEquiv">n</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="722745758">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open…</string>
- <string key="NSKeyEquiv">o</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1025936716">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open Recent</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="1065607017">
- <string key="NSTitle">Open Recent</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="759406840">
- <reference key="NSMenu" ref="1065607017"/>
- <string key="NSTitle">Clear Menu</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSRecentDocumentsMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="425164168">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="776162233">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Close</string>
- <string key="NSKeyEquiv">w</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1023925487">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Save</string>
- <string key="NSKeyEquiv">s</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="117038363">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Save As…</string>
- <string key="NSKeyEquiv">S</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="579971712">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Revert to Saved</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1010469920">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="294629803">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Page Setup...</string>
- <string key="NSKeyEquiv">P</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSToolTip"/>
- </object>
- <object class="NSMenuItem" id="49223823">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Print…</string>
- <string key="NSKeyEquiv">p</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="952259628">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Edit</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="789758025">
- <string key="NSTitle">Edit</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1058277027">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Undo</string>
- <string key="NSKeyEquiv">z</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="790794224">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Redo</string>
- <string key="NSKeyEquiv">Z</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1040322652">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="296257095">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Cut</string>
- <string key="NSKeyEquiv">x</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="860595796">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Copy</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="29853731">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Paste</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="82994268">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Paste and Match Style</string>
- <string key="NSKeyEquiv">V</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="437104165">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Delete</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="583158037">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Select All</string>
- <string key="NSKeyEquiv">a</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="212016141">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="892235320">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Find</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="963351320">
- <string key="NSTitle">Find</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="447796847">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find…</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="326711663">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Next</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="270902937">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Previous</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="159080638">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Use Selection for Find</string>
- <string key="NSKeyEquiv">e</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">7</int>
- </object>
- <object class="NSMenuItem" id="88285865">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Jump to Selection</string>
- <string key="NSKeyEquiv">j</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="972420730">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Spelling and Grammar</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="769623530">
- <string key="NSTitle">Spelling and Grammar</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="679648819">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Show Spelling and Grammar</string>
- <string key="NSKeyEquiv">:</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="96193923">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Document Now</string>
- <string key="NSKeyEquiv">;</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="859480356">
- <reference key="NSMenu" ref="769623530"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="948374510">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Spelling While Typing</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="967646866">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Grammar With Spelling</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="795346622">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Correct Spelling Automatically</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="507821607">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Substitutions</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="698887838">
- <string key="NSTitle">Substitutions</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="65139061">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Show Substitutions</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="19036812">
- <reference key="NSMenu" ref="698887838"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="605118523">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Copy/Paste</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="197661976">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Quotes</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="672708820">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Dashes</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="708854459">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Links</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="537092702">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Text Replacement</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="288088188">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Transformations</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="579392910">
- <string key="NSTitle">Transformations</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1060694897">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Make Upper Case</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="879586729">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Make Lower Case</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="56570060">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Capitalize</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="676164635">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Speech</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="785027613">
- <string key="NSTitle">Speech</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="731782645">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Start Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="680220178">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Stop Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="302598603">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Format</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="941447902">
- <string key="NSTitle">Format</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="792887677">
- <reference key="NSMenu" ref="941447902"/>
- <string key="NSTitle">Font</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="786677654">
- <string key="NSTitle">Font</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="159677712">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Show Fonts</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="305399458">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Bold</string>
- <string key="NSKeyEquiv">b</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="814362025">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Italic</string>
- <string key="NSKeyEquiv">i</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="330926929">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Underline</string>
- <string key="NSKeyEquiv">u</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="533507878">
- <reference key="NSMenu" ref="786677654"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="158063935">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Bigger</string>
- <string key="NSKeyEquiv">+</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="885547335">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Smaller</string>
- <string key="NSKeyEquiv">-</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">4</int>
- </object>
- <object class="NSMenuItem" id="901062459">
- <reference key="NSMenu" ref="786677654"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="767671776">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Kern</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="175441468">
- <string key="NSTitle">Kern</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="252969304">
- <reference key="NSMenu" ref="175441468"/>
- <string key="NSTitle">Use Default</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="766922938">
- <reference key="NSMenu" ref="175441468"/>
- <string key="NSTitle">Use None</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="677519740">
- <reference key="NSMenu" ref="175441468"/>
- <string key="NSTitle">Tighten</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="238351151">
- <reference key="NSMenu" ref="175441468"/>
- <string key="NSTitle">Loosen</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="691570813">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Ligature</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="1058217995">
- <string key="NSTitle">Ligature</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="706297211">
- <reference key="NSMenu" ref="1058217995"/>
- <string key="NSTitle">Use Default</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="568384683">
- <reference key="NSMenu" ref="1058217995"/>
- <string key="NSTitle">Use None</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="663508465">
- <reference key="NSMenu" ref="1058217995"/>
- <string key="NSTitle">Use All</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="769124883">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Baseline</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="18263474">
- <string key="NSTitle">Baseline</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="257962622">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Use Default</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="644725453">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Superscript</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1037576581">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Subscript</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="941806246">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Raise</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1045724900">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Lower</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="739652853">
- <reference key="NSMenu" ref="786677654"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1012600125">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Show Colors</string>
- <string key="NSKeyEquiv">C</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="214559597">
- <reference key="NSMenu" ref="786677654"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="596732606">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Copy Style</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="393423671">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Paste Style</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSFontMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="215659978">
- <reference key="NSMenu" ref="941447902"/>
- <string key="NSTitle">Text</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="446991534">
- <string key="NSTitle">Text</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="875092757">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Align Left</string>
- <string key="NSKeyEquiv">{</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="630155264">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Center</string>
- <string key="NSKeyEquiv">|</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="945678886">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Justify</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="512868991">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Align Right</string>
- <string key="NSKeyEquiv">}</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="163117631">
- <reference key="NSMenu" ref="446991534"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="31516759">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Writing Direction</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="956096989">
- <string key="NSTitle">Writing Direction</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="257099033">
- <reference key="NSMenu" ref="956096989"/>
- <bool key="NSIsDisabled">YES</bool>
- <string key="NSTitle">Paragraph</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="551969625">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="249532473">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="607364498">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="508151438">
- <reference key="NSMenu" ref="956096989"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="981751889">
- <reference key="NSMenu" ref="956096989"/>
- <bool key="NSIsDisabled">YES</bool>
- <string key="NSTitle">Selection</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="380031999">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="825984362">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="560145579">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="908105787">
- <reference key="NSMenu" ref="446991534"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="644046920">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Show Ruler</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="231811626">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Copy Ruler</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1310720</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="883618387">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Paste Ruler</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1310720</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="586577488">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">View</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="466310130">
- <string key="NSTitle">View</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="102151532">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Show Toolbar</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="237841660">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Customize Toolbar…</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="713487014">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Window</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="835318025">
- <string key="NSTitle">Window</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1011231497">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Minimize</string>
- <string key="NSKeyEquiv">m</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="575023229">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Zoom</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="299356726">
- <reference key="NSMenu" ref="835318025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="625202149">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Bring All to Front</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSWindowsMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="448692316">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Help</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="992780483">
- <string key="NSTitle">Help</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="105068016">
- <reference key="NSMenu" ref="992780483"/>
- <string key="NSTitle">TestApp Help</string>
- <string key="NSKeyEquiv">?</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSHelpMenu</string>
- </object>
- </object>
- </object>
- <string key="NSName">_NSMainMenu</string>
- </object>
- <object class="NSWindowTemplate" id="972006081">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{335, 390}, {480, 360}}</string>
- <int key="NSWTFlags">1954021376</int>
- <string key="NSWindowTitle">TestApp</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="439893737">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrameSize">{480, 360}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSCustomObject" id="976324537">
- <string key="NSClassName">TestAppAppDelegate</string>
- </object>
- <object class="NSCustomObject" id="755631768">
- <string key="NSClassName">NSFontManager</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performMiniaturize:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1011231497"/>
- </object>
- <int key="connectionID">37</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">arrangeInFront:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="625202149"/>
- </object>
- <int key="connectionID">39</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">print:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="49223823"/>
- </object>
- <int key="connectionID">86</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runPageLayout:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="294629803"/>
- </object>
- <int key="connectionID">87</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">clearRecentDocuments:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="759406840"/>
- </object>
- <int key="connectionID">127</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontStandardAboutPanel:</string>
- <reference key="source" ref="1021"/>
- <reference key="destination" ref="238522557"/>
- </object>
- <int key="connectionID">142</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performClose:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="776162233"/>
- </object>
- <int key="connectionID">193</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleContinuousSpellChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="948374510"/>
- </object>
- <int key="connectionID">222</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">undo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1058277027"/>
- </object>
- <int key="connectionID">223</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copy:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="860595796"/>
- </object>
- <int key="connectionID">224</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">checkSpelling:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="96193923"/>
- </object>
- <int key="connectionID">225</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">paste:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="29853731"/>
- </object>
- <int key="connectionID">226</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">stopSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="680220178"/>
- </object>
- <int key="connectionID">227</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">cut:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="296257095"/>
- </object>
- <int key="connectionID">228</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showGuessPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="679648819"/>
- </object>
- <int key="connectionID">230</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">redo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="790794224"/>
- </object>
- <int key="connectionID">231</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">selectAll:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="583158037"/>
- </object>
- <int key="connectionID">232</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">startSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="731782645"/>
- </object>
- <int key="connectionID">233</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">delete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="437104165"/>
- </object>
- <int key="connectionID">235</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performZoom:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="575023229"/>
- </object>
- <int key="connectionID">240</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="447796847"/>
- </object>
- <int key="connectionID">241</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">centerSelectionInVisibleArea:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="88285865"/>
- </object>
- <int key="connectionID">245</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleGrammarChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="967646866"/>
- </object>
- <int key="connectionID">347</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleSmartInsertDelete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="605118523"/>
- </object>
- <int key="connectionID">355</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticQuoteSubstitution:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="197661976"/>
- </object>
- <int key="connectionID">356</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticLinkDetection:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="708854459"/>
- </object>
- <int key="connectionID">357</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1023925487"/>
- </object>
- <int key="connectionID">362</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocumentAs:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="117038363"/>
- </object>
- <int key="connectionID">363</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">revertDocumentToSaved:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="579971712"/>
- </object>
- <int key="connectionID">364</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runToolbarCustomizationPalette:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="237841660"/>
- </object>
- <int key="connectionID">365</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleToolbarShown:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="102151532"/>
- </object>
- <int key="connectionID">366</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hide:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="755159360"/>
- </object>
- <int key="connectionID">367</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hideOtherApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="342932134"/>
- </object>
- <int key="connectionID">368</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">unhideAllApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="908899353"/>
- </object>
- <int key="connectionID">370</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">newDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="705341025"/>
- </object>
- <int key="connectionID">373</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">openDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="722745758"/>
- </object>
- <int key="connectionID">374</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">addFontTrait:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="305399458"/>
- </object>
- <int key="connectionID">421</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">addFontTrait:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="814362025"/>
- </object>
- <int key="connectionID">422</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">modifyFont:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="885547335"/>
- </object>
- <int key="connectionID">423</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontFontPanel:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="159677712"/>
- </object>
- <int key="connectionID">424</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">modifyFont:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="158063935"/>
- </object>
- <int key="connectionID">425</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">raiseBaseline:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="941806246"/>
- </object>
- <int key="connectionID">426</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">lowerBaseline:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1045724900"/>
- </object>
- <int key="connectionID">427</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copyFont:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="596732606"/>
- </object>
- <int key="connectionID">428</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">subscript:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1037576581"/>
- </object>
- <int key="connectionID">429</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">superscript:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="644725453"/>
- </object>
- <int key="connectionID">430</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">tightenKerning:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="677519740"/>
- </object>
- <int key="connectionID">431</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">underline:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="330926929"/>
- </object>
- <int key="connectionID">432</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontColorPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1012600125"/>
- </object>
- <int key="connectionID">433</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">useAllLigatures:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="663508465"/>
- </object>
- <int key="connectionID">434</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">loosenKerning:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="238351151"/>
- </object>
- <int key="connectionID">435</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">pasteFont:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="393423671"/>
- </object>
- <int key="connectionID">436</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">unscript:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="257962622"/>
- </object>
- <int key="connectionID">437</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">useStandardKerning:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="252969304"/>
- </object>
- <int key="connectionID">438</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">useStandardLigatures:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="706297211"/>
- </object>
- <int key="connectionID">439</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">turnOffLigatures:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="568384683"/>
- </object>
- <int key="connectionID">440</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">turnOffKerning:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="766922938"/>
- </object>
- <int key="connectionID">441</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">terminate:</string>
- <reference key="source" ref="1050"/>
- <reference key="destination" ref="632727374"/>
- </object>
- <int key="connectionID">449</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticSpellingCorrection:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="795346622"/>
- </object>
- <int key="connectionID">456</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontSubstitutionsPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="65139061"/>
- </object>
- <int key="connectionID">458</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticDashSubstitution:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="672708820"/>
- </object>
- <int key="connectionID">461</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticTextReplacement:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="537092702"/>
- </object>
- <int key="connectionID">463</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">uppercaseWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1060694897"/>
- </object>
- <int key="connectionID">464</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">capitalizeWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="56570060"/>
- </object>
- <int key="connectionID">467</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">lowercaseWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="879586729"/>
- </object>
- <int key="connectionID">468</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">pasteAsPlainText:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="82994268"/>
- </object>
- <int key="connectionID">486</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="326711663"/>
- </object>
- <int key="connectionID">487</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="270902937"/>
- </object>
- <int key="connectionID">488</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="159080638"/>
- </object>
- <int key="connectionID">489</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showHelp:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="105068016"/>
- </object>
- <int key="connectionID">493</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="1021"/>
- <reference key="destination" ref="976324537"/>
- </object>
- <int key="connectionID">495</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">alignCenter:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="630155264"/>
- </object>
- <int key="connectionID">518</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">pasteRuler:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="883618387"/>
- </object>
- <int key="connectionID">519</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleRuler:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="644046920"/>
- </object>
- <int key="connectionID">520</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">alignRight:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="512868991"/>
- </object>
- <int key="connectionID">521</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copyRuler:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="231811626"/>
- </object>
- <int key="connectionID">522</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">alignJustified:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="945678886"/>
- </object>
- <int key="connectionID">523</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">alignLeft:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="875092757"/>
- </object>
- <int key="connectionID">524</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeBaseWritingDirectionNatural:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="551969625"/>
- </object>
- <int key="connectionID">525</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeBaseWritingDirectionLeftToRight:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="249532473"/>
- </object>
- <int key="connectionID">526</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeBaseWritingDirectionRightToLeft:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="607364498"/>
- </object>
- <int key="connectionID">527</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeTextWritingDirectionNatural:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="380031999"/>
- </object>
- <int key="connectionID">528</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeTextWritingDirectionLeftToRight:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="825984362"/>
- </object>
- <int key="connectionID">529</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeTextWritingDirectionRightToLeft:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="560145579"/>
- </object>
- <int key="connectionID">530</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="976324537"/>
- <reference key="destination" ref="972006081"/>
- </object>
- <int key="connectionID">532</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1048"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1021"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1014"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1050"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">29</int>
- <reference key="object" ref="649796088"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="713487014"/>
- <reference ref="694149608"/>
- <reference ref="952259628"/>
- <reference ref="379814623"/>
- <reference ref="586577488"/>
- <reference ref="302598603"/>
- <reference ref="448692316"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">19</int>
- <reference key="object" ref="713487014"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="835318025"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">56</int>
- <reference key="object" ref="694149608"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="110575045"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">217</int>
- <reference key="object" ref="952259628"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="789758025"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">83</int>
- <reference key="object" ref="379814623"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="720053764"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">81</int>
- <reference key="object" ref="720053764"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1023925487"/>
- <reference ref="117038363"/>
- <reference ref="49223823"/>
- <reference ref="722745758"/>
- <reference ref="705341025"/>
- <reference ref="1025936716"/>
- <reference ref="294629803"/>
- <reference ref="776162233"/>
- <reference ref="425164168"/>
- <reference ref="579971712"/>
- <reference ref="1010469920"/>
- </object>
- <reference key="parent" ref="379814623"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">75</int>
- <reference key="object" ref="1023925487"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">80</int>
- <reference key="object" ref="117038363"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">78</int>
- <reference key="object" ref="49223823"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="722745758"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">82</int>
- <reference key="object" ref="705341025"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="1025936716"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1065607017"/>
- </object>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">77</int>
- <reference key="object" ref="294629803"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="776162233"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">79</int>
- <reference key="object" ref="425164168"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">112</int>
- <reference key="object" ref="579971712"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="1010469920"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">125</int>
- <reference key="object" ref="1065607017"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="759406840"/>
- </object>
- <reference key="parent" ref="1025936716"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">126</int>
- <reference key="object" ref="759406840"/>
- <reference key="parent" ref="1065607017"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">205</int>
- <reference key="object" ref="789758025"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="437104165"/>
- <reference ref="583158037"/>
- <reference ref="1058277027"/>
- <reference ref="212016141"/>
- <reference ref="296257095"/>
- <reference ref="29853731"/>
- <reference ref="860595796"/>
- <reference ref="1040322652"/>
- <reference ref="790794224"/>
- <reference ref="892235320"/>
- <reference ref="972420730"/>
- <reference ref="676164635"/>
- <reference ref="507821607"/>
- <reference ref="288088188"/>
- <reference ref="82994268"/>
- </object>
- <reference key="parent" ref="952259628"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">202</int>
- <reference key="object" ref="437104165"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">198</int>
- <reference key="object" ref="583158037"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">207</int>
- <reference key="object" ref="1058277027"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">214</int>
- <reference key="object" ref="212016141"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">199</int>
- <reference key="object" ref="296257095"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">203</int>
- <reference key="object" ref="29853731"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">197</int>
- <reference key="object" ref="860595796"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">206</int>
- <reference key="object" ref="1040322652"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">215</int>
- <reference key="object" ref="790794224"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">218</int>
- <reference key="object" ref="892235320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="963351320"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">216</int>
- <reference key="object" ref="972420730"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="769623530"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">200</int>
- <reference key="object" ref="769623530"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="948374510"/>
- <reference ref="96193923"/>
- <reference ref="679648819"/>
- <reference ref="967646866"/>
- <reference ref="859480356"/>
- <reference ref="795346622"/>
- </object>
- <reference key="parent" ref="972420730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">219</int>
- <reference key="object" ref="948374510"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">201</int>
- <reference key="object" ref="96193923"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">204</int>
- <reference key="object" ref="679648819"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">220</int>
- <reference key="object" ref="963351320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="270902937"/>
- <reference ref="88285865"/>
- <reference ref="159080638"/>
- <reference ref="326711663"/>
- <reference ref="447796847"/>
- </object>
- <reference key="parent" ref="892235320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">213</int>
- <reference key="object" ref="270902937"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">210</int>
- <reference key="object" ref="88285865"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">221</int>
- <reference key="object" ref="159080638"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">208</int>
- <reference key="object" ref="326711663"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">209</int>
- <reference key="object" ref="447796847"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">57</int>
- <reference key="object" ref="110575045"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="238522557"/>
- <reference ref="755159360"/>
- <reference ref="908899353"/>
- <reference ref="632727374"/>
- <reference ref="646227648"/>
- <reference ref="609285721"/>
- <reference ref="481834944"/>
- <reference ref="304266470"/>
- <reference ref="1046388886"/>
- <reference ref="1056857174"/>
- <reference ref="342932134"/>
- </object>
- <reference key="parent" ref="694149608"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="238522557"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">134</int>
- <reference key="object" ref="755159360"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">150</int>
- <reference key="object" ref="908899353"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">136</int>
- <reference key="object" ref="632727374"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">144</int>
- <reference key="object" ref="646227648"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="609285721"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">143</int>
- <reference key="object" ref="481834944"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">236</int>
- <reference key="object" ref="304266470"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">131</int>
- <reference key="object" ref="1046388886"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="752062318"/>
- </object>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">149</int>
- <reference key="object" ref="1056857174"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">145</int>
- <reference key="object" ref="342932134"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="752062318"/>
- <reference key="parent" ref="1046388886"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">24</int>
- <reference key="object" ref="835318025"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="299356726"/>
- <reference ref="625202149"/>
- <reference ref="575023229"/>
- <reference ref="1011231497"/>
- </object>
- <reference key="parent" ref="713487014"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">92</int>
- <reference key="object" ref="299356726"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="625202149"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">239</int>
- <reference key="object" ref="575023229"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">23</int>
- <reference key="object" ref="1011231497"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">295</int>
- <reference key="object" ref="586577488"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="466310130"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">296</int>
- <reference key="object" ref="466310130"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="102151532"/>
- <reference ref="237841660"/>
- </object>
- <reference key="parent" ref="586577488"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">297</int>
- <reference key="object" ref="102151532"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">298</int>
- <reference key="object" ref="237841660"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">211</int>
- <reference key="object" ref="676164635"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="785027613"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">212</int>
- <reference key="object" ref="785027613"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="680220178"/>
- <reference ref="731782645"/>
- </object>
- <reference key="parent" ref="676164635"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">195</int>
- <reference key="object" ref="680220178"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">196</int>
- <reference key="object" ref="731782645"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">346</int>
- <reference key="object" ref="967646866"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">348</int>
- <reference key="object" ref="507821607"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="698887838"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">349</int>
- <reference key="object" ref="698887838"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="605118523"/>
- <reference ref="197661976"/>
- <reference ref="708854459"/>
- <reference ref="65139061"/>
- <reference ref="19036812"/>
- <reference ref="672708820"/>
- <reference ref="537092702"/>
- </object>
- <reference key="parent" ref="507821607"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">350</int>
- <reference key="object" ref="605118523"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">351</int>
- <reference key="object" ref="197661976"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">354</int>
- <reference key="object" ref="708854459"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">371</int>
- <reference key="object" ref="972006081"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="439893737"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">372</int>
- <reference key="object" ref="439893737"/>
- <reference key="parent" ref="972006081"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">375</int>
- <reference key="object" ref="302598603"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="941447902"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">376</int>
- <reference key="object" ref="941447902"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="792887677"/>
- <reference ref="215659978"/>
- </object>
- <reference key="parent" ref="302598603"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">377</int>
- <reference key="object" ref="792887677"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="786677654"/>
- </object>
- <reference key="parent" ref="941447902"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">388</int>
- <reference key="object" ref="786677654"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="159677712"/>
- <reference ref="305399458"/>
- <reference ref="814362025"/>
- <reference ref="330926929"/>
- <reference ref="533507878"/>
- <reference ref="158063935"/>
- <reference ref="885547335"/>
- <reference ref="901062459"/>
- <reference ref="767671776"/>
- <reference ref="691570813"/>
- <reference ref="769124883"/>
- <reference ref="739652853"/>
- <reference ref="1012600125"/>
- <reference ref="214559597"/>
- <reference ref="596732606"/>
- <reference ref="393423671"/>
- </object>
- <reference key="parent" ref="792887677"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">389</int>
- <reference key="object" ref="159677712"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">390</int>
- <reference key="object" ref="305399458"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">391</int>
- <reference key="object" ref="814362025"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">392</int>
- <reference key="object" ref="330926929"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">393</int>
- <reference key="object" ref="533507878"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">394</int>
- <reference key="object" ref="158063935"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">395</int>
- <reference key="object" ref="885547335"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">396</int>
- <reference key="object" ref="901062459"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">397</int>
- <reference key="object" ref="767671776"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="175441468"/>
- </object>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">398</int>
- <reference key="object" ref="691570813"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1058217995"/>
- </object>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">399</int>
- <reference key="object" ref="769124883"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="18263474"/>
- </object>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">400</int>
- <reference key="object" ref="739652853"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">401</int>
- <reference key="object" ref="1012600125"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">402</int>
- <reference key="object" ref="214559597"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">403</int>
- <reference key="object" ref="596732606"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">404</int>
- <reference key="object" ref="393423671"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">405</int>
- <reference key="object" ref="18263474"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="257962622"/>
- <reference ref="644725453"/>
- <reference ref="1037576581"/>
- <reference ref="941806246"/>
- <reference ref="1045724900"/>
- </object>
- <reference key="parent" ref="769124883"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">406</int>
- <reference key="object" ref="257962622"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">407</int>
- <reference key="object" ref="644725453"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">408</int>
- <reference key="object" ref="1037576581"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">409</int>
- <reference key="object" ref="941806246"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">410</int>
- <reference key="object" ref="1045724900"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">411</int>
- <reference key="object" ref="1058217995"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="706297211"/>
- <reference ref="568384683"/>
- <reference ref="663508465"/>
- </object>
- <reference key="parent" ref="691570813"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">412</int>
- <reference key="object" ref="706297211"/>
- <reference key="parent" ref="1058217995"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">413</int>
- <reference key="object" ref="568384683"/>
- <reference key="parent" ref="1058217995"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">414</int>
- <reference key="object" ref="663508465"/>
- <reference key="parent" ref="1058217995"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">415</int>
- <reference key="object" ref="175441468"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="252969304"/>
- <reference ref="766922938"/>
- <reference ref="677519740"/>
- <reference ref="238351151"/>
- </object>
- <reference key="parent" ref="767671776"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">416</int>
- <reference key="object" ref="252969304"/>
- <reference key="parent" ref="175441468"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">417</int>
- <reference key="object" ref="766922938"/>
- <reference key="parent" ref="175441468"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">418</int>
- <reference key="object" ref="677519740"/>
- <reference key="parent" ref="175441468"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">419</int>
- <reference key="object" ref="238351151"/>
- <reference key="parent" ref="175441468"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">420</int>
- <reference key="object" ref="755631768"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">450</int>
- <reference key="object" ref="288088188"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="579392910"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">451</int>
- <reference key="object" ref="579392910"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1060694897"/>
- <reference ref="879586729"/>
- <reference ref="56570060"/>
- </object>
- <reference key="parent" ref="288088188"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">452</int>
- <reference key="object" ref="1060694897"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">453</int>
- <reference key="object" ref="859480356"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">454</int>
- <reference key="object" ref="795346622"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">457</int>
- <reference key="object" ref="65139061"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">459</int>
- <reference key="object" ref="19036812"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">460</int>
- <reference key="object" ref="672708820"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">462</int>
- <reference key="object" ref="537092702"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">465</int>
- <reference key="object" ref="879586729"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">466</int>
- <reference key="object" ref="56570060"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">485</int>
- <reference key="object" ref="82994268"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">490</int>
- <reference key="object" ref="448692316"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="992780483"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">491</int>
- <reference key="object" ref="992780483"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="105068016"/>
- </object>
- <reference key="parent" ref="448692316"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">492</int>
- <reference key="object" ref="105068016"/>
- <reference key="parent" ref="992780483"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">494</int>
- <reference key="object" ref="976324537"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">496</int>
- <reference key="object" ref="215659978"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="446991534"/>
- </object>
- <reference key="parent" ref="941447902"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">497</int>
- <reference key="object" ref="446991534"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="875092757"/>
- <reference ref="630155264"/>
- <reference ref="945678886"/>
- <reference ref="512868991"/>
- <reference ref="163117631"/>
- <reference ref="31516759"/>
- <reference ref="908105787"/>
- <reference ref="644046920"/>
- <reference ref="231811626"/>
- <reference ref="883618387"/>
- </object>
- <reference key="parent" ref="215659978"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">498</int>
- <reference key="object" ref="875092757"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">499</int>
- <reference key="object" ref="630155264"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">500</int>
- <reference key="object" ref="945678886"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">501</int>
- <reference key="object" ref="512868991"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">502</int>
- <reference key="object" ref="163117631"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">503</int>
- <reference key="object" ref="31516759"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="956096989"/>
- </object>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">504</int>
- <reference key="object" ref="908105787"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">505</int>
- <reference key="object" ref="644046920"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">506</int>
- <reference key="object" ref="231811626"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">507</int>
- <reference key="object" ref="883618387"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">508</int>
- <reference key="object" ref="956096989"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="257099033"/>
- <reference ref="551969625"/>
- <reference ref="249532473"/>
- <reference ref="607364498"/>
- <reference ref="508151438"/>
- <reference ref="981751889"/>
- <reference ref="380031999"/>
- <reference ref="825984362"/>
- <reference ref="560145579"/>
- </object>
- <reference key="parent" ref="31516759"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">509</int>
- <reference key="object" ref="257099033"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">510</int>
- <reference key="object" ref="551969625"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">511</int>
- <reference key="object" ref="249532473"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">512</int>
- <reference key="object" ref="607364498"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">513</int>
- <reference key="object" ref="508151438"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">514</int>
- <reference key="object" ref="981751889"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">515</int>
- <reference key="object" ref="380031999"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">516</int>
- <reference key="object" ref="825984362"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">517</int>
- <reference key="object" ref="560145579"/>
- <reference key="parent" ref="956096989"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-3.IBPluginDependency</string>
- <string>112.IBPluginDependency</string>
- <string>112.ImportedFromIB2</string>
- <string>124.IBPluginDependency</string>
- <string>124.ImportedFromIB2</string>
- <string>125.IBPluginDependency</string>
- <string>125.ImportedFromIB2</string>
- <string>125.editorWindowContentRectSynchronizationRect</string>
- <string>126.IBPluginDependency</string>
- <string>126.ImportedFromIB2</string>
- <string>129.IBPluginDependency</string>
- <string>129.ImportedFromIB2</string>
- <string>130.IBPluginDependency</string>
- <string>130.ImportedFromIB2</string>
- <string>130.editorWindowContentRectSynchronizationRect</string>
- <string>131.IBPluginDependency</string>
- <string>131.ImportedFromIB2</string>
- <string>134.IBPluginDependency</string>
- <string>134.ImportedFromIB2</string>
- <string>136.IBPluginDependency</string>
- <string>136.ImportedFromIB2</string>
- <string>143.IBPluginDependency</string>
- <string>143.ImportedFromIB2</string>
- <string>144.IBPluginDependency</string>
- <string>144.ImportedFromIB2</string>
- <string>145.IBPluginDependency</string>
- <string>145.ImportedFromIB2</string>
- <string>149.IBPluginDependency</string>
- <string>149.ImportedFromIB2</string>
- <string>150.IBPluginDependency</string>
- <string>150.ImportedFromIB2</string>
- <string>19.IBPluginDependency</string>
- <string>19.ImportedFromIB2</string>
- <string>195.IBPluginDependency</string>
- <string>195.ImportedFromIB2</string>
- <string>196.IBPluginDependency</string>
- <string>196.ImportedFromIB2</string>
- <string>197.IBPluginDependency</string>
- <string>197.ImportedFromIB2</string>
- <string>198.IBPluginDependency</string>
- <string>198.ImportedFromIB2</string>
- <string>199.IBPluginDependency</string>
- <string>199.ImportedFromIB2</string>
- <string>200.IBEditorWindowLastContentRect</string>
- <string>200.IBPluginDependency</string>
- <string>200.ImportedFromIB2</string>
- <string>200.editorWindowContentRectSynchronizationRect</string>
- <string>201.IBPluginDependency</string>
- <string>201.ImportedFromIB2</string>
- <string>202.IBPluginDependency</string>
- <string>202.ImportedFromIB2</string>
- <string>203.IBPluginDependency</string>
- <string>203.ImportedFromIB2</string>
- <string>204.IBPluginDependency</string>
- <string>204.ImportedFromIB2</string>
- <string>205.IBEditorWindowLastContentRect</string>
- <string>205.IBPluginDependency</string>
- <string>205.ImportedFromIB2</string>
- <string>205.editorWindowContentRectSynchronizationRect</string>
- <string>206.IBPluginDependency</string>
- <string>206.ImportedFromIB2</string>
- <string>207.IBPluginDependency</string>
- <string>207.ImportedFromIB2</string>
- <string>208.IBPluginDependency</string>
- <string>208.ImportedFromIB2</string>
- <string>209.IBPluginDependency</string>
- <string>209.ImportedFromIB2</string>
- <string>210.IBPluginDependency</string>
- <string>210.ImportedFromIB2</string>
- <string>211.IBPluginDependency</string>
- <string>211.ImportedFromIB2</string>
- <string>212.IBPluginDependency</string>
- <string>212.ImportedFromIB2</string>
- <string>212.editorWindowContentRectSynchronizationRect</string>
- <string>213.IBPluginDependency</string>
- <string>213.ImportedFromIB2</string>
- <string>214.IBPluginDependency</string>
- <string>214.ImportedFromIB2</string>
- <string>215.IBPluginDependency</string>
- <string>215.ImportedFromIB2</string>
- <string>216.IBPluginDependency</string>
- <string>216.ImportedFromIB2</string>
- <string>217.IBPluginDependency</string>
- <string>217.ImportedFromIB2</string>
- <string>218.IBPluginDependency</string>
- <string>218.ImportedFromIB2</string>
- <string>219.IBPluginDependency</string>
- <string>219.ImportedFromIB2</string>
- <string>220.IBEditorWindowLastContentRect</string>
- <string>220.IBPluginDependency</string>
- <string>220.ImportedFromIB2</string>
- <string>220.editorWindowContentRectSynchronizationRect</string>
- <string>221.IBPluginDependency</string>
- <string>221.ImportedFromIB2</string>
- <string>23.IBPluginDependency</string>
- <string>23.ImportedFromIB2</string>
- <string>236.IBPluginDependency</string>
- <string>236.ImportedFromIB2</string>
- <string>239.IBPluginDependency</string>
- <string>239.ImportedFromIB2</string>
- <string>24.IBEditorWindowLastContentRect</string>
- <string>24.IBPluginDependency</string>
- <string>24.ImportedFromIB2</string>
- <string>24.editorWindowContentRectSynchronizationRect</string>
- <string>29.IBEditorWindowLastContentRect</string>
- <string>29.IBPluginDependency</string>
- <string>29.ImportedFromIB2</string>
- <string>29.WindowOrigin</string>
- <string>29.editorWindowContentRectSynchronizationRect</string>
- <string>295.IBPluginDependency</string>
- <string>296.IBEditorWindowLastContentRect</string>
- <string>296.IBPluginDependency</string>
- <string>296.editorWindowContentRectSynchronizationRect</string>
- <string>297.IBPluginDependency</string>
- <string>298.IBPluginDependency</string>
- <string>346.IBPluginDependency</string>
- <string>346.ImportedFromIB2</string>
- <string>348.IBPluginDependency</string>
- <string>348.ImportedFromIB2</string>
- <string>349.IBEditorWindowLastContentRect</string>
- <string>349.IBPluginDependency</string>
- <string>349.ImportedFromIB2</string>
- <string>349.editorWindowContentRectSynchronizationRect</string>
- <string>350.IBPluginDependency</string>
- <string>350.ImportedFromIB2</string>
- <string>351.IBPluginDependency</string>
- <string>351.ImportedFromIB2</string>
- <string>354.IBPluginDependency</string>
- <string>354.ImportedFromIB2</string>
- <string>371.IBEditorWindowLastContentRect</string>
- <string>371.IBPluginDependency</string>
- <string>371.IBWindowTemplateEditedContentRect</string>
- <string>371.NSWindowTemplate.visibleAtLaunch</string>
- <string>371.editorWindowContentRectSynchronizationRect</string>
- <string>371.windowTemplate.maxSize</string>
- <string>372.IBPluginDependency</string>
- <string>375.IBPluginDependency</string>
- <string>376.IBEditorWindowLastContentRect</string>
- <string>376.IBPluginDependency</string>
- <string>377.IBPluginDependency</string>
- <string>388.IBEditorWindowLastContentRect</string>
- <string>388.IBPluginDependency</string>
- <string>389.IBPluginDependency</string>
- <string>390.IBPluginDependency</string>
- <string>391.IBPluginDependency</string>
- <string>392.IBPluginDependency</string>
- <string>393.IBPluginDependency</string>
- <string>394.IBPluginDependency</string>
- <string>395.IBPluginDependency</string>
- <string>396.IBPluginDependency</string>
- <string>397.IBPluginDependency</string>
- <string>398.IBPluginDependency</string>
- <string>399.IBPluginDependency</string>
- <string>400.IBPluginDependency</string>
- <string>401.IBPluginDependency</string>
- <string>402.IBPluginDependency</string>
- <string>403.IBPluginDependency</string>
- <string>404.IBPluginDependency</string>
- <string>405.IBPluginDependency</string>
- <string>406.IBPluginDependency</string>
- <string>407.IBPluginDependency</string>
- <string>408.IBPluginDependency</string>
- <string>409.IBPluginDependency</string>
- <string>410.IBPluginDependency</string>
- <string>411.IBPluginDependency</string>
- <string>412.IBPluginDependency</string>
- <string>413.IBPluginDependency</string>
- <string>414.IBPluginDependency</string>
- <string>415.IBPluginDependency</string>
- <string>416.IBPluginDependency</string>
- <string>417.IBPluginDependency</string>
- <string>418.IBPluginDependency</string>
- <string>419.IBPluginDependency</string>
- <string>450.IBPluginDependency</string>
- <string>451.IBEditorWindowLastContentRect</string>
- <string>451.IBPluginDependency</string>
- <string>452.IBPluginDependency</string>
- <string>453.IBPluginDependency</string>
- <string>454.IBPluginDependency</string>
- <string>457.IBPluginDependency</string>
- <string>459.IBPluginDependency</string>
- <string>460.IBPluginDependency</string>
- <string>462.IBPluginDependency</string>
- <string>465.IBPluginDependency</string>
- <string>466.IBPluginDependency</string>
- <string>485.IBPluginDependency</string>
- <string>490.IBPluginDependency</string>
- <string>491.IBEditorWindowLastContentRect</string>
- <string>491.IBPluginDependency</string>
- <string>492.IBPluginDependency</string>
- <string>496.IBPluginDependency</string>
- <string>497.IBEditorWindowLastContentRect</string>
- <string>497.IBPluginDependency</string>
- <string>498.IBPluginDependency</string>
- <string>499.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>5.ImportedFromIB2</string>
- <string>500.IBPluginDependency</string>
- <string>501.IBPluginDependency</string>
- <string>502.IBPluginDependency</string>
- <string>503.IBPluginDependency</string>
- <string>504.IBPluginDependency</string>
- <string>505.IBPluginDependency</string>
- <string>506.IBPluginDependency</string>
- <string>507.IBPluginDependency</string>
- <string>508.IBEditorWindowLastContentRect</string>
- <string>508.IBPluginDependency</string>
- <string>509.IBPluginDependency</string>
- <string>510.IBPluginDependency</string>
- <string>511.IBPluginDependency</string>
- <string>512.IBPluginDependency</string>
- <string>513.IBPluginDependency</string>
- <string>514.IBPluginDependency</string>
- <string>515.IBPluginDependency</string>
- <string>516.IBPluginDependency</string>
- <string>517.IBPluginDependency</string>
- <string>56.IBPluginDependency</string>
- <string>56.ImportedFromIB2</string>
- <string>57.IBEditorWindowLastContentRect</string>
- <string>57.IBPluginDependency</string>
- <string>57.ImportedFromIB2</string>
- <string>57.editorWindowContentRectSynchronizationRect</string>
- <string>58.IBPluginDependency</string>
- <string>58.ImportedFromIB2</string>
- <string>72.IBPluginDependency</string>
- <string>72.ImportedFromIB2</string>
- <string>73.IBPluginDependency</string>
- <string>73.ImportedFromIB2</string>
- <string>74.IBPluginDependency</string>
- <string>74.ImportedFromIB2</string>
- <string>75.IBPluginDependency</string>
- <string>75.ImportedFromIB2</string>
- <string>77.IBPluginDependency</string>
- <string>77.ImportedFromIB2</string>
- <string>78.IBPluginDependency</string>
- <string>78.ImportedFromIB2</string>
- <string>79.IBPluginDependency</string>
- <string>79.ImportedFromIB2</string>
- <string>80.IBPluginDependency</string>
- <string>80.ImportedFromIB2</string>
- <string>81.IBEditorWindowLastContentRect</string>
- <string>81.IBPluginDependency</string>
- <string>81.ImportedFromIB2</string>
- <string>81.editorWindowContentRectSynchronizationRect</string>
- <string>82.IBPluginDependency</string>
- <string>82.ImportedFromIB2</string>
- <string>83.IBPluginDependency</string>
- <string>83.ImportedFromIB2</string>
- <string>92.IBPluginDependency</string>
- <string>92.ImportedFromIB2</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{522, 812}, {146, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{436, 809}, {64, 6}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{753, 187}, {275, 113}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{608, 612}, {275, 83}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{547, 180}, {254, 283}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{187, 434}, {243, 243}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{608, 612}, {167, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{753, 217}, {238, 103}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{608, 612}, {241, 103}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{654, 239}, {194, 73}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{525, 802}, {197, 73}}</string>
- <string>{{380, 836}, {512, 20}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{74, 862}</string>
- <string>{{6, 978}, {478, 20}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{604, 269}, {231, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{475, 832}, {234, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{746, 287}, {220, 133}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{608, 612}, {215, 63}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{380, 496}, {480, 360}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{380, 496}, {480, 360}}</string>
- <integer value="1"/>
- <string>{{33, 99}, {480, 360}}</string>
- <string>{3.40282e+38, 3.40282e+38}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{591, 420}, {83, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{523, 2}, {178, 283}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{753, 197}, {170, 63}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{725, 289}, {246, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{674, 260}, {204, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{878, 180}, {164, 173}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{286, 129}, {275, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{23, 794}, {245, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{452, 109}, {196, 203}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{145, 474}, {199, 203}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">532</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">TestAppAppDelegate</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">window</string>
- <string key="NS.object.0">NSWindow</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">TestAppAppDelegate.h</string>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="822405504">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="850738725">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="624831158">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSBrowser</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="310914472">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocument</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>printDocument:</string>
- <string>revertDocumentToSaved:</string>
- <string>runPageLayout:</string>
- <string>saveDocument:</string>
- <string>saveDocumentAs:</string>
- <string>saveDocumentTo:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDocument.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocument</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDocumentScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocumentController</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>clearRecentDocuments:</string>
- <string>newDocument:</string>
- <string>openDocument:</string>
- <string>saveAllDocuments:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDocumentController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFontManager</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="946436764">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFormatter</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="1056362899">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItem</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="472958451">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMovieView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMovieView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="822405504"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="850738725"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="624831158"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="310914472"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="946436764"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="1056362899"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="809545482">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="260078765">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTableView</string>
- <string key="superclassName">NSControl</string>
- <reference key="sourceIdentifier" ref="809545482"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSText</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSText.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextView</string>
- <string key="superclassName">NSText</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="472958451"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <string key="superclassName">NSResponder</string>
- <reference key="sourceIdentifier" ref="260078765"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1060" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../TestApp.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.0" toolsVersion="1906" systemVersion="11A511" targetRuntime="iOS.CocoaTouch" nextObjectID="6" propertyAccessControl="none" initialViewController="2">
- <dependencies>
- <development defaultVersion="4200" identifier="xcode"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="902"/>
- </dependencies>
- <scenes>
- <scene sceneID="5">
- <objects>
- <placeholder placeholderIdentifier="IBFirstResponder" id="4" sceneMemberID="firstResponder"/>
- <viewController id="2" customClass="ViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="3">
- <rect key="frame" x="0.0" y="20" width="320" height="460"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <subviews/>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
- </view>
- </viewController>
- </objects>
- </scene>
- </scenes>
- <simulatedMetricsContainer key="defaultSimulatedMetrics">
- <simulatedStatusBarMetrics key="statusBar"/>
- <simulatedOrientationMetrics key="orientation"/>
- <simulatedScreenMetrics key="destination"/>
- </simulatedMetricsContainer>
-</document>
+++ /dev/null
-{
- "images" : [
- {
- "idiom" : "mac",
- "size" : "16x16",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "16x16",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "32x32",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "32x32",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "128x128",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "128x128",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "256x256",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "256x256",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "512x512",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "512x512",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
+++ /dev/null
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "super_sylvain.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "super_sylvain@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "super_sylvain@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.google.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>ause</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>${MACOSX_DEPLOYMENT_TARGET}</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
+++ /dev/null
-#!/usr/bin/python
-
-import os
-import subprocess
-import sys
-
-p = os.path.join(os.environ['BUILT_PRODUCTS_DIR'],os.environ['EXECUTABLE_PATH'])
-proc = subprocess.Popen(['codesign', '-v', p],
- stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
-o = proc.communicate()[0].strip()
-if "code object is not signed at all" not in o:
- sys.stderr.write('File should not already be signed.')
- sys.exit(1)
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#import <UIKit/UIKit.h>
-
-int main(int argc, char *argv[])
-{
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
- int retVal = UIApplicationMain(argc, argv, nil, nil);
- [pool release];
- return retVal;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#if defined(__LP64__)
-# error 64-bit build
-#endif
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#if !defined(__LP64__)
-# error 32-bit build
-#endif
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ],
- 'target_defaults': {
- 'product_extension': 'bundle',
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- ],
- },
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'CODE_SIGNING_REQUIRED': 'NO',
- 'SDKROOT': 'iphonesimulator', # -isysroot
- 'TARGETED_DEVICE_FAMILY': '1,2',
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- 'IPHONEOS_DEPLOYMENT_TARGET': '7.0',
- 'CONFIGURATION_BUILD_DIR':'build/Default',
- },
- },
- 'targets': [
- {
- 'target_name': 'TestNoArchs',
- 'product_name': 'TestNoArchs',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- 'TestApp/only-compile-in-32-bits.m',
- ],
- 'xcode_settings': {
- 'VALID_ARCHS': [
- 'i386',
- 'x86_64',
- 'arm64',
- 'armv7',
- ],
- }
- },
- {
- 'target_name': 'TestArch32Bits',
- 'product_name': 'TestArch32Bits',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- 'TestApp/only-compile-in-32-bits.m',
- ],
- 'xcode_settings': {
- 'ARCHS': [
- '$(ARCHS_STANDARD)',
- ],
- 'VALID_ARCHS': [
- 'i386',
- 'armv7',
- ],
- },
- },
- {
- 'target_name': 'TestArch64Bits',
- 'product_name': 'TestArch64Bits',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- 'TestApp/only-compile-in-64-bits.m',
- ],
- 'xcode_settings': {
- 'ARCHS': [
- '$(ARCHS_STANDARD_INCLUDING_64_BIT)',
- ],
- 'VALID_ARCHS': [
- 'x86_64',
- 'arm64',
- ],
- },
- },
- {
- 'target_name': 'TestMultiArchs',
- 'product_name': 'TestMultiArchs',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- ],
- 'xcode_settings': {
- 'ARCHS': [
- '$(ARCHS_STANDARD_INCLUDING_64_BIT)',
- ],
- 'VALID_ARCHS': [
- 'x86_64',
- 'i386',
- 'arm64',
- 'armv7',
- ],
- }
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'conditions': [
- ['"<(GENERATOR)"=="ninja"', {
- 'make_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
- }],
- ],
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App Assets Catalog Gyp',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- ],
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- 'TestApp/English.lproj/Main_iPhone.storyboard',
- 'TestApp/Images.xcassets',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- ],
- },
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- 'SDKROOT': 'iphonesimulator', # -isysroot
- 'IPHONEOS_DEPLOYMENT_TARGET': '7.0',
- 'CONFIGURATION_BUILD_DIR':'build/Default',
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ],
- 'targets': [
- # This target will not be built, but is here so that ninja Xcode emulation
- # understand this is a multi-platform (ios + mac) build.
- {
- 'target_name': 'TestDummy',
- 'product_name': 'TestDummy',
- 'toolsets': ['target'],
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'tool_main.cc',
- ],
- 'xcode_settings': {
- 'SDKROOT': 'iphonesimulator', # -isysroot
- 'TARGETED_DEVICE_FAMILY': '1,2',
- 'IPHONEOS_DEPLOYMENT_TARGET': '7.0',
- },
- },
- {
- 'target_name': 'TestHost',
- 'product_name': 'TestHost',
- 'toolsets': ['host'],
- 'type': 'executable',
- 'mac_bundle': 0,
- 'sources': [
- 'tool_main.cc',
- ],
- 'xcode_settings': {
- 'SDKROOT': 'macosx',
- 'ARCHS': [
- '$(ARCHS_STANDARD)',
- 'x86_64',
- ],
- 'VALID_ARCHS': [
- 'x86_64',
- ],
- }
- }
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ],
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App Gyp',
- 'type': 'executable',
- 'product_extension': 'bundle',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- ],
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- ],
- },
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'SDKROOT': 'iphonesimulator', # -isysroot
- 'TARGETED_DEVICE_FAMILY': '1,2',
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- 'IPHONEOS_DEPLOYMENT_TARGET': '4.2',
- 'CONFIGURATION_BUILD_DIR':'build/Default',
- },
- },
- {
- 'target_name': 'sig_test',
- 'product_name': 'sig_test',
- 'type': 'executable',
- 'product_extension': 'bundle',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- ],
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- ],
- },
- 'postbuilds': [
- {
- 'postbuild_name': 'Verify no signature',
- 'action': [
- 'python',
- 'TestApp/check_no_signature.py'
- ],
- },
- ],
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'SDKROOT': 'iphonesimulator', # -isysroot
- 'CODE_SIGN_IDENTITY[sdk=iphoneos*]': 'iPhone Developer',
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- 'IPHONEOS_DEPLOYMENT_TARGET': '4.2',
- 'CONFIGURATION_BUILD_DIR':'buildsig/Default',
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'conditions': [
- ['"<(GENERATOR)"=="ninja"', {
- 'make_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
- }],
- ],
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App Gyp',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- ],
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- 'TestApp/English.lproj/Main_iPhone.storyboard',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- ],
- },
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- 'SDKROOT': 'iphonesimulator', # -isysroot
- 'IPHONEOS_DEPLOYMENT_TARGET': '5.0',
- 'CONFIGURATION_BUILD_DIR':'build/Default',
- },
- },
- {
- 'target_name': 'test_app_xml',
- 'product_name': 'Test App Gyp XML',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- ],
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- 'TestApp/English.lproj/Main_iPhone.storyboard',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- ],
- },
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- 'INFOPLIST_OUTPUT_FORMAT':'xml',
- 'SDKROOT': 'iphonesimulator', # -isysroot
- 'IPHONEOS_DEPLOYMENT_TARGET': '5.0',
- 'CONFIGURATION_BUILD_DIR':'build/Default',
- },
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-/* Copyright (c) 2013 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. */
-
-#include <Availability.h>
-
-/* GYPTEST_MAC_VERSION_MIN: should be set to the corresponding value of
- * xcode setting 'MACOSX_DEPLOYMENT_TARGET', otherwise both should be
- * left undefined.
- *
- * GYPTEST_IOS_VERSION_MIN: should be set to the corresponding value of
- * xcode setting 'IPHONEOS_DEPLOYMENT_TARGET', otherwise both should be
- * left undefined.
- */
-
-#if defined(GYPTEST_MAC_VERSION_MIN)
-# if GYPTEST_MAC_VERSION_MIN != __MAC_OS_X_VERSION_MIN_REQUIRED
-# error __MAC_OS_X_VERSION_MIN_REQUIRED has wrong value
-# endif
-#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED)
-# error __MAC_OS_X_VERSION_MIN_REQUIRED should be undefined
-#endif
-
-#if defined(GYPTEST_IOS_VERSION_MIN)
-# if GYPTEST_IOS_VERSION_MIN != __IPHONE_OS_VERSION_MIN_REQUIRED
-# error __IPHONE_OS_VERSION_MIN_REQUIRED has wrong value
-# endif
-#elif defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
-# error __IPHONE_OS_VERSION_MIN_REQUIRED should be undefined
-#endif
-
-int main() { return 0; }
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
- 'targets': [
- {
- 'target_name': 'iphoneos-version-min-4.3',
- 'type': 'static_library',
- 'sources': [ 'check-version-min.c', ],
- 'defines': [ 'GYPTEST_IOS_VERSION_MIN=40300', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'ARCHS': [ 'armv7' ],
- 'SDKROOT': 'iphoneos',
- 'IPHONEOS_DEPLOYMENT_TARGET': '4.3',
- },
- },
- {
- 'target_name': 'iphoneos-version-min-5.0',
- 'type': 'static_library',
- 'sources': [ 'check-version-min.c', ],
- 'defines': [ 'GYPTEST_IOS_VERSION_MIN=50000', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'ARCHS': [ 'armv7' ],
- 'SDKROOT': 'iphoneos',
- 'IPHONEOS_DEPLOYMENT_TARGET': '5.0',
- },
- },
- {
- 'target_name': 'iphonesimulator-version-min-4.3',
- 'type': 'static_library',
- 'sources': [ 'check-version-min.c', ],
- 'defines': [ 'GYPTEST_IOS_VERSION_MIN=40300', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'SDKROOT': 'iphonesimulator',
- 'IPHONEOS_DEPLOYMENT_TARGET': '4.3',
- },
- },
- {
- 'target_name': 'iphonesimulator-version-min-5.0',
- 'type': 'static_library',
- 'sources': [ 'check-version-min.c', ],
- 'defines': [ 'GYPTEST_IOS_VERSION_MIN=50000', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'SDKROOT': 'iphonesimulator',
- 'IPHONEOS_DEPLOYMENT_TARGET': '5.0',
- },
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import <UIKit/UIKit.h>
-
-@interface ActionViewController : UIViewController
-
-@end
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import "ActionViewController.h"
-#import <MobileCoreServices/MobileCoreServices.h>
-
-@interface ActionViewController ()
-
-@end
-
-@implementation ActionViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-}
-
-- (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
-}
-
-- (IBAction)done {
- // Return any edited content to the host app.
- // This template doesn't do anything, so we just echo the passed in items.
- [self.extensionContext
- completeRequestReturningItems:self.extensionContext.inputItems
- completionHandler:nil];
-}
-
-@end
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleDisplayName</key>
- <string>ActionExtension</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIdentifier</key>
- <string>com.google.gyptest.extension.ActionExtension</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>XPC!</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>NSExtension</key>
- <dict>
- <key>NSExtensionAttributes</key>
- <dict>
- <key>NSExtensionActivationRule</key>
- <string>TRUEPREDICATE</string>
- <key>NSExtensionPointName</key>
- <string>com.apple.ui-services</string>
- <key>NSExtensionPointVersion</key>
- <string>1.0</string>
- </dict>
- <key>NSExtensionMainStoryboard</key>
- <string>MainInterface</string>
- <key>NSExtensionPointIdentifier</key>
- <string>com.apple.ui-services</string>
- </dict>
-</dict>
-</plist>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6148" systemVersion="14A229a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="ObA-dk-sSI">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6147"/>
- </dependencies>
- <scenes>
- <!--Action View Controller - Image-->
- <scene sceneID="7MM-of-jgj">
- <objects>
- <viewController title="Image" id="ObA-dk-sSI" customClass="ActionViewController" customModuleProvider="" sceneMemberID="viewController">
- <layoutGuides>
- <viewControllerLayoutGuide type="top" id="qkL-Od-lgU"/>
- <viewControllerLayoutGuide type="bottom" id="n38-gi-rB5"/>
- </layoutGuides>
- <view key="view" contentMode="scaleToFill" id="zMn-AG-sqS">
- <rect key="frame" x="0.0" y="0.0" width="320" height="528"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="9ga-4F-77Z">
- <rect key="frame" x="0.0" y="64" width="320" height="464"/>
- </imageView>
- <navigationBar contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NOA-Dm-cuz">
- <rect key="frame" x="0.0" y="20" width="320" height="44"/>
- <items>
- <navigationItem id="3HJ-uW-3hn">
- <barButtonItem key="leftBarButtonItem" title="Done" style="done" id="WYi-yp-eM6">
- <connections>
- <action selector="done" destination="ObA-dk-sSI" id="Qdu-qn-U6V"/>
- </connections>
- </barButtonItem>
- </navigationItem>
- </items>
- </navigationBar>
- </subviews>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <constraints>
- <constraint firstAttribute="trailing" secondItem="NOA-Dm-cuz" secondAttribute="trailing" id="A05-Pj-hrr"/>
- <constraint firstItem="9ga-4F-77Z" firstAttribute="top" secondItem="NOA-Dm-cuz" secondAttribute="bottom" id="Fps-3D-QQW"/>
- <constraint firstItem="NOA-Dm-cuz" firstAttribute="leading" secondItem="zMn-AG-sqS" secondAttribute="leading" id="HxO-8t-aoh"/>
- <constraint firstAttribute="trailing" secondItem="9ga-4F-77Z" secondAttribute="trailing" id="Ozw-Hg-0yh"/>
- <constraint firstItem="9ga-4F-77Z" firstAttribute="leading" secondItem="zMn-AG-sqS" secondAttribute="leading" id="XH5-ld-ONA"/>
- <constraint firstItem="n38-gi-rB5" firstAttribute="top" secondItem="9ga-4F-77Z" secondAttribute="bottom" id="eQg-nn-Zy4"/>
- <constraint firstItem="NOA-Dm-cuz" firstAttribute="top" secondItem="qkL-Od-lgU" secondAttribute="bottom" id="we0-1t-bgp"/>
- </constraints>
- </view>
- <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
- <size key="freeformSize" width="320" height="528"/>
- <connections>
- <outlet property="imageView" destination="9ga-4F-77Z" id="5y6-5w-9QO"/>
- <outlet property="view" destination="zMn-AG-sqS" id="Qma-de-2ek"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="X47-rx-isc" userLabel="First Responder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="252" y="-124"/>
- </scene>
- </scenes>
- <simulatedMetricsContainer key="defaultSimulatedMetrics">
- <simulatedStatusBarMetrics key="statusBar"/>
- <simulatedOrientationMetrics key="orientation"/>
- <simulatedScreenMetrics key="destination" type="retina4"/>
- </simulatedMetricsContainer>
-</document>
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import <UIKit/UIKit.h>
-
-@interface AppDelegate : UIResponder <UIApplicationDelegate>
-
-@property (strong, nonatomic) UIWindow *window;
-
-@end
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import "AppDelegate.h"
-
-@interface AppDelegate ()
-
-@end
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication*)application
- didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
- // Override point for customization after application launch.
- return YES;
-}
-
-@end
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6162" systemVersion="14A238h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6160"/>
- </dependencies>
- <scenes>
- <!--View Controller-->
- <scene sceneID="tne-QT-ifu">
- <objects>
- <viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
- <layoutGuides>
- <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
- <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
- </layoutGuides>
- <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
- <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
- </view>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
- </objects>
- </scene>
- </scenes>
-</document>
+++ /dev/null
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+++ /dev/null
-{
- "images" : [
- {
- "orientation" : "portrait",
- "idiom" : "iphone",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "iphone",
- "subtype" : "retina4",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "1x"
- },
- {
- "orientation" : "landscape",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "1x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "landscape",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleExecutable</key>
- <string>ExtensionContainer</string>
- <key>CFBundleIdentifier</key>
- <string>com.google.gyptest.extension</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSRequiresIPhoneOS</key>
- <true/>
- <key>UIMainStoryboardFile</key>
- <string>Main</string>
- <key>UIRequiredDeviceCapabilities</key>
- <array>
- <string>armv7</string>
- </array>
-</dict>
-</plist>
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import <UIKit/UIKit.h>
-
-@interface ViewController : UIViewController
-
-
-@end
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import "ViewController.h"
-
-@interface ViewController ()
-
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
-}
-
-- (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
-}
-
-@end
+++ /dev/null
-// Copyright (c) 2014 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.
-//
-#import <UIKit/UIKit.h>
-#import "AppDelegate.h"
-
-int main(int argc, char* argv[]) {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil,
- NSStringFromClass([AppDelegate class]));
- }
-}
+++ /dev/null
-# Copyright (c) 2014 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
- 'targets': [
- {
- 'target_name': 'ExtensionContainer',
- 'product_name': 'ExtensionContainer',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'mac_bundle_resources': [
- 'ExtensionContainer/Base.lproj/Main.storyboard',
- ],
- 'sources': [
- 'ExtensionContainer/AppDelegate.h',
- 'ExtensionContainer/AppDelegate.m',
- 'ExtensionContainer/ViewController.h',
- 'ExtensionContainer/ViewController.m',
- 'ExtensionContainer/main.m',
- ],
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/ExtensionContainer.app/PlugIns',
- 'files': [
- '<(PRODUCT_DIR)/ActionExtension.appex',
- ]}],
- 'dependencies': [
- 'ActionExtension'
- ],
-
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- ],
- },
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'INFOPLIST_FILE': 'ExtensionContainer/Info.plist',
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'ARCHS': [ 'armv7' ],
- 'SDKROOT': 'iphoneos',
- 'IPHONEOS_DEPLOYMENT_TARGET': '7.0',
- 'CODE_SIGN_IDENTITY[sdk=iphoneos*]': 'iPhone Developer',
- },
- },
- {
- 'target_name': 'ActionExtension',
- 'product_name': 'ActionExtension',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'ios_app_extension': 1,
- 'sources': [
- 'ActionExtension/ActionViewController.h',
- 'ActionExtension/ActionViewController.m',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- '$(SDKROOT)/System/Library/Frameworks/MobileCoreServices.framework',
- ],
- },
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'INFOPLIST_FILE': 'ActionExtension/Info.plist',
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'ARCHS': [ 'armv7' ],
- 'SDKROOT': 'iphoneos',
- 'IPHONEOS_DEPLOYMENT_TARGET': '7.0',
- 'CODE_SIGN_IDENTITY[sdk=iphoneos*]': 'iPhone Developer',
- },
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that ios app bundles are built correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import os.path
-import sys
-
-# Xcode supports for assets catalog was introduced in Xcode 6.0
-if sys.platform == 'darwin' and TestMac.Xcode.Version() >= '0600':
- test_gyp_path = 'test-assets-catalog.gyp'
- test_app_path = 'Test App Assets Catalog Gyp.app'
-
- test = TestGyp.TestGyp(formats=['xcode', 'ninja'])
- test.run_gyp(test_gyp_path, chdir='app-bundle')
- test.build(test_gyp_path, test.ALL, chdir='app-bundle')
-
- # Test that the extension is .bundle
- test.built_file_must_exist(
- os.path.join(test_app_path, 'Test App Assets Catalog Gyp'),
- chdir='app-bundle')
-
- # Info.plist
- info_plist = test.built_file_path(
- os.path.join(test_app_path, 'Info.plist'),
- chdir='app-bundle')
- # Resources
- test.built_file_must_exist(
- os.path.join(test_app_path, 'English.lproj/InfoPlist.strings'),
- chdir='app-bundle')
- test.built_file_must_exist(
- os.path.join(test_app_path, 'English.lproj/MainMenu.nib'),
- chdir='app-bundle')
- test.built_file_must_exist(
- os.path.join(test_app_path, 'English.lproj/Main_iPhone.storyboardc'),
- chdir='app-bundle')
- test.built_file_must_exist(
- os.path.join(test_app_path, 'Assets.car'),
- chdir='app-bundle')
-
- # Packaging
- test.built_file_must_exist(
- os.path.join(test_app_path, 'PkgInfo'),
- chdir='app-bundle')
- test.built_file_must_match(
- os.path.join(test_app_path, 'PkgInfo'), 'APPLause',
- chdir='app-bundle')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that ios app bundles are built correctly.
-"""
-
-import TestGyp
-
-import subprocess
-import sys
-
-def CheckFileXMLPropertyList(file):
- output = subprocess.check_output(['file', file])
- # The double space after XML is intentional.
- if not 'XML document text' in output:
- print 'File: Expected XML document text, got %s' % output
- test.fail_test()
-
-def CheckFileBinaryPropertyList(file):
- output = subprocess.check_output(['file', file])
- if not 'Apple binary property list' in output:
- print 'File: Expected Apple binary property list, got %s' % output
- test.fail_test()
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['xcode', 'ninja'])
-
- test.run_gyp('test.gyp', chdir='app-bundle')
-
- test.build('test.gyp', test.ALL, chdir='app-bundle')
-
- # Test that the extension is .bundle
- test.built_file_must_exist('Test App Gyp.app/Test App Gyp',
- chdir='app-bundle')
-
- # Info.plist
- info_plist = test.built_file_path('Test App Gyp.app/Info.plist',
- chdir='app-bundle')
- test.built_file_must_exist(info_plist)
- CheckFileBinaryPropertyList(info_plist)
-
- # XML Info.plist
- info_plist = test.built_file_path('Test App Gyp XML.app/Info.plist',
- chdir='app-bundle')
- CheckFileXMLPropertyList(info_plist)
-
- # Resources
- strings_file = test.built_file_path(
- 'Test App Gyp.app/English.lproj/InfoPlist.strings',
- chdir='app-bundle')
- test.built_file_must_exist(strings_file)
- CheckFileBinaryPropertyList(strings_file)
-
- test.built_file_must_exist(
- 'Test App Gyp.app/English.lproj/MainMenu.nib',
- chdir='app-bundle')
- test.built_file_must_exist(
- 'Test App Gyp.app/English.lproj/Main_iPhone.storyboardc',
- chdir='app-bundle')
-
- # Packaging
- test.built_file_must_exist('Test App Gyp.app/PkgInfo',
- chdir='app-bundle')
- test.built_file_must_match('Test App Gyp.app/PkgInfo', 'APPLause',
- chdir='app-bundle')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that device and simulator bundles are built correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import collections
-import sys
-
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'xcode'])
-
- test_cases = [
- ('Default', 'TestArch32Bits', ['i386']),
- ('Default-iphoneos', 'TestArch32Bits', ['armv7']),
- ]
-
- if TestMac.Xcode.Version() < '0510':
- test_cases.extend([
- ('Default', 'TestNoArchs', ['i386']),
- ('Default-iphoneos', 'TestNoArchs', ['armv7'])])
-
- if TestMac.Xcode.Version() >= '0500':
- test_cases.extend([
- ('Default', 'TestArch64Bits', ['x86_64']),
- ('Default', 'TestMultiArchs', ['i386', 'x86_64']),
- ('Default-iphoneos', 'TestArch64Bits', ['arm64']),
- ('Default-iphoneos', 'TestMultiArchs', ['armv7', 'arm64'])])
-
- test.run_gyp('test-archs.gyp', chdir='app-bundle')
- for configuration, target, archs in test_cases:
- is_device_build = configuration.endswith('-iphoneos')
-
- kwds = collections.defaultdict(list)
- if test.format == 'xcode':
- if is_device_build:
- configuration, sdk = configuration.split('-')
- kwds['arguments'].extend(['-sdk', sdk])
- if TestMac.Xcode.Version() < '0500':
- kwds['arguments'].extend(['-arch', archs[0]])
-
- test.set_configuration(configuration)
- filename = '%s.bundle/%s' % (target, target)
- test.build('test-archs.gyp', target, chdir='app-bundle', **kwds)
- result_file = test.built_file_path(filename, chdir='app-bundle')
-
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, archs)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that tools are built correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import sys
-import os
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'xcode'])
-
- oldenv = os.environ.copy()
- try:
- os.environ['GYP_CROSSCOMPILE'] = '1'
- test.run_gyp('test-crosscompile.gyp', chdir='app-bundle')
- finally:
- os.environ.clear()
- os.environ.update(oldenv)
-
- test.set_configuration('Default')
- test.build('test-crosscompile.gyp', 'TestHost', chdir='app-bundle')
- result_file = test.built_file_path('TestHost', chdir='app-bundle')
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, ['x86_64'])
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that IPHONEOS_DEPLOYMENT_TARGET works.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['make', 'ninja', 'xcode'])
-
- test.run_gyp('deployment-target.gyp', chdir='deployment-target')
-
- test.build('deployment-target.gyp', test.ALL, chdir='deployment-target')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that ios app extensions are built correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import sys
-if sys.platform == 'darwin' and TestMac.Xcode.Version()>="0600":
- test = TestGyp.TestGyp(formats=['ninja', 'xcode'])
-
- test.run_gyp('extension.gyp', chdir='extension')
-
- test.build('extension.gyp', 'ExtensionContainer', chdir='extension')
-
- # Test that the extension is .appex
- test.built_file_must_exist(
- 'ExtensionContainer.app/PlugIns/ActionExtension.appex',
- chdir='extension')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that device and simulator bundles are built correctly.
-"""
-
-import plistlib
-import TestGyp
-import os
-import struct
-import subprocess
-import sys
-import tempfile
-
-
-def CheckFileType(file, expected):
- proc = subprocess.Popen(['lipo', '-info', file], stdout=subprocess.PIPE)
- o = proc.communicate()[0].strip()
- assert not proc.returncode
- if not expected in o:
- print 'File: Expected %s, got %s' % (expected, o)
- test.fail_test()
-
-def HasCerts():
- # Because the bots do not have certs, don't check them if there are no
- # certs available.
- proc = subprocess.Popen(['security','find-identity','-p', 'codesigning',
- '-v'], stdout=subprocess.PIPE)
- return "0 valid identities found" not in proc.communicate()[0].strip()
-
-def CheckSignature(file):
- proc = subprocess.Popen(['codesign', '-v', file], stdout=subprocess.PIPE)
- o = proc.communicate()[0].strip()
- assert not proc.returncode
- if "code object is not signed at all" in o:
- print 'File %s not properly signed.' % (file)
- test.fail_test()
-
-def CheckEntitlements(file, expected_entitlements):
- with tempfile.NamedTemporaryFile() as temp:
- proc = subprocess.Popen(['codesign', '--display', '--entitlements',
- temp.name, file], stdout=subprocess.PIPE)
- o = proc.communicate()[0].strip()
- assert not proc.returncode
- data = temp.read()
- entitlements = ParseEntitlements(data)
- if not entitlements:
- print 'No valid entitlements found in %s.' % (file)
- test.fail_test()
- if entitlements != expected_entitlements:
- print 'Unexpected entitlements found in %s.' % (file)
- test.fail_test()
-
-def ParseEntitlements(data):
- if len(data) < 8:
- return None
- magic, length = struct.unpack('>II', data[:8])
- if magic != 0xfade7171 or length != len(data):
- return None
- return data[8:]
-
-def GetProductVersion():
- args = ['xcodebuild','-version','-sdk','iphoneos','ProductVersion']
- job = subprocess.Popen(args, stdout=subprocess.PIPE)
- return job.communicate()[0].strip()
-
-def CheckPlistvalue(plist, key, expected):
- if key not in plist:
- print '%s not set in plist' % key
- test.fail_test()
- return
- actual = plist[key]
- if actual != expected:
- print 'File: Expected %s, got %s for %s' % (expected, actual, key)
- test.fail_test()
-
-def CheckPlistNotSet(plist, key):
- if key in plist:
- print '%s should not be set in plist' % key
- test.fail_test()
- return
-
-def ConvertBinaryPlistToXML(path):
- proc = subprocess.call(['plutil', '-convert', 'xml1', path],
- stdout=subprocess.PIPE)
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'xcode'])
-
- test.run_gyp('test-device.gyp', chdir='app-bundle')
-
- test_configs = ['Default-iphoneos', 'Default']
- # TODO(justincohen): Disabling 'Default-iphoneos' for xcode until bots are
- # configured with signing certs.
- if test.format == 'xcode':
- test_configs.remove('Default-iphoneos')
-
- for configuration in test_configs:
- test.set_configuration(configuration)
- test.build('test-device.gyp', 'test_app', chdir='app-bundle')
- result_file = test.built_file_path('Test App Gyp.bundle/Test App Gyp',
- chdir='app-bundle')
- test.must_exist(result_file)
-
- info_plist = test.built_file_path('Test App Gyp.bundle/Info.plist',
- chdir='app-bundle')
-
- # plistlib doesn't support binary plists, but that's what Xcode creates.
- if test.format == 'xcode':
- ConvertBinaryPlistToXML(info_plist)
- plist = plistlib.readPlist(info_plist)
-
- CheckPlistvalue(plist, 'UIDeviceFamily', [1, 2])
-
- if configuration == 'Default-iphoneos':
- CheckFileType(result_file, 'armv7')
- CheckPlistvalue(plist, 'DTPlatformVersion', GetProductVersion())
- CheckPlistvalue(plist, 'CFBundleSupportedPlatforms', ['iPhoneOS'])
- CheckPlistvalue(plist, 'DTPlatformName', 'iphoneos')
- else:
- CheckFileType(result_file, 'i386')
- CheckPlistNotSet(plist, 'DTPlatformVersion')
- CheckPlistvalue(plist, 'CFBundleSupportedPlatforms', ['iPhoneSimulator'])
- CheckPlistvalue(plist, 'DTPlatformName', 'iphonesimulator')
-
- if HasCerts() and configuration == 'Default-iphoneos':
- test.build('test-device.gyp', 'sig_test', chdir='app-bundle')
- result_file = test.built_file_path('sig_test.bundle/sig_test',
- chdir='app-bundle')
- CheckSignature(result_file)
- info_plist = test.built_file_path('sig_test.bundle/Info.plist',
- chdir='app-bundle')
-
- plist = plistlib.readPlist(info_plist)
- CheckPlistvalue(plist, 'UIDeviceFamily', [1])
-
- entitlements_file = test.built_file_path('sig_test.xcent',
- chdir='app-bundle')
- if os.path.isfile(entitlements_file):
- expected_entitlements = open(entitlements_file).read()
- CheckEntitlements(result_file, expected_entitlements)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that ios watch extensions and apps are built correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import sys
-if sys.platform == 'darwin' and TestMac.Xcode.Version() >= "0620":
- test = TestGyp.TestGyp(formats=['ninja', 'xcode'])
-
- test.run_gyp('watch.gyp', chdir='watch')
-
- test.build(
- 'watch.gyp',
- 'WatchContainer',
- chdir='watch')
-
- # Test that the extension exists
- test.built_file_must_exist(
- 'WatchContainer.app/PlugIns/WatchKitExtension.appex',
- chdir='watch')
-
- # Test that the watch app exists
- test.built_file_must_exist(
- 'WatchContainer.app/PlugIns/WatchKitExtension.appex/WatchApp.app',
- chdir='watch')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verify that the xcode-ninja GYP_GENERATOR runs and builds correctly.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['xcode'])
-
- # Run ninja and xcode-ninja
- test.formats = ['ninja', 'xcode-ninja']
- test.run_gyp('test.gyp', chdir='app-bundle')
-
- # If it builds the target, it works.
- test.build('test.ninja.gyp', chdir='app-bundle')
- test.pass_test()
+++ /dev/null
-{
- "images" : [
- {
- "size" : "14.5x14.5",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "notificationCenter",
- "subtype" : "38mm"
- },
- {
- "size" : "18x18",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "notificationCenter",
- "subtype" : "42mm"
- },
- {
- "size" : "29x29",
- "idiom" : "watch",
- "role" : "companionSettings",
- "scale" : "2x"
- },
- {
- "size" : "29.3x29.3",
- "idiom" : "watch",
- "role" : "companionSettings",
- "scale" : "3x"
- },
- {
- "size" : "40x40",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "appLauncher",
- "subtype" : "38mm"
- },
- {
- "size" : "44x44",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "appLauncher",
- "subtype" : "42mm"
- },
- {
- "size" : "86x86",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "quickLook",
- "subtype" : "38mm"
- },
- {
- "size" : "98x98",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "quickLook",
- "subtype" : "42mm"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+++ /dev/null
-{
- "images" : [
- {
- "orientation" : "portrait",
- "idiom" : "watch",
- "extent" : "full-screen",
- "minimum-system-version" : "8.0",
- "subtype" : "38mm",
- "scale" : "2x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "watch",
- "extent" : "full-screen",
- "minimum-system-version" : "8.0",
- "subtype" : "42mm",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleDisplayName</key>
- <string>WatchApp</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>com.google.gyptest.watch.watchapp</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>UISupportedInterfaceOrientations</key>
- <array>
- <string>UIInterfaceOrientationPortrait</string>
- <string>UIInterfaceOrientationPortraitUpsideDown</string>
- </array>
- <key>WKCompanionAppBundleIdentifier</key>
- <string>com.google.gyptest.watch</string>
- <key>WKWatchKitApp</key>
- <true/>
-</dict>
-</plist>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder.WatchKit.Storyboard" version="3.0" toolsVersion="6221" systemVersion="13E28" targetRuntime="watchKit" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="AgC-eL-Hgc">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6213"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBWatchKitPlugin" version="3733"/>
- </dependencies>
- <scenes>
- <!--Interface Controller-->
- <scene sceneID="aou-V4-d1y">
- <objects>
- <controller id="AgC-eL-Hgc" customClass="InterfaceController" customModuleProvider=""/>
- </objects>
- </scene>
- </scenes>
-</document>
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import <UIKit/UIKit.h>
-
-@interface AppDelegate : UIResponder <UIApplicationDelegate>
-
-@property (strong, nonatomic) UIWindow *window;
-
-@end
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import "AppDelegate.h"
-
-@interface AppDelegate ()
-
-@end
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication*)application
- didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
- // Override point for customization after application launch.
- return YES;
-}
-
-@end
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6162" systemVersion="14A238h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6160"/>
- </dependencies>
- <scenes>
- <!--View Controller-->
- <scene sceneID="tne-QT-ifu">
- <objects>
- <viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
- <layoutGuides>
- <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
- <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
- </layoutGuides>
- <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
- <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
- </view>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
- </objects>
- </scene>
- </scenes>
-</document>
+++ /dev/null
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+++ /dev/null
-{
- "images" : [
- {
- "orientation" : "portrait",
- "idiom" : "iphone",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "iphone",
- "subtype" : "retina4",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "1x"
- },
- {
- "orientation" : "landscape",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "1x"
- },
- {
- "orientation" : "portrait",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- },
- {
- "orientation" : "landscape",
- "idiom" : "ipad",
- "extent" : "full-screen",
- "minimum-system-version" : "7.0",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleExecutable</key>
- <string>WatchContainer</string>
- <key>CFBundleIdentifier</key>
- <string>com.google.gyptest.watch</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSRequiresIPhoneOS</key>
- <true/>
- <key>UIMainStoryboardFile</key>
- <string>Main</string>
- <key>UIRequiredDeviceCapabilities</key>
- <array>
- <string>armv7</string>
- </array>
-</dict>
-</plist>
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import <UIKit/UIKit.h>
-
-@interface ViewController : UIViewController
-
-
-@end
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import "ViewController.h"
-
-@interface ViewController ()
-
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
-}
-
-- (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
-}
-
-@end
+++ /dev/null
-// Copyright (c) 2014 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.
-//
-#import <UIKit/UIKit.h>
-#import "AppDelegate.h"
-
-int main(int argc, char* argv[]) {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil,
- NSStringFromClass([AppDelegate class]));
- }
-}
+++ /dev/null
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleDisplayName</key>
- <string>WatchContainer WatchKit Extension</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleIdentifier</key>
- <string>com.google.gyptest.watch.watchkitextension</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>$(PRODUCT_NAME)</string>
- <key>CFBundlePackageType</key>
- <string>XPC!</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>NSExtension</key>
- <dict>
- <key>NSExtensionAttributes</key>
- <dict>
- <key>WKAppBundleIdentifier</key>
- <string>com.google.gyptest.watch.watchapp</string>
- </dict>
- <key>NSExtensionPointIdentifier</key>
- <string>com.apple.watchkit</string>
- </dict>
- <key>RemoteInterfacePrincipalClass</key>
- <string>InterfaceController</string>
-</dict>
-</plist>
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import <Foundation/Foundation.h>
-#import <WatchKit/WatchKit.h>
-
-@interface InterfaceController : WKInterfaceController
-@end
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#import "InterfaceController.h"
-
-@implementation InterfaceController
-
-- (instancetype)initWithContext:(id)context {
- if ((self = [super initWithContext:context])) {
- // -initWithContext:
- }
- return self;
-}
-
-- (void)willActivate {
- // -willActivate
-}
-
-- (void)didDeactivate {
- // -didDeactivate
-}
-
-@end
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6148" systemVersion="14A229a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="ObA-dk-sSI">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6147"/>
- </dependencies>
- <scenes>
- <!--Action View Controller - Image-->
- <scene sceneID="7MM-of-jgj">
- <objects>
- <viewController title="Image" id="ObA-dk-sSI" customClass="ActionViewController" customModuleProvider="" sceneMemberID="viewController">
- <layoutGuides>
- <viewControllerLayoutGuide type="top" id="qkL-Od-lgU"/>
- <viewControllerLayoutGuide type="bottom" id="n38-gi-rB5"/>
- </layoutGuides>
- <view key="view" contentMode="scaleToFill" id="zMn-AG-sqS">
- <rect key="frame" x="0.0" y="0.0" width="320" height="528"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="9ga-4F-77Z">
- <rect key="frame" x="0.0" y="64" width="320" height="464"/>
- </imageView>
- <navigationBar contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NOA-Dm-cuz">
- <rect key="frame" x="0.0" y="20" width="320" height="44"/>
- <items>
- <navigationItem id="3HJ-uW-3hn">
- <barButtonItem key="leftBarButtonItem" title="Done" style="done" id="WYi-yp-eM6">
- <connections>
- <action selector="done" destination="ObA-dk-sSI" id="Qdu-qn-U6V"/>
- </connections>
- </barButtonItem>
- </navigationItem>
- </items>
- </navigationBar>
- </subviews>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <constraints>
- <constraint firstAttribute="trailing" secondItem="NOA-Dm-cuz" secondAttribute="trailing" id="A05-Pj-hrr"/>
- <constraint firstItem="9ga-4F-77Z" firstAttribute="top" secondItem="NOA-Dm-cuz" secondAttribute="bottom" id="Fps-3D-QQW"/>
- <constraint firstItem="NOA-Dm-cuz" firstAttribute="leading" secondItem="zMn-AG-sqS" secondAttribute="leading" id="HxO-8t-aoh"/>
- <constraint firstAttribute="trailing" secondItem="9ga-4F-77Z" secondAttribute="trailing" id="Ozw-Hg-0yh"/>
- <constraint firstItem="9ga-4F-77Z" firstAttribute="leading" secondItem="zMn-AG-sqS" secondAttribute="leading" id="XH5-ld-ONA"/>
- <constraint firstItem="n38-gi-rB5" firstAttribute="top" secondItem="9ga-4F-77Z" secondAttribute="bottom" id="eQg-nn-Zy4"/>
- <constraint firstItem="NOA-Dm-cuz" firstAttribute="top" secondItem="qkL-Od-lgU" secondAttribute="bottom" id="we0-1t-bgp"/>
- </constraints>
- </view>
- <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
- <size key="freeformSize" width="320" height="528"/>
- <connections>
- <outlet property="imageView" destination="9ga-4F-77Z" id="5y6-5w-9QO"/>
- <outlet property="view" destination="zMn-AG-sqS" id="Qma-de-2ek"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="X47-rx-isc" userLabel="First Responder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="252" y="-124"/>
- </scene>
- </scenes>
- <simulatedMetricsContainer key="defaultSimulatedMetrics">
- <simulatedStatusBarMetrics key="statusBar"/>
- <simulatedOrientationMetrics key="orientation"/>
- <simulatedScreenMetrics key="destination" type="retina4"/>
- </simulatedMetricsContainer>
-</document>
+++ /dev/null
-# Copyright (c) 2014 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
- 'target_defaults': {
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-fobjc-abi-version=2',
- ],
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'SDKROOT': 'iphoneos',
- 'IPHONEOS_DEPLOYMENT_TARGET': '8.2',
- 'CODE_SIGN_IDENTITY[sdk=iphoneos*]': 'iPhone Developer',
- }
- },
- 'targets': [
- {
- 'target_name': 'WatchContainer',
- 'product_name': 'WatchContainer',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'mac_bundle_resources': [
- 'WatchContainer/Base.lproj/Main.storyboard',
- ],
- 'sources': [
- 'WatchContainer/AppDelegate.h',
- 'WatchContainer/AppDelegate.m',
- 'WatchContainer/ViewController.h',
- 'WatchContainer/ViewController.m',
- 'WatchContainer/main.m',
- ],
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/WatchContainer.app/PlugIns',
- 'files': [
- '<(PRODUCT_DIR)/WatchKitExtension.appex',
- ]}],
- 'dependencies': [
- 'WatchKitExtension'
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
- ],
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'WatchContainer/Info.plist',
- },
- },
- {
- 'target_name': 'WatchKitExtension',
- 'product_name': 'WatchKitExtension',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'ios_watchkit_extension': 1,
- 'sources': [
- 'WatchKitExtension/InterfaceController.h',
- 'WatchKitExtension/InterfaceController.m',
- ],
- 'mac_bundle_resources': [
- 'WatchKitExtension/Images.xcassets',
- '<(PRODUCT_DIR)/WatchApp.app',
- ],
- 'dependencies': [
- 'WatchApp'
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- '$(SDKROOT)/System/Library/Frameworks/WatchKit.framework',
- ],
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'WatchKitExtension/Info.plist',
- 'SKIP_INSTALL': 'YES',
- 'COPY_PHASE_STRIP': 'NO',
- },
- },
- {
- 'target_name': 'WatchApp',
- 'product_name': 'WatchApp',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'ios_watch_app': 1,
- 'mac_bundle_resources': [
- 'WatchApp/Images.xcassets',
- 'WatchApp/Interface.storyboard',
- ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'WatchApp/Info.plist',
- 'SKIP_INSTALL': 'YES',
- 'COPY_PHASE_STRIP': 'NO',
- 'TARGETED_DEVICE_FAMILY': '4',
- 'TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]': '1,4',
- },
- },
- ],
-}
+++ /dev/null
-Supporting modules for GYP testing.
-
- TestCmd.py
- TestCommon.py
-
- Modules for generic testing of command-line utilities,
- specifically including the ability to copy a test configuration
- to temporary directories (with default cleanup on exit) as part
- of running test scripts that invoke commands, compare actual
- against expected output, etc.
-
- Our copies of these come from the SCons project,
- http://www.scons.org/.
-
- TestGyp.py
-
- Modules for GYP-specific tests, of course.
+++ /dev/null
-"""
-TestCmd.py: a testing framework for commands and scripts.
-
-The TestCmd module provides a framework for portable automated testing
-of executable commands and scripts (in any language, not just Python),
-especially commands and scripts that require file system interaction.
-
-In addition to running tests and evaluating conditions, the TestCmd
-module manages and cleans up one or more temporary workspace
-directories, and provides methods for creating files and directories in
-those workspace directories from in-line data, here-documents), allowing
-tests to be completely self-contained.
-
-A TestCmd environment object is created via the usual invocation:
-
- import TestCmd
- test = TestCmd.TestCmd()
-
-There are a bunch of keyword arguments available at instantiation:
-
- test = TestCmd.TestCmd(description = 'string',
- program = 'program_or_script_to_test',
- interpreter = 'script_interpreter',
- workdir = 'prefix',
- subdir = 'subdir',
- verbose = Boolean,
- match = default_match_function,
- diff = default_diff_function,
- combine = Boolean)
-
-There are a bunch of methods that let you do different things:
-
- test.verbose_set(1)
-
- test.description_set('string')
-
- test.program_set('program_or_script_to_test')
-
- test.interpreter_set('script_interpreter')
- test.interpreter_set(['script_interpreter', 'arg'])
-
- test.workdir_set('prefix')
- test.workdir_set('')
-
- test.workpath('file')
- test.workpath('subdir', 'file')
-
- test.subdir('subdir', ...)
-
- test.rmdir('subdir', ...)
-
- test.write('file', "contents\n")
- test.write(['subdir', 'file'], "contents\n")
-
- test.read('file')
- test.read(['subdir', 'file'])
- test.read('file', mode)
- test.read(['subdir', 'file'], mode)
-
- test.writable('dir', 1)
- test.writable('dir', None)
-
- test.preserve(condition, ...)
-
- test.cleanup(condition)
-
- test.command_args(program = 'program_or_script_to_run',
- interpreter = 'script_interpreter',
- arguments = 'arguments to pass to program')
-
- test.run(program = 'program_or_script_to_run',
- interpreter = 'script_interpreter',
- arguments = 'arguments to pass to program',
- chdir = 'directory_to_chdir_to',
- stdin = 'input to feed to the program\n')
- universal_newlines = True)
-
- p = test.start(program = 'program_or_script_to_run',
- interpreter = 'script_interpreter',
- arguments = 'arguments to pass to program',
- universal_newlines = None)
-
- test.finish(self, p)
-
- test.pass_test()
- test.pass_test(condition)
- test.pass_test(condition, function)
-
- test.fail_test()
- test.fail_test(condition)
- test.fail_test(condition, function)
- test.fail_test(condition, function, skip)
-
- test.no_result()
- test.no_result(condition)
- test.no_result(condition, function)
- test.no_result(condition, function, skip)
-
- test.stdout()
- test.stdout(run)
-
- test.stderr()
- test.stderr(run)
-
- test.symlink(target, link)
-
- test.banner(string)
- test.banner(string, width)
-
- test.diff(actual, expected)
-
- test.match(actual, expected)
-
- test.match_exact("actual 1\nactual 2\n", "expected 1\nexpected 2\n")
- test.match_exact(["actual 1\n", "actual 2\n"],
- ["expected 1\n", "expected 2\n"])
-
- test.match_re("actual 1\nactual 2\n", regex_string)
- test.match_re(["actual 1\n", "actual 2\n"], list_of_regexes)
-
- test.match_re_dotall("actual 1\nactual 2\n", regex_string)
- test.match_re_dotall(["actual 1\n", "actual 2\n"], list_of_regexes)
-
- test.tempdir()
- test.tempdir('temporary-directory')
-
- test.sleep()
- test.sleep(seconds)
-
- test.where_is('foo')
- test.where_is('foo', 'PATH1:PATH2')
- test.where_is('foo', 'PATH1;PATH2', '.suffix3;.suffix4')
-
- test.unlink('file')
- test.unlink('subdir', 'file')
-
-The TestCmd module provides pass_test(), fail_test(), and no_result()
-unbound functions that report test results for use with the Aegis change
-management system. These methods terminate the test immediately,
-reporting PASSED, FAILED, or NO RESULT respectively, and exiting with
-status 0 (success), 1 or 2 respectively. This allows for a distinction
-between an actual failed test and a test that could not be properly
-evaluated because of an external condition (such as a full file system
-or incorrect permissions).
-
- import TestCmd
-
- TestCmd.pass_test()
- TestCmd.pass_test(condition)
- TestCmd.pass_test(condition, function)
-
- TestCmd.fail_test()
- TestCmd.fail_test(condition)
- TestCmd.fail_test(condition, function)
- TestCmd.fail_test(condition, function, skip)
-
- TestCmd.no_result()
- TestCmd.no_result(condition)
- TestCmd.no_result(condition, function)
- TestCmd.no_result(condition, function, skip)
-
-The TestCmd module also provides unbound functions that handle matching
-in the same way as the match_*() methods described above.
-
- import TestCmd
-
- test = TestCmd.TestCmd(match = TestCmd.match_exact)
-
- test = TestCmd.TestCmd(match = TestCmd.match_re)
-
- test = TestCmd.TestCmd(match = TestCmd.match_re_dotall)
-
-The TestCmd module provides unbound functions that can be used for the
-"diff" argument to TestCmd.TestCmd instantiation:
-
- import TestCmd
-
- test = TestCmd.TestCmd(match = TestCmd.match_re,
- diff = TestCmd.diff_re)
-
- test = TestCmd.TestCmd(diff = TestCmd.simple_diff)
-
-The "diff" argument can also be used with standard difflib functions:
-
- import difflib
-
- test = TestCmd.TestCmd(diff = difflib.context_diff)
-
- test = TestCmd.TestCmd(diff = difflib.unified_diff)
-
-Lastly, the where_is() method also exists in an unbound function
-version.
-
- import TestCmd
-
- TestCmd.where_is('foo')
- TestCmd.where_is('foo', 'PATH1:PATH2')
- TestCmd.where_is('foo', 'PATH1;PATH2', '.suffix3;.suffix4')
-"""
-
-# Copyright 2000-2010 Steven Knight
-# This module is free software, and you may redistribute it and/or modify
-# it under the same terms as Python itself, so long as this copyright message
-# and disclaimer are retained in their original form.
-#
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
-# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
-# THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-# DAMAGE.
-#
-# THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-# PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
-# AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
-# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
-__author__ = "Steven Knight <knight at baldmt dot com>"
-__revision__ = "TestCmd.py 0.37.D001 2010/01/11 16:55:50 knight"
-__version__ = "0.37"
-
-import errno
-import os
-import os.path
-import re
-import shutil
-import stat
-import string
-import sys
-import tempfile
-import time
-import traceback
-import types
-import UserList
-
-__all__ = [
- 'diff_re',
- 'fail_test',
- 'no_result',
- 'pass_test',
- 'match_exact',
- 'match_re',
- 'match_re_dotall',
- 'python_executable',
- 'TestCmd'
-]
-
-try:
- import difflib
-except ImportError:
- __all__.append('simple_diff')
-
-def is_List(e):
- return type(e) is types.ListType \
- or isinstance(e, UserList.UserList)
-
-try:
- from UserString import UserString
-except ImportError:
- class UserString:
- pass
-
-if hasattr(types, 'UnicodeType'):
- def is_String(e):
- return type(e) is types.StringType \
- or type(e) is types.UnicodeType \
- or isinstance(e, UserString)
-else:
- def is_String(e):
- return type(e) is types.StringType or isinstance(e, UserString)
-
-tempfile.template = 'testcmd.'
-if os.name in ('posix', 'nt'):
- tempfile.template = 'testcmd.' + str(os.getpid()) + '.'
-else:
- tempfile.template = 'testcmd.'
-
-re_space = re.compile('\s')
-
-_Cleanup = []
-
-_chain_to_exitfunc = None
-
-def _clean():
- global _Cleanup
- cleanlist = filter(None, _Cleanup)
- del _Cleanup[:]
- cleanlist.reverse()
- for test in cleanlist:
- test.cleanup()
- if _chain_to_exitfunc:
- _chain_to_exitfunc()
-
-try:
- import atexit
-except ImportError:
- # TODO(1.5): atexit requires python 2.0, so chain sys.exitfunc
- try:
- _chain_to_exitfunc = sys.exitfunc
- except AttributeError:
- pass
- sys.exitfunc = _clean
-else:
- atexit.register(_clean)
-
-try:
- zip
-except NameError:
- def zip(*lists):
- result = []
- for i in xrange(min(map(len, lists))):
- result.append(tuple(map(lambda l, i=i: l[i], lists)))
- return result
-
-class Collector:
- def __init__(self, top):
- self.entries = [top]
- def __call__(self, arg, dirname, names):
- pathjoin = lambda n, d=dirname: os.path.join(d, n)
- self.entries.extend(map(pathjoin, names))
-
-def _caller(tblist, skip):
- string = ""
- arr = []
- for file, line, name, text in tblist:
- if file[-10:] == "TestCmd.py":
- break
- arr = [(file, line, name, text)] + arr
- atfrom = "at"
- for file, line, name, text in arr[skip:]:
- if name in ("?", "<module>"):
- name = ""
- else:
- name = " (" + name + ")"
- string = string + ("%s line %d of %s%s\n" % (atfrom, line, file, name))
- atfrom = "\tfrom"
- return string
-
-def fail_test(self = None, condition = 1, function = None, skip = 0):
- """Cause the test to fail.
-
- By default, the fail_test() method reports that the test FAILED
- and exits with a status of 1. If a condition argument is supplied,
- the test fails only if the condition is true.
- """
- if not condition:
- return
- if not function is None:
- function()
- of = ""
- desc = ""
- sep = " "
- if not self is None:
- if self.program:
- of = " of " + self.program
- sep = "\n\t"
- if self.description:
- desc = " [" + self.description + "]"
- sep = "\n\t"
-
- at = _caller(traceback.extract_stack(), skip)
- sys.stderr.write("FAILED test" + of + desc + sep + at)
-
- sys.exit(1)
-
-def no_result(self = None, condition = 1, function = None, skip = 0):
- """Causes a test to exit with no valid result.
-
- By default, the no_result() method reports NO RESULT for the test
- and exits with a status of 2. If a condition argument is supplied,
- the test fails only if the condition is true.
- """
- if not condition:
- return
- if not function is None:
- function()
- of = ""
- desc = ""
- sep = " "
- if not self is None:
- if self.program:
- of = " of " + self.program
- sep = "\n\t"
- if self.description:
- desc = " [" + self.description + "]"
- sep = "\n\t"
-
- if os.environ.get('TESTCMD_DEBUG_SKIPS'):
- at = _caller(traceback.extract_stack(), skip)
- sys.stderr.write("NO RESULT for test" + of + desc + sep + at)
- else:
- sys.stderr.write("NO RESULT\n")
-
- sys.exit(2)
-
-def pass_test(self = None, condition = 1, function = None):
- """Causes a test to pass.
-
- By default, the pass_test() method reports PASSED for the test
- and exits with a status of 0. If a condition argument is supplied,
- the test passes only if the condition is true.
- """
- if not condition:
- return
- if not function is None:
- function()
- sys.stderr.write("PASSED\n")
- sys.exit(0)
-
-def match_exact(lines = None, matches = None):
- """
- """
- if not is_List(lines):
- lines = string.split(lines, "\n")
- if not is_List(matches):
- matches = string.split(matches, "\n")
- if len(lines) != len(matches):
- return
- for i in range(len(lines)):
- if lines[i] != matches[i]:
- return
- return 1
-
-def match_re(lines = None, res = None):
- """
- """
- if not is_List(lines):
- lines = string.split(lines, "\n")
- if not is_List(res):
- res = string.split(res, "\n")
- if len(lines) != len(res):
- return
- for i in range(len(lines)):
- s = "^" + res[i] + "$"
- try:
- expr = re.compile(s)
- except re.error, e:
- msg = "Regular expression error in %s: %s"
- raise re.error, msg % (repr(s), e[0])
- if not expr.search(lines[i]):
- return
- return 1
-
-def match_re_dotall(lines = None, res = None):
- """
- """
- if not type(lines) is type(""):
- lines = string.join(lines, "\n")
- if not type(res) is type(""):
- res = string.join(res, "\n")
- s = "^" + res + "$"
- try:
- expr = re.compile(s, re.DOTALL)
- except re.error, e:
- msg = "Regular expression error in %s: %s"
- raise re.error, msg % (repr(s), e[0])
- if expr.match(lines):
- return 1
-
-try:
- import difflib
-except ImportError:
- pass
-else:
- def simple_diff(a, b, fromfile='', tofile='',
- fromfiledate='', tofiledate='', n=3, lineterm='\n'):
- """
- A function with the same calling signature as difflib.context_diff
- (diff -c) and difflib.unified_diff (diff -u) but which prints
- output like the simple, unadorned 'diff" command.
- """
- sm = difflib.SequenceMatcher(None, a, b)
- def comma(x1, x2):
- return x1+1 == x2 and str(x2) or '%s,%s' % (x1+1, x2)
- result = []
- for op, a1, a2, b1, b2 in sm.get_opcodes():
- if op == 'delete':
- result.append("%sd%d" % (comma(a1, a2), b1))
- result.extend(map(lambda l: '< ' + l, a[a1:a2]))
- elif op == 'insert':
- result.append("%da%s" % (a1, comma(b1, b2)))
- result.extend(map(lambda l: '> ' + l, b[b1:b2]))
- elif op == 'replace':
- result.append("%sc%s" % (comma(a1, a2), comma(b1, b2)))
- result.extend(map(lambda l: '< ' + l, a[a1:a2]))
- result.append('---')
- result.extend(map(lambda l: '> ' + l, b[b1:b2]))
- return result
-
-def diff_re(a, b, fromfile='', tofile='',
- fromfiledate='', tofiledate='', n=3, lineterm='\n'):
- """
- A simple "diff" of two sets of lines when the expected lines
- are regular expressions. This is a really dumb thing that
- just compares each line in turn, so it doesn't look for
- chunks of matching lines and the like--but at least it lets
- you know exactly which line first didn't compare correctl...
- """
- result = []
- diff = len(a) - len(b)
- if diff < 0:
- a = a + ['']*(-diff)
- elif diff > 0:
- b = b + ['']*diff
- i = 0
- for aline, bline in zip(a, b):
- s = "^" + aline + "$"
- try:
- expr = re.compile(s)
- except re.error, e:
- msg = "Regular expression error in %s: %s"
- raise re.error, msg % (repr(s), e[0])
- if not expr.search(bline):
- result.append("%sc%s" % (i+1, i+1))
- result.append('< ' + repr(a[i]))
- result.append('---')
- result.append('> ' + repr(b[i]))
- i = i+1
- return result
-
-if os.name == 'java':
-
- python_executable = os.path.join(sys.prefix, 'jython')
-
-else:
-
- python_executable = sys.executable
-
-if sys.platform == 'win32':
-
- default_sleep_seconds = 2
-
- def where_is(file, path=None, pathext=None):
- if path is None:
- path = os.environ['PATH']
- if is_String(path):
- path = string.split(path, os.pathsep)
- if pathext is None:
- pathext = os.environ['PATHEXT']
- if is_String(pathext):
- pathext = string.split(pathext, os.pathsep)
- for ext in pathext:
- if string.lower(ext) == string.lower(file[-len(ext):]):
- pathext = ['']
- break
- for dir in path:
- f = os.path.join(dir, file)
- for ext in pathext:
- fext = f + ext
- if os.path.isfile(fext):
- return fext
- return None
-
-else:
-
- def where_is(file, path=None, pathext=None):
- if path is None:
- path = os.environ['PATH']
- if is_String(path):
- path = string.split(path, os.pathsep)
- for dir in path:
- f = os.path.join(dir, file)
- if os.path.isfile(f):
- try:
- st = os.stat(f)
- except OSError:
- continue
- if stat.S_IMODE(st[stat.ST_MODE]) & 0111:
- return f
- return None
-
- default_sleep_seconds = 1
-
-
-
-try:
- import subprocess
-except ImportError:
- # The subprocess module doesn't exist in this version of Python,
- # so we're going to cobble up something that looks just enough
- # like its API for our purposes below.
- import new
-
- subprocess = new.module('subprocess')
-
- subprocess.PIPE = 'PIPE'
- subprocess.STDOUT = 'STDOUT'
- subprocess.mswindows = (sys.platform == 'win32')
-
- try:
- import popen2
- popen2.Popen3
- except AttributeError:
- class Popen3:
- universal_newlines = 1
- def __init__(self, command, **kw):
- if sys.platform == 'win32' and command[0] == '"':
- command = '"' + command + '"'
- (stdin, stdout, stderr) = os.popen3(' ' + command)
- self.stdin = stdin
- self.stdout = stdout
- self.stderr = stderr
- def close_output(self):
- self.stdout.close()
- self.resultcode = self.stderr.close()
- def wait(self):
- resultcode = self.resultcode
- if os.WIFEXITED(resultcode):
- return os.WEXITSTATUS(resultcode)
- elif os.WIFSIGNALED(resultcode):
- return os.WTERMSIG(resultcode)
- else:
- return None
-
- else:
- try:
- popen2.Popen4
- except AttributeError:
- # A cribbed Popen4 class, with some retrofitted code from
- # the Python 1.5 Popen3 class methods to do certain things
- # by hand.
- class Popen4(popen2.Popen3):
- childerr = None
-
- def __init__(self, cmd, bufsize=-1):
- p2cread, p2cwrite = os.pipe()
- c2pread, c2pwrite = os.pipe()
- self.pid = os.fork()
- if self.pid == 0:
- # Child
- os.dup2(p2cread, 0)
- os.dup2(c2pwrite, 1)
- os.dup2(c2pwrite, 2)
- for i in range(3, popen2.MAXFD):
- try:
- os.close(i)
- except: pass
- try:
- os.execvp(cmd[0], cmd)
- finally:
- os._exit(1)
- # Shouldn't come here, I guess
- os._exit(1)
- os.close(p2cread)
- self.tochild = os.fdopen(p2cwrite, 'w', bufsize)
- os.close(c2pwrite)
- self.fromchild = os.fdopen(c2pread, 'r', bufsize)
- popen2._active.append(self)
-
- popen2.Popen4 = Popen4
-
- class Popen3(popen2.Popen3, popen2.Popen4):
- universal_newlines = 1
- def __init__(self, command, **kw):
- if kw.get('stderr') == 'STDOUT':
- apply(popen2.Popen4.__init__, (self, command, 1))
- else:
- apply(popen2.Popen3.__init__, (self, command, 1))
- self.stdin = self.tochild
- self.stdout = self.fromchild
- self.stderr = self.childerr
- def wait(self, *args, **kw):
- resultcode = apply(popen2.Popen3.wait, (self,)+args, kw)
- if os.WIFEXITED(resultcode):
- return os.WEXITSTATUS(resultcode)
- elif os.WIFSIGNALED(resultcode):
- return os.WTERMSIG(resultcode)
- else:
- return None
-
- subprocess.Popen = Popen3
-
-
-
-# From Josiah Carlson,
-# ASPN : Python Cookbook : Module to allow Asynchronous subprocess use on Windows and Posix platforms
-# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/440554
-
-PIPE = subprocess.PIPE
-
-if subprocess.mswindows:
- from win32file import ReadFile, WriteFile
- from win32pipe import PeekNamedPipe
- import msvcrt
-else:
- import select
- import fcntl
-
- try: fcntl.F_GETFL
- except AttributeError: fcntl.F_GETFL = 3
-
- try: fcntl.F_SETFL
- except AttributeError: fcntl.F_SETFL = 4
-
-class Popen(subprocess.Popen):
- def recv(self, maxsize=None):
- return self._recv('stdout', maxsize)
-
- def recv_err(self, maxsize=None):
- return self._recv('stderr', maxsize)
-
- def send_recv(self, input='', maxsize=None):
- return self.send(input), self.recv(maxsize), self.recv_err(maxsize)
-
- def get_conn_maxsize(self, which, maxsize):
- if maxsize is None:
- maxsize = 1024
- elif maxsize < 1:
- maxsize = 1
- return getattr(self, which), maxsize
-
- def _close(self, which):
- getattr(self, which).close()
- setattr(self, which, None)
-
- if subprocess.mswindows:
- def send(self, input):
- if not self.stdin:
- return None
-
- try:
- x = msvcrt.get_osfhandle(self.stdin.fileno())
- (errCode, written) = WriteFile(x, input)
- except ValueError:
- return self._close('stdin')
- except (subprocess.pywintypes.error, Exception), why:
- if why[0] in (109, errno.ESHUTDOWN):
- return self._close('stdin')
- raise
-
- return written
-
- def _recv(self, which, maxsize):
- conn, maxsize = self.get_conn_maxsize(which, maxsize)
- if conn is None:
- return None
-
- try:
- x = msvcrt.get_osfhandle(conn.fileno())
- (read, nAvail, nMessage) = PeekNamedPipe(x, 0)
- if maxsize < nAvail:
- nAvail = maxsize
- if nAvail > 0:
- (errCode, read) = ReadFile(x, nAvail, None)
- except ValueError:
- return self._close(which)
- except (subprocess.pywintypes.error, Exception), why:
- if why[0] in (109, errno.ESHUTDOWN):
- return self._close(which)
- raise
-
- #if self.universal_newlines:
- # read = self._translate_newlines(read)
- return read
-
- else:
- def send(self, input):
- if not self.stdin:
- return None
-
- if not select.select([], [self.stdin], [], 0)[1]:
- return 0
-
- try:
- written = os.write(self.stdin.fileno(), input)
- except OSError, why:
- if why[0] == errno.EPIPE: #broken pipe
- return self._close('stdin')
- raise
-
- return written
-
- def _recv(self, which, maxsize):
- conn, maxsize = self.get_conn_maxsize(which, maxsize)
- if conn is None:
- return None
-
- try:
- flags = fcntl.fcntl(conn, fcntl.F_GETFL)
- except TypeError:
- flags = None
- else:
- if not conn.closed:
- fcntl.fcntl(conn, fcntl.F_SETFL, flags| os.O_NONBLOCK)
-
- try:
- if not select.select([conn], [], [], 0)[0]:
- return ''
-
- r = conn.read(maxsize)
- if not r:
- return self._close(which)
-
- #if self.universal_newlines:
- # r = self._translate_newlines(r)
- return r
- finally:
- if not conn.closed and not flags is None:
- fcntl.fcntl(conn, fcntl.F_SETFL, flags)
-
-disconnect_message = "Other end disconnected!"
-
-def recv_some(p, t=.1, e=1, tr=5, stderr=0):
- if tr < 1:
- tr = 1
- x = time.time()+t
- y = []
- r = ''
- pr = p.recv
- if stderr:
- pr = p.recv_err
- while time.time() < x or r:
- r = pr()
- if r is None:
- if e:
- raise Exception(disconnect_message)
- else:
- break
- elif r:
- y.append(r)
- else:
- time.sleep(max((x-time.time())/tr, 0))
- return ''.join(y)
-
-# TODO(3.0: rewrite to use memoryview()
-def send_all(p, data):
- while len(data):
- sent = p.send(data)
- if sent is None:
- raise Exception(disconnect_message)
- data = buffer(data, sent)
-
-
-
-try:
- object
-except NameError:
- class object:
- pass
-
-
-
-class TestCmd(object):
- """Class TestCmd
- """
-
- def __init__(self, description = None,
- program = None,
- interpreter = None,
- workdir = None,
- subdir = None,
- verbose = None,
- match = None,
- diff = None,
- combine = 0,
- universal_newlines = 1):
- self._cwd = os.getcwd()
- self.description_set(description)
- self.program_set(program)
- self.interpreter_set(interpreter)
- if verbose is None:
- try:
- verbose = max( 0, int(os.environ.get('TESTCMD_VERBOSE', 0)) )
- except ValueError:
- verbose = 0
- self.verbose_set(verbose)
- self.combine = combine
- self.universal_newlines = universal_newlines
- if match is not None:
- self.match_function = match
- else:
- self.match_function = match_re
- if diff is not None:
- self.diff_function = diff
- else:
- try:
- difflib
- except NameError:
- pass
- else:
- self.diff_function = simple_diff
- #self.diff_function = difflib.context_diff
- #self.diff_function = difflib.unified_diff
- self._dirlist = []
- self._preserve = {'pass_test': 0, 'fail_test': 0, 'no_result': 0}
- if os.environ.has_key('PRESERVE') and not os.environ['PRESERVE'] is '':
- self._preserve['pass_test'] = os.environ['PRESERVE']
- self._preserve['fail_test'] = os.environ['PRESERVE']
- self._preserve['no_result'] = os.environ['PRESERVE']
- else:
- try:
- self._preserve['pass_test'] = os.environ['PRESERVE_PASS']
- except KeyError:
- pass
- try:
- self._preserve['fail_test'] = os.environ['PRESERVE_FAIL']
- except KeyError:
- pass
- try:
- self._preserve['no_result'] = os.environ['PRESERVE_NO_RESULT']
- except KeyError:
- pass
- self._stdout = []
- self._stderr = []
- self.status = None
- self.condition = 'no_result'
- self.workdir_set(workdir)
- self.subdir(subdir)
-
- def __del__(self):
- self.cleanup()
-
- def __repr__(self):
- return "%x" % id(self)
-
- banner_char = '='
- banner_width = 80
-
- def banner(self, s, width=None):
- if width is None:
- width = self.banner_width
- return s + self.banner_char * (width - len(s))
-
- if os.name == 'posix':
-
- def escape(self, arg):
- "escape shell special characters"
- slash = '\\'
- special = '"$'
-
- arg = string.replace(arg, slash, slash+slash)
- for c in special:
- arg = string.replace(arg, c, slash+c)
-
- if re_space.search(arg):
- arg = '"' + arg + '"'
- return arg
-
- else:
-
- # Windows does not allow special characters in file names
- # anyway, so no need for an escape function, we will just quote
- # the arg.
- def escape(self, arg):
- if re_space.search(arg):
- arg = '"' + arg + '"'
- return arg
-
- def canonicalize(self, path):
- if is_List(path):
- path = apply(os.path.join, tuple(path))
- if not os.path.isabs(path):
- path = os.path.join(self.workdir, path)
- return path
-
- def chmod(self, path, mode):
- """Changes permissions on the specified file or directory
- path name."""
- path = self.canonicalize(path)
- os.chmod(path, mode)
-
- def cleanup(self, condition = None):
- """Removes any temporary working directories for the specified
- TestCmd environment. If the environment variable PRESERVE was
- set when the TestCmd environment was created, temporary working
- directories are not removed. If any of the environment variables
- PRESERVE_PASS, PRESERVE_FAIL, or PRESERVE_NO_RESULT were set
- when the TestCmd environment was created, then temporary working
- directories are not removed if the test passed, failed, or had
- no result, respectively. Temporary working directories are also
- preserved for conditions specified via the preserve method.
-
- Typically, this method is not called directly, but is used when
- the script exits to clean up temporary working directories as
- appropriate for the exit status.
- """
- if not self._dirlist:
- return
- os.chdir(self._cwd)
- self.workdir = None
- if condition is None:
- condition = self.condition
- if self._preserve[condition]:
- for dir in self._dirlist:
- print "Preserved directory", dir
- else:
- list = self._dirlist[:]
- list.reverse()
- for dir in list:
- self.writable(dir, 1)
- shutil.rmtree(dir, ignore_errors = 1)
- self._dirlist = []
-
- try:
- global _Cleanup
- _Cleanup.remove(self)
- except (AttributeError, ValueError):
- pass
-
- def command_args(self, program = None,
- interpreter = None,
- arguments = None):
- if program:
- if type(program) == type('') and not os.path.isabs(program):
- program = os.path.join(self._cwd, program)
- else:
- program = self.program
- if not interpreter:
- interpreter = self.interpreter
- if not type(program) in [type([]), type(())]:
- program = [program]
- cmd = list(program)
- if interpreter:
- if not type(interpreter) in [type([]), type(())]:
- interpreter = [interpreter]
- cmd = list(interpreter) + cmd
- if arguments:
- if type(arguments) == type(''):
- arguments = string.split(arguments)
- cmd.extend(arguments)
- return cmd
-
- def description_set(self, description):
- """Set the description of the functionality being tested.
- """
- self.description = description
-
- try:
- difflib
- except NameError:
- def diff(self, a, b, name, *args, **kw):
- print self.banner('Expected %s' % name)
- print a
- print self.banner('Actual %s' % name)
- print b
- else:
- def diff(self, a, b, name, *args, **kw):
- print self.banner(name)
- args = (a.splitlines(), b.splitlines()) + args
- lines = apply(self.diff_function, args, kw)
- for l in lines:
- print l
-
- def fail_test(self, condition = 1, function = None, skip = 0):
- """Cause the test to fail.
- """
- if not condition:
- return
- self.condition = 'fail_test'
- fail_test(self = self,
- condition = condition,
- function = function,
- skip = skip)
-
- def interpreter_set(self, interpreter):
- """Set the program to be used to interpret the program
- under test as a script.
- """
- self.interpreter = interpreter
-
- def match(self, lines, matches):
- """Compare actual and expected file contents.
- """
- return self.match_function(lines, matches)
-
- def match_exact(self, lines, matches):
- """Compare actual and expected file contents.
- """
- return match_exact(lines, matches)
-
- def match_re(self, lines, res):
- """Compare actual and expected file contents.
- """
- return match_re(lines, res)
-
- def match_re_dotall(self, lines, res):
- """Compare actual and expected file contents.
- """
- return match_re_dotall(lines, res)
-
- def no_result(self, condition = 1, function = None, skip = 0):
- """Report that the test could not be run.
- """
- if not condition:
- return
- self.condition = 'no_result'
- no_result(self = self,
- condition = condition,
- function = function,
- skip = skip)
-
- def pass_test(self, condition = 1, function = None):
- """Cause the test to pass.
- """
- if not condition:
- return
- self.condition = 'pass_test'
- pass_test(self = self, condition = condition, function = function)
-
- def preserve(self, *conditions):
- """Arrange for the temporary working directories for the
- specified TestCmd environment to be preserved for one or more
- conditions. If no conditions are specified, arranges for
- the temporary working directories to be preserved for all
- conditions.
- """
- if conditions is ():
- conditions = ('pass_test', 'fail_test', 'no_result')
- for cond in conditions:
- self._preserve[cond] = 1
-
- def program_set(self, program):
- """Set the executable program or script to be tested.
- """
- if program and not os.path.isabs(program):
- program = os.path.join(self._cwd, program)
- self.program = program
-
- def read(self, file, mode = 'rb'):
- """Reads and returns the contents of the specified file name.
- The file name may be a list, in which case the elements are
- concatenated with the os.path.join() method. The file is
- assumed to be under the temporary working directory unless it
- is an absolute path name. The I/O mode for the file may
- be specified; it must begin with an 'r'. The default is
- 'rb' (binary read).
- """
- file = self.canonicalize(file)
- if mode[0] != 'r':
- raise ValueError, "mode must begin with 'r'"
- with open(file, mode) as f:
- result = f.read()
- return result
-
- def rmdir(self, dir):
- """Removes the specified dir name.
- The dir name may be a list, in which case the elements are
- concatenated with the os.path.join() method. The dir is
- assumed to be under the temporary working directory unless it
- is an absolute path name.
- The dir must be empty.
- """
- dir = self.canonicalize(dir)
- os.rmdir(dir)
-
- def start(self, program = None,
- interpreter = None,
- arguments = None,
- universal_newlines = None,
- **kw):
- """
- Starts a program or script for the test environment.
-
- The specified program will have the original directory
- prepended unless it is enclosed in a [list].
- """
- cmd = self.command_args(program, interpreter, arguments)
- cmd_string = string.join(map(self.escape, cmd), ' ')
- if self.verbose:
- sys.stderr.write(cmd_string + "\n")
- if universal_newlines is None:
- universal_newlines = self.universal_newlines
-
- # On Windows, if we make stdin a pipe when we plan to send
- # no input, and the test program exits before
- # Popen calls msvcrt.open_osfhandle, that call will fail.
- # So don't use a pipe for stdin if we don't need one.
- stdin = kw.get('stdin', None)
- if stdin is not None:
- stdin = subprocess.PIPE
-
- combine = kw.get('combine', self.combine)
- if combine:
- stderr_value = subprocess.STDOUT
- else:
- stderr_value = subprocess.PIPE
-
- return Popen(cmd,
- stdin=stdin,
- stdout=subprocess.PIPE,
- stderr=stderr_value,
- universal_newlines=universal_newlines)
-
- def finish(self, popen, **kw):
- """
- Finishes and waits for the process being run under control of
- the specified popen argument, recording the exit status,
- standard output and error output.
- """
- popen.stdin.close()
- self.status = popen.wait()
- if not self.status:
- self.status = 0
- self._stdout.append(popen.stdout.read())
- if popen.stderr:
- stderr = popen.stderr.read()
- else:
- stderr = ''
- self._stderr.append(stderr)
-
- def run(self, program = None,
- interpreter = None,
- arguments = None,
- chdir = None,
- stdin = None,
- universal_newlines = None):
- """Runs a test of the program or script for the test
- environment. Standard output and error output are saved for
- future retrieval via the stdout() and stderr() methods.
-
- The specified program will have the original directory
- prepended unless it is enclosed in a [list].
- """
- if chdir:
- oldcwd = os.getcwd()
- if not os.path.isabs(chdir):
- chdir = os.path.join(self.workpath(chdir))
- if self.verbose:
- sys.stderr.write("chdir(" + chdir + ")\n")
- os.chdir(chdir)
- p = self.start(program,
- interpreter,
- arguments,
- universal_newlines,
- stdin=stdin)
- if stdin:
- if is_List(stdin):
- for line in stdin:
- p.stdin.write(line)
- else:
- p.stdin.write(stdin)
- p.stdin.close()
-
- out = p.stdout.read()
- if p.stderr is None:
- err = ''
- else:
- err = p.stderr.read()
- try:
- close_output = p.close_output
- except AttributeError:
- p.stdout.close()
- if not p.stderr is None:
- p.stderr.close()
- else:
- close_output()
-
- self._stdout.append(out)
- self._stderr.append(err)
-
- self.status = p.wait()
- if not self.status:
- self.status = 0
-
- if chdir:
- os.chdir(oldcwd)
- if self.verbose >= 2:
- write = sys.stdout.write
- write('============ STATUS: %d\n' % self.status)
- out = self.stdout()
- if out or self.verbose >= 3:
- write('============ BEGIN STDOUT (len=%d):\n' % len(out))
- write(out)
- write('============ END STDOUT\n')
- err = self.stderr()
- if err or self.verbose >= 3:
- write('============ BEGIN STDERR (len=%d)\n' % len(err))
- write(err)
- write('============ END STDERR\n')
-
- def sleep(self, seconds = default_sleep_seconds):
- """Sleeps at least the specified number of seconds. If no
- number is specified, sleeps at least the minimum number of
- seconds necessary to advance file time stamps on the current
- system. Sleeping more seconds is all right.
- """
- time.sleep(seconds)
-
- def stderr(self, run = None):
- """Returns the error output from the specified run number.
- If there is no specified run number, then returns the error
- output of the last run. If the run number is less than zero,
- then returns the error output from that many runs back from the
- current run.
- """
- if not run:
- run = len(self._stderr)
- elif run < 0:
- run = len(self._stderr) + run
- run = run - 1
- return self._stderr[run]
-
- def stdout(self, run = None):
- """Returns the standard output from the specified run number.
- If there is no specified run number, then returns the standard
- output of the last run. If the run number is less than zero,
- then returns the standard output from that many runs back from
- the current run.
- """
- if not run:
- run = len(self._stdout)
- elif run < 0:
- run = len(self._stdout) + run
- run = run - 1
- return self._stdout[run]
-
- def subdir(self, *subdirs):
- """Create new subdirectories under the temporary working
- directory, one for each argument. An argument may be a list,
- in which case the list elements are concatenated using the
- os.path.join() method. Subdirectories multiple levels deep
- must be created using a separate argument for each level:
-
- test.subdir('sub', ['sub', 'dir'], ['sub', 'dir', 'ectory'])
-
- Returns the number of subdirectories actually created.
- """
- count = 0
- for sub in subdirs:
- if sub is None:
- continue
- if is_List(sub):
- sub = apply(os.path.join, tuple(sub))
- new = os.path.join(self.workdir, sub)
- try:
- os.mkdir(new)
- except OSError:
- pass
- else:
- count = count + 1
- return count
-
- def symlink(self, target, link):
- """Creates a symlink to the specified target.
- The link name may be a list, in which case the elements are
- concatenated with the os.path.join() method. The link is
- assumed to be under the temporary working directory unless it
- is an absolute path name. The target is *not* assumed to be
- under the temporary working directory.
- """
- link = self.canonicalize(link)
- os.symlink(target, link)
-
- def tempdir(self, path=None):
- """Creates a temporary directory.
- A unique directory name is generated if no path name is specified.
- The directory is created, and will be removed when the TestCmd
- object is destroyed.
- """
- if path is None:
- try:
- path = tempfile.mktemp(prefix=tempfile.template)
- except TypeError:
- path = tempfile.mktemp()
- os.mkdir(path)
-
- # Symlinks in the path will report things
- # differently from os.getcwd(), so chdir there
- # and back to fetch the canonical path.
- cwd = os.getcwd()
- try:
- os.chdir(path)
- path = os.getcwd()
- finally:
- os.chdir(cwd)
-
- # Uppercase the drive letter since the case of drive
- # letters is pretty much random on win32:
- drive,rest = os.path.splitdrive(path)
- if drive:
- path = string.upper(drive) + rest
-
- #
- self._dirlist.append(path)
- global _Cleanup
- try:
- _Cleanup.index(self)
- except ValueError:
- _Cleanup.append(self)
-
- return path
-
- def touch(self, path, mtime=None):
- """Updates the modification time on the specified file or
- directory path name. The default is to update to the
- current time if no explicit modification time is specified.
- """
- path = self.canonicalize(path)
- atime = os.path.getatime(path)
- if mtime is None:
- mtime = time.time()
- os.utime(path, (atime, mtime))
-
- def unlink(self, file):
- """Unlinks the specified file name.
- The file name may be a list, in which case the elements are
- concatenated with the os.path.join() method. The file is
- assumed to be under the temporary working directory unless it
- is an absolute path name.
- """
- file = self.canonicalize(file)
- os.unlink(file)
-
- def verbose_set(self, verbose):
- """Set the verbose level.
- """
- self.verbose = verbose
-
- def where_is(self, file, path=None, pathext=None):
- """Find an executable file.
- """
- if is_List(file):
- file = apply(os.path.join, tuple(file))
- if not os.path.isabs(file):
- file = where_is(file, path, pathext)
- return file
-
- def workdir_set(self, path):
- """Creates a temporary working directory with the specified
- path name. If the path is a null string (''), a unique
- directory name is created.
- """
- if (path != None):
- if path == '':
- path = None
- path = self.tempdir(path)
- self.workdir = path
-
- def workpath(self, *args):
- """Returns the absolute path name to a subdirectory or file
- within the current temporary working directory. Concatenates
- the temporary working directory name with the specified
- arguments using the os.path.join() method.
- """
- return apply(os.path.join, (self.workdir,) + tuple(args))
-
- def readable(self, top, read=1):
- """Make the specified directory tree readable (read == 1)
- or not (read == None).
-
- This method has no effect on Windows systems, which use a
- completely different mechanism to control file readability.
- """
-
- if sys.platform == 'win32':
- return
-
- if read:
- def do_chmod(fname):
- try: st = os.stat(fname)
- except OSError: pass
- else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]|stat.S_IREAD))
- else:
- def do_chmod(fname):
- try: st = os.stat(fname)
- except OSError: pass
- else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]&~stat.S_IREAD))
-
- if os.path.isfile(top):
- # If it's a file, that's easy, just chmod it.
- do_chmod(top)
- elif read:
- # It's a directory and we're trying to turn on read
- # permission, so it's also pretty easy, just chmod the
- # directory and then chmod every entry on our walk down the
- # tree. Because os.path.walk() is top-down, we'll enable
- # read permission on any directories that have it disabled
- # before os.path.walk() tries to list their contents.
- do_chmod(top)
-
- def chmod_entries(arg, dirname, names, do_chmod=do_chmod):
- for n in names:
- do_chmod(os.path.join(dirname, n))
-
- os.path.walk(top, chmod_entries, None)
- else:
- # It's a directory and we're trying to turn off read
- # permission, which means we have to chmod the directoreis
- # in the tree bottom-up, lest disabling read permission from
- # the top down get in the way of being able to get at lower
- # parts of the tree. But os.path.walk() visits things top
- # down, so we just use an object to collect a list of all
- # of the entries in the tree, reverse the list, and then
- # chmod the reversed (bottom-up) list.
- col = Collector(top)
- os.path.walk(top, col, None)
- col.entries.reverse()
- for d in col.entries: do_chmod(d)
-
- def writable(self, top, write=1):
- """Make the specified directory tree writable (write == 1)
- or not (write == None).
- """
-
- if sys.platform == 'win32':
-
- if write:
- def do_chmod(fname):
- try: os.chmod(fname, stat.S_IWRITE)
- except OSError: pass
- else:
- def do_chmod(fname):
- try: os.chmod(fname, stat.S_IREAD)
- except OSError: pass
-
- else:
-
- if write:
- def do_chmod(fname):
- try: st = os.stat(fname)
- except OSError: pass
- else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]|0200))
- else:
- def do_chmod(fname):
- try: st = os.stat(fname)
- except OSError: pass
- else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]&~0200))
-
- if os.path.isfile(top):
- do_chmod(top)
- else:
- col = Collector(top)
- os.path.walk(top, col, None)
- for d in col.entries: do_chmod(d)
-
- def executable(self, top, execute=1):
- """Make the specified directory tree executable (execute == 1)
- or not (execute == None).
-
- This method has no effect on Windows systems, which use a
- completely different mechanism to control file executability.
- """
-
- if sys.platform == 'win32':
- return
-
- if execute:
- def do_chmod(fname):
- try: st = os.stat(fname)
- except OSError: pass
- else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]|stat.S_IEXEC))
- else:
- def do_chmod(fname):
- try: st = os.stat(fname)
- except OSError: pass
- else: os.chmod(fname, stat.S_IMODE(st[stat.ST_MODE]&~stat.S_IEXEC))
-
- if os.path.isfile(top):
- # If it's a file, that's easy, just chmod it.
- do_chmod(top)
- elif execute:
- # It's a directory and we're trying to turn on execute
- # permission, so it's also pretty easy, just chmod the
- # directory and then chmod every entry on our walk down the
- # tree. Because os.path.walk() is top-down, we'll enable
- # execute permission on any directories that have it disabled
- # before os.path.walk() tries to list their contents.
- do_chmod(top)
-
- def chmod_entries(arg, dirname, names, do_chmod=do_chmod):
- for n in names:
- do_chmod(os.path.join(dirname, n))
-
- os.path.walk(top, chmod_entries, None)
- else:
- # It's a directory and we're trying to turn off execute
- # permission, which means we have to chmod the directories
- # in the tree bottom-up, lest disabling execute permission from
- # the top down get in the way of being able to get at lower
- # parts of the tree. But os.path.walk() visits things top
- # down, so we just use an object to collect a list of all
- # of the entries in the tree, reverse the list, and then
- # chmod the reversed (bottom-up) list.
- col = Collector(top)
- os.path.walk(top, col, None)
- col.entries.reverse()
- for d in col.entries: do_chmod(d)
-
- def write(self, file, content, mode = 'wb'):
- """Writes the specified content text (second argument) to the
- specified file name (first argument). The file name may be
- a list, in which case the elements are concatenated with the
- os.path.join() method. The file is created under the temporary
- working directory. Any subdirectories in the path must already
- exist. The I/O mode for the file may be specified; it must
- begin with a 'w'. The default is 'wb' (binary write).
- """
- file = self.canonicalize(file)
- if mode[0] != 'w':
- raise ValueError, "mode must begin with 'w'"
- with open(file, mode) as f:
- f.write(content)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
+++ /dev/null
-"""
-TestCommon.py: a testing framework for commands and scripts
- with commonly useful error handling
-
-The TestCommon module provides a simple, high-level interface for writing
-tests of executable commands and scripts, especially commands and scripts
-that interact with the file system. All methods throw exceptions and
-exit on failure, with useful error messages. This makes a number of
-explicit checks unnecessary, making the test scripts themselves simpler
-to write and easier to read.
-
-The TestCommon class is a subclass of the TestCmd class. In essence,
-TestCommon is a wrapper that handles common TestCmd error conditions in
-useful ways. You can use TestCommon directly, or subclass it for your
-program and add additional (or override) methods to tailor it to your
-program's specific needs. Alternatively, the TestCommon class serves
-as a useful example of how to define your own TestCmd subclass.
-
-As a subclass of TestCmd, TestCommon provides access to all of the
-variables and methods from the TestCmd module. Consequently, you can
-use any variable or method documented in the TestCmd module without
-having to explicitly import TestCmd.
-
-A TestCommon environment object is created via the usual invocation:
-
- import TestCommon
- test = TestCommon.TestCommon()
-
-You can use all of the TestCmd keyword arguments when instantiating a
-TestCommon object; see the TestCmd documentation for details.
-
-Here is an overview of the methods and keyword arguments that are
-provided by the TestCommon class:
-
- test.must_be_writable('file1', ['file2', ...])
-
- test.must_contain('file', 'required text\n')
-
- test.must_contain_all_lines(output, lines, ['title', find])
-
- test.must_contain_any_line(output, lines, ['title', find])
-
- test.must_exist('file1', ['file2', ...])
-
- test.must_match('file', "expected contents\n")
-
- test.must_not_be_writable('file1', ['file2', ...])
-
- test.must_not_contain('file', 'banned text\n')
-
- test.must_not_contain_any_line(output, lines, ['title', find])
-
- test.must_not_exist('file1', ['file2', ...])
-
- test.run(options = "options to be prepended to arguments",
- stdout = "expected standard output from the program",
- stderr = "expected error output from the program",
- status = expected_status,
- match = match_function)
-
-The TestCommon module also provides the following variables
-
- TestCommon.python_executable
- TestCommon.exe_suffix
- TestCommon.obj_suffix
- TestCommon.shobj_prefix
- TestCommon.shobj_suffix
- TestCommon.lib_prefix
- TestCommon.lib_suffix
- TestCommon.dll_prefix
- TestCommon.dll_suffix
-
-"""
-
-# Copyright 2000-2010 Steven Knight
-# This module is free software, and you may redistribute it and/or modify
-# it under the same terms as Python itself, so long as this copyright message
-# and disclaimer are retained in their original form.
-#
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
-# SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
-# THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-# DAMAGE.
-#
-# THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-# PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
-# AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
-# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
-__author__ = "Steven Knight <knight at baldmt dot com>"
-__revision__ = "TestCommon.py 0.37.D001 2010/01/11 16:55:50 knight"
-__version__ = "0.37"
-
-import copy
-import os
-import os.path
-import stat
-import string
-import sys
-import types
-import UserList
-
-from TestCmd import *
-from TestCmd import __all__
-
-__all__.extend([ 'TestCommon',
- 'exe_suffix',
- 'obj_suffix',
- 'shobj_prefix',
- 'shobj_suffix',
- 'lib_prefix',
- 'lib_suffix',
- 'dll_prefix',
- 'dll_suffix',
- ])
-
-# Variables that describe the prefixes and suffixes on this system.
-if sys.platform == 'win32':
- exe_suffix = '.exe'
- obj_suffix = '.obj'
- shobj_suffix = '.obj'
- shobj_prefix = ''
- lib_prefix = ''
- lib_suffix = '.lib'
- dll_prefix = ''
- dll_suffix = '.dll'
-elif sys.platform == 'cygwin':
- exe_suffix = '.exe'
- obj_suffix = '.o'
- shobj_suffix = '.os'
- shobj_prefix = ''
- lib_prefix = 'lib'
- lib_suffix = '.a'
- dll_prefix = ''
- dll_suffix = '.dll'
-elif string.find(sys.platform, 'irix') != -1:
- exe_suffix = ''
- obj_suffix = '.o'
- shobj_suffix = '.o'
- shobj_prefix = ''
- lib_prefix = 'lib'
- lib_suffix = '.a'
- dll_prefix = 'lib'
- dll_suffix = '.so'
-elif string.find(sys.platform, 'darwin') != -1:
- exe_suffix = ''
- obj_suffix = '.o'
- shobj_suffix = '.os'
- shobj_prefix = ''
- lib_prefix = 'lib'
- lib_suffix = '.a'
- dll_prefix = 'lib'
- dll_suffix = '.dylib'
-elif string.find(sys.platform, 'sunos') != -1:
- exe_suffix = ''
- obj_suffix = '.o'
- shobj_suffix = '.os'
- shobj_prefix = 'so_'
- lib_prefix = 'lib'
- lib_suffix = '.a'
- dll_prefix = 'lib'
- dll_suffix = '.dylib'
-else:
- exe_suffix = ''
- obj_suffix = '.o'
- shobj_suffix = '.os'
- shobj_prefix = ''
- lib_prefix = 'lib'
- lib_suffix = '.a'
- dll_prefix = 'lib'
- dll_suffix = '.so'
-
-def is_List(e):
- return type(e) is types.ListType \
- or isinstance(e, UserList.UserList)
-
-def is_writable(f):
- mode = os.stat(f)[stat.ST_MODE]
- return mode & stat.S_IWUSR
-
-def separate_files(flist):
- existing = []
- missing = []
- for f in flist:
- if os.path.exists(f):
- existing.append(f)
- else:
- missing.append(f)
- return existing, missing
-
-def _failed(self, status = 0):
- if self.status is None or status is None:
- return None
- try:
- return _status(self) not in status
- except TypeError:
- # status wasn't an iterable
- return _status(self) != status
-
-def _status(self):
- return self.status
-
-class TestCommon(TestCmd):
-
- # Additional methods from the Perl Test::Cmd::Common module
- # that we may wish to add in the future:
- #
- # $test->subdir('subdir', ...);
- #
- # $test->copy('src_file', 'dst_file');
-
- def __init__(self, **kw):
- """Initialize a new TestCommon instance. This involves just
- calling the base class initialization, and then changing directory
- to the workdir.
- """
- apply(TestCmd.__init__, [self], kw)
- os.chdir(self.workdir)
-
- def must_be_writable(self, *files):
- """Ensures that the specified file(s) exist and are writable.
- An individual file can be specified as a list of directory names,
- in which case the pathname will be constructed by concatenating
- them. Exits FAILED if any of the files does not exist or is
- not writable.
- """
- files = map(lambda x: is_List(x) and apply(os.path.join, x) or x, files)
- existing, missing = separate_files(files)
- unwritable = filter(lambda x, iw=is_writable: not iw(x), existing)
- if missing:
- print "Missing files: `%s'" % string.join(missing, "', `")
- if unwritable:
- print "Unwritable files: `%s'" % string.join(unwritable, "', `")
- self.fail_test(missing + unwritable)
-
- def must_contain(self, file, required, mode = 'rb'):
- """Ensures that the specified file contains the required text.
- """
- file_contents = self.read(file, mode)
- contains = (string.find(file_contents, required) != -1)
- if not contains:
- print "File `%s' does not contain required string." % file
- print self.banner('Required string ')
- print required
- print self.banner('%s contents ' % file)
- print file_contents
- self.fail_test(not contains)
-
- def must_contain_all_lines(self, output, lines, title=None, find=None):
- """Ensures that the specified output string (first argument)
- contains all of the specified lines (second argument).
-
- An optional third argument can be used to describe the type
- of output being searched, and only shows up in failure output.
-
- An optional fourth argument can be used to supply a different
- function, of the form "find(line, output), to use when searching
- for lines in the output.
- """
- if find is None:
- find = lambda o, l: string.find(o, l) != -1
- missing = []
- for line in lines:
- if not find(output, line):
- missing.append(line)
-
- if missing:
- if title is None:
- title = 'output'
- sys.stdout.write("Missing expected lines from %s:\n" % title)
- for line in missing:
- sys.stdout.write(' ' + repr(line) + '\n')
- sys.stdout.write(self.banner(title + ' '))
- sys.stdout.write(output)
- self.fail_test()
-
- def must_contain_any_line(self, output, lines, title=None, find=None):
- """Ensures that the specified output string (first argument)
- contains at least one of the specified lines (second argument).
-
- An optional third argument can be used to describe the type
- of output being searched, and only shows up in failure output.
-
- An optional fourth argument can be used to supply a different
- function, of the form "find(line, output), to use when searching
- for lines in the output.
- """
- if find is None:
- find = lambda o, l: string.find(o, l) != -1
- for line in lines:
- if find(output, line):
- return
-
- if title is None:
- title = 'output'
- sys.stdout.write("Missing any expected line from %s:\n" % title)
- for line in lines:
- sys.stdout.write(' ' + repr(line) + '\n')
- sys.stdout.write(self.banner(title + ' '))
- sys.stdout.write(output)
- self.fail_test()
-
- def must_contain_lines(self, lines, output, title=None):
- # Deprecated; retain for backwards compatibility.
- return self.must_contain_all_lines(output, lines, title)
-
- def must_exist(self, *files):
- """Ensures that the specified file(s) must exist. An individual
- file be specified as a list of directory names, in which case the
- pathname will be constructed by concatenating them. Exits FAILED
- if any of the files does not exist.
- """
- files = map(lambda x: is_List(x) and apply(os.path.join, x) or x, files)
- missing = filter(lambda x: not os.path.exists(x), files)
- if missing:
- print "Missing files: `%s'" % string.join(missing, "', `")
- self.fail_test(missing)
-
- def must_match(self, file, expect, mode = 'rb'):
- """Matches the contents of the specified file (first argument)
- against the expected contents (second argument). The expected
- contents are a list of lines or a string which will be split
- on newlines.
- """
- file_contents = self.read(file, mode)
- try:
- self.fail_test(not self.match(file_contents, expect))
- except KeyboardInterrupt:
- raise
- except:
- print "Unexpected contents of `%s'" % file
- self.diff(expect, file_contents, 'contents ')
- raise
-
- def must_not_contain(self, file, banned, mode = 'rb'):
- """Ensures that the specified file doesn't contain the banned text.
- """
- file_contents = self.read(file, mode)
- contains = (string.find(file_contents, banned) != -1)
- if contains:
- print "File `%s' contains banned string." % file
- print self.banner('Banned string ')
- print banned
- print self.banner('%s contents ' % file)
- print file_contents
- self.fail_test(contains)
-
- def must_not_contain_any_line(self, output, lines, title=None, find=None):
- """Ensures that the specified output string (first argument)
- does not contain any of the specified lines (second argument).
-
- An optional third argument can be used to describe the type
- of output being searched, and only shows up in failure output.
-
- An optional fourth argument can be used to supply a different
- function, of the form "find(line, output), to use when searching
- for lines in the output.
- """
- if find is None:
- find = lambda o, l: string.find(o, l) != -1
- unexpected = []
- for line in lines:
- if find(output, line):
- unexpected.append(line)
-
- if unexpected:
- if title is None:
- title = 'output'
- sys.stdout.write("Unexpected lines in %s:\n" % title)
- for line in unexpected:
- sys.stdout.write(' ' + repr(line) + '\n')
- sys.stdout.write(self.banner(title + ' '))
- sys.stdout.write(output)
- self.fail_test()
-
- def must_not_contain_lines(self, lines, output, title=None):
- return self.must_not_contain_any_line(output, lines, title)
-
- def must_not_exist(self, *files):
- """Ensures that the specified file(s) must not exist.
- An individual file be specified as a list of directory names, in
- which case the pathname will be constructed by concatenating them.
- Exits FAILED if any of the files exists.
- """
- files = map(lambda x: is_List(x) and apply(os.path.join, x) or x, files)
- existing = filter(os.path.exists, files)
- if existing:
- print "Unexpected files exist: `%s'" % string.join(existing, "', `")
- self.fail_test(existing)
-
- def must_not_be_writable(self, *files):
- """Ensures that the specified file(s) exist and are not writable.
- An individual file can be specified as a list of directory names,
- in which case the pathname will be constructed by concatenating
- them. Exits FAILED if any of the files does not exist or is
- writable.
- """
- files = map(lambda x: is_List(x) and apply(os.path.join, x) or x, files)
- existing, missing = separate_files(files)
- writable = filter(is_writable, existing)
- if missing:
- print "Missing files: `%s'" % string.join(missing, "', `")
- if writable:
- print "Writable files: `%s'" % string.join(writable, "', `")
- self.fail_test(missing + writable)
-
- def _complete(self, actual_stdout, expected_stdout,
- actual_stderr, expected_stderr, status, match):
- """
- Post-processes running a subcommand, checking for failure
- status and displaying output appropriately.
- """
- if _failed(self, status):
- expect = ''
- if status != 0:
- expect = " (expected %s)" % str(status)
- print "%s returned %s%s" % (self.program, str(_status(self)), expect)
- print self.banner('STDOUT ')
- print actual_stdout
- print self.banner('STDERR ')
- print actual_stderr
- self.fail_test()
- if not expected_stdout is None and not match(actual_stdout, expected_stdout):
- self.diff(expected_stdout, actual_stdout, 'STDOUT ')
- if actual_stderr:
- print self.banner('STDERR ')
- print actual_stderr
- self.fail_test()
- if not expected_stderr is None and not match(actual_stderr, expected_stderr):
- print self.banner('STDOUT ')
- print actual_stdout
- self.diff(expected_stderr, actual_stderr, 'STDERR ')
- self.fail_test()
-
- def start(self, program = None,
- interpreter = None,
- arguments = None,
- universal_newlines = None,
- **kw):
- """
- Starts a program or script for the test environment.
-
- This handles the "options" keyword argument and exceptions.
- """
- options = kw.pop('options', None)
- if options:
- if arguments is None:
- arguments = options
- else:
- arguments = options + " " + arguments
-
- try:
- return apply(TestCmd.start,
- (self, program, interpreter, arguments, universal_newlines),
- kw)
- except KeyboardInterrupt:
- raise
- except Exception, e:
- print self.banner('STDOUT ')
- try:
- print self.stdout()
- except IndexError:
- pass
- print self.banner('STDERR ')
- try:
- print self.stderr()
- except IndexError:
- pass
- cmd_args = self.command_args(program, interpreter, arguments)
- sys.stderr.write('Exception trying to execute: %s\n' % cmd_args)
- raise e
-
- def finish(self, popen, stdout = None, stderr = '', status = 0, **kw):
- """
- Finishes and waits for the process being run under control of
- the specified popen argument. Additional arguments are similar
- to those of the run() method:
-
- stdout The expected standard output from
- the command. A value of None means
- don't test standard output.
-
- stderr The expected error output from
- the command. A value of None means
- don't test error output.
-
- status The expected exit status from the
- command. A value of None means don't
- test exit status.
- """
- apply(TestCmd.finish, (self, popen,), kw)
- match = kw.get('match', self.match)
- self._complete(self.stdout(), stdout,
- self.stderr(), stderr, status, match)
-
- def run(self, options = None, arguments = None,
- stdout = None, stderr = '', status = 0, **kw):
- """Runs the program under test, checking that the test succeeded.
-
- The arguments are the same as the base TestCmd.run() method,
- with the addition of:
-
- options Extra options that get appended to the beginning
- of the arguments.
-
- stdout The expected standard output from
- the command. A value of None means
- don't test standard output.
-
- stderr The expected error output from
- the command. A value of None means
- don't test error output.
-
- status The expected exit status from the
- command. A value of None means don't
- test exit status.
-
- By default, this expects a successful exit (status = 0), does
- not test standard output (stdout = None), and expects that error
- output is empty (stderr = "").
- """
- if options:
- if arguments is None:
- arguments = options
- else:
- arguments = options + " " + arguments
- kw['arguments'] = arguments
- match = kw.pop('match', self.match)
- apply(TestCmd.run, [self], kw)
- self._complete(self.stdout(), stdout,
- self.stderr(), stderr, status, match)
-
- def skip_test(self, message="Skipping test.\n"):
- """Skips a test.
-
- Proper test-skipping behavior is dependent on the external
- TESTCOMMON_PASS_SKIPS environment variable. If set, we treat
- the skip as a PASS (exit 0), and otherwise treat it as NO RESULT.
- In either case, we print the specified message as an indication
- that the substance of the test was skipped.
-
- (This was originally added to support development under Aegis.
- Technically, skipping a test is a NO RESULT, but Aegis would
- treat that as a test failure and prevent the change from going to
- the next step. Since we ddn't want to force anyone using Aegis
- to have to install absolutely every tool used by the tests, we
- would actually report to Aegis that a skipped test has PASSED
- so that the workflow isn't held up.)
- """
- if message:
- sys.stdout.write(message)
- sys.stdout.flush()
- pass_skips = os.environ.get('TESTCOMMON_PASS_SKIPS')
- if pass_skips in [None, 0, '0']:
- # skip=1 means skip this function when showing where this
- # result came from. They only care about the line where the
- # script called test.skip_test(), not the line number where
- # we call test.no_result().
- self.no_result(skip=1)
- else:
- # We're under the development directory for this change,
- # so this is an Aegis invocation; pass the test (exit 0).
- self.pass_test()
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
+++ /dev/null
-# 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.
-
-"""
-TestGyp.py: a testing framework for GYP integration tests.
-"""
-
-import collections
-from contextlib import contextmanager
-import itertools
-import os
-import random
-import re
-import shutil
-import stat
-import subprocess
-import sys
-import tempfile
-import time
-
-import TestCmd
-import TestCommon
-from TestCommon import __all__
-
-__all__.extend([
- 'TestGyp',
-])
-
-
-def remove_debug_line_numbers(contents):
- """Function to remove the line numbers from the debug output
- of gyp and thus reduce the extreme fragility of the stdout
- comparison tests.
- """
- lines = contents.splitlines()
- # split each line on ":"
- lines = [l.split(":", 3) for l in lines]
- # join each line back together while ignoring the
- # 3rd column which is the line number
- lines = [len(l) > 3 and ":".join(l[3:]) or l for l in lines]
- return "\n".join(lines)
-
-
-def match_modulo_line_numbers(contents_a, contents_b):
- """File contents matcher that ignores line numbers."""
- contents_a = remove_debug_line_numbers(contents_a)
- contents_b = remove_debug_line_numbers(contents_b)
- return TestCommon.match_exact(contents_a, contents_b)
-
-
-@contextmanager
-def LocalEnv(local_env):
- """Context manager to provide a local OS environment."""
- old_env = os.environ.copy()
- os.environ.update(local_env)
- try:
- yield
- finally:
- os.environ.clear()
- os.environ.update(old_env)
-
-
-class TestGypBase(TestCommon.TestCommon):
- """
- Class for controlling end-to-end tests of gyp generators.
-
- Instantiating this class will create a temporary directory and
- arrange for its destruction (via the TestCmd superclass) and
- copy all of the non-gyptest files in the directory hierarchy of the
- executing script.
-
- The default behavior is to test the 'gyp' or 'gyp.bat' file in the
- current directory. An alternative may be specified explicitly on
- instantiation, or by setting the TESTGYP_GYP environment variable.
-
- This class should be subclassed for each supported gyp generator
- (format). Various abstract methods below define calling signatures
- used by the test scripts to invoke builds on the generated build
- configuration and to run executables generated by those builds.
- """
-
- formats = []
- build_tool = None
- build_tool_list = []
-
- _exe = TestCommon.exe_suffix
- _obj = TestCommon.obj_suffix
- shobj_ = TestCommon.shobj_prefix
- _shobj = TestCommon.shobj_suffix
- lib_ = TestCommon.lib_prefix
- _lib = TestCommon.lib_suffix
- dll_ = TestCommon.dll_prefix
- _dll = TestCommon.dll_suffix
-
- # Constants to represent different targets.
- ALL = '__all__'
- DEFAULT = '__default__'
-
- # Constants for different target types.
- EXECUTABLE = '__executable__'
- STATIC_LIB = '__static_lib__'
- SHARED_LIB = '__shared_lib__'
-
- def __init__(self, gyp=None, *args, **kw):
- self.origin_cwd = os.path.abspath(os.path.dirname(sys.argv[0]))
- self.extra_args = sys.argv[1:]
-
- if not gyp:
- gyp = os.environ.get('TESTGYP_GYP')
- if not gyp:
- if sys.platform == 'win32':
- gyp = 'gyp.bat'
- else:
- gyp = 'gyp'
- self.gyp = os.path.abspath(gyp)
- self.no_parallel = False
-
- self.formats = [self.format]
-
- self.initialize_build_tool()
-
- kw.setdefault('match', TestCommon.match_exact)
-
- # Put test output in out/testworkarea by default.
- # Use temporary names so there are no collisions.
- workdir = os.path.join('out', kw.get('workdir', 'testworkarea'))
- # Create work area if it doesn't already exist.
- if not os.path.isdir(workdir):
- os.makedirs(workdir)
-
- kw['workdir'] = tempfile.mktemp(prefix='testgyp.', dir=workdir)
-
- formats = kw.pop('formats', [])
-
- super(TestGypBase, self).__init__(*args, **kw)
-
- real_format = self.format.split('-')[-1]
- excluded_formats = set([f for f in formats if f[0] == '!'])
- included_formats = set(formats) - excluded_formats
- if ('!'+real_format in excluded_formats or
- included_formats and real_format not in included_formats):
- msg = 'Invalid test for %r format; skipping test.\n'
- self.skip_test(msg % self.format)
-
- self.copy_test_configuration(self.origin_cwd, self.workdir)
- self.set_configuration(None)
-
- # Set $HOME so that gyp doesn't read the user's actual
- # ~/.gyp/include.gypi file, which may contain variables
- # and other settings that would change the output.
- os.environ['HOME'] = self.workpath()
- # Clear $GYP_DEFINES for the same reason.
- if 'GYP_DEFINES' in os.environ:
- del os.environ['GYP_DEFINES']
- # Override the user's language settings, which could
- # otherwise make the output vary from what is expected.
- os.environ['LC_ALL'] = 'C'
-
- def built_file_must_exist(self, name, type=None, **kw):
- """
- Fails the test if the specified built file name does not exist.
- """
- return self.must_exist(self.built_file_path(name, type, **kw))
-
- def built_file_must_not_exist(self, name, type=None, **kw):
- """
- Fails the test if the specified built file name exists.
- """
- return self.must_not_exist(self.built_file_path(name, type, **kw))
-
- def built_file_must_match(self, name, contents, **kw):
- """
- Fails the test if the contents of the specified built file name
- do not match the specified contents.
- """
- return self.must_match(self.built_file_path(name, **kw), contents)
-
- def built_file_must_not_match(self, name, contents, **kw):
- """
- Fails the test if the contents of the specified built file name
- match the specified contents.
- """
- return self.must_not_match(self.built_file_path(name, **kw), contents)
-
- def built_file_must_not_contain(self, name, contents, **kw):
- """
- Fails the test if the specified built file name contains the specified
- contents.
- """
- return self.must_not_contain(self.built_file_path(name, **kw), contents)
-
- def copy_test_configuration(self, source_dir, dest_dir):
- """
- Copies the test configuration from the specified source_dir
- (the directory in which the test script lives) to the
- specified dest_dir (a temporary working directory).
-
- This ignores all files and directories that begin with
- the string 'gyptest', and all '.svn' subdirectories.
- """
- for root, dirs, files in os.walk(source_dir):
- if '.svn' in dirs:
- dirs.remove('.svn')
- dirs = [ d for d in dirs if not d.startswith('gyptest') ]
- files = [ f for f in files if not f.startswith('gyptest') ]
- for dirname in dirs:
- source = os.path.join(root, dirname)
- destination = source.replace(source_dir, dest_dir)
- os.mkdir(destination)
- if sys.platform != 'win32':
- shutil.copystat(source, destination)
- for filename in files:
- source = os.path.join(root, filename)
- destination = source.replace(source_dir, dest_dir)
- shutil.copy2(source, destination)
-
- def initialize_build_tool(self):
- """
- Initializes the .build_tool attribute.
-
- Searches the .build_tool_list for an executable name on the user's
- $PATH. The first tool on the list is used as-is if nothing is found
- on the current $PATH.
- """
- for build_tool in self.build_tool_list:
- if not build_tool:
- continue
- if os.path.isabs(build_tool):
- self.build_tool = build_tool
- return
- build_tool = self.where_is(build_tool)
- if build_tool:
- self.build_tool = build_tool
- return
-
- if self.build_tool_list:
- self.build_tool = self.build_tool_list[0]
-
- def relocate(self, source, destination):
- """
- Renames (relocates) the specified source (usually a directory)
- to the specified destination, creating the destination directory
- first if necessary.
-
- Note: Don't use this as a generic "rename" operation. In the
- future, "relocating" parts of a GYP tree may affect the state of
- the test to modify the behavior of later method calls.
- """
- destination_dir = os.path.dirname(destination)
- if not os.path.exists(destination_dir):
- self.subdir(destination_dir)
- os.rename(source, destination)
-
- def report_not_up_to_date(self):
- """
- Reports that a build is not up-to-date.
-
- This provides common reporting for formats that have complicated
- conditions for checking whether a build is up-to-date. Formats
- that expect exact output from the command (make) can
- just set stdout= when they call the run_build() method.
- """
- print "Build is not up-to-date:"
- print self.banner('STDOUT ')
- print self.stdout()
- stderr = self.stderr()
- if stderr:
- print self.banner('STDERR ')
- print stderr
-
- def run_gyp(self, gyp_file, *args, **kw):
- """
- Runs gyp against the specified gyp_file with the specified args.
- """
-
- # When running gyp, and comparing its output we use a comparitor
- # that ignores the line numbers that gyp logs in its debug output.
- if kw.pop('ignore_line_numbers', False):
- kw.setdefault('match', match_modulo_line_numbers)
-
- # TODO: --depth=. works around Chromium-specific tree climbing.
- depth = kw.pop('depth', '.')
- run_args = ['--depth='+depth]
- run_args.extend(['--format='+f for f in self.formats]);
- run_args.append(gyp_file)
- if self.no_parallel:
- run_args += ['--no-parallel']
- # TODO: if extra_args contains a '--build' flag
- # we really want that to only apply to the last format (self.format).
- run_args.extend(self.extra_args)
- # Default xcode_ninja_target_pattern to ^.*$ to fix xcode-ninja tests
- xcode_ninja_target_pattern = kw.pop('xcode_ninja_target_pattern', '.*')
- run_args.extend(
- ['-G', 'xcode_ninja_target_pattern=%s' % xcode_ninja_target_pattern])
- run_args.extend(args)
- return self.run(program=self.gyp, arguments=run_args, **kw)
-
- def run(self, *args, **kw):
- """
- Executes a program by calling the superclass .run() method.
-
- This exists to provide a common place to filter out keyword
- arguments implemented in this layer, without having to update
- the tool-specific subclasses or clutter the tests themselves
- with platform-specific code.
- """
- if kw.has_key('SYMROOT'):
- del kw['SYMROOT']
- super(TestGypBase, self).run(*args, **kw)
-
- def set_configuration(self, configuration):
- """
- Sets the configuration, to be used for invoking the build
- tool and testing potential built output.
- """
- self.configuration = configuration
-
- def configuration_dirname(self):
- if self.configuration:
- return self.configuration.split('|')[0]
- else:
- return 'Default'
-
- def configuration_buildname(self):
- if self.configuration:
- return self.configuration
- else:
- return 'Default'
-
- #
- # Abstract methods to be defined by format-specific subclasses.
- #
-
- def build(self, gyp_file, target=None, **kw):
- """
- Runs a build of the specified target against the configuration
- generated from the specified gyp_file.
-
- A 'target' argument of None or the special value TestGyp.DEFAULT
- specifies the default argument for the underlying build tool.
- A 'target' argument of TestGyp.ALL specifies the 'all' target
- (if any) of the underlying build tool.
- """
- raise NotImplementedError
-
- def built_file_path(self, name, type=None, **kw):
- """
- Returns a path to the specified file name, of the specified type.
- """
- raise NotImplementedError
-
- def built_file_basename(self, name, type=None, **kw):
- """
- Returns the base name of the specified file name, of the specified type.
-
- A bare=True keyword argument specifies that prefixes and suffixes shouldn't
- be applied.
- """
- if not kw.get('bare'):
- if type == self.EXECUTABLE:
- name = name + self._exe
- elif type == self.STATIC_LIB:
- name = self.lib_ + name + self._lib
- elif type == self.SHARED_LIB:
- name = self.dll_ + name + self._dll
- return name
-
- def run_built_executable(self, name, *args, **kw):
- """
- Runs an executable program built from a gyp-generated configuration.
-
- The specified name should be independent of any particular generator.
- Subclasses should find the output executable in the appropriate
- output build directory, tack on any necessary executable suffix, etc.
- """
- raise NotImplementedError
-
- def up_to_date(self, gyp_file, target=None, **kw):
- """
- Verifies that a build of the specified target is up to date.
-
- The subclass should implement this by calling build()
- (or a reasonable equivalent), checking whatever conditions
- will tell it the build was an "up to date" null build, and
- failing if it isn't.
- """
- raise NotImplementedError
-
-
-class TestGypGypd(TestGypBase):
- """
- Subclass for testing the GYP 'gypd' generator (spit out the
- internal data structure as pretty-printed Python).
- """
- format = 'gypd'
- def __init__(self, gyp=None, *args, **kw):
- super(TestGypGypd, self).__init__(*args, **kw)
- # gypd implies the use of 'golden' files, so parallelizing conflicts as it
- # causes ordering changes.
- self.no_parallel = True
-
-
-class TestGypCustom(TestGypBase):
- """
- Subclass for testing the GYP with custom generator
- """
-
- def __init__(self, gyp=None, *args, **kw):
- self.format = kw.pop("format")
- super(TestGypCustom, self).__init__(*args, **kw)
-
-
-class TestGypAndroid(TestGypBase):
- """
- Subclass for testing the GYP Android makefile generator. Note that
- build/envsetup.sh and lunch must have been run before running tests.
- """
- format = 'android'
-
- # Note that we can't use mmm as the build tool because ...
- # - it builds all targets, whereas we need to pass a target
- # - it is a function, whereas the test runner assumes the build tool is a file
- # Instead we use make and duplicate the logic from mmm.
- build_tool_list = ['make']
-
- # We use our custom target 'gyp_all_modules', as opposed to the 'all_modules'
- # target used by mmm, to build only those targets which are part of the gyp
- # target 'all'.
- ALL = 'gyp_all_modules'
-
- def __init__(self, gyp=None, *args, **kw):
- # Android requires build and test output to be inside its source tree.
- # We use the following working directory for the test's source, but the
- # test's build output still goes to $ANDROID_PRODUCT_OUT.
- # Note that some tests explicitly set format='gypd' to invoke the gypd
- # backend. This writes to the source tree, but there's no way around this.
- kw['workdir'] = os.path.join('/tmp', 'gyptest',
- kw.get('workdir', 'testworkarea'))
- # We need to remove all gyp outputs from out/. Ths is because some tests
- # don't have rules to regenerate output, so they will simply re-use stale
- # output if present. Since the test working directory gets regenerated for
- # each test run, this can confuse things.
- # We don't have a list of build outputs because we don't know which
- # dependent targets were built. Instead we delete all gyp-generated output.
- # This may be excessive, but should be safe.
- out_dir = os.environ['ANDROID_PRODUCT_OUT']
- obj_dir = os.path.join(out_dir, 'obj')
- shutil.rmtree(os.path.join(obj_dir, 'GYP'), ignore_errors = True)
- for x in ['EXECUTABLES', 'STATIC_LIBRARIES', 'SHARED_LIBRARIES']:
- for d in os.listdir(os.path.join(obj_dir, x)):
- if d.endswith('_gyp_intermediates'):
- shutil.rmtree(os.path.join(obj_dir, x, d), ignore_errors = True)
- for x in [os.path.join('obj', 'lib'), os.path.join('system', 'lib')]:
- for d in os.listdir(os.path.join(out_dir, x)):
- if d.endswith('_gyp.so'):
- os.remove(os.path.join(out_dir, x, d))
-
- super(TestGypAndroid, self).__init__(*args, **kw)
- self._adb_path = os.path.join(os.environ['ANDROID_HOST_OUT'], 'bin', 'adb')
- self._device_serial = None
- adb_devices_out = self._call_adb(['devices'])
- devices = [l.split()[0] for l in adb_devices_out.splitlines()[1:-1]
- if l.split()[1] == 'device']
- if len(devices) == 0:
- self._device_serial = None
- else:
- if len(devices) > 1:
- self._device_serial = random.choice(devices)
- else:
- self._device_serial = devices[0]
- self._call_adb(['root'])
- self._to_install = set()
-
- def target_name(self, target):
- if target == self.ALL:
- return self.ALL
- # The default target is 'droid'. However, we want to use our special target
- # to build only the gyp target 'all'.
- if target in (None, self.DEFAULT):
- return self.ALL
- return target
-
- _INSTALLABLE_PREFIX = 'Install: '
-
- def build(self, gyp_file, target=None, **kw):
- """
- Runs a build using the Android makefiles generated from the specified
- gyp_file. This logic is taken from Android's mmm.
- """
- arguments = kw.get('arguments', [])[:]
- arguments.append(self.target_name(target))
- arguments.append('-C')
- arguments.append(os.environ['ANDROID_BUILD_TOP'])
- kw['arguments'] = arguments
- chdir = kw.get('chdir', '')
- makefile = os.path.join(self.workdir, chdir, 'GypAndroid.mk')
- os.environ['ONE_SHOT_MAKEFILE'] = makefile
- result = self.run(program=self.build_tool, **kw)
- for l in self.stdout().splitlines():
- if l.startswith(TestGypAndroid._INSTALLABLE_PREFIX):
- self._to_install.add(os.path.abspath(os.path.join(
- os.environ['ANDROID_BUILD_TOP'],
- l[len(TestGypAndroid._INSTALLABLE_PREFIX):])))
- del os.environ['ONE_SHOT_MAKEFILE']
- return result
-
- def android_module(self, group, name, subdir):
- if subdir:
- name = '%s_%s' % (subdir, name)
- if group == 'SHARED_LIBRARIES':
- name = 'lib_%s' % name
- return '%s_gyp' % name
-
- def intermediates_dir(self, group, module_name):
- return os.path.join(os.environ['ANDROID_PRODUCT_OUT'], 'obj', group,
- '%s_intermediates' % module_name)
-
- def built_file_path(self, name, type=None, **kw):
- """
- Returns a path to the specified file name, of the specified type,
- as built by Android. Note that we don't support the configuration
- parameter.
- """
- # Built files are in $ANDROID_PRODUCT_OUT. This requires copying logic from
- # the Android build system.
- if type == None or type == self.EXECUTABLE:
- return os.path.join(os.environ['ANDROID_PRODUCT_OUT'], 'obj', 'GYP',
- 'shared_intermediates', name)
- subdir = kw.get('subdir')
- if type == self.STATIC_LIB:
- group = 'STATIC_LIBRARIES'
- module_name = self.android_module(group, name, subdir)
- return os.path.join(self.intermediates_dir(group, module_name),
- '%s.a' % module_name)
- if type == self.SHARED_LIB:
- group = 'SHARED_LIBRARIES'
- module_name = self.android_module(group, name, subdir)
- return os.path.join(self.intermediates_dir(group, module_name), 'LINKED',
- '%s.so' % module_name)
- assert False, 'Unhandled type'
-
- def _adb_failure(self, command, msg, stdout, stderr):
- """ Reports a failed adb command and fails the containing test.
-
- Args:
- command: The adb command that failed.
- msg: The error description.
- stdout: The standard output.
- stderr: The standard error.
- """
- print '%s failed%s' % (' '.join(command), ': %s' % msg if msg else '')
- print self.banner('STDOUT ')
- stdout.seek(0)
- print stdout.read()
- print self.banner('STDERR ')
- stderr.seek(0)
- print stderr.read()
- self.fail_test()
-
- def _call_adb(self, command, timeout=15, retry=3):
- """ Calls the provided adb command.
-
- If the command fails, the test fails.
-
- Args:
- command: The adb command to call.
- Returns:
- The command's output.
- """
- with tempfile.TemporaryFile(bufsize=0) as adb_out:
- with tempfile.TemporaryFile(bufsize=0) as adb_err:
- adb_command = [self._adb_path]
- if self._device_serial:
- adb_command += ['-s', self._device_serial]
- is_shell = (command[0] == 'shell')
- if is_shell:
- command = [command[0], '%s; echo "\n$?";' % ' '.join(command[1:])]
- adb_command += command
-
- for attempt in xrange(1, retry + 1):
- adb_out.seek(0)
- adb_out.truncate(0)
- adb_err.seek(0)
- adb_err.truncate(0)
- proc = subprocess.Popen(adb_command, stdout=adb_out, stderr=adb_err)
- deadline = time.time() + timeout
- timed_out = False
- while proc.poll() is None and not timed_out:
- time.sleep(1)
- timed_out = time.time() > deadline
- if timed_out:
- print 'Timeout for command %s (attempt %d of %s)' % (
- adb_command, attempt, retry)
- try:
- proc.kill()
- except:
- pass
- else:
- break
-
- if proc.returncode != 0: # returncode is None in the case of a timeout.
- self._adb_failure(
- adb_command, 'retcode=%s' % proc.returncode, adb_out, adb_err)
- return
-
- adb_out.seek(0)
- output = adb_out.read()
- if is_shell:
- output = output.splitlines(True)
- try:
- output[-2] = output[-2].rstrip('\r\n')
- output, rc = (''.join(output[:-1]), int(output[-1]))
- except ValueError:
- self._adb_failure(adb_command, 'unexpected output format',
- adb_out, adb_err)
- if rc != 0:
- self._adb_failure(adb_command, 'exited with %d' % rc, adb_out,
- adb_err)
- return output
-
- def run_built_executable(self, name, *args, **kw):
- """
- Runs an executable program built from a gyp-generated configuration.
- """
- match = kw.pop('match', self.match)
-
- executable_file = self.built_file_path(name, type=self.EXECUTABLE, **kw)
- if executable_file not in self._to_install:
- self.fail_test()
-
- if not self._device_serial:
- self.skip_test(message='No devices attached.\n')
-
- storage = self._call_adb(['shell', 'echo', '$ANDROID_DATA']).strip()
- if not len(storage):
- self.fail_test()
-
- installed = set()
- try:
- for i in self._to_install:
- a = os.path.abspath(
- os.path.join(os.environ['ANDROID_BUILD_TOP'], i))
- dest = '%s/%s' % (storage, os.path.basename(a))
- self._call_adb(['push', os.path.abspath(a), dest])
- installed.add(dest)
- if i == executable_file:
- device_executable = dest
- self._call_adb(['shell', 'chmod', '755', device_executable])
-
- out = self._call_adb(
- ['shell', 'LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%s' % storage,
- device_executable],
- timeout=60,
- retry=1)
- out = out.replace('\r\n', '\n')
- self._complete(out, kw.pop('stdout', None), None, None, None, match)
- finally:
- if len(installed):
- self._call_adb(['shell', 'rm'] + list(installed))
-
- def match_single_line(self, lines = None, expected_line = None):
- """
- Checks that specified line appears in the text.
- """
- for line in lines.split('\n'):
- if line == expected_line:
- return 1
- return
-
- def up_to_date(self, gyp_file, target=None, **kw):
- """
- Verifies that a build of the specified target is up to date.
- """
- kw['stdout'] = ("make: Nothing to be done for `%s'." %
- self.target_name(target))
-
- # We need to supply a custom matcher, since we don't want to depend on the
- # exact stdout string.
- kw['match'] = self.match_single_line
- return self.build(gyp_file, target, **kw)
-
-
-class TestGypCMake(TestGypBase):
- """
- Subclass for testing the GYP CMake generator, using cmake's ninja backend.
- """
- format = 'cmake'
- build_tool_list = ['cmake']
- ALL = 'all'
-
- def cmake_build(self, gyp_file, target=None, **kw):
- arguments = kw.get('arguments', [])[:]
-
- self.build_tool_list = ['cmake']
- self.initialize_build_tool()
-
- chdir = os.path.join(kw.get('chdir', '.'),
- 'out',
- self.configuration_dirname())
- kw['chdir'] = chdir
-
- arguments.append('-G')
- arguments.append('Ninja')
-
- kw['arguments'] = arguments
-
- stderr = kw.get('stderr', None)
- if stderr:
- kw['stderr'] = stderr.split('$$$')[0]
-
- self.run(program=self.build_tool, **kw)
-
- def ninja_build(self, gyp_file, target=None, **kw):
- arguments = kw.get('arguments', [])[:]
-
- self.build_tool_list = ['ninja']
- self.initialize_build_tool()
-
- # Add a -C output/path to the command line.
- arguments.append('-C')
- arguments.append(os.path.join('out', self.configuration_dirname()))
-
- if target not in (None, self.DEFAULT):
- arguments.append(target)
-
- kw['arguments'] = arguments
-
- stderr = kw.get('stderr', None)
- if stderr:
- stderrs = stderr.split('$$$')
- kw['stderr'] = stderrs[1] if len(stderrs) > 1 else ''
-
- return self.run(program=self.build_tool, **kw)
-
- def build(self, gyp_file, target=None, status=0, **kw):
- # Two tools must be run to build, cmake and the ninja.
- # Allow cmake to succeed when the overall expectation is to fail.
- if status is None:
- kw['status'] = None
- else:
- if not isinstance(status, collections.Iterable): status = (status,)
- kw['status'] = list(itertools.chain((0,), status))
- self.cmake_build(gyp_file, target, **kw)
- kw['status'] = status
- self.ninja_build(gyp_file, target, **kw)
-
- def run_built_executable(self, name, *args, **kw):
- # Enclosing the name in a list avoids prepending the original dir.
- program = [self.built_file_path(name, type=self.EXECUTABLE, **kw)]
- if sys.platform == 'darwin':
- configuration = self.configuration_dirname()
- os.environ['DYLD_LIBRARY_PATH'] = os.path.join('out', configuration)
- return self.run(program=program, *args, **kw)
-
- def built_file_path(self, name, type=None, **kw):
- result = []
- chdir = kw.get('chdir')
- if chdir:
- result.append(chdir)
- result.append('out')
- result.append(self.configuration_dirname())
- if type == self.STATIC_LIB:
- if sys.platform != 'darwin':
- result.append('obj.target')
- elif type == self.SHARED_LIB:
- if sys.platform != 'darwin' and sys.platform != 'win32':
- result.append('lib.target')
- subdir = kw.get('subdir')
- if subdir and type != self.SHARED_LIB:
- result.append(subdir)
- result.append(self.built_file_basename(name, type, **kw))
- return self.workpath(*result)
-
- def up_to_date(self, gyp_file, target=None, **kw):
- result = self.ninja_build(gyp_file, target, **kw)
- if not result:
- stdout = self.stdout()
- if 'ninja: no work to do' not in stdout:
- self.report_not_up_to_date()
- self.fail_test()
- return result
-
-
-class TestGypMake(TestGypBase):
- """
- Subclass for testing the GYP Make generator.
- """
- format = 'make'
- build_tool_list = ['make']
- ALL = 'all'
- def build(self, gyp_file, target=None, **kw):
- """
- Runs a Make build using the Makefiles generated from the specified
- gyp_file.
- """
- arguments = kw.get('arguments', [])[:]
- if self.configuration:
- arguments.append('BUILDTYPE=' + self.configuration)
- if target not in (None, self.DEFAULT):
- arguments.append(target)
- # Sub-directory builds provide per-gyp Makefiles (i.e.
- # Makefile.gyp_filename), so use that if there is no Makefile.
- chdir = kw.get('chdir', '')
- if not os.path.exists(os.path.join(chdir, 'Makefile')):
- print "NO Makefile in " + os.path.join(chdir, 'Makefile')
- arguments.insert(0, '-f')
- arguments.insert(1, os.path.splitext(gyp_file)[0] + '.Makefile')
- kw['arguments'] = arguments
- return self.run(program=self.build_tool, **kw)
- def up_to_date(self, gyp_file, target=None, **kw):
- """
- Verifies that a build of the specified Make target is up to date.
- """
- if target in (None, self.DEFAULT):
- message_target = 'all'
- else:
- message_target = target
- kw['stdout'] = "make: Nothing to be done for `%s'.\n" % message_target
- return self.build(gyp_file, target, **kw)
- def run_built_executable(self, name, *args, **kw):
- """
- Runs an executable built by Make.
- """
- configuration = self.configuration_dirname()
- libdir = os.path.join('out', configuration, 'lib')
- # TODO(piman): when everything is cross-compile safe, remove lib.target
- if sys.platform == 'darwin':
- # Mac puts target shared libraries right in the product directory.
- configuration = self.configuration_dirname()
- os.environ['DYLD_LIBRARY_PATH'] = (
- libdir + '.host:' + os.path.join('out', configuration))
- else:
- os.environ['LD_LIBRARY_PATH'] = libdir + '.host:' + libdir + '.target'
- # Enclosing the name in a list avoids prepending the original dir.
- program = [self.built_file_path(name, type=self.EXECUTABLE, **kw)]
- return self.run(program=program, *args, **kw)
- def built_file_path(self, name, type=None, **kw):
- """
- Returns a path to the specified file name, of the specified type,
- as built by Make.
-
- Built files are in the subdirectory 'out/{configuration}'.
- The default is 'out/Default'.
-
- A chdir= keyword argument specifies the source directory
- relative to which the output subdirectory can be found.
-
- "type" values of STATIC_LIB or SHARED_LIB append the necessary
- prefixes and suffixes to a platform-independent library base name.
-
- A subdir= keyword argument specifies a library subdirectory within
- the default 'obj.target'.
- """
- result = []
- chdir = kw.get('chdir')
- if chdir:
- result.append(chdir)
- configuration = self.configuration_dirname()
- result.extend(['out', configuration])
- if type == self.STATIC_LIB and sys.platform != 'darwin':
- result.append('obj.target')
- elif type == self.SHARED_LIB and sys.platform != 'darwin':
- result.append('lib.target')
- subdir = kw.get('subdir')
- if subdir and type != self.SHARED_LIB:
- result.append(subdir)
- result.append(self.built_file_basename(name, type, **kw))
- return self.workpath(*result)
-
-
-def ConvertToCygpath(path):
- """Convert to cygwin path if we are using cygwin."""
- if sys.platform == 'cygwin':
- p = subprocess.Popen(['cygpath', path], stdout=subprocess.PIPE)
- path = p.communicate()[0].strip()
- return path
-
-
-def FindMSBuildInstallation(msvs_version = 'auto'):
- """Returns path to MSBuild for msvs_version or latest available.
-
- Looks in the registry to find install location of MSBuild.
- MSBuild before v4.0 will not build c++ projects, so only use newer versions.
- """
- import TestWin
- registry = TestWin.Registry()
-
- msvs_to_msbuild = {
- '2013': r'12.0',
- '2012': r'4.0', # Really v4.0.30319 which comes with .NET 4.5.
- '2010': r'4.0'}
-
- msbuild_basekey = r'HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions'
- if not registry.KeyExists(msbuild_basekey):
- print 'Error: could not find MSBuild base registry entry'
- return None
-
- msbuild_version = None
- if msvs_version in msvs_to_msbuild:
- msbuild_test_version = msvs_to_msbuild[msvs_version]
- if registry.KeyExists(msbuild_basekey + '\\' + msbuild_test_version):
- msbuild_version = msbuild_test_version
- else:
- print ('Warning: Environment variable GYP_MSVS_VERSION specifies "%s" '
- 'but corresponding MSBuild "%s" was not found.' %
- (msvs_version, msbuild_version))
- if not msbuild_version:
- for msvs_version in sorted(msvs_to_msbuild, reverse=True):
- msbuild_test_version = msvs_to_msbuild[msvs_version]
- if registry.KeyExists(msbuild_basekey + '\\' + msbuild_test_version):
- msbuild_version = msbuild_test_version
- break
- if not msbuild_version:
- print 'Error: could not find MSBuild registry entry'
- return None
-
- msbuild_path = registry.GetValue(msbuild_basekey + '\\' + msbuild_version,
- 'MSBuildToolsPath')
- if not msbuild_path:
- print 'Error: could not get MSBuild registry entry value'
- return None
-
- return os.path.join(msbuild_path, 'MSBuild.exe')
-
-
-def FindVisualStudioInstallation():
- """Returns appropriate values for .build_tool and .uses_msbuild fields
- of TestGypBase for Visual Studio.
-
- We use the value specified by GYP_MSVS_VERSION. If not specified, we
- search %PATH% and %PATHEXT% for a devenv.{exe,bat,...} executable.
- Failing that, we search for likely deployment paths.
- """
- possible_roots = ['%s:\\Program Files%s' % (chr(drive), suffix)
- for drive in range(ord('C'), ord('Z') + 1)
- for suffix in ['', ' (x86)']]
- possible_paths = {
- '2013': r'Microsoft Visual Studio 12.0\Common7\IDE\devenv.com',
- '2012': r'Microsoft Visual Studio 11.0\Common7\IDE\devenv.com',
- '2010': r'Microsoft Visual Studio 10.0\Common7\IDE\devenv.com',
- '2008': r'Microsoft Visual Studio 9.0\Common7\IDE\devenv.com',
- '2005': r'Microsoft Visual Studio 8\Common7\IDE\devenv.com'}
-
- possible_roots = [ConvertToCygpath(r) for r in possible_roots]
-
- msvs_version = 'auto'
- for flag in (f for f in sys.argv if f.startswith('msvs_version=')):
- msvs_version = flag.split('=')[-1]
- msvs_version = os.environ.get('GYP_MSVS_VERSION', msvs_version)
-
- if msvs_version in possible_paths:
- # Check that the path to the specified GYP_MSVS_VERSION exists.
- path = possible_paths[msvs_version]
- for r in possible_roots:
- build_tool = os.path.join(r, path)
- if os.path.exists(build_tool):
- uses_msbuild = msvs_version >= '2010'
- msbuild_path = FindMSBuildInstallation(msvs_version)
- return build_tool, uses_msbuild, msbuild_path
- else:
- print ('Warning: Environment variable GYP_MSVS_VERSION specifies "%s" '
- 'but corresponding "%s" was not found.' % (msvs_version, path))
- # Neither GYP_MSVS_VERSION nor the path help us out. Iterate through
- # the choices looking for a match.
- for version in sorted(possible_paths, reverse=True):
- path = possible_paths[version]
- for r in possible_roots:
- build_tool = os.path.join(r, path)
- if os.path.exists(build_tool):
- uses_msbuild = msvs_version >= '2010'
- msbuild_path = FindMSBuildInstallation(msvs_version)
- return build_tool, uses_msbuild, msbuild_path
- print 'Error: could not find devenv'
- sys.exit(1)
-
-class TestGypOnMSToolchain(TestGypBase):
- """
- Common subclass for testing generators that target the Microsoft Visual
- Studio toolchain (cl, link, dumpbin, etc.)
- """
- @staticmethod
- def _ComputeVsvarsPath(devenv_path):
- devenv_dir = os.path.split(devenv_path)[0]
- vsvars_path = os.path.join(devenv_path, '../../Tools/vsvars32.bat')
- return vsvars_path
-
- def initialize_build_tool(self):
- super(TestGypOnMSToolchain, self).initialize_build_tool()
- if sys.platform in ('win32', 'cygwin'):
- build_tools = FindVisualStudioInstallation()
- self.devenv_path, self.uses_msbuild, self.msbuild_path = build_tools
- self.vsvars_path = TestGypOnMSToolchain._ComputeVsvarsPath(
- self.devenv_path)
-
- def run_dumpbin(self, *dumpbin_args):
- """Run the dumpbin tool with the specified arguments, and capturing and
- returning stdout."""
- assert sys.platform in ('win32', 'cygwin')
- cmd = os.environ.get('COMSPEC', 'cmd.exe')
- arguments = [cmd, '/c', self.vsvars_path, '&&', 'dumpbin']
- arguments.extend(dumpbin_args)
- proc = subprocess.Popen(arguments, stdout=subprocess.PIPE)
- output = proc.communicate()[0]
- assert not proc.returncode
- return output
-
-class TestGypNinja(TestGypOnMSToolchain):
- """
- Subclass for testing the GYP Ninja generator.
- """
- format = 'ninja'
- build_tool_list = ['ninja']
- ALL = 'all'
- DEFAULT = 'all'
-
- def run_gyp(self, gyp_file, *args, **kw):
- TestGypBase.run_gyp(self, gyp_file, *args, **kw)
-
- def build(self, gyp_file, target=None, **kw):
- arguments = kw.get('arguments', [])[:]
-
- # Add a -C output/path to the command line.
- arguments.append('-C')
- arguments.append(os.path.join('out', self.configuration_dirname()))
-
- if target is None:
- target = 'all'
- arguments.append(target)
-
- kw['arguments'] = arguments
- return self.run(program=self.build_tool, **kw)
-
- def run_built_executable(self, name, *args, **kw):
- # Enclosing the name in a list avoids prepending the original dir.
- program = [self.built_file_path(name, type=self.EXECUTABLE, **kw)]
- if sys.platform == 'darwin':
- configuration = self.configuration_dirname()
- os.environ['DYLD_LIBRARY_PATH'] = os.path.join('out', configuration)
- return self.run(program=program, *args, **kw)
-
- def built_file_path(self, name, type=None, **kw):
- result = []
- chdir = kw.get('chdir')
- if chdir:
- result.append(chdir)
- result.append('out')
- result.append(self.configuration_dirname())
- if type == self.STATIC_LIB:
- if sys.platform != 'darwin':
- result.append('obj')
- elif type == self.SHARED_LIB:
- if sys.platform != 'darwin' and sys.platform != 'win32':
- result.append('lib')
- subdir = kw.get('subdir')
- if subdir and type != self.SHARED_LIB:
- result.append(subdir)
- result.append(self.built_file_basename(name, type, **kw))
- return self.workpath(*result)
-
- def up_to_date(self, gyp_file, target=None, **kw):
- result = self.build(gyp_file, target, **kw)
- if not result:
- stdout = self.stdout()
- if 'ninja: no work to do' not in stdout:
- self.report_not_up_to_date()
- self.fail_test()
- return result
-
-
-class TestGypMSVS(TestGypOnMSToolchain):
- """
- Subclass for testing the GYP Visual Studio generator.
- """
- format = 'msvs'
-
- u = r'=== Build: 0 succeeded, 0 failed, (\d+) up-to-date, 0 skipped ==='
- up_to_date_re = re.compile(u, re.M)
-
- # Initial None element will indicate to our .initialize_build_tool()
- # method below that 'devenv' was not found on %PATH%.
- #
- # Note: we must use devenv.com to be able to capture build output.
- # Directly executing devenv.exe only sends output to BuildLog.htm.
- build_tool_list = [None, 'devenv.com']
-
- def initialize_build_tool(self):
- super(TestGypMSVS, self).initialize_build_tool()
- self.build_tool = self.devenv_path
-
- def build(self, gyp_file, target=None, rebuild=False, clean=False, **kw):
- """
- Runs a Visual Studio build using the configuration generated
- from the specified gyp_file.
- """
- configuration = self.configuration_buildname()
- if clean:
- build = '/Clean'
- elif rebuild:
- build = '/Rebuild'
- else:
- build = '/Build'
- arguments = kw.get('arguments', [])[:]
- arguments.extend([gyp_file.replace('.gyp', '.sln'),
- build, configuration])
- # Note: the Visual Studio generator doesn't add an explicit 'all'
- # target, so we just treat it the same as the default.
- if target not in (None, self.ALL, self.DEFAULT):
- arguments.extend(['/Project', target])
- if self.configuration:
- arguments.extend(['/ProjectConfig', self.configuration])
- kw['arguments'] = arguments
- return self.run(program=self.build_tool, **kw)
- def up_to_date(self, gyp_file, target=None, **kw):
- """
- Verifies that a build of the specified Visual Studio target is up to date.
-
- Beware that VS2010 will behave strangely if you build under
- C:\USERS\yourname\AppData\Local. It will cause needless work. The ouptut
- will be "1 succeeded and 0 up to date". MSBuild tracing reveals that:
- "Project 'C:\Users\...\AppData\Local\...vcxproj' not up to date because
- 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 10.0\VC\BIN\1033\CLUI.DLL'
- was modified at 02/21/2011 17:03:30, which is newer than '' which was
- modified at 01/01/0001 00:00:00.
-
- The workaround is to specify a workdir when instantiating the test, e.g.
- test = TestGyp.TestGyp(workdir='workarea')
- """
- result = self.build(gyp_file, target, **kw)
- if not result:
- stdout = self.stdout()
-
- m = self.up_to_date_re.search(stdout)
- up_to_date = m and int(m.group(1)) > 0
- if not up_to_date:
- self.report_not_up_to_date()
- self.fail_test()
- return result
- def run_built_executable(self, name, *args, **kw):
- """
- Runs an executable built by Visual Studio.
- """
- configuration = self.configuration_dirname()
- # Enclosing the name in a list avoids prepending the original dir.
- program = [self.built_file_path(name, type=self.EXECUTABLE, **kw)]
- return self.run(program=program, *args, **kw)
- def built_file_path(self, name, type=None, **kw):
- """
- Returns a path to the specified file name, of the specified type,
- as built by Visual Studio.
-
- Built files are in a subdirectory that matches the configuration
- name. The default is 'Default'.
-
- A chdir= keyword argument specifies the source directory
- relative to which the output subdirectory can be found.
-
- "type" values of STATIC_LIB or SHARED_LIB append the necessary
- prefixes and suffixes to a platform-independent library base name.
- """
- result = []
- chdir = kw.get('chdir')
- if chdir:
- result.append(chdir)
- result.append(self.configuration_dirname())
- if type == self.STATIC_LIB:
- result.append('lib')
- result.append(self.built_file_basename(name, type, **kw))
- return self.workpath(*result)
-
-
-class TestGypMSVSNinja(TestGypNinja):
- """
- Subclass for testing the GYP Visual Studio Ninja generator.
- """
- format = 'msvs-ninja'
-
- def initialize_build_tool(self):
- super(TestGypMSVSNinja, self).initialize_build_tool()
- # When using '--build', make sure ninja is first in the format list.
- self.formats.insert(0, 'ninja')
-
- def build(self, gyp_file, target=None, rebuild=False, clean=False, **kw):
- """
- Runs a Visual Studio build using the configuration generated
- from the specified gyp_file.
- """
- arguments = kw.get('arguments', [])[:]
- if target in (None, self.ALL, self.DEFAULT):
- # Note: the Visual Studio generator doesn't add an explicit 'all' target.
- # This will build each project. This will work if projects are hermetic,
- # but may fail if they are not (a project may run more than once).
- # It would be nice to supply an all.metaproj for MSBuild.
- arguments.extend([gyp_file.replace('.gyp', '.sln')])
- else:
- # MSBuild documentation claims that one can specify a sln but then build a
- # project target like 'msbuild a.sln /t:proj:target' but this format only
- # supports 'Clean', 'Rebuild', and 'Publish' (with none meaning Default).
- # This limitation is due to the .sln -> .sln.metaproj conversion.
- # The ':' is not special, 'proj:target' is a target in the metaproj.
- arguments.extend([target+'.vcxproj'])
-
- if clean:
- build = 'Clean'
- elif rebuild:
- build = 'Rebuild'
- else:
- build = 'Build'
- arguments.extend(['/target:'+build])
- configuration = self.configuration_buildname()
- config = configuration.split('|')
- arguments.extend(['/property:Configuration='+config[0]])
- if len(config) > 1:
- arguments.extend(['/property:Platform='+config[1]])
- arguments.extend(['/property:BuildInParallel=false'])
- arguments.extend(['/verbosity:minimal'])
-
- kw['arguments'] = arguments
- return self.run(program=self.msbuild_path, **kw)
-
-
-class TestGypXcode(TestGypBase):
- """
- Subclass for testing the GYP Xcode generator.
- """
- format = 'xcode'
- build_tool_list = ['xcodebuild']
-
- phase_script_execution = ("\n"
- "PhaseScriptExecution /\\S+/Script-[0-9A-F]+\\.sh\n"
- " cd /\\S+\n"
- " /bin/sh -c /\\S+/Script-[0-9A-F]+\\.sh\n"
- "(make: Nothing to be done for `all'\\.\n)?")
-
- strip_up_to_date_expressions = [
- # Various actions or rules can run even when the overall build target
- # is up to date. Strip those phases' GYP-generated output.
- re.compile(phase_script_execution, re.S),
-
- # The message from distcc_pump can trail the "BUILD SUCCEEDED"
- # message, so strip that, too.
- re.compile('__________Shutting down distcc-pump include server\n', re.S),
- ]
-
- up_to_date_endings = (
- 'Checking Dependencies...\n** BUILD SUCCEEDED **\n', # Xcode 3.0/3.1
- 'Check dependencies\n** BUILD SUCCEEDED **\n\n', # Xcode 3.2
- 'Check dependencies\n\n\n** BUILD SUCCEEDED **\n\n', # Xcode 4.2
- 'Check dependencies\n\n** BUILD SUCCEEDED **\n\n', # Xcode 5.0
- )
-
- def build(self, gyp_file, target=None, **kw):
- """
- Runs an xcodebuild using the .xcodeproj generated from the specified
- gyp_file.
- """
- # Be sure we're working with a copy of 'arguments' since we modify it.
- # The caller may not be expecting it to be modified.
- arguments = kw.get('arguments', [])[:]
- arguments.extend(['-project', gyp_file.replace('.gyp', '.xcodeproj')])
- if target == self.ALL:
- arguments.append('-alltargets',)
- elif target not in (None, self.DEFAULT):
- arguments.extend(['-target', target])
- if self.configuration:
- arguments.extend(['-configuration', self.configuration])
- symroot = kw.get('SYMROOT', '$SRCROOT/build')
- if symroot:
- arguments.append('SYMROOT='+symroot)
- kw['arguments'] = arguments
-
- # Work around spurious stderr output from Xcode 4, http://crbug.com/181012
- match = kw.pop('match', self.match)
- def match_filter_xcode(actual, expected):
- if actual:
- if not TestCmd.is_List(actual):
- actual = actual.split('\n')
- if not TestCmd.is_List(expected):
- expected = expected.split('\n')
- actual = [a for a in actual
- if 'No recorder, buildTask: <Xcode3BuildTask:' not in a]
- return match(actual, expected)
- kw['match'] = match_filter_xcode
-
- return self.run(program=self.build_tool, **kw)
- def up_to_date(self, gyp_file, target=None, **kw):
- """
- Verifies that a build of the specified Xcode target is up to date.
- """
- result = self.build(gyp_file, target, **kw)
- if not result:
- output = self.stdout()
- for expression in self.strip_up_to_date_expressions:
- output = expression.sub('', output)
- if not output.endswith(self.up_to_date_endings):
- self.report_not_up_to_date()
- self.fail_test()
- return result
- def run_built_executable(self, name, *args, **kw):
- """
- Runs an executable built by xcodebuild.
- """
- configuration = self.configuration_dirname()
- os.environ['DYLD_LIBRARY_PATH'] = os.path.join('build', configuration)
- # Enclosing the name in a list avoids prepending the original dir.
- program = [self.built_file_path(name, type=self.EXECUTABLE, **kw)]
- return self.run(program=program, *args, **kw)
- def built_file_path(self, name, type=None, **kw):
- """
- Returns a path to the specified file name, of the specified type,
- as built by Xcode.
-
- Built files are in the subdirectory 'build/{configuration}'.
- The default is 'build/Default'.
-
- A chdir= keyword argument specifies the source directory
- relative to which the output subdirectory can be found.
-
- "type" values of STATIC_LIB or SHARED_LIB append the necessary
- prefixes and suffixes to a platform-independent library base name.
- """
- result = []
- chdir = kw.get('chdir')
- if chdir:
- result.append(chdir)
- configuration = self.configuration_dirname()
- result.extend(['build', configuration])
- result.append(self.built_file_basename(name, type, **kw))
- return self.workpath(*result)
-
-
-class TestGypXcodeNinja(TestGypXcode):
- """
- Subclass for testing the GYP Xcode Ninja generator.
- """
- format = 'xcode-ninja'
-
- def initialize_build_tool(self):
- super(TestGypXcodeNinja, self).initialize_build_tool()
- # When using '--build', make sure ninja is first in the format list.
- self.formats.insert(0, 'ninja')
-
- def build(self, gyp_file, target=None, **kw):
- """
- Runs an xcodebuild using the .xcodeproj generated from the specified
- gyp_file.
- """
- build_config = self.configuration
- if build_config and build_config.endswith(('-iphoneos',
- '-iphonesimulator')):
- build_config, sdk = self.configuration.split('-')
- kw['arguments'] = kw.get('arguments', []) + ['-sdk', sdk]
-
- with self._build_configuration(build_config):
- return super(TestGypXcodeNinja, self).build(
- gyp_file.replace('.gyp', '.ninja.gyp'), target, **kw)
-
- @contextmanager
- def _build_configuration(self, build_config):
- config = self.configuration
- self.configuration = build_config
- try:
- yield
- finally:
- self.configuration = config
-
- def built_file_path(self, name, type=None, **kw):
- result = []
- chdir = kw.get('chdir')
- if chdir:
- result.append(chdir)
- result.append('out')
- result.append(self.configuration_dirname())
- subdir = kw.get('subdir')
- if subdir and type != self.SHARED_LIB:
- result.append(subdir)
- result.append(self.built_file_basename(name, type, **kw))
- return self.workpath(*result)
-
- def up_to_date(self, gyp_file, target=None, **kw):
- result = self.build(gyp_file, target, **kw)
- if not result:
- stdout = self.stdout()
- if 'ninja: no work to do' not in stdout:
- self.report_not_up_to_date()
- self.fail_test()
- return result
-
- def run_built_executable(self, name, *args, **kw):
- """
- Runs an executable built by xcodebuild + ninja.
- """
- configuration = self.configuration_dirname()
- os.environ['DYLD_LIBRARY_PATH'] = os.path.join('out', configuration)
- # Enclosing the name in a list avoids prepending the original dir.
- program = [self.built_file_path(name, type=self.EXECUTABLE, **kw)]
- return self.run(program=program, *args, **kw)
-
-
-format_class_list = [
- TestGypGypd,
- TestGypAndroid,
- TestGypCMake,
- TestGypMake,
- TestGypMSVS,
- TestGypMSVSNinja,
- TestGypNinja,
- TestGypXcode,
- TestGypXcodeNinja,
-]
-
-def TestGyp(*args, **kw):
- """
- Returns an appropriate TestGyp* instance for a specified GYP format.
- """
- format = kw.pop('format', os.environ.get('TESTGYP_FORMAT'))
- for format_class in format_class_list:
- if format == format_class.format:
- return format_class(*args, **kw)
- raise Exception, "unknown format %r" % format
+++ /dev/null
-# Copyright (c) 2014 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.
-
-"""
-TestMac.py: a collection of helper function shared between test on Mac OS X.
-"""
-
-import re
-import subprocess
-
-__all__ = ['Xcode', 'CheckFileType']
-
-
-def CheckFileType(test, file, archs):
- """Check that |file| contains exactly |archs| or fails |test|."""
- proc = subprocess.Popen(['lipo', '-info', file], stdout=subprocess.PIPE)
- o = proc.communicate()[0].strip()
- assert not proc.returncode
- if len(archs) == 1:
- pattern = re.compile('^Non-fat file: (.*) is architecture: (.*)$')
- else:
- pattern = re.compile('^Architectures in the fat file: (.*) are: (.*)$')
- match = pattern.match(o)
- if match is None:
- print 'Ouput does not match expected pattern: %s' % (pattern.pattern)
- test.fail_test()
- else:
- found_file, found_archs = match.groups()
- if found_file != file or set(found_archs.split()) != set(archs):
- print 'Expected file %s with arch %s, got %s with arch %s' % (
- file, ' '.join(archs), found_file, found_archs)
- test.fail_test()
-
-
-class XcodeInfo(object):
- """Simplify access to Xcode informations."""
-
- def __init__(self):
- self._cache = {}
-
- def _XcodeVersion(self):
- lines = subprocess.check_output(['xcodebuild', '-version']).splitlines()
- version = ''.join(lines[0].split()[-1].split('.'))
- version = (version + '0' * (3 - len(version))).zfill(4)
- return version, lines[-1].split()[-1]
-
- def Version(self):
- if 'Version' not in self._cache:
- self._cache['Version'], self._cache['Build'] = self._XcodeVersion()
- return self._cache['Version']
-
- def Build(self):
- if 'Build' not in self._cache:
- self._cache['Version'], self._cache['Build'] = self._XcodeVersion()
- return self._cache['Build']
-
- def SDKBuild(self):
- if 'SDKBuild' not in self._cache:
- self._cache['SDKBuild'] = subprocess.check_output(
- ['xcodebuild', '-version', '-sdk', '', 'ProductBuildVersion'])
- self._cache['SDKBuild'] = self._cache['SDKBuild'].rstrip('\n')
- return self._cache['SDKBuild']
-
- def SDKVersion(self):
- if 'SDKVersion' not in self._cache:
- self._cache['SDKVersion'] = subprocess.check_output(
- ['xcodebuild', '-version', '-sdk', '', 'SDKVersion'])
- self._cache['SDKVersion'] = self._cache['SDKVersion'].rstrip('\n')
- return self._cache['SDKVersion']
-
-
-Xcode = XcodeInfo()
+++ /dev/null
-# Copyright (c) 2014 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.
-
-"""
-TestWin.py: a collection of helpers for testing on Windows.
-"""
-
-import errno
-import os
-import re
-import sys
-import subprocess
-
-class Registry(object):
- def _QueryBase(self, sysdir, key, value):
- """Use reg.exe to read a particular key.
-
- While ideally we might use the win32 module, we would like gyp to be
- python neutral, so for instance cygwin python lacks this module.
-
- Arguments:
- sysdir: The system subdirectory to attempt to launch reg.exe from.
- key: The registry key to read from.
- value: The particular value to read.
- Return:
- stdout from reg.exe, or None for failure.
- """
- # Skip if not on Windows or Python Win32 setup issue
- if sys.platform not in ('win32', 'cygwin'):
- return None
- # Setup params to pass to and attempt to launch reg.exe
- cmd = [os.path.join(os.environ.get('WINDIR', ''), sysdir, 'reg.exe'),
- 'query', key]
- if value:
- cmd.extend(['/v', value])
- p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- # Get the stdout from reg.exe, reading to the end so p.returncode is valid
- # Note that the error text may be in [1] in some cases
- text = p.communicate()[0]
- # Check return code from reg.exe; officially 0==success and 1==error
- if p.returncode:
- return None
- return text
-
- def Query(self, key, value=None):
- r"""Use reg.exe to read a particular key through _QueryBase.
-
- First tries to launch from %WinDir%\Sysnative to avoid WoW64 redirection. If
- that fails, it falls back to System32. Sysnative is available on Vista and
- up and available on Windows Server 2003 and XP through KB patch 942589. Note
- that Sysnative will always fail if using 64-bit python due to it being a
- virtual directory and System32 will work correctly in the first place.
-
- KB 942589 - http://support.microsoft.com/kb/942589/en-us.
-
- Arguments:
- key: The registry key.
- value: The particular registry value to read (optional).
- Return:
- stdout from reg.exe, or None for failure.
- """
- text = None
- try:
- text = self._QueryBase('Sysnative', key, value)
- except OSError, e:
- if e.errno == errno.ENOENT:
- text = self._QueryBase('System32', key, value)
- else:
- raise
- return text
-
- def GetValue(self, key, value):
- """Use reg.exe to obtain the value of a registry key.
-
- Args:
- key: The registry key.
- value: The particular registry value to read.
- Return:
- contents of the registry key's value, or None on failure.
- """
- text = self.Query(key, value)
- if not text:
- return None
- # Extract value.
- match = re.search(r'REG_\w+\s+([^\r]+)\r\n', text)
- if not match:
- return None
- return match.group(1)
-
- def KeyExists(self, key):
- """Use reg.exe to see if a key exists.
-
- Args:
- key: The registry key to check.
- Return:
- True if the key exists
- """
- if not self.Query(key):
- return False
- return True
+++ /dev/null
-#!/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.
-
-"""
-Verifies that .so files that are order only dependencies are specified by
-their install location rather than by their alias.
-"""
-
-# Python 2.5 needs this for the with statement.
-from __future__ import with_statement
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['make'])
-
-test.run_gyp('shared_dependency.gyp',
- chdir='src')
-test.relocate('src', 'relocate/src')
-
-test.build('shared_dependency.gyp', test.ALL, chdir='relocate/src')
-
-if test.format=='android':
- makefile_path = 'relocate/src/GypAndroid.mk'
-else:
- makefile_path = 'relocate/src/Makefile'
-
-with open(makefile_path) as makefile:
- make_contents = makefile.read()
-
-# If we remove the code to generate lib1, Make should still be able
-# to build lib2 since lib1.so already exists.
-make_contents = make_contents.replace('include lib1.target.mk', '')
-with open(makefile_path, 'w') as makefile:
- makefile.write(make_contents)
-
-test.build('shared_dependency.gyp', test.ALL, chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies simple build of a "Hello, world!" program with shared libraries,
-including verifying that libraries are rebuilt correctly when functions
-move between libraries.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if test.format == 'android':
- # This test currently fails on android. Investigate why, fix the issues
- # responsible, and reenable this test on android. See bug:
- # https://code.google.com/p/gyp/issues/detail?id=436
- test.skip_test(message='Test fails on android. Fix and reenable.\n')
-
-test.run_gyp('library.gyp',
- '-Dlibrary=shared_library',
- '-Dmoveable_function=lib1',
- chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('library.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from program.c
-Hello from lib1.c
-Hello from lib2.c
-Hello from lib1_moveable.c
-"""
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
-test.run_gyp('library.gyp',
- '-Dlibrary=shared_library',
- '-Dmoveable_function=lib2',
- chdir='relocate/src')
-
-# Update program.c to force a rebuild.
-test.sleep()
-contents = test.read('relocate/src/program.c')
-contents = contents.replace('Hello', 'Hello again')
-test.write('relocate/src/program.c', contents)
-
-test.build('library.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello again from program.c
-Hello from lib1.c
-Hello from lib2.c
-Hello from lib2_moveable.c
-"""
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
-test.run_gyp('library.gyp',
- '-Dlibrary=shared_library',
- '-Dmoveable_function=lib1',
- chdir='relocate/src')
-
-# Update program.c to force a rebuild.
-test.sleep()
-contents = test.read('relocate/src/program.c')
-contents = contents.replace('again', 'again again')
-test.write('relocate/src/program.c', contents)
-
-# TODO(sgk): we have to force a rebuild of lib2 so that it weeds out
-# the "moved" module. This should be done in gyp by adding a dependency
-# on the generated .vcproj file itself.
-test.touch('relocate/src/lib2.c')
-
-test.build('library.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello again again from program.c
-Hello from lib1.c
-Hello from lib2.c
-Hello from lib1_moveable.c
-"""
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies simple build of a "Hello, world!" program with static libraries,
-including verifying that libraries are rebuilt correctly when functions
-move between libraries.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if test.format == 'android':
- # This test currently fails on android. Investigate why, fix the issues
- # responsible, and reenable this test on android. See bug:
- # https://code.google.com/p/gyp/issues/detail?id=436
- test.skip_test(message='Test fails on android. Fix and reenable.\n')
-
-test.run_gyp('library.gyp',
- '-Dlibrary=static_library',
- '-Dmoveable_function=lib1',
- chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('library.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from program.c
-Hello from lib1.c
-Hello from lib2.c
-Hello from lib1_moveable.c
-"""
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
-test.run_gyp('library.gyp',
- '-Dlibrary=static_library',
- '-Dmoveable_function=lib2',
- chdir='relocate/src')
-
-# Update program.c to force a rebuild.
-test.sleep()
-contents = test.read('relocate/src/program.c')
-contents = contents.replace('Hello', 'Hello again')
-test.write('relocate/src/program.c', contents)
-
-test.build('library.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello again from program.c
-Hello from lib1.c
-Hello from lib2.c
-Hello from lib2_moveable.c
-"""
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
-test.run_gyp('library.gyp',
- '-Dlibrary=static_library',
- '-Dmoveable_function=lib1',
- chdir='relocate/src')
-
-# Update program.c and lib2.c to force a rebuild.
-test.sleep()
-contents = test.read('relocate/src/program.c')
-contents = contents.replace('again', 'again again')
-test.write('relocate/src/program.c', contents)
-
-# TODO(sgk): we have to force a rebuild of lib2 so that it weeds out
-# the "moved" module. This should be done in gyp by adding a dependency
-# on the generated .vcproj file itself.
-test.touch('relocate/src/lib2.c')
-
-test.build('library.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello again again from program.c
-Hello from lib1.c
-Hello from lib2.c
-Hello from lib1_moveable.c
-"""
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-
-test.pass_test()
+++ /dev/null
-#include <stdio.h>
-
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-void lib1_function(void)
-{
- fprintf(stdout, "Hello from lib1.c\n");
- fflush(stdout);
-}
+++ /dev/null
-#include <stdio.h>
-
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-void moveable_function(void)
-{
- fprintf(stdout, "Hello from lib1_moveable.c\n");
- fflush(stdout);
-}
+++ /dev/null
-#include <stdio.h>
-
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-void lib2_function(void)
-{
- fprintf(stdout, "Hello from lib2.c\n");
- fflush(stdout);
-}
+++ /dev/null
-#include <stdio.h>
-
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-void moveable_function(void)
-{
- fprintf(stdout, "Hello from lib2_moveable.c\n");
- fflush(stdout);
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'variables': {
- 'moveable_function%': 0,
- },
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'dependencies': [
- 'lib1',
- 'lib2',
- ],
- 'sources': [
- 'program.c',
- ],
- },
- {
- 'target_name': 'lib1',
- 'type': '<(library)',
- 'sources': [
- 'lib1.c',
- ],
- 'conditions': [
- ['moveable_function=="lib1"', {
- 'sources': [
- 'lib1_moveable.c',
- ],
- }],
- ],
- },
- {
- 'target_name': 'lib2',
- 'type': '<(library)',
- 'sources': [
- 'lib2.c',
- ],
- 'conditions': [
- ['moveable_function=="lib2"', {
- 'sources': [
- 'lib2_moveable.c',
- ],
- }],
- ],
- },
- ],
- 'conditions': [
- ['OS=="linux"', {
- 'target_defaults': {
- # Support 64-bit shared libs (also works fine for 32-bit).
- 'cflags': ['-fPIC'],
- },
- }],
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void lib1_function(void);
-extern void lib2_function(void);
-extern void moveable_function(void);
-
-int main(void)
-{
- fprintf(stdout, "Hello from program.c\n");
- fflush(stdout);
- lib1_function();
- lib2_function();
- moveable_function();
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib1',
- 'type': 'shared_library',
- 'sources': [
- 'lib1.c',
- ],
- },
- {
- 'target_name': 'lib2',
- 'type': 'shared_library',
- 'sources': [
- 'lib2.c',
- ],
- 'dependencies': [
- 'lib1',
- ],
- },
- ],
- 'conditions': [
- ['OS=="linux"', {
- 'target_defaults': {
- # Support 64-bit shared libs (also works fine for 32-bit).
- 'cflags': ['-fPIC'],
- },
- }],
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies library_dirs (in link_settings) are properly found.
-"""
-
-import sys
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['!android'])
-
-lib_dir = test.tempdir('secret_location')
-
-test.run_gyp('test.gyp',
- '-D', 'abs_path_to_secret_library_location={0}'.format(lib_dir),
- chdir='subdir')
-
-# Must build each target independently, since they are not in each others'
-# 'dependencies' (test.ALL does NOT work here for some builders, and in any case
-# would not ensure the correct ordering).
-test.build('test.gyp', 'mylib', chdir='subdir')
-test.build('test.gyp', 'libraries-search-path-test', chdir='subdir')
-
-expect = """Hello world
-"""
-test.run_built_executable(
- 'libraries-search-path-test', chdir='subdir', stdout=expect)
-
-if sys.platform in ('win32', 'cygwin'):
- test.run_gyp('test-win.gyp',
- '-D',
- 'abs_path_to_secret_library_location={0}'.format(lib_dir),
- chdir='subdir')
-
- test.build('test.gyp', 'mylib', chdir='subdir')
- test.build('test-win.gyp',
- 'libraries-search-path-test-lib-suffix',
- chdir='subdir')
-
- test.run_built_executable(
- 'libraries-search-path-test-lib-suffix', chdir='subdir', stdout=expect)
-
-
-test.pass_test()
-test.cleanup()
+++ /dev/null
-Make things live in a subdirectory, to make sure that DEPTH works correctly.
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#include <iostream>
-#include "mylib.h"
-
-int main() {
- std::cout << "Hello " << my_foo(99) << std::endl;
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#include "mylib.h"
-
-std::string my_foo(int x) {
- return std::string("world");
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#ifndef TEST_LIBRARY_DIRS_SUBDIR_MYLIB_H
-#define TEST_LIBRARY_DIRS_SUBDIR_MYLIB_H
-
-#include <string>
-
-std::string my_foo(int);
-
-#endif // TEST_LIBRARY_DIRS_SUBDIR_MYLIB_H
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- # This creates a static library and puts it in a nonstandard location for
- # libraries-search-path-test.
- 'target_name': 'mylib',
- 'type': 'static_library',
- 'standalone_static_library': 1,
- # This directory is NOT in the default library search locations. It also
- # MUST be passed in on the gyp command line:
- #
- # -D abs_path_to_secret_library_location=/some_absolute_path
- #
- # The gyptest itself (../gyptest-library-dirs.py) provides this.
- 'product_dir': '<(abs_path_to_secret_library_location)',
- 'sources': [
- 'mylib.cc',
- ],
- },
- {
- 'target_name': 'libraries-search-path-test-lib-suffix',
- 'type': 'executable',
- 'dependencies': [
- # It is important to NOT list the mylib as a dependency here, because
- # some build systems will track it down based on its product_dir,
- # such that the link succeeds even without the library_dirs below.
- #
- # The point of this weird structuring is to ensure that 'library_dirs'
- # works as advertised, such that just '-lmylib' (or its equivalent)
- # works based on the directories that library_dirs puts in the library
- # link path.
- #
- # If 'mylib' was listed as a proper dependency here, the build system
- # would find it and link with its path on disk.
- #
- # Note that this implies 'mylib' must already be built when building
- # 'libraries-search-path-test' (see ../gyptest-library-dirs.py).
- #
- #'mylib',
- ],
- 'sources': [
- 'hello.cc',
- ],
- # Note that without this, the mylib library would not be found and
- # successfully linked.
- 'library_dirs': [
- '<(abs_path_to_secret_library_location)',
- ],
- 'link_settings': {
- 'libraries': [
- '-lmylib.lib',
- ],
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- # This creates a static library and puts it in a nonstandard location for
- # libraries-search-path-test.
- 'target_name': 'mylib',
- 'type': 'static_library',
- 'standalone_static_library': 1,
- # This directory is NOT in the default library search locations. It also
- # MUST be passed in on the gyp command line:
- #
- # -D abs_path_to_secret_library_location=/some_absolute_path
- #
- # The gyptest itself (../gyptest-library-dirs.py) provides this.
- 'product_dir': '<(abs_path_to_secret_library_location)',
- 'sources': [
- 'mylib.cc',
- ],
- },
- {
- 'target_name': 'libraries-search-path-test',
- 'type': 'executable',
- 'dependencies': [
- # It is important to NOT list the mylib as a dependency here, because
- # some build systems will track it down based on its product_dir,
- # such that the link succeeds even without the library_dirs below.
- #
- # The point of this weird structuring is to ensure that 'library_dirs'
- # works as advertised, such that just '-lmylib' (or its equivalent)
- # works based on the directories that library_dirs puts in the library
- # link path.
- #
- # If 'mylib' was listed as a proper dependency here, the build system
- # would find it and link with its path on disk.
- #
- # Note that this implies 'mylib' must already be built when building
- # 'libraries-search-path-test' (see ../gyptest-library-dirs.py).
- #
- #'mylib',
- ],
- 'sources': [
- 'hello.cc',
- ],
- # Note that without this, the mylib library would not be found and
- # successfully linked.
- 'library_dirs': [
- '<(abs_path_to_secret_library_location)',
- ],
- 'link_settings': {
- 'conditions': [
- ['OS=="linux"', {
- 'libraries': [
- '-lmylib',
- ],
- }, { # else
- 'libraries': [
- '<(STATIC_LIB_PREFIX)mylib<(STATIC_LIB_SUFFIX)',
- ],
- }],
- ], # conditions
- },
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verify that a target marked as 'link_dependency==1' isn't being pulled into
-the 'none' target's dependency (which would otherwise lead to a dependency
-cycle in ninja).
-"""
-
-import TestGyp
-
-# See https://codereview.chromium.org/177043010/#msg15 for why this doesn't
-# work with cmake.
-test = TestGyp.TestGyp(formats=['!cmake'])
-
-test.run_gyp('test.gyp')
-test.build('test.gyp', 'main')
-
-# If running gyp worked, all is well.
-test.pass_test()
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-int main() {
- void *p = malloc(1);
- printf("p: %p\n", p);
- return 0;
-}
+++ /dev/null
-#include <stdlib.h>
-
-// The windows ninja generator is expecting an import library to get generated,
-// but it doesn't if there are no exports.
-#ifdef _MSC_VER
-__declspec(dllexport) void foo() {}
-#endif
-
-void *malloc(size_t size) {
- (void)size;
- return (void*)0xdeadbeef;
-}
+++ /dev/null
-{
- 'variables': {
- 'custom_malloc%' : 1,
- },
- 'target_defaults': {
- 'conditions': [
- ['custom_malloc==1', {
- 'dependencies': [
- 'malloc',
- ],
- }],
- ],
- },
- 'targets': [
- {
- 'target_name': 'main',
- 'type': 'none',
- 'dependencies': [ 'main_initial',],
- },
- {
- 'target_name': 'main_initial',
- 'type': 'executable',
- 'product_name': 'main',
- 'sources': [ 'main.c' ],
- },
- {
- 'target_name': 'malloc',
- 'type': 'shared_library',
- 'variables': {
- 'prune_self_dependency': 1,
- # Targets with type 'none' won't depend on this target.
- 'link_dependency': 1,
- },
- 'sources': [ 'mymalloc.c' ],
- },
- ],
-}
+++ /dev/null
-void extra();
-
-int main(void) {
- extra();
- return 0;
-}
+++ /dev/null
-#include <stdio.h>
-
-void extra() {
- printf("PASS\n");
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Put an object file on the sources list.
-Expect the result to link ok.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform != 'darwin':
- # Currently only works under the linux make build.
- test = TestGyp.TestGyp(formats=['make'])
-
- test.run_gyp('link-objects.gyp')
-
- test.build('link-objects.gyp', test.ALL)
-
- test.run_built_executable('link-objects', stdout="PASS\n")
-
- test.up_to_date('link-objects.gyp', test.ALL)
-
- test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'link-objects',
- 'type': 'executable',
- 'actions': [
- {
- 'action_name': 'build extra object',
- 'inputs': ['extra.c'],
- 'outputs': ['extra.o'],
- 'action': ['gcc', '-o', 'extra.o', '-c', 'extra.c'],
- 'process_outputs_as_sources': 1,
- },
- ],
- 'sources': [
- 'base.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that the implicit rpath is added only when needed.
-"""
-
-import TestGyp
-
-import re
-import subprocess
-import sys
-
-if sys.platform.startswith('linux'):
- test = TestGyp.TestGyp(formats=['ninja', 'make'])
-
- CHDIR = 'implicit-rpath'
- test.run_gyp('test.gyp', chdir=CHDIR)
- test.build('test.gyp', test.ALL, chdir=CHDIR)
-
- def GetRpaths(p):
- p = test.built_file_path(p, chdir=CHDIR)
- r = re.compile(r'Library rpath: \[([^\]]+)\]')
- proc = subprocess.Popen(['readelf', '-d', p], stdout=subprocess.PIPE)
- o = proc.communicate()[0]
- assert not proc.returncode
- return r.findall(o)
-
- if test.format == 'ninja':
- expect = '$ORIGIN/lib/'
- elif test.format == 'make':
- expect = '$ORIGIN/lib.target/'
- else:
- test.fail_test()
-
- if GetRpaths('shared_executable') != [expect]:
- test.fail_test()
-
- if GetRpaths('shared_executable_no_so_suffix') != [expect]:
- test.fail_test()
-
- if GetRpaths('static_executable'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-void f() {}
+++ /dev/null
-int main() {}
+++ /dev/null
-# Copyright (c) 2013 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.
-{
- 'targets': [
- {
- 'target_name': 'shared',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- },
- {
- 'target_name': 'shared_no_so_suffix',
- 'product_extension': 'so.0.1',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- },
- {
- 'target_name': 'static',
- 'type': 'static_library',
- 'sources': [ 'file.c' ],
- },
- {
- 'target_name': 'shared_executable',
- 'type': 'executable',
- 'sources': [ 'main.c' ],
- 'dependencies': [
- 'shared',
- ]
- },
- {
- 'target_name': 'shared_executable_no_so_suffix',
- 'type': 'executable',
- 'sources': [ 'main.c' ],
- 'dependencies': [
- 'shared_no_so_suffix',
- ]
- },
- {
- 'target_name': 'static_executable',
- 'type': 'executable',
- 'sources': [ 'main.c' ],
- 'dependencies': [
- 'static',
- ]
- },
- ],
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'action',
- 'type': 'none',
- 'actions': [
- {
- 'inputs': [ ],
- 'outputs': [
- '<(PRODUCT_DIR)/result',
- '<(SHARED_INTERMEDIATE_DIR)/tempfile',
- ],
- 'action_name': 'Test action',
- 'action': ['./action.sh', '<(SHARED_INTERMEDIATE_DIR)/tempfile' ],
- },
- {
- 'inputs': [
- '<(SHARED_INTERMEDIATE_DIR)/tempfile',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/other_result',
- ],
- 'action_name': 'Other test action',
- 'action': ['cp', '<(SHARED_INTERMEDIATE_DIR)/tempfile',
- '<(PRODUCT_DIR)/other_result' ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-set -e
-
-echo 'Test output' > "${BUILT_PRODUCTS_DIR}/result"
-echo 'Other output' > "$1"
+++ /dev/null
-/* Localized versions of Info.plist keys */
-
-NSHumanReadableCopyright = "Copyright ©2011 Google Inc."
+++ /dev/null
-/* Localized versions of Info.plist keys */
-
-NSHumanReadableCopyright = "Copyright ©2011 Google Inc.";
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1060</int>
- <string key="IBDocument.SystemVersion">10A324</string>
- <string key="IBDocument.InterfaceBuilderVersion">719</string>
- <string key="IBDocument.AppKitVersion">1015</string>
- <string key="IBDocument.HIToolboxVersion">418.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">719</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="371"/>
- <integer value="29"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomObject" id="1021">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSCustomObject" id="1014">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1050">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSMenu" id="649796088">
- <string key="NSTitle">AMainMenu</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="694149608">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">TestApp</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="35465992">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="502551668">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="110575045">
- <string key="NSTitle">TestApp</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="238522557">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">About TestApp</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="304266470">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="609285721">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Preferences…</string>
- <string key="NSKeyEquiv">,</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="481834944">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1046388886">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Services</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="752062318">
- <string key="NSTitle">Services</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <string key="NSName">_NSServicesMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="646227648">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="755159360">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide TestApp</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="342932134">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide Others</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="908899353">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Show All</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1056857174">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="632727374">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Quit TestApp</string>
- <string key="NSKeyEquiv">q</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSAppleMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="379814623">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">File</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="720053764">
- <string key="NSTitle">File</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="705341025">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">New</string>
- <string key="NSKeyEquiv">n</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="722745758">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open…</string>
- <string key="NSKeyEquiv">o</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1025936716">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open Recent</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="1065607017">
- <string key="NSTitle">Open Recent</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="759406840">
- <reference key="NSMenu" ref="1065607017"/>
- <string key="NSTitle">Clear Menu</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSRecentDocumentsMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="425164168">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="776162233">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Close</string>
- <string key="NSKeyEquiv">w</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1023925487">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Save</string>
- <string key="NSKeyEquiv">s</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="117038363">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Save As…</string>
- <string key="NSKeyEquiv">S</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="579971712">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Revert to Saved</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1010469920">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="294629803">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Page Setup...</string>
- <string key="NSKeyEquiv">P</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSToolTip"/>
- </object>
- <object class="NSMenuItem" id="49223823">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Print…</string>
- <string key="NSKeyEquiv">p</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="952259628">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Edit</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="789758025">
- <string key="NSTitle">Edit</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1058277027">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Undo</string>
- <string key="NSKeyEquiv">z</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="790794224">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Redo</string>
- <string key="NSKeyEquiv">Z</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1040322652">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="296257095">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Cut</string>
- <string key="NSKeyEquiv">x</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="860595796">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Copy</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="29853731">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Paste</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="82994268">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Paste and Match Style</string>
- <string key="NSKeyEquiv">V</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="437104165">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Delete</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="583158037">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Select All</string>
- <string key="NSKeyEquiv">a</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="212016141">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="892235320">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Find</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="963351320">
- <string key="NSTitle">Find</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="447796847">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find…</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="326711663">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Next</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="270902937">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Previous</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="159080638">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Use Selection for Find</string>
- <string key="NSKeyEquiv">e</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">7</int>
- </object>
- <object class="NSMenuItem" id="88285865">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Jump to Selection</string>
- <string key="NSKeyEquiv">j</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="972420730">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Spelling and Grammar</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="769623530">
- <string key="NSTitle">Spelling and Grammar</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="679648819">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Show Spelling and Grammar</string>
- <string key="NSKeyEquiv">:</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="96193923">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Document Now</string>
- <string key="NSKeyEquiv">;</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="859480356">
- <reference key="NSMenu" ref="769623530"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="948374510">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Spelling While Typing</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="967646866">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Grammar With Spelling</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="795346622">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Correct Spelling Automatically</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="507821607">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Substitutions</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="698887838">
- <string key="NSTitle">Substitutions</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="65139061">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Show Substitutions</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="19036812">
- <reference key="NSMenu" ref="698887838"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="605118523">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Copy/Paste</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="197661976">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Quotes</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="672708820">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Dashes</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="708854459">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Links</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="537092702">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Text Replacement</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="288088188">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Transformations</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="579392910">
- <string key="NSTitle">Transformations</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1060694897">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Make Upper Case</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="879586729">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Make Lower Case</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="56570060">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Capitalize</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="676164635">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Speech</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="785027613">
- <string key="NSTitle">Speech</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="731782645">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Start Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="680220178">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Stop Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="302598603">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Format</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="941447902">
- <string key="NSTitle">Format</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="792887677">
- <reference key="NSMenu" ref="941447902"/>
- <string key="NSTitle">Font</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="786677654">
- <string key="NSTitle">Font</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="159677712">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Show Fonts</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="305399458">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Bold</string>
- <string key="NSKeyEquiv">b</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="814362025">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Italic</string>
- <string key="NSKeyEquiv">i</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="330926929">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Underline</string>
- <string key="NSKeyEquiv">u</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="533507878">
- <reference key="NSMenu" ref="786677654"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="158063935">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Bigger</string>
- <string key="NSKeyEquiv">+</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="885547335">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Smaller</string>
- <string key="NSKeyEquiv">-</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">4</int>
- </object>
- <object class="NSMenuItem" id="901062459">
- <reference key="NSMenu" ref="786677654"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="767671776">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Kern</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="175441468">
- <string key="NSTitle">Kern</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="252969304">
- <reference key="NSMenu" ref="175441468"/>
- <string key="NSTitle">Use Default</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="766922938">
- <reference key="NSMenu" ref="175441468"/>
- <string key="NSTitle">Use None</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="677519740">
- <reference key="NSMenu" ref="175441468"/>
- <string key="NSTitle">Tighten</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="238351151">
- <reference key="NSMenu" ref="175441468"/>
- <string key="NSTitle">Loosen</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="691570813">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Ligature</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="1058217995">
- <string key="NSTitle">Ligature</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="706297211">
- <reference key="NSMenu" ref="1058217995"/>
- <string key="NSTitle">Use Default</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="568384683">
- <reference key="NSMenu" ref="1058217995"/>
- <string key="NSTitle">Use None</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="663508465">
- <reference key="NSMenu" ref="1058217995"/>
- <string key="NSTitle">Use All</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="769124883">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Baseline</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="18263474">
- <string key="NSTitle">Baseline</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="257962622">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Use Default</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="644725453">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Superscript</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1037576581">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Subscript</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="941806246">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Raise</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1045724900">
- <reference key="NSMenu" ref="18263474"/>
- <string key="NSTitle">Lower</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="739652853">
- <reference key="NSMenu" ref="786677654"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1012600125">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Show Colors</string>
- <string key="NSKeyEquiv">C</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="214559597">
- <reference key="NSMenu" ref="786677654"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="596732606">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Copy Style</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="393423671">
- <reference key="NSMenu" ref="786677654"/>
- <string key="NSTitle">Paste Style</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSFontMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="215659978">
- <reference key="NSMenu" ref="941447902"/>
- <string key="NSTitle">Text</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="446991534">
- <string key="NSTitle">Text</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="875092757">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Align Left</string>
- <string key="NSKeyEquiv">{</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="630155264">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Center</string>
- <string key="NSKeyEquiv">|</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="945678886">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Justify</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="512868991">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Align Right</string>
- <string key="NSKeyEquiv">}</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="163117631">
- <reference key="NSMenu" ref="446991534"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="31516759">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Writing Direction</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="956096989">
- <string key="NSTitle">Writing Direction</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="257099033">
- <reference key="NSMenu" ref="956096989"/>
- <bool key="NSIsDisabled">YES</bool>
- <string key="NSTitle">Paragraph</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="551969625">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="249532473">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="607364498">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="508151438">
- <reference key="NSMenu" ref="956096989"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="981751889">
- <reference key="NSMenu" ref="956096989"/>
- <bool key="NSIsDisabled">YES</bool>
- <string key="NSTitle">Selection</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="380031999">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="825984362">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="560145579">
- <reference key="NSMenu" ref="956096989"/>
- <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="908105787">
- <reference key="NSMenu" ref="446991534"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="644046920">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Show Ruler</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="231811626">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Copy Ruler</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1310720</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="883618387">
- <reference key="NSMenu" ref="446991534"/>
- <string key="NSTitle">Paste Ruler</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1310720</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="586577488">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">View</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="466310130">
- <string key="NSTitle">View</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="102151532">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Show Toolbar</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="237841660">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Customize Toolbar…</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="713487014">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Window</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="835318025">
- <string key="NSTitle">Window</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1011231497">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Minimize</string>
- <string key="NSKeyEquiv">m</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="575023229">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Zoom</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="299356726">
- <reference key="NSMenu" ref="835318025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="625202149">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Bring All to Front</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSWindowsMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="448692316">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Help</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="992780483">
- <string key="NSTitle">Help</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="105068016">
- <reference key="NSMenu" ref="992780483"/>
- <string key="NSTitle">TestApp Help</string>
- <string key="NSKeyEquiv">?</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSHelpMenu</string>
- </object>
- </object>
- </object>
- <string key="NSName">_NSMainMenu</string>
- </object>
- <object class="NSWindowTemplate" id="972006081">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{335, 390}, {480, 360}}</string>
- <int key="NSWTFlags">1954021376</int>
- <string key="NSWindowTitle">TestApp</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="439893737">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrameSize">{480, 360}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSCustomObject" id="976324537">
- <string key="NSClassName">TestAppAppDelegate</string>
- </object>
- <object class="NSCustomObject" id="755631768">
- <string key="NSClassName">NSFontManager</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performMiniaturize:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1011231497"/>
- </object>
- <int key="connectionID">37</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">arrangeInFront:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="625202149"/>
- </object>
- <int key="connectionID">39</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">print:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="49223823"/>
- </object>
- <int key="connectionID">86</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runPageLayout:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="294629803"/>
- </object>
- <int key="connectionID">87</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">clearRecentDocuments:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="759406840"/>
- </object>
- <int key="connectionID">127</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontStandardAboutPanel:</string>
- <reference key="source" ref="1021"/>
- <reference key="destination" ref="238522557"/>
- </object>
- <int key="connectionID">142</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performClose:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="776162233"/>
- </object>
- <int key="connectionID">193</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleContinuousSpellChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="948374510"/>
- </object>
- <int key="connectionID">222</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">undo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1058277027"/>
- </object>
- <int key="connectionID">223</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copy:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="860595796"/>
- </object>
- <int key="connectionID">224</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">checkSpelling:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="96193923"/>
- </object>
- <int key="connectionID">225</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">paste:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="29853731"/>
- </object>
- <int key="connectionID">226</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">stopSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="680220178"/>
- </object>
- <int key="connectionID">227</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">cut:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="296257095"/>
- </object>
- <int key="connectionID">228</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showGuessPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="679648819"/>
- </object>
- <int key="connectionID">230</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">redo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="790794224"/>
- </object>
- <int key="connectionID">231</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">selectAll:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="583158037"/>
- </object>
- <int key="connectionID">232</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">startSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="731782645"/>
- </object>
- <int key="connectionID">233</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">delete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="437104165"/>
- </object>
- <int key="connectionID">235</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performZoom:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="575023229"/>
- </object>
- <int key="connectionID">240</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="447796847"/>
- </object>
- <int key="connectionID">241</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">centerSelectionInVisibleArea:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="88285865"/>
- </object>
- <int key="connectionID">245</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleGrammarChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="967646866"/>
- </object>
- <int key="connectionID">347</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleSmartInsertDelete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="605118523"/>
- </object>
- <int key="connectionID">355</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticQuoteSubstitution:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="197661976"/>
- </object>
- <int key="connectionID">356</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticLinkDetection:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="708854459"/>
- </object>
- <int key="connectionID">357</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1023925487"/>
- </object>
- <int key="connectionID">362</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocumentAs:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="117038363"/>
- </object>
- <int key="connectionID">363</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">revertDocumentToSaved:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="579971712"/>
- </object>
- <int key="connectionID">364</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runToolbarCustomizationPalette:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="237841660"/>
- </object>
- <int key="connectionID">365</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleToolbarShown:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="102151532"/>
- </object>
- <int key="connectionID">366</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hide:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="755159360"/>
- </object>
- <int key="connectionID">367</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hideOtherApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="342932134"/>
- </object>
- <int key="connectionID">368</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">unhideAllApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="908899353"/>
- </object>
- <int key="connectionID">370</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">newDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="705341025"/>
- </object>
- <int key="connectionID">373</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">openDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="722745758"/>
- </object>
- <int key="connectionID">374</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">addFontTrait:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="305399458"/>
- </object>
- <int key="connectionID">421</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">addFontTrait:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="814362025"/>
- </object>
- <int key="connectionID">422</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">modifyFont:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="885547335"/>
- </object>
- <int key="connectionID">423</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontFontPanel:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="159677712"/>
- </object>
- <int key="connectionID">424</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">modifyFont:</string>
- <reference key="source" ref="755631768"/>
- <reference key="destination" ref="158063935"/>
- </object>
- <int key="connectionID">425</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">raiseBaseline:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="941806246"/>
- </object>
- <int key="connectionID">426</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">lowerBaseline:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1045724900"/>
- </object>
- <int key="connectionID">427</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copyFont:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="596732606"/>
- </object>
- <int key="connectionID">428</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">subscript:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1037576581"/>
- </object>
- <int key="connectionID">429</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">superscript:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="644725453"/>
- </object>
- <int key="connectionID">430</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">tightenKerning:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="677519740"/>
- </object>
- <int key="connectionID">431</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">underline:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="330926929"/>
- </object>
- <int key="connectionID">432</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontColorPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1012600125"/>
- </object>
- <int key="connectionID">433</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">useAllLigatures:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="663508465"/>
- </object>
- <int key="connectionID">434</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">loosenKerning:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="238351151"/>
- </object>
- <int key="connectionID">435</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">pasteFont:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="393423671"/>
- </object>
- <int key="connectionID">436</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">unscript:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="257962622"/>
- </object>
- <int key="connectionID">437</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">useStandardKerning:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="252969304"/>
- </object>
- <int key="connectionID">438</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">useStandardLigatures:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="706297211"/>
- </object>
- <int key="connectionID">439</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">turnOffLigatures:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="568384683"/>
- </object>
- <int key="connectionID">440</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">turnOffKerning:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="766922938"/>
- </object>
- <int key="connectionID">441</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">terminate:</string>
- <reference key="source" ref="1050"/>
- <reference key="destination" ref="632727374"/>
- </object>
- <int key="connectionID">449</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticSpellingCorrection:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="795346622"/>
- </object>
- <int key="connectionID">456</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontSubstitutionsPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="65139061"/>
- </object>
- <int key="connectionID">458</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticDashSubstitution:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="672708820"/>
- </object>
- <int key="connectionID">461</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticTextReplacement:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="537092702"/>
- </object>
- <int key="connectionID">463</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">uppercaseWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1060694897"/>
- </object>
- <int key="connectionID">464</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">capitalizeWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="56570060"/>
- </object>
- <int key="connectionID">467</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">lowercaseWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="879586729"/>
- </object>
- <int key="connectionID">468</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">pasteAsPlainText:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="82994268"/>
- </object>
- <int key="connectionID">486</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="326711663"/>
- </object>
- <int key="connectionID">487</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="270902937"/>
- </object>
- <int key="connectionID">488</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="159080638"/>
- </object>
- <int key="connectionID">489</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showHelp:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="105068016"/>
- </object>
- <int key="connectionID">493</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="1021"/>
- <reference key="destination" ref="976324537"/>
- </object>
- <int key="connectionID">495</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">alignCenter:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="630155264"/>
- </object>
- <int key="connectionID">518</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">pasteRuler:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="883618387"/>
- </object>
- <int key="connectionID">519</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleRuler:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="644046920"/>
- </object>
- <int key="connectionID">520</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">alignRight:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="512868991"/>
- </object>
- <int key="connectionID">521</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copyRuler:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="231811626"/>
- </object>
- <int key="connectionID">522</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">alignJustified:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="945678886"/>
- </object>
- <int key="connectionID">523</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">alignLeft:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="875092757"/>
- </object>
- <int key="connectionID">524</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeBaseWritingDirectionNatural:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="551969625"/>
- </object>
- <int key="connectionID">525</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeBaseWritingDirectionLeftToRight:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="249532473"/>
- </object>
- <int key="connectionID">526</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeBaseWritingDirectionRightToLeft:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="607364498"/>
- </object>
- <int key="connectionID">527</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeTextWritingDirectionNatural:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="380031999"/>
- </object>
- <int key="connectionID">528</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeTextWritingDirectionLeftToRight:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="825984362"/>
- </object>
- <int key="connectionID">529</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">makeTextWritingDirectionRightToLeft:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="560145579"/>
- </object>
- <int key="connectionID">530</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="976324537"/>
- <reference key="destination" ref="972006081"/>
- </object>
- <int key="connectionID">532</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1048"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1021"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1014"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1050"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">29</int>
- <reference key="object" ref="649796088"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="713487014"/>
- <reference ref="694149608"/>
- <reference ref="952259628"/>
- <reference ref="379814623"/>
- <reference ref="586577488"/>
- <reference ref="302598603"/>
- <reference ref="448692316"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">19</int>
- <reference key="object" ref="713487014"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="835318025"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">56</int>
- <reference key="object" ref="694149608"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="110575045"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">217</int>
- <reference key="object" ref="952259628"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="789758025"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">83</int>
- <reference key="object" ref="379814623"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="720053764"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">81</int>
- <reference key="object" ref="720053764"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1023925487"/>
- <reference ref="117038363"/>
- <reference ref="49223823"/>
- <reference ref="722745758"/>
- <reference ref="705341025"/>
- <reference ref="1025936716"/>
- <reference ref="294629803"/>
- <reference ref="776162233"/>
- <reference ref="425164168"/>
- <reference ref="579971712"/>
- <reference ref="1010469920"/>
- </object>
- <reference key="parent" ref="379814623"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">75</int>
- <reference key="object" ref="1023925487"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">80</int>
- <reference key="object" ref="117038363"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">78</int>
- <reference key="object" ref="49223823"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="722745758"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">82</int>
- <reference key="object" ref="705341025"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="1025936716"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1065607017"/>
- </object>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">77</int>
- <reference key="object" ref="294629803"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="776162233"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">79</int>
- <reference key="object" ref="425164168"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">112</int>
- <reference key="object" ref="579971712"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="1010469920"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">125</int>
- <reference key="object" ref="1065607017"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="759406840"/>
- </object>
- <reference key="parent" ref="1025936716"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">126</int>
- <reference key="object" ref="759406840"/>
- <reference key="parent" ref="1065607017"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">205</int>
- <reference key="object" ref="789758025"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="437104165"/>
- <reference ref="583158037"/>
- <reference ref="1058277027"/>
- <reference ref="212016141"/>
- <reference ref="296257095"/>
- <reference ref="29853731"/>
- <reference ref="860595796"/>
- <reference ref="1040322652"/>
- <reference ref="790794224"/>
- <reference ref="892235320"/>
- <reference ref="972420730"/>
- <reference ref="676164635"/>
- <reference ref="507821607"/>
- <reference ref="288088188"/>
- <reference ref="82994268"/>
- </object>
- <reference key="parent" ref="952259628"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">202</int>
- <reference key="object" ref="437104165"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">198</int>
- <reference key="object" ref="583158037"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">207</int>
- <reference key="object" ref="1058277027"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">214</int>
- <reference key="object" ref="212016141"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">199</int>
- <reference key="object" ref="296257095"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">203</int>
- <reference key="object" ref="29853731"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">197</int>
- <reference key="object" ref="860595796"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">206</int>
- <reference key="object" ref="1040322652"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">215</int>
- <reference key="object" ref="790794224"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">218</int>
- <reference key="object" ref="892235320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="963351320"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">216</int>
- <reference key="object" ref="972420730"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="769623530"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">200</int>
- <reference key="object" ref="769623530"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="948374510"/>
- <reference ref="96193923"/>
- <reference ref="679648819"/>
- <reference ref="967646866"/>
- <reference ref="859480356"/>
- <reference ref="795346622"/>
- </object>
- <reference key="parent" ref="972420730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">219</int>
- <reference key="object" ref="948374510"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">201</int>
- <reference key="object" ref="96193923"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">204</int>
- <reference key="object" ref="679648819"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">220</int>
- <reference key="object" ref="963351320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="270902937"/>
- <reference ref="88285865"/>
- <reference ref="159080638"/>
- <reference ref="326711663"/>
- <reference ref="447796847"/>
- </object>
- <reference key="parent" ref="892235320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">213</int>
- <reference key="object" ref="270902937"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">210</int>
- <reference key="object" ref="88285865"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">221</int>
- <reference key="object" ref="159080638"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">208</int>
- <reference key="object" ref="326711663"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">209</int>
- <reference key="object" ref="447796847"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">57</int>
- <reference key="object" ref="110575045"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="238522557"/>
- <reference ref="755159360"/>
- <reference ref="908899353"/>
- <reference ref="632727374"/>
- <reference ref="646227648"/>
- <reference ref="609285721"/>
- <reference ref="481834944"/>
- <reference ref="304266470"/>
- <reference ref="1046388886"/>
- <reference ref="1056857174"/>
- <reference ref="342932134"/>
- </object>
- <reference key="parent" ref="694149608"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="238522557"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">134</int>
- <reference key="object" ref="755159360"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">150</int>
- <reference key="object" ref="908899353"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">136</int>
- <reference key="object" ref="632727374"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">144</int>
- <reference key="object" ref="646227648"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="609285721"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">143</int>
- <reference key="object" ref="481834944"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">236</int>
- <reference key="object" ref="304266470"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">131</int>
- <reference key="object" ref="1046388886"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="752062318"/>
- </object>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">149</int>
- <reference key="object" ref="1056857174"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">145</int>
- <reference key="object" ref="342932134"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="752062318"/>
- <reference key="parent" ref="1046388886"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">24</int>
- <reference key="object" ref="835318025"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="299356726"/>
- <reference ref="625202149"/>
- <reference ref="575023229"/>
- <reference ref="1011231497"/>
- </object>
- <reference key="parent" ref="713487014"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">92</int>
- <reference key="object" ref="299356726"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="625202149"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">239</int>
- <reference key="object" ref="575023229"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">23</int>
- <reference key="object" ref="1011231497"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">295</int>
- <reference key="object" ref="586577488"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="466310130"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">296</int>
- <reference key="object" ref="466310130"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="102151532"/>
- <reference ref="237841660"/>
- </object>
- <reference key="parent" ref="586577488"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">297</int>
- <reference key="object" ref="102151532"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">298</int>
- <reference key="object" ref="237841660"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">211</int>
- <reference key="object" ref="676164635"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="785027613"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">212</int>
- <reference key="object" ref="785027613"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="680220178"/>
- <reference ref="731782645"/>
- </object>
- <reference key="parent" ref="676164635"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">195</int>
- <reference key="object" ref="680220178"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">196</int>
- <reference key="object" ref="731782645"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">346</int>
- <reference key="object" ref="967646866"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">348</int>
- <reference key="object" ref="507821607"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="698887838"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">349</int>
- <reference key="object" ref="698887838"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="605118523"/>
- <reference ref="197661976"/>
- <reference ref="708854459"/>
- <reference ref="65139061"/>
- <reference ref="19036812"/>
- <reference ref="672708820"/>
- <reference ref="537092702"/>
- </object>
- <reference key="parent" ref="507821607"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">350</int>
- <reference key="object" ref="605118523"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">351</int>
- <reference key="object" ref="197661976"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">354</int>
- <reference key="object" ref="708854459"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">371</int>
- <reference key="object" ref="972006081"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="439893737"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">372</int>
- <reference key="object" ref="439893737"/>
- <reference key="parent" ref="972006081"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">375</int>
- <reference key="object" ref="302598603"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="941447902"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">376</int>
- <reference key="object" ref="941447902"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="792887677"/>
- <reference ref="215659978"/>
- </object>
- <reference key="parent" ref="302598603"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">377</int>
- <reference key="object" ref="792887677"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="786677654"/>
- </object>
- <reference key="parent" ref="941447902"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">388</int>
- <reference key="object" ref="786677654"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="159677712"/>
- <reference ref="305399458"/>
- <reference ref="814362025"/>
- <reference ref="330926929"/>
- <reference ref="533507878"/>
- <reference ref="158063935"/>
- <reference ref="885547335"/>
- <reference ref="901062459"/>
- <reference ref="767671776"/>
- <reference ref="691570813"/>
- <reference ref="769124883"/>
- <reference ref="739652853"/>
- <reference ref="1012600125"/>
- <reference ref="214559597"/>
- <reference ref="596732606"/>
- <reference ref="393423671"/>
- </object>
- <reference key="parent" ref="792887677"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">389</int>
- <reference key="object" ref="159677712"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">390</int>
- <reference key="object" ref="305399458"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">391</int>
- <reference key="object" ref="814362025"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">392</int>
- <reference key="object" ref="330926929"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">393</int>
- <reference key="object" ref="533507878"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">394</int>
- <reference key="object" ref="158063935"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">395</int>
- <reference key="object" ref="885547335"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">396</int>
- <reference key="object" ref="901062459"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">397</int>
- <reference key="object" ref="767671776"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="175441468"/>
- </object>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">398</int>
- <reference key="object" ref="691570813"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1058217995"/>
- </object>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">399</int>
- <reference key="object" ref="769124883"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="18263474"/>
- </object>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">400</int>
- <reference key="object" ref="739652853"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">401</int>
- <reference key="object" ref="1012600125"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">402</int>
- <reference key="object" ref="214559597"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">403</int>
- <reference key="object" ref="596732606"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">404</int>
- <reference key="object" ref="393423671"/>
- <reference key="parent" ref="786677654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">405</int>
- <reference key="object" ref="18263474"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="257962622"/>
- <reference ref="644725453"/>
- <reference ref="1037576581"/>
- <reference ref="941806246"/>
- <reference ref="1045724900"/>
- </object>
- <reference key="parent" ref="769124883"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">406</int>
- <reference key="object" ref="257962622"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">407</int>
- <reference key="object" ref="644725453"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">408</int>
- <reference key="object" ref="1037576581"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">409</int>
- <reference key="object" ref="941806246"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">410</int>
- <reference key="object" ref="1045724900"/>
- <reference key="parent" ref="18263474"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">411</int>
- <reference key="object" ref="1058217995"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="706297211"/>
- <reference ref="568384683"/>
- <reference ref="663508465"/>
- </object>
- <reference key="parent" ref="691570813"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">412</int>
- <reference key="object" ref="706297211"/>
- <reference key="parent" ref="1058217995"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">413</int>
- <reference key="object" ref="568384683"/>
- <reference key="parent" ref="1058217995"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">414</int>
- <reference key="object" ref="663508465"/>
- <reference key="parent" ref="1058217995"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">415</int>
- <reference key="object" ref="175441468"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="252969304"/>
- <reference ref="766922938"/>
- <reference ref="677519740"/>
- <reference ref="238351151"/>
- </object>
- <reference key="parent" ref="767671776"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">416</int>
- <reference key="object" ref="252969304"/>
- <reference key="parent" ref="175441468"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">417</int>
- <reference key="object" ref="766922938"/>
- <reference key="parent" ref="175441468"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">418</int>
- <reference key="object" ref="677519740"/>
- <reference key="parent" ref="175441468"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">419</int>
- <reference key="object" ref="238351151"/>
- <reference key="parent" ref="175441468"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">420</int>
- <reference key="object" ref="755631768"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">450</int>
- <reference key="object" ref="288088188"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="579392910"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">451</int>
- <reference key="object" ref="579392910"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1060694897"/>
- <reference ref="879586729"/>
- <reference ref="56570060"/>
- </object>
- <reference key="parent" ref="288088188"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">452</int>
- <reference key="object" ref="1060694897"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">453</int>
- <reference key="object" ref="859480356"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">454</int>
- <reference key="object" ref="795346622"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">457</int>
- <reference key="object" ref="65139061"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">459</int>
- <reference key="object" ref="19036812"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">460</int>
- <reference key="object" ref="672708820"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">462</int>
- <reference key="object" ref="537092702"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">465</int>
- <reference key="object" ref="879586729"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">466</int>
- <reference key="object" ref="56570060"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">485</int>
- <reference key="object" ref="82994268"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">490</int>
- <reference key="object" ref="448692316"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="992780483"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">491</int>
- <reference key="object" ref="992780483"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="105068016"/>
- </object>
- <reference key="parent" ref="448692316"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">492</int>
- <reference key="object" ref="105068016"/>
- <reference key="parent" ref="992780483"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">494</int>
- <reference key="object" ref="976324537"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">496</int>
- <reference key="object" ref="215659978"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="446991534"/>
- </object>
- <reference key="parent" ref="941447902"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">497</int>
- <reference key="object" ref="446991534"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="875092757"/>
- <reference ref="630155264"/>
- <reference ref="945678886"/>
- <reference ref="512868991"/>
- <reference ref="163117631"/>
- <reference ref="31516759"/>
- <reference ref="908105787"/>
- <reference ref="644046920"/>
- <reference ref="231811626"/>
- <reference ref="883618387"/>
- </object>
- <reference key="parent" ref="215659978"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">498</int>
- <reference key="object" ref="875092757"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">499</int>
- <reference key="object" ref="630155264"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">500</int>
- <reference key="object" ref="945678886"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">501</int>
- <reference key="object" ref="512868991"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">502</int>
- <reference key="object" ref="163117631"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">503</int>
- <reference key="object" ref="31516759"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="956096989"/>
- </object>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">504</int>
- <reference key="object" ref="908105787"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">505</int>
- <reference key="object" ref="644046920"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">506</int>
- <reference key="object" ref="231811626"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">507</int>
- <reference key="object" ref="883618387"/>
- <reference key="parent" ref="446991534"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">508</int>
- <reference key="object" ref="956096989"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="257099033"/>
- <reference ref="551969625"/>
- <reference ref="249532473"/>
- <reference ref="607364498"/>
- <reference ref="508151438"/>
- <reference ref="981751889"/>
- <reference ref="380031999"/>
- <reference ref="825984362"/>
- <reference ref="560145579"/>
- </object>
- <reference key="parent" ref="31516759"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">509</int>
- <reference key="object" ref="257099033"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">510</int>
- <reference key="object" ref="551969625"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">511</int>
- <reference key="object" ref="249532473"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">512</int>
- <reference key="object" ref="607364498"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">513</int>
- <reference key="object" ref="508151438"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">514</int>
- <reference key="object" ref="981751889"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">515</int>
- <reference key="object" ref="380031999"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">516</int>
- <reference key="object" ref="825984362"/>
- <reference key="parent" ref="956096989"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">517</int>
- <reference key="object" ref="560145579"/>
- <reference key="parent" ref="956096989"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-3.IBPluginDependency</string>
- <string>112.IBPluginDependency</string>
- <string>112.ImportedFromIB2</string>
- <string>124.IBPluginDependency</string>
- <string>124.ImportedFromIB2</string>
- <string>125.IBPluginDependency</string>
- <string>125.ImportedFromIB2</string>
- <string>125.editorWindowContentRectSynchronizationRect</string>
- <string>126.IBPluginDependency</string>
- <string>126.ImportedFromIB2</string>
- <string>129.IBPluginDependency</string>
- <string>129.ImportedFromIB2</string>
- <string>130.IBPluginDependency</string>
- <string>130.ImportedFromIB2</string>
- <string>130.editorWindowContentRectSynchronizationRect</string>
- <string>131.IBPluginDependency</string>
- <string>131.ImportedFromIB2</string>
- <string>134.IBPluginDependency</string>
- <string>134.ImportedFromIB2</string>
- <string>136.IBPluginDependency</string>
- <string>136.ImportedFromIB2</string>
- <string>143.IBPluginDependency</string>
- <string>143.ImportedFromIB2</string>
- <string>144.IBPluginDependency</string>
- <string>144.ImportedFromIB2</string>
- <string>145.IBPluginDependency</string>
- <string>145.ImportedFromIB2</string>
- <string>149.IBPluginDependency</string>
- <string>149.ImportedFromIB2</string>
- <string>150.IBPluginDependency</string>
- <string>150.ImportedFromIB2</string>
- <string>19.IBPluginDependency</string>
- <string>19.ImportedFromIB2</string>
- <string>195.IBPluginDependency</string>
- <string>195.ImportedFromIB2</string>
- <string>196.IBPluginDependency</string>
- <string>196.ImportedFromIB2</string>
- <string>197.IBPluginDependency</string>
- <string>197.ImportedFromIB2</string>
- <string>198.IBPluginDependency</string>
- <string>198.ImportedFromIB2</string>
- <string>199.IBPluginDependency</string>
- <string>199.ImportedFromIB2</string>
- <string>200.IBEditorWindowLastContentRect</string>
- <string>200.IBPluginDependency</string>
- <string>200.ImportedFromIB2</string>
- <string>200.editorWindowContentRectSynchronizationRect</string>
- <string>201.IBPluginDependency</string>
- <string>201.ImportedFromIB2</string>
- <string>202.IBPluginDependency</string>
- <string>202.ImportedFromIB2</string>
- <string>203.IBPluginDependency</string>
- <string>203.ImportedFromIB2</string>
- <string>204.IBPluginDependency</string>
- <string>204.ImportedFromIB2</string>
- <string>205.IBEditorWindowLastContentRect</string>
- <string>205.IBPluginDependency</string>
- <string>205.ImportedFromIB2</string>
- <string>205.editorWindowContentRectSynchronizationRect</string>
- <string>206.IBPluginDependency</string>
- <string>206.ImportedFromIB2</string>
- <string>207.IBPluginDependency</string>
- <string>207.ImportedFromIB2</string>
- <string>208.IBPluginDependency</string>
- <string>208.ImportedFromIB2</string>
- <string>209.IBPluginDependency</string>
- <string>209.ImportedFromIB2</string>
- <string>210.IBPluginDependency</string>
- <string>210.ImportedFromIB2</string>
- <string>211.IBPluginDependency</string>
- <string>211.ImportedFromIB2</string>
- <string>212.IBPluginDependency</string>
- <string>212.ImportedFromIB2</string>
- <string>212.editorWindowContentRectSynchronizationRect</string>
- <string>213.IBPluginDependency</string>
- <string>213.ImportedFromIB2</string>
- <string>214.IBPluginDependency</string>
- <string>214.ImportedFromIB2</string>
- <string>215.IBPluginDependency</string>
- <string>215.ImportedFromIB2</string>
- <string>216.IBPluginDependency</string>
- <string>216.ImportedFromIB2</string>
- <string>217.IBPluginDependency</string>
- <string>217.ImportedFromIB2</string>
- <string>218.IBPluginDependency</string>
- <string>218.ImportedFromIB2</string>
- <string>219.IBPluginDependency</string>
- <string>219.ImportedFromIB2</string>
- <string>220.IBEditorWindowLastContentRect</string>
- <string>220.IBPluginDependency</string>
- <string>220.ImportedFromIB2</string>
- <string>220.editorWindowContentRectSynchronizationRect</string>
- <string>221.IBPluginDependency</string>
- <string>221.ImportedFromIB2</string>
- <string>23.IBPluginDependency</string>
- <string>23.ImportedFromIB2</string>
- <string>236.IBPluginDependency</string>
- <string>236.ImportedFromIB2</string>
- <string>239.IBPluginDependency</string>
- <string>239.ImportedFromIB2</string>
- <string>24.IBEditorWindowLastContentRect</string>
- <string>24.IBPluginDependency</string>
- <string>24.ImportedFromIB2</string>
- <string>24.editorWindowContentRectSynchronizationRect</string>
- <string>29.IBEditorWindowLastContentRect</string>
- <string>29.IBPluginDependency</string>
- <string>29.ImportedFromIB2</string>
- <string>29.WindowOrigin</string>
- <string>29.editorWindowContentRectSynchronizationRect</string>
- <string>295.IBPluginDependency</string>
- <string>296.IBEditorWindowLastContentRect</string>
- <string>296.IBPluginDependency</string>
- <string>296.editorWindowContentRectSynchronizationRect</string>
- <string>297.IBPluginDependency</string>
- <string>298.IBPluginDependency</string>
- <string>346.IBPluginDependency</string>
- <string>346.ImportedFromIB2</string>
- <string>348.IBPluginDependency</string>
- <string>348.ImportedFromIB2</string>
- <string>349.IBEditorWindowLastContentRect</string>
- <string>349.IBPluginDependency</string>
- <string>349.ImportedFromIB2</string>
- <string>349.editorWindowContentRectSynchronizationRect</string>
- <string>350.IBPluginDependency</string>
- <string>350.ImportedFromIB2</string>
- <string>351.IBPluginDependency</string>
- <string>351.ImportedFromIB2</string>
- <string>354.IBPluginDependency</string>
- <string>354.ImportedFromIB2</string>
- <string>371.IBEditorWindowLastContentRect</string>
- <string>371.IBPluginDependency</string>
- <string>371.IBWindowTemplateEditedContentRect</string>
- <string>371.NSWindowTemplate.visibleAtLaunch</string>
- <string>371.editorWindowContentRectSynchronizationRect</string>
- <string>371.windowTemplate.maxSize</string>
- <string>372.IBPluginDependency</string>
- <string>375.IBPluginDependency</string>
- <string>376.IBEditorWindowLastContentRect</string>
- <string>376.IBPluginDependency</string>
- <string>377.IBPluginDependency</string>
- <string>388.IBEditorWindowLastContentRect</string>
- <string>388.IBPluginDependency</string>
- <string>389.IBPluginDependency</string>
- <string>390.IBPluginDependency</string>
- <string>391.IBPluginDependency</string>
- <string>392.IBPluginDependency</string>
- <string>393.IBPluginDependency</string>
- <string>394.IBPluginDependency</string>
- <string>395.IBPluginDependency</string>
- <string>396.IBPluginDependency</string>
- <string>397.IBPluginDependency</string>
- <string>398.IBPluginDependency</string>
- <string>399.IBPluginDependency</string>
- <string>400.IBPluginDependency</string>
- <string>401.IBPluginDependency</string>
- <string>402.IBPluginDependency</string>
- <string>403.IBPluginDependency</string>
- <string>404.IBPluginDependency</string>
- <string>405.IBPluginDependency</string>
- <string>406.IBPluginDependency</string>
- <string>407.IBPluginDependency</string>
- <string>408.IBPluginDependency</string>
- <string>409.IBPluginDependency</string>
- <string>410.IBPluginDependency</string>
- <string>411.IBPluginDependency</string>
- <string>412.IBPluginDependency</string>
- <string>413.IBPluginDependency</string>
- <string>414.IBPluginDependency</string>
- <string>415.IBPluginDependency</string>
- <string>416.IBPluginDependency</string>
- <string>417.IBPluginDependency</string>
- <string>418.IBPluginDependency</string>
- <string>419.IBPluginDependency</string>
- <string>450.IBPluginDependency</string>
- <string>451.IBEditorWindowLastContentRect</string>
- <string>451.IBPluginDependency</string>
- <string>452.IBPluginDependency</string>
- <string>453.IBPluginDependency</string>
- <string>454.IBPluginDependency</string>
- <string>457.IBPluginDependency</string>
- <string>459.IBPluginDependency</string>
- <string>460.IBPluginDependency</string>
- <string>462.IBPluginDependency</string>
- <string>465.IBPluginDependency</string>
- <string>466.IBPluginDependency</string>
- <string>485.IBPluginDependency</string>
- <string>490.IBPluginDependency</string>
- <string>491.IBEditorWindowLastContentRect</string>
- <string>491.IBPluginDependency</string>
- <string>492.IBPluginDependency</string>
- <string>496.IBPluginDependency</string>
- <string>497.IBEditorWindowLastContentRect</string>
- <string>497.IBPluginDependency</string>
- <string>498.IBPluginDependency</string>
- <string>499.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>5.ImportedFromIB2</string>
- <string>500.IBPluginDependency</string>
- <string>501.IBPluginDependency</string>
- <string>502.IBPluginDependency</string>
- <string>503.IBPluginDependency</string>
- <string>504.IBPluginDependency</string>
- <string>505.IBPluginDependency</string>
- <string>506.IBPluginDependency</string>
- <string>507.IBPluginDependency</string>
- <string>508.IBEditorWindowLastContentRect</string>
- <string>508.IBPluginDependency</string>
- <string>509.IBPluginDependency</string>
- <string>510.IBPluginDependency</string>
- <string>511.IBPluginDependency</string>
- <string>512.IBPluginDependency</string>
- <string>513.IBPluginDependency</string>
- <string>514.IBPluginDependency</string>
- <string>515.IBPluginDependency</string>
- <string>516.IBPluginDependency</string>
- <string>517.IBPluginDependency</string>
- <string>56.IBPluginDependency</string>
- <string>56.ImportedFromIB2</string>
- <string>57.IBEditorWindowLastContentRect</string>
- <string>57.IBPluginDependency</string>
- <string>57.ImportedFromIB2</string>
- <string>57.editorWindowContentRectSynchronizationRect</string>
- <string>58.IBPluginDependency</string>
- <string>58.ImportedFromIB2</string>
- <string>72.IBPluginDependency</string>
- <string>72.ImportedFromIB2</string>
- <string>73.IBPluginDependency</string>
- <string>73.ImportedFromIB2</string>
- <string>74.IBPluginDependency</string>
- <string>74.ImportedFromIB2</string>
- <string>75.IBPluginDependency</string>
- <string>75.ImportedFromIB2</string>
- <string>77.IBPluginDependency</string>
- <string>77.ImportedFromIB2</string>
- <string>78.IBPluginDependency</string>
- <string>78.ImportedFromIB2</string>
- <string>79.IBPluginDependency</string>
- <string>79.ImportedFromIB2</string>
- <string>80.IBPluginDependency</string>
- <string>80.ImportedFromIB2</string>
- <string>81.IBEditorWindowLastContentRect</string>
- <string>81.IBPluginDependency</string>
- <string>81.ImportedFromIB2</string>
- <string>81.editorWindowContentRectSynchronizationRect</string>
- <string>82.IBPluginDependency</string>
- <string>82.ImportedFromIB2</string>
- <string>83.IBPluginDependency</string>
- <string>83.ImportedFromIB2</string>
- <string>92.IBPluginDependency</string>
- <string>92.ImportedFromIB2</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{522, 812}, {146, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{436, 809}, {64, 6}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{753, 187}, {275, 113}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{608, 612}, {275, 83}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{547, 180}, {254, 283}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{187, 434}, {243, 243}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{608, 612}, {167, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{753, 217}, {238, 103}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{608, 612}, {241, 103}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{654, 239}, {194, 73}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{525, 802}, {197, 73}}</string>
- <string>{{380, 836}, {512, 20}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{74, 862}</string>
- <string>{{6, 978}, {478, 20}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{604, 269}, {231, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{475, 832}, {234, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{746, 287}, {220, 133}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{608, 612}, {215, 63}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{380, 496}, {480, 360}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{380, 496}, {480, 360}}</string>
- <integer value="1"/>
- <string>{{33, 99}, {480, 360}}</string>
- <string>{3.40282e+38, 3.40282e+38}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{591, 420}, {83, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{523, 2}, {178, 283}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{753, 197}, {170, 63}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{725, 289}, {246, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{674, 260}, {204, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{878, 180}, {164, 173}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{286, 129}, {275, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{23, 794}, {245, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{452, 109}, {196, 203}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>{{145, 474}, {199, 203}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">532</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">TestAppAppDelegate</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">window</string>
- <string key="NS.object.0">NSWindow</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">TestAppAppDelegate.h</string>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="822405504">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="850738725">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="624831158">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSBrowser</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="310914472">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocument</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>printDocument:</string>
- <string>revertDocumentToSaved:</string>
- <string>runPageLayout:</string>
- <string>saveDocument:</string>
- <string>saveDocumentAs:</string>
- <string>saveDocumentTo:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDocument.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocument</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDocumentScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocumentController</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>clearRecentDocuments:</string>
- <string>newDocument:</string>
- <string>openDocument:</string>
- <string>saveAllDocuments:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDocumentController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFontManager</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="946436764">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFormatter</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="1056362899">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItem</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="472958451">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMovieView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMovieView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="822405504"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="850738725"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="624831158"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="310914472"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="946436764"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="1056362899"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="809545482">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="260078765">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTableView</string>
- <string key="superclassName">NSControl</string>
- <reference key="sourceIdentifier" ref="809545482"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSText</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSText.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextView</string>
- <string key="superclassName">NSText</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="472958451"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <string key="superclassName">NSResponder</string>
- <reference key="sourceIdentifier" ref="260078765"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1060" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../TestApp.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+++ /dev/null
-{
- "images" : [
- {
- "idiom" : "mac",
- "size" : "16x16",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "16x16",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "32x32",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "32x32",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "128x128",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "128x128",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "256x256",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "256x256",
- "scale" : "2x"
- },
- {
- "idiom" : "mac",
- "size" : "512x512",
- "scale" : "1x"
- },
- {
- "idiom" : "mac",
- "size" : "512x512",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
+++ /dev/null
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x",
- "filename" : "super_sylvain.png"
- },
- {
- "idiom" : "universal",
- "scale" : "2x",
- "filename" : "super_sylvain@2x.png"
- },
- {
- "idiom" : "universal",
- "scale" : "3x",
- "filename" : "super_sylvain@3x.png"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>BuildMachineOSBuild</key>
- <string>Doesn't matter, will be overwritten</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.google.${PRODUCT_NAME:rfc1034identifier}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>ause</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>${MACOSX_DEPLOYMENT_TARGET}</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#import <Cocoa/Cocoa.h>
-
-@interface TestAppAppDelegate : NSObject <NSApplicationDelegate> {
- NSWindow *window;
-}
-
-@property (assign) IBOutlet NSWindow *window;
-
-@end
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#import "TestAppAppDelegate.h"
-
-@implementation TestAppAppDelegate
-
-@synthesize window;
-
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
- // Insert code here to initialize your application
-}
-
-@end
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#import <Cocoa/Cocoa.h>
-
-int main(int argc, char *argv[])
-{
- return NSApplicationMain(argc, (const char **) argv);
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'dep_framework',
- 'product_name': 'Dependency Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'empty.c', ],
- },
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App Assets Catalog Gyp',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'dependencies': [ 'dep_framework', ],
- 'sources': [
- 'TestApp/main.m',
- 'TestApp/TestApp_Prefix.pch',
- 'TestApp/TestAppAppDelegate.h',
- 'TestApp/TestAppAppDelegate.m',
- ],
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist.strings', # UTF-8
- 'TestApp/English.lproj/utf-16be.strings',
- 'TestApp/English.lproj/utf-16le.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- 'TestApp/Images.xcassets',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework',
- ],
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- 'MACOSX_DEPLOYMENT_TARGET': '10.9',
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App Gyp',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'TestApp/main.m',
- 'TestApp/TestApp_Prefix.pch',
- 'TestApp/TestAppAppDelegate.h',
- 'TestApp/TestAppAppDelegate.m',
- ],
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist-error.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework',
- ],
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'dep_framework',
- 'product_name': 'Dependency Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'empty.c', ],
- },
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App Gyp',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'dependencies': [ 'dep_framework', ],
- 'sources': [
- 'TestApp/main.m',
- 'TestApp/TestApp_Prefix.pch',
- 'TestApp/TestAppAppDelegate.h',
- 'TestApp/TestAppAppDelegate.m',
- ],
- 'mac_bundle_resources': [
- 'TestApp/English.lproj/InfoPlist.strings', # UTF-8
- 'TestApp/English.lproj/utf-16be.strings',
- 'TestApp/English.lproj/utf-16le.strings',
- 'TestApp/English.lproj/MainMenu.xib',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework',
- ],
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'TestApp/TestApp-Info.plist',
- },
- },
- ],
-}
+++ /dev/null
-int main() {}
+++ /dev/null
-MyInt f() { return 0; }
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#include "file_a.h"
-
-void DependentFunctionA() {
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#ifndef _INCLUDED_TEST_MAC_DEPENDENCIES_FILE_A_H_
-#define _INCLUDED_TEST_MAC_DEPENDENCIES_FILE_A_H_
-
-void DependentFunctionA();
-
-#endif // _INCLUDED_TEST_MAC_DEPENDENCIES_FILE_A_H_
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#include "file_b.h"
-
-void DependentFunctionB() {
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#ifndef _INCLUDED_TEST_MAC_DEPENDENCIES_FILE_B_H_
-#define _INCLUDED_TEST_MAC_DEPENDENCIES_FILE_B_H_
-
-void DependentFunctionB();
-
-#endif // _INCLUDED_TEST_MAC_DEPENDENCIES_FILE_B_H_
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#include "file_a.h"
-#include "file_b.h"
-
-void PublicFunctionC() {
- DependentFunctionA();
- DependentFunctionB();
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#include "file_a.h"
-#include "file_b.h"
-
-void PublicFunctionD() {
- DependentFunctionA();
- DependentFunctionB();
-}
+++ /dev/null
-typedef int MyInt;
+++ /dev/null
-/* 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. */
-int x = 1;
+++ /dev/null
-/* 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. */
-#include <stdio.h>
-extern int x;
-int main() {
- printf("hello, world %d\n", x);
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'static_32_64',
- 'type': 'static_library',
- 'sources': [ 'my_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'i386', 'x86_64' ],
- },
- },
- {
- 'target_name': 'shared_32_64',
- 'type': 'shared_library',
- 'sources': [ 'my_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'i386', 'x86_64' ],
- },
- },
- {
- 'target_name': 'shared_32_64_bundle',
- 'product_name': 'My Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'my_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'i386', 'x86_64' ],
- },
- },
- {
- 'target_name': 'module_32_64',
- 'type': 'loadable_module',
- 'sources': [ 'my_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'i386', 'x86_64' ],
- },
- },
- {
- 'target_name': 'module_32_64_bundle',
- 'product_name': 'My Bundle',
- 'type': 'loadable_module',
- 'mac_bundle': 1,
- 'sources': [ 'my_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'i386', 'x86_64' ],
- },
- },
- {
- 'target_name': 'exe_32_64',
- 'type': 'executable',
- 'sources': [ 'empty_main.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'i386', 'x86_64' ],
- },
- },
- {
- 'target_name': 'exe_32_64_bundle',
- 'product_name': 'Test App',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'empty_main.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'i386', 'x86_64' ],
- },
- },
- # This only needs to compile.
- {
- 'target_name': 'precompiled_prefix_header_mm_32_64',
- 'type': 'shared_library',
- 'sources': [ 'file.mm', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- 'GCC_PRECOMPILE_PREFIX_HEADER': 'YES',
- },
- },
- # This does not compile but should not cause generation errors.
- {
- 'target_name': 'exe_32_64_no_sources',
- 'type': 'executable',
- 'dependencies': [
- 'static_32_64',
- ],
- 'sources': [],
- 'xcode_settings': {
- 'ARCHS': ['i386', 'x86_64'],
- },
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib',
- 'product_name': 'Test64',
- 'type': 'static_library',
- 'sources': [ 'my_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'x86_64' ],
- },
- },
- {
- 'target_name': 'exe',
- 'product_name': 'Test64',
- 'type': 'executable',
- 'dependencies': [ 'lib' ],
- 'sources': [ 'my_main_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': [ 'x86_64' ],
- },
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'target_defaults': {
- 'xcode_settings': {
- 'ARCHS': ['i386', 'x86_64'],
- },
- },
- 'targets': [
- {
- 'target_name': 'target_a',
- 'type': 'static_library',
- 'sources': [
- 'file_a.cc',
- 'file_a.h',
- ],
- },
- {
- 'target_name': 'target_b',
- 'type': 'static_library',
- 'sources': [
- 'file_b.cc',
- 'file_b.h',
- ],
- },
- {
- 'target_name': 'target_c_standalone_helper',
- 'type': 'loadable_module',
- 'hard_dependency': 1,
- 'dependencies': [
- 'target_a',
- 'target_b',
- ],
- 'sources': [
- 'file_c.cc',
- ],
- },
- {
- 'target_name': 'target_c_standalone',
- 'type': 'none',
- 'dependencies': [
- 'target_c_standalone_helper',
- ],
- 'actions': [
- {
- 'action_name': 'Package C',
- 'inputs': [],
- 'outputs': [
- '<(PRODUCT_DIR)/libc_standalone.a',
- ],
- 'action': [
- 'touch',
- '<@(_outputs)',
- ],
- },
- ],
- },
- {
- 'target_name': 'target_d_standalone_helper',
- 'type': 'shared_library',
- 'dependencies': [
- 'target_a',
- 'target_b',
- ],
- 'sources': [
- 'file_d.cc',
- ],
- },
- {
- 'target_name': 'target_d_standalone',
- 'type': 'none',
- 'dependencies': [
- 'target_d_standalone_helper',
- ],
- 'actions': [
- {
- 'action_name': 'Package D',
- 'inputs': [],
- 'outputs': [
- '<(PRODUCT_DIR)/libd_standalone.a',
- ],
- 'action': [
- 'touch',
- '<@(_outputs)',
- ],
- },
- ],
- }
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib',
- 'product_name': 'Test',
- 'type': 'static_library',
- 'sources': [ 'my_file.cc' ],
- },
- {
- 'target_name': 'exe',
- 'product_name': 'Test',
- 'type': 'executable',
- 'dependencies': [ 'lib' ],
- 'sources': [ 'my_main_file.cc' ],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib',
- 'product_name': 'Test',
- 'type': 'static_library',
- 'sources': [ 'my_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': ['i386', 'x86_64', 'unknown-arch'],
- 'VALID_ARCHS': ['x86_64'],
- },
- },
- {
- 'target_name': 'exe',
- 'product_name': 'Test',
- 'type': 'executable',
- 'dependencies': [ 'lib' ],
- 'sources': [ 'my_main_file.cc' ],
- 'xcode_settings': {
- 'ARCHS': ['i386', 'x86_64', 'unknown-arch'],
- 'VALID_ARCHS': ['x86_64'],
- },
- }]
-}
+++ /dev/null
-#!/bin/bash
-
-tr a-z A-Z < "${1}" > "${2}"
+++ /dev/null
-#!/bin/bash
-
-echo echo echo echo cho ho o o
+++ /dev/null
-# Copyright (c) 2013 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.
-{
- 'targets': [
- {
- 'target_name': 'resource',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'mac_bundle_resources': [
- 'secret.txt',
- 'executable-file.sh',
- ],
- },
- # A rule with process_outputs_as_mac_bundle_resources should copy files
- # into the Resources folder.
- {
- 'target_name': 'source_rule',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'secret.txt',
- ],
- 'rules': [
- {
- 'rule_name': 'bundlerule',
- 'extension': 'txt',
- 'outputs': [
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).txt',
- ],
- 'action': ['./change.sh', '<(RULE_INPUT_PATH)', '<@(_outputs)'],
- 'message': 'Running rule on <(RULE_INPUT_PATH)',
- 'process_outputs_as_mac_bundle_resources': 1,
- },
- ],
- },
- # So should an ordinary rule acting on mac_bundle_resources.
- {
- 'target_name': 'resource_rule',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'mac_bundle_resources': [
- 'secret.txt',
- ],
- 'rules': [
- {
- 'rule_name': 'bundlerule',
- 'extension': 'txt',
- 'outputs': [
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).txt',
- ],
- 'action': ['./change.sh', '<(RULE_INPUT_PATH)', '<@(_outputs)'],
- 'message': 'Running rule on <(RULE_INPUT_PATH)',
- },
- ],
- },
- ],
-}
+++ /dev/null
-#ifdef CFLAG
-#error CFLAG should not be set
-#endif
-
-#ifndef CCFLAG
-#error CCFLAG should be set
-#endif
+++ /dev/null
-#ifndef CFLAG
-#error CFLAG should be set
-#endif
-
-#ifndef CCFLAG
-#error CCFLAG should be set
-#endif
+++ /dev/null
-#ifndef CFLAG
-#error CFLAG should be set
-#endif
-
-#ifdef CCFLAG
-#error CCFLAG should not be set
-#endif
+++ /dev/null
-#ifdef CFLAG
-#error CFLAG should not be set
-#endif
-
-#ifndef CCFLAG
-#error CCFLAG should be set
-#endif
+++ /dev/null
-#ifndef CFLAG
-#error CFLAG should be set
-#endif
-
-#ifndef CCFLAG
-#error CCFLAG should be set
-#endif
+++ /dev/null
-#ifdef CFLAG
-#error CFLAG should not be set
-#endif
-
-#ifndef CCFLAG
-#error CCFLAG should be set
-#endif
+++ /dev/null
-#ifndef CFLAG
-#error CFLAG should be set
-#endif
-
-#ifndef CCFLAG
-#error CCFLAG should be set
-#endif
+++ /dev/null
-#ifndef CFLAG
-#error CFLAG should be set
-#endif
-
-#ifdef CCFLAG
-#error CCFLAG should not be set
-#endif
+++ /dev/null
-#ifdef CFLAG
-#error CFLAG should not be set
-#endif
-
-#ifndef CCFLAG
-#error CCFLAG should be set
-#endif
+++ /dev/null
-#ifndef CFLAG
-#error CFLAG should be set
-#endif
-
-#ifndef CCFLAG
-#error CCFLAG should be set
-#endif
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'mytarget',
- 'type': 'shared_library',
- 'sources': [
- 'cfile.c',
- 'mfile.m',
- 'ccfile.cc',
- 'cppfile.cpp',
- 'cxxfile.cxx',
- 'mmfile.mm',
- ],
- 'xcode_settings': {
- # Normally, defines would go in 'defines' instead. This is just for
- # testing.
- 'OTHER_CFLAGS': [
- '-DCFLAG',
- ],
- 'OTHER_CPLUSPLUSFLAGS': [
- '-DCCFLAG',
- ],
- 'GCC_C_LANGUAGE_STANDARD': 'c99',
- },
- },
- {
- 'target_name': 'mytarget_reuse_cflags',
- 'type': 'shared_library',
- 'sources': [
- 'cfile.c',
- 'mfile.m',
- 'ccfile_withcflags.cc',
- 'cppfile_withcflags.cpp',
- 'cxxfile_withcflags.cxx',
- 'mmfile_withcflags.mm',
- ],
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-DCFLAG',
- ],
- 'OTHER_CPLUSPLUSFLAGS': [
- '$OTHER_CFLAGS',
- '-DCCFLAG',
- ],
- # This is a C-only flag, to check these don't get added to C++ files.
- 'GCC_C_LANGUAGE_STANDARD': 'c99',
- },
- },
- {
- 'target_name': 'mytarget_inherit_cflags',
- 'type': 'shared_library',
- 'sources': [
- 'cfile.c',
- 'mfile.m',
- 'ccfile_withcflags.cc',
- 'cppfile_withcflags.cpp',
- 'cxxfile_withcflags.cxx',
- 'mmfile_withcflags.mm',
- ],
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-DCFLAG',
- ],
- 'OTHER_CPLUSPLUSFLAGS': [
- '$inherited',
- '-DCCFLAG',
- ],
- 'GCC_C_LANGUAGE_STANDARD': 'c99',
- },
- },
- {
- 'target_name': 'mytarget_inherit_cflags_parens',
- 'type': 'shared_library',
- 'sources': [
- 'cfile.c',
- 'mfile.m',
- 'ccfile_withcflags.cc',
- 'cppfile_withcflags.cpp',
- 'cxxfile_withcflags.cxx',
- 'mmfile_withcflags.mm',
- ],
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-DCFLAG',
- ],
- 'OTHER_CPLUSPLUSFLAGS': [
- '$(inherited)',
- '-DCCFLAG',
- ],
- 'GCC_C_LANGUAGE_STANDARD': 'c99',
- },
- },
- {
- 'target_name': 'mytarget_inherit_cflags_braces',
- 'type': 'shared_library',
- 'sources': [
- 'cfile.c',
- 'mfile.m',
- 'ccfile_withcflags.cc',
- 'cppfile_withcflags.cpp',
- 'cxxfile_withcflags.cxx',
- 'mmfile_withcflags.mm',
- ],
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-DCFLAG',
- ],
- 'OTHER_CPLUSPLUSFLAGS': [
- '${inherited}',
- '-DCCFLAG',
- ],
- 'GCC_C_LANGUAGE_STANDARD': 'c99',
- },
- },
- {
- 'target_name': 'ansi_standard',
- 'type': 'shared_library',
- 'sources': [
- 'cfile.c',
- ],
- 'xcode_settings': {
- 'OTHER_CFLAGS': [
- '-DCFLAG',
- ],
- 'GCC_C_LANGUAGE_STANDARD': 'ansi',
- },
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-static_assert(__cplusplus == 201103L, "wrong c++ standard version");
-
-int main() { return 0; }
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#if __cplusplus != 199711L
-#error wrong c++ standard version
-#endif
-
-enum cxx11_keywords {
- alignas,
- alignof,
- char16_t,
- char32_t,
- constexpr,
- decltype,
- noexcept,
- nullptr,
- override,
- static_assert,
- thread_local,
-};
-
-int main() { return 0; }
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
- 'targets': [
- {
- 'target_name': 'c++98',
- 'type': 'executable',
- 'sources': [ 'c++98.cc', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'CLANG_CXX_LANGUAGE_STANDARD': 'c++98',
- },
- },
- {
- 'target_name': 'c++11',
- 'type': 'executable',
- 'sources': [ 'c++11.cc', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'CLANG_CXX_LANGUAGE_STANDARD': 'c++0x',
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
- 'targets': [
- {
- 'target_name': 'libc++',
- 'type': 'executable',
- 'sources': [ 'libc++.cc', ],
- 'xcode_settings': {
- 'CC': 'clang',
- # libc++ requires OS X 10.7+.
- 'MACOSX_DEPLOYMENT_TARGET': '10.7',
- 'CLANG_CXX_LIBRARY': 'libc++',
- },
- },
- {
- 'target_name': 'libstdc++',
- 'type': 'executable',
- 'sources': [ 'libstdc++.cc', ],
- 'xcode_settings': {
- 'CC': 'clang',
- 'CLANG_CXX_LIBRARY': 'libstdc++',
- },
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#include <string>
-#ifndef _LIBCPP_VERSION
-#error expected std library: libc++
-#endif
-
-int main() { std::string x; return x.size(); }
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#include <string>
-#ifndef __GLIBCXX__
-#error expected std library: libstdc++
-#endif
-
-int main() { std::string x; return x.size(); }
+++ /dev/null
-int main() {}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'my_dylib',
- 'type': 'shared_library',
- 'sources': [ 'empty.c', ],
- },
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'dependencies': [ 'my_dylib', ],
- 'sources': [
- 'empty.c',
- ],
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/Test App.app/Contents/Resources',
- 'files': [
- '<(PRODUCT_DIR)/libmy_dylib.dylib',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-void f() {}
-int main() {}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'nonbundle_static_library',
- 'type': 'static_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
- {
- 'target_name': 'nonbundle_shared_library',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
- {
- 'target_name': 'nonbundle_loadable_module',
- 'type': 'loadable_module',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
- {
- 'target_name': 'nonbundle_executable',
- 'type': 'executable',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
-
- {
- 'target_name': 'bundle_shared_library',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
- {
- 'target_name': 'bundle_loadable_module',
- 'type': 'loadable_module',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
- {
- 'target_name': 'my_app',
- 'product_name': 'My App',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
- ],
-}
+++ /dev/null
-/* Localized versions of Info.plist keys */
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>NSPrincipalClass</key>
- <string></string>
-</dict>
-</plist>
+++ /dev/null
-int f() { return 42; }
+++ /dev/null
-int f();
-int main() {
- return f();
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'my_bundle',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'bundle.c' ],
- 'mac_bundle_resources': [
- 'English.lproj/InfoPlist.strings',
- ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- }
- },
- {
- 'target_name': 'dependent_on_bundle',
- 'type': 'executable',
- 'sources': [ 'executable.c' ],
- 'dependencies': [
- 'my_bundle',
- ],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2013 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. */
-
-#include <Availability.h>
-
-/* GYPTEST_MAC_VERSION_MIN: should be set to the corresponding value of
- * xcode setting 'MACOSX_DEPLOYMENT_TARGET', otherwise both should be
- * left undefined.
- *
- * GYPTEST_IOS_VERSION_MIN: should be set to the corresponding value of
- * xcode setting 'IPHONEOS_DEPLOYMENT_TARGET', otherwise both should be
- * left undefined.
- */
-
-#if defined(GYPTEST_MAC_VERSION_MIN)
-# if GYPTEST_MAC_VERSION_MIN != __MAC_OS_X_VERSION_MIN_REQUIRED
-# error __MAC_OS_X_VERSION_MIN_REQUIRED has wrong value
-# endif
-#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED)
-# error __MAC_OS_X_VERSION_MIN_REQUIRED should be undefined
-#endif
-
-#if defined(GYPTEST_IOS_VERSION_MIN)
-# if GYPTEST_IOS_VERSION_MIN != __IPHONE_OS_VERSION_MIN_REQUIRED
-# error __IPHONE_OS_VERSION_MIN_REQUIRED has wrong value
-# endif
-#elif defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
-# error __IPHONE_OS_VERSION_MIN_REQUIRED should be undefined
-#endif
-
-int main() { return 0; }
+++ /dev/null
-# Copyright (c) 2013 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.
-{
- 'targets': [
- {
- 'target_name': 'macosx-version-min-10.5',
- 'type': 'executable',
- 'sources': [ 'check-version-min.c', ],
- 'defines': [ 'GYPTEST_MAC_VERSION_MIN=1050', ],
- 'xcode_settings': {
- 'SDKROOT': 'macosx',
- 'MACOSX_DEPLOYMENT_TARGET': '10.5',
- },
- },
- {
- 'target_name': 'macosx-version-min-10.6',
- 'type': 'executable',
- 'sources': [ 'check-version-min.c', ],
- 'defines': [ 'GYPTEST_MAC_VERSION_MIN=1060', ],
- 'xcode_settings': {
- 'SDKROOT': 'macosx',
- 'MACOSX_DEPLOYMENT_TARGET': '10.6',
- },
- },
- ],
-}
+++ /dev/null
-/* 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.
- */
-
-int CalculatePerformExpression(char* expr,
- int significantDigits,
- int flags,
- char* answer);
-
-int main() {
- char buffer[1024];
- return CalculatePerformExpression("42", 1, 0, buffer);
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'calculate',
- 'type': 'executable',
- 'sources': [
- 'calculate.c',
- ],
- 'libraries': [
- '/System/Library/PrivateFrameworks/Calculate.framework',
- ],
- 'mac_framework_dirs': [
- '/System/Library/PrivateFrameworks',
- ],
- },
- ],
-}
+++ /dev/null
-// 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.
-
-#import <Foundation/Foundation.h>
-
-@interface TestObject : NSObject
-@end
+++ /dev/null
-// 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.
-
-#import "myframework.h"
-
-@implementation TestObject
-@end
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'test_framework_headers_framework',
- 'product_name': 'TestFramework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [
- 'myframework.h',
- 'myframework.m',
- ],
- 'mac_framework_headers': [
- 'myframework.h',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- ],
- },
- },{
- 'target_name': 'test_framework_headers_static',
- 'product_name': 'TestLibrary',
- 'type': 'static_library',
- 'xcode_settings': {
- 'PUBLIC_HEADERS_FOLDER_PATH': 'include',
- },
- 'sources': [
- 'myframework.h',
- 'myframework.m',
- ],
- 'mac_framework_headers': [
- 'myframework.h',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- ],
- },
- },
- ],
-}
+++ /dev/null
-/* Localized versions of Info.plist keys */
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>NSPrincipalClass</key>
- <string></string>
-</dict>
-</plist>
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#import <Cocoa/Cocoa.h>
-
-#ifdef __cplusplus
-struct ObjCVectorImp;
-#else
-typedef struct _ObjCVectorImpT ObjCVectorImp;
-#endif
-
-@interface ObjCVector : NSObject {
- @private
- ObjCVectorImp* imp_;
-}
-
-- (id)init;
-
-- (void)addObject:(id)obj;
-- (void)addObject:(id)obj atIndex:(NSUInteger)index;
-
-- (void)removeObject:(id)obj;
-- (void)removeObjectAtIndex:(NSUInteger)index;
-
-- (id)objectAtIndex:(NSUInteger)index;
-
-@end
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#import "ObjCVectorInternal.h"
-#import "ObjCVector.h"
-
-#include <vector>
-
-@interface ObjCVector (Private)
-- (std::vector<id>::iterator)makeIterator:(NSUInteger)index;
-@end
-
-@implementation ObjCVector
-
-- (id)init {
- if ((self = [super init])) {
- imp_ = new ObjCVectorImp();
- }
- return self;
-}
-
-- (void)dealloc {
- delete imp_;
- [super dealloc];
-}
-
-- (void)addObject:(id)obj {
- imp_->v.push_back([obj retain]);
-}
-
-- (void)addObject:(id)obj atIndex:(NSUInteger)index {
- imp_->v.insert([self makeIterator:index], [obj retain]);
-}
-
-- (void)removeObject:(id)obj {
- for (std::vector<id>::iterator it = imp_->v.begin();
- it != imp_->v.end();
- ++it) {
- if ([*it isEqual:obj]) {
- [*it autorelease];
- imp_->v.erase(it);
- return;
- }
- }
-}
-
-- (void)removeObjectAtIndex:(NSUInteger)index {
- [imp_->v[index] autorelease];
- imp_->v.erase([self makeIterator:index]);
-}
-
-- (id)objectAtIndex:(NSUInteger)index {
- return imp_->v[index];
-}
-
-- (std::vector<id>::iterator)makeIterator:(NSUInteger)index {
- std::vector<id>::iterator it = imp_->v.begin();
- it += index;
- return it;
-}
-
-@end
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#include <vector>
-
-struct ObjCVectorImp {
- std::vector<id> v;
-};
+++ /dev/null
-//
-// Prefix header for all source files of the 'TestFramework' target in the 'TestFramework' project.
-//
-
-#ifdef __OBJC__
- #import <Cocoa/Cocoa.h>
-#endif
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'dep_framework',
- 'product_name': 'Dependency Bundle',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'empty.c', ],
- },
- {
- 'target_name': 'test_framework',
- 'product_name': 'Test Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'dependencies': [ 'dep_framework', ],
- 'sources': [
- 'TestFramework/ObjCVector.h',
- 'TestFramework/ObjCVectorInternal.h',
- 'TestFramework/ObjCVector.mm',
- ],
- 'mac_bundle_resources': [
- 'TestFramework/English.lproj/InfoPlist.strings',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework',
- ],
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'TestFramework/Info.plist',
- 'GCC_DYNAMIC_NO_PIC': 'NO',
- },
- 'copies': [
- # Test copying to a file that has envvars in its dest path.
- # Needs to be in a mac_bundle target, else CONTENTS_FOLDER_PATH isn't
- # set.
- {
- 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries',
- 'files': [
- 'empty.c',
- ],
- },
- ],
- },
- {
- 'target_name': 'copy_target',
- 'type': 'none',
- 'dependencies': [ 'test_framework', 'dep_framework', ],
- 'copies': [
- # Test copying directories with spaces in src and dest paths.
- {
- 'destination': '<(PRODUCT_DIR)/Test Framework.framework/foo',
- 'files': [
- '<(PRODUCT_DIR)/Dependency Bundle.framework',
- ],
- },
- ],
- 'actions': [
- {
- 'action_name': 'aektschn',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/touched_file'],
- 'action': ['touch', '${BUILT_PRODUCTS_DIR}/action_file'],
- },
- ],
- },
- {
- 'target_name': 'copy_target_code_sign',
- 'type': 'none',
- 'dependencies': [ 'test_framework', 'dep_framework', ],
- 'copies': [
- # Test copying directories with spaces in src and dest paths.
- {
- 'destination': '<(PRODUCT_DIR)/Test Framework.framework/foo',
- 'files': [
- '<(PRODUCT_DIR)/Dependency Bundle.framework',
- ],
- 'xcode_code_sign': 1,
- },
- ],
- 'actions': [
- {
- 'action_name': 'aektschn',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/touched_file'],
- 'action': ['touch', '${BUILT_PRODUCTS_DIR}/action_file'],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'dir1_target',
- 'type': 'none',
- },
- ],
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'dir2_target',
- 'type': 'none',
- 'dependencies': [
- '../dir1/dir1.gyp:dir1_target',
- ],
- 'actions': [
- {
- 'inputs': [ ],
- 'outputs': [ '<(PRODUCT_DIR)/file.txt' ],
- 'action_name': 'Test action',
- 'action': ['cp', 'file.txt', '${BUILT_PRODUCTS_DIR}/file.txt' ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that env vars work with actions, with relative directory paths.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- # The xcode-ninja generator handles gypfiles which are not at the
- # project root incorrectly.
- # cf. https://code.google.com/p/gyp/issues/detail?id=460
- if test.format == 'xcode-ninja':
- test.skip_test()
-
- CHDIR = 'action-envvars'
- test.run_gyp('action/action.gyp', chdir=CHDIR)
- test.build('action/action.gyp', 'action', chdir=CHDIR, SYMROOT='../build')
-
- result_file = test.built_file_path('result', chdir=CHDIR)
- test.must_exist(result_file)
- test.must_contain(result_file, 'Test output')
-
- other_result_file = test.built_file_path('other_result', chdir=CHDIR)
- test.must_exist(other_result_file)
- test.must_contain(other_result_file, 'Other output')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that app bundles are built correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import os
-import plistlib
-import subprocess
-import sys
-
-
-def ExpectEq(expected, actual):
- if expected != actual:
- print >>sys.stderr, 'Expected "%s", got "%s"' % (expected, actual)
- test.fail_test()
-
-def ls(path):
- '''Returns a list of all files in a directory, relative to the directory.'''
- result = []
- for dirpath, _, files in os.walk(path):
- for f in files:
- result.append(os.path.join(dirpath, f)[len(path) + 1:])
- return result
-
-# Xcode supports for assets catalog was introduced in Xcode 6.0
-if sys.platform == 'darwin' and TestMac.Xcode.Version() >= '0600':
- test_gyp_path = 'test-assets-catalog.gyp'
- test_app_path = 'Test App Assets Catalog Gyp.app'
-
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
- test.run_gyp(test_gyp_path, chdir='app-bundle')
- test.build(test_gyp_path, test.ALL, chdir='app-bundle')
-
- # Binary
- test.built_file_must_exist(
- os.path.join(test_app_path, 'Contents/MacOS/Test App Assets Catalog Gyp'),
- chdir='app-bundle')
-
- # Info.plist
- info_plist = test.built_file_path(
- os.path.join(test_app_path, 'Contents/Info.plist'),
- chdir='app-bundle')
- test.must_exist(info_plist)
- test.must_contain(
- info_plist,
- 'com.google.Test-App-Assets-Catalog-Gyp') # Variable expansion
- test.must_not_contain(info_plist, '${MACOSX_DEPLOYMENT_TARGET}');
-
- if test.format != 'make':
- # TODO: Synthesized plist entries aren't hooked up in the make generator.
- machine = subprocess.check_output(['sw_vers', '-buildVersion']).rstrip('\n')
- plist = plistlib.readPlist(info_plist)
- ExpectEq(machine, plist['BuildMachineOSBuild'])
-
- expected = ''
- version = TestMac.Xcode.SDKVersion()
- expected = 'macosx' + version
- ExpectEq(expected, plist['DTSDKName'])
- sdkbuild = TestMac.Xcode.SDKBuild()
- if not sdkbuild:
- # Above command doesn't work in Xcode 4.2.
- sdkbuild = plist['BuildMachineOSBuild']
- ExpectEq(sdkbuild, plist['DTSDKBuild'])
- ExpectEq(TestMac.Xcode.Version(), plist['DTXcode'])
- ExpectEq(TestMac.Xcode.Build(), plist['DTXcodeBuild'])
-
- # Resources
- strings_files = ['InfoPlist.strings', 'utf-16be.strings', 'utf-16le.strings']
- for f in strings_files:
- strings = test.built_file_path(
- os.path.join(test_app_path, 'Contents/Resources/English.lproj', f),
- chdir='app-bundle')
- test.must_exist(strings)
- # Xcodes writes UTF-16LE with BOM.
- contents = open(strings, 'rb').read()
- if not contents.startswith('\xff\xfe' + '/* Localized'.encode('utf-16le')):
- test.fail_test()
-
- test.built_file_must_exist(
- os.path.join(
- test_app_path, 'Contents/Resources/English.lproj/MainMenu.nib'),
- chdir='app-bundle')
-
- # make does not supports .xcassets files
- extra_content_files = []
- if test.format != 'make':
- extra_content_files = ['Contents/Resources/Assets.car']
- for f in extra_content_files:
- test.built_file_must_exist(
- os.path.join(test_app_path, f),
- chdir='app-bundle')
-
- # Packaging
- test.built_file_must_exist(
- os.path.join(test_app_path, 'Contents/PkgInfo'),
- chdir='app-bundle')
- test.built_file_must_match(
- os.path.join(test_app_path, 'Contents/PkgInfo'), 'APPLause',
- chdir='app-bundle')
-
- # Check that no other files get added to the bundle.
- if set(ls(test.built_file_path(test_app_path, chdir='app-bundle'))) != \
- set(['Contents/MacOS/Test App Assets Catalog Gyp',
- 'Contents/Info.plist',
- 'Contents/Resources/English.lproj/MainMenu.nib',
- 'Contents/PkgInfo',
- ] + extra_content_files +
- [os.path.join('Contents/Resources/English.lproj', f)
- for f in strings_files]):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that invalid strings files cause the build to fail.
-"""
-
-import TestCmd
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- expected_error = 'Old-style plist parser: missing semicolon in dictionary'
- saw_expected_error = [False] # Python2 has no "nonlocal" keyword.
- def match(a, b):
- if a == b:
- return True
- if not TestCmd.is_List(a):
- a = a.split('\n')
- if not TestCmd.is_List(b):
- b = b.split('\n')
- if expected_error in '\n'.join(a) + '\n'.join(b):
- saw_expected_error[0] = True
- return True
- return False
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'], match=match)
-
- test.run_gyp('test-error.gyp', chdir='app-bundle')
-
- test.build('test-error.gyp', test.ALL, chdir='app-bundle')
-
- # Ninja pipes stderr of subprocesses to stdout.
- if test.format in ['ninja', 'xcode-ninja'] \
- and expected_error in test.stdout():
- saw_expected_error[0] = True
-
- if saw_expected_error[0]:
- test.pass_test()
- else:
- test.fail_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that app bundles are built correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import os
-import plistlib
-import subprocess
-import sys
-
-
-def CheckFileXMLPropertyList(file):
- output = subprocess.check_output(['file', file])
- # The double space after XML is intentional.
- if not 'XML document text' in output:
- print 'File: Expected XML document text, got %s' % output
- test.fail_test()
-
-def ExpectEq(expected, actual):
- if expected != actual:
- print >>sys.stderr, 'Expected "%s", got "%s"' % (expected, actual)
- test.fail_test()
-
-def ls(path):
- '''Returns a list of all files in a directory, relative to the directory.'''
- result = []
- for dirpath, _, files in os.walk(path):
- for f in files:
- result.append(os.path.join(dirpath, f)[len(path) + 1:])
- return result
-
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp', chdir='app-bundle')
-
- test.build('test.gyp', test.ALL, chdir='app-bundle')
-
- # Binary
- test.built_file_must_exist('Test App Gyp.app/Contents/MacOS/Test App Gyp',
- chdir='app-bundle')
-
- # Info.plist
- info_plist = test.built_file_path('Test App Gyp.app/Contents/Info.plist',
- chdir='app-bundle')
- test.must_exist(info_plist)
- test.must_contain(info_plist, 'com.google.Test-App-Gyp') # Variable expansion
- test.must_not_contain(info_plist, '${MACOSX_DEPLOYMENT_TARGET}');
- CheckFileXMLPropertyList(info_plist)
-
- if test.format != 'make':
- # TODO: Synthesized plist entries aren't hooked up in the make generator.
- machine = subprocess.check_output(['sw_vers', '-buildVersion']).rstrip('\n')
- plist = plistlib.readPlist(info_plist)
- ExpectEq(machine, plist['BuildMachineOSBuild'])
-
- # Prior to Xcode 5.0.0, SDKROOT (and thus DTSDKName) was only defined if
- # set in the Xcode project file. Starting with that version, it is always
- # defined.
- expected = ''
- if TestMac.Xcode.Version() >= '0500':
- version = TestMac.Xcode.SDKVersion()
- expected = 'macosx' + version
- ExpectEq(expected, plist['DTSDKName'])
- sdkbuild = TestMac.Xcode.SDKBuild()
- if not sdkbuild:
- # Above command doesn't work in Xcode 4.2.
- sdkbuild = plist['BuildMachineOSBuild']
- ExpectEq(sdkbuild, plist['DTSDKBuild'])
- ExpectEq(TestMac.Xcode.Version(), plist['DTXcode'])
- ExpectEq(TestMac.Xcode.Build(), plist['DTXcodeBuild'])
-
- # Resources
- strings_files = ['InfoPlist.strings', 'utf-16be.strings', 'utf-16le.strings']
- for f in strings_files:
- strings = test.built_file_path(
- os.path.join('Test App Gyp.app/Contents/Resources/English.lproj', f),
- chdir='app-bundle')
- test.must_exist(strings)
- # Xcodes writes UTF-16LE with BOM.
- contents = open(strings, 'rb').read()
- if not contents.startswith('\xff\xfe' + '/* Localized'.encode('utf-16le')):
- test.fail_test()
-
- test.built_file_must_exist(
- 'Test App Gyp.app/Contents/Resources/English.lproj/MainMenu.nib',
- chdir='app-bundle')
-
- # Packaging
- test.built_file_must_exist('Test App Gyp.app/Contents/PkgInfo',
- chdir='app-bundle')
- test.built_file_must_match('Test App Gyp.app/Contents/PkgInfo', 'APPLause',
- chdir='app-bundle')
-
- # Check that no other files get added to the bundle.
- if set(ls(test.built_file_path('Test App Gyp.app', chdir='app-bundle'))) != \
- set(['Contents/MacOS/Test App Gyp',
- 'Contents/Info.plist',
- 'Contents/Resources/English.lproj/MainMenu.nib',
- 'Contents/PkgInfo',
- ] +
- [os.path.join('Contents/Resources/English.lproj', f)
- for f in strings_files]):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Tests things related to ARCHS.
-"""
-
-import TestGyp
-import TestMac
-
-import re
-import subprocess
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test-no-archs.gyp', chdir='archs')
- test.build('test-no-archs.gyp', test.ALL, chdir='archs')
- result_file = test.built_file_path('Test', chdir='archs')
- test.must_exist(result_file)
-
- if TestMac.Xcode.Version() >= '0500':
- expected_type = ['x86_64']
- else:
- expected_type = ['i386']
- TestMac.CheckFileType(test, result_file, expected_type)
-
- test.run_gyp('test-valid-archs.gyp', chdir='archs')
- test.build('test-valid-archs.gyp', test.ALL, chdir='archs')
- result_file = test.built_file_path('Test', chdir='archs')
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, ['x86_64'])
-
- test.run_gyp('test-archs-x86_64.gyp', chdir='archs')
- test.build('test-archs-x86_64.gyp', test.ALL, chdir='archs')
- result_file = test.built_file_path('Test64', chdir='archs')
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, ['x86_64'])
-
- test.run_gyp('test-dependencies.gyp', chdir='archs')
- test.build('test-dependencies.gyp', target=test.ALL, chdir='archs')
- products = ['c_standalone', 'd_standalone']
- for product in products:
- result_file = test.built_file_path(
- product, chdir='archs', type=test.STATIC_LIB)
- test.must_exist(result_file)
-
- if test.format != 'make':
- # Build all targets except 'exe_32_64_no_sources' that does build
- # but should not cause error when generating ninja files
- targets = [
- 'static_32_64', 'shared_32_64', 'shared_32_64_bundle',
- 'module_32_64', 'module_32_64_bundle',
- 'exe_32_64', 'exe_32_64_bundle', 'precompiled_prefix_header_mm_32_64',
- ]
-
- test.run_gyp('test-archs-multiarch.gyp', chdir='archs')
-
- for target in targets:
- test.build('test-archs-multiarch.gyp', target=target, chdir='archs')
-
- result_file = test.built_file_path(
- 'static_32_64', chdir='archs', type=test.STATIC_LIB)
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, ['i386', 'x86_64'])
-
- result_file = test.built_file_path(
- 'shared_32_64', chdir='archs', type=test.SHARED_LIB)
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, ['i386', 'x86_64'])
-
- result_file = test.built_file_path('My Framework.framework/My Framework',
- chdir='archs')
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, ['i386', 'x86_64'])
- # Check that symbol "_x" made it into both versions of the binary:
- if not all(['D _x' in subprocess.check_output(
- ['nm', '-arch', arch, result_file]) for arch in ['i386', 'x86_64']]):
- # This can only flakily fail, due to process ordering issues. If this
- # does fail flakily, then something's broken, it's not the test at fault.
- test.fail_test()
-
- result_file = test.built_file_path(
- 'exe_32_64', chdir='archs', type=test.EXECUTABLE)
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, ['i386', 'x86_64'])
-
- result_file = test.built_file_path('Test App.app/Contents/MacOS/Test App',
- chdir='archs')
- test.must_exist(result_file)
- TestMac.CheckFileType(test, result_file, ['i386', 'x86_64'])
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies things related to bundle resources.
-"""
-
-import TestGyp
-
-import os
-import stat
-import sys
-
-
-def check_attribs(path, expected_exec_bit):
- out_path = test.built_file_path(
- os.path.join('resource.app/Contents/Resources', path), chdir=CHDIR)
-
- in_stat = os.stat(os.path.join(CHDIR, path))
- out_stat = os.stat(out_path)
- if in_stat.st_mtime == out_stat.st_mtime:
- test.fail_test()
- if out_stat.st_mode & stat.S_IXUSR != expected_exec_bit:
- test.fail_test()
-
-
-if sys.platform == 'darwin':
- # set |match| to ignore build stderr output.
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'bundle-resources'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', test.ALL, chdir=CHDIR)
-
- test.built_file_must_match('resource.app/Contents/Resources/secret.txt',
- 'abc\n', chdir=CHDIR)
- test.built_file_must_match('source_rule.app/Contents/Resources/secret.txt',
- 'ABC\n', chdir=CHDIR)
-
- test.built_file_must_match(
- 'resource.app/Contents/Resources/executable-file.sh',
- '#!/bin/bash\n'
- '\n'
- 'echo echo echo echo cho ho o o\n', chdir=CHDIR)
-
- check_attribs('executable-file.sh', expected_exec_bit=stat.S_IXUSR)
- check_attribs('secret.txt', expected_exec_bit=0)
-
- # TODO(thakis): This currently fails with make.
- if test.format != 'make':
- test.built_file_must_match(
- 'resource_rule.app/Contents/Resources/secret.txt', 'ABC\n', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that compile-time flags work.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
- CHDIR = 'cflags'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', test.ALL, chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that CLANG_CXX_LANGUAGE_STANDARD works.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['make', 'ninja', 'xcode'])
-
- test.run_gyp('clang-cxx-language-standard.gyp',
- chdir='clang-cxx-language-standard')
-
- test.build('clang-cxx-language-standard.gyp', test.ALL,
- chdir='clang-cxx-language-standard')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that CLANG_CXX_LIBRARY works.
-"""
-
-import TestGyp
-import TestMac
-
-import os
-import sys
-
-if sys.platform == 'darwin':
- # Xcode 4.2 on OS X 10.6 doesn't install the libc++ headers, don't run this
- # test there.
- if TestMac.Xcode.Version() <= '0420':
- sys.exit(0)
-
- test = TestGyp.TestGyp(formats=['make', 'ninja', 'xcode'])
- test.run_gyp('clang-cxx-library.gyp', chdir='clang-cxx-library')
- test.build('clang-cxx-library.gyp', test.ALL, chdir='clang-cxx-library')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that 'copies' with app bundles are handled correctly.
-"""
-
-import TestGyp
-
-import os
-import sys
-import time
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('framework.gyp', chdir='framework')
-
- test.build('framework.gyp', 'copy_target', chdir='framework')
-
- # Check that the copy succeeded.
- test.built_file_must_exist(
- 'Test Framework.framework/foo/Dependency Bundle.framework',
- chdir='framework')
- test.built_file_must_exist(
- 'Test Framework.framework/foo/Dependency Bundle.framework/Versions/A',
- chdir='framework')
- test.built_file_must_exist(
- 'Test Framework.framework/Versions/A/Libraries/empty.c',
- chdir='framework')
-
-
- # Check that rebuilding the target a few times works.
- dep_bundle = test.built_file_path('Dependency Bundle.framework',
- chdir='framework')
- mtime = os.path.getmtime(dep_bundle)
- atime = os.path.getatime(dep_bundle)
- for i in range(3):
- os.utime(dep_bundle, (atime + i * 1000, mtime + i * 1000))
- test.build('framework.gyp', 'copy_target', chdir='framework')
-
-
- # Check that actions ran.
- test.built_file_must_exist('action_file', chdir='framework')
-
- # Test that a copy with the "Code Sign on Copy" flag on succeeds.
- test.build('framework.gyp', 'copy_target_code_sign', chdir='framework')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that dylibs can be copied into app bundles.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp', chdir='copy-dylib')
-
- test.build('test.gyp', 'test_app', chdir='copy-dylib')
-
- test.built_file_must_exist(
- 'Test App.app/Contents/Resources/libmy_dylib.dylib', chdir='copy-dylib')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Tests things related to debug information generation.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp', chdir='debuginfo')
-
- test.build('test.gyp', test.ALL, chdir='debuginfo')
-
- test.built_file_must_exist('libnonbundle_shared_library.dylib.dSYM',
- chdir='debuginfo')
- test.built_file_must_exist('nonbundle_loadable_module.so.dSYM',
- chdir='debuginfo')
- test.built_file_must_exist('nonbundle_executable.dSYM',
- chdir='debuginfo')
-
- test.built_file_must_exist('bundle_shared_library.framework.dSYM',
- chdir='debuginfo')
- test.built_file_must_exist('bundle_loadable_module.bundle.dSYM',
- chdir='debuginfo')
- test.built_file_must_exist('My App.app.dSYM',
- chdir='debuginfo')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a dependency on a bundle causes the whole bundle to be built.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp', chdir='depend-on-bundle')
-
- test.build('test.gyp', 'dependent_on_bundle', chdir='depend-on-bundle')
-
- # Binary itself.
- test.built_file_must_exist('dependent_on_bundle', chdir='depend-on-bundle')
-
- # Bundle dependency.
- test.built_file_must_exist(
- 'my_bundle.framework/Versions/A/my_bundle',
- chdir='depend-on-bundle')
- test.built_file_must_exist( # package_framework
- 'my_bundle.framework/my_bundle',
- chdir='depend-on-bundle')
- test.built_file_must_exist( # plist
- 'my_bundle.framework/Versions/A/Resources/Info.plist',
- chdir='depend-on-bundle')
- test.built_file_must_exist(
- 'my_bundle.framework/Versions/A/Resources/English.lproj/' # Resources
- 'InfoPlist.strings',
- chdir='depend-on-bundle')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that MACOSX_DEPLOYMENT_TARGET works.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['make', 'ninja', 'xcode'])
-
- test.run_gyp('deployment-target.gyp', chdir='deployment-target')
-
- test.build('deployment-target.gyp', test.ALL, chdir='deployment-target')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verify that it is possible to build an object that depends on a
-PrivateFramework.
-"""
-
-import os
-import sys
-import TestGyp
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'framework-dirs'
- test.run_gyp('framework-dirs.gyp', chdir=CHDIR)
- test.build('framework-dirs.gyp', 'calculate', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that mac_framework_headers works properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- # TODO(thakis): Make this work with ninja, make. http://crbug.com/129013
- test = TestGyp.TestGyp(formats=['xcode'])
-
- CHDIR = 'framework-headers'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- # Test that headers are installed for frameworks
- test.build('test.gyp', 'test_framework_headers_framework', chdir=CHDIR)
-
- test.built_file_must_exist(
- 'TestFramework.framework/Versions/A/TestFramework', chdir=CHDIR)
-
- test.built_file_must_exist(
- 'TestFramework.framework/Versions/A/Headers/myframework.h', chdir=CHDIR)
-
- # Test that headers are installed for static libraries.
- test.build('test.gyp', 'test_framework_headers_static', chdir=CHDIR)
-
- test.built_file_must_exist('libTestLibrary.a', chdir=CHDIR)
-
- test.built_file_must_exist('include/myframework.h', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that app bundles are built correctly.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-
-def ls(path):
- '''Returns a list of all files in a directory, relative to the directory.'''
- result = []
- for dirpath, _, files in os.walk(path):
- for f in files:
- result.append(os.path.join(dirpath, f)[len(path) + 1:])
- return result
-
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('framework.gyp', chdir='framework')
-
- test.build('framework.gyp', 'test_framework', chdir='framework')
-
- # Binary
- test.built_file_must_exist(
- 'Test Framework.framework/Versions/A/Test Framework',
- chdir='framework')
-
- # Info.plist
- info_plist = test.built_file_path(
- 'Test Framework.framework/Versions/A/Resources/Info.plist',
- chdir='framework')
- test.must_exist(info_plist)
- test.must_contain(info_plist, 'com.yourcompany.Test_Framework')
-
- # Resources
- test.built_file_must_exist(
- 'Test Framework.framework/Versions/A/Resources/English.lproj/'
- 'InfoPlist.strings',
- chdir='framework')
-
- # Symlinks created by packaging process
- test.built_file_must_exist('Test Framework.framework/Versions/Current',
- chdir='framework')
- test.built_file_must_exist('Test Framework.framework/Resources',
- chdir='framework')
- test.built_file_must_exist('Test Framework.framework/Test Framework',
- chdir='framework')
- # PkgInfo.
- test.built_file_must_not_exist(
- 'Test Framework.framework/Versions/A/Resources/PkgInfo',
- chdir='framework')
-
- # Check that no other files get added to the bundle.
- if set(ls(test.built_file_path('Test Framework.framework',
- chdir='framework'))) != \
- set(['Versions/A/Test Framework',
- 'Versions/A/Resources/Info.plist',
- 'Versions/A/Resources/English.lproj/InfoPlist.strings',
- 'Test Framework',
- 'Versions/A/Libraries/empty.c', # Written by a gyp action.
- ]):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that the global xcode_settings processing doesn't throw.
-Regression test for http://crbug.com/109163
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- # The xcode-ninja generator handles gypfiles which are not at the
- # project root incorrectly.
- # cf. https://code.google.com/p/gyp/issues/detail?id=460
- if test.format == 'xcode-ninja':
- test.skip_test()
-
- test.run_gyp('src/dir2/dir2.gyp', chdir='global-settings', depth='src')
- # run_gyp shouldn't throw.
-
- # Check that BUILT_PRODUCTS_DIR was set correctly, too.
- test.build('dir2/dir2.gyp', 'dir2_target', chdir='global-settings/src',
- SYMROOT='../build')
- test.built_file_must_exist('file.txt', chdir='global-settings/src')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies libraries (in identical-names) are properly handeled by xcode.
-
-The names for all libraries participating in this build are:
-libtestlib.a - identical-name/testlib
-libtestlib.a - identical-name/proxy/testlib
-libproxy.a - identical-name/proxy
-The first two libs produce a hash collision in Xcode when Gyp is executed,
-because they have the same name and would be copied to the same directory with
-Xcode default settings.
-For this scenario to work one needs to change the Xcode variables SYMROOT and
-CONFIGURATION_BUILD_DIR. Setting these to per-lib-unique directories, avoids
-copying the libs into the same directory.
-
-The test consists of two steps. The first one verifies that by setting both
-vars, there is no hash collision anymore during Gyp execution and that the libs
-can actually be be built. The second one verifies that there is still a hash
-collision if the vars are not set and thus the current behavior is preserved.
-"""
-
-import TestGyp
-
-import sys
-
-def IgnoreOutput(string, expected_string):
- return True
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['xcode'])
-
-
- test.run_gyp('test.gyp', chdir='identical-name')
- test.build('test.gyp', test.ALL, chdir='identical-name')
-
- test.run_gyp('test-should-fail.gyp', chdir='identical-name')
- test.built_file_must_not_exist('test-should-fail.xcodeproj')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies the Info.plist preprocessor functionality.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'infoplist-process'
- INFO_PLIST_PATH = 'Test.app/Contents/Info.plist'
-
- # First process both keys.
- test.set_configuration('One')
- test.run_gyp('test1.gyp', chdir=CHDIR)
- test.build('test1.gyp', test.ALL, chdir=CHDIR)
- info_plist = test.built_file_path(INFO_PLIST_PATH, chdir=CHDIR)
- test.must_exist(info_plist)
- test.must_contain(info_plist, 'Foo')
- test.must_contain(info_plist, 'Bar')
-
- # Then process a single key.
- test.set_configuration('Two')
- test.run_gyp('test2.gyp', chdir=CHDIR)
- test.build('test2.gyp', chdir=CHDIR)
- info_plist = test.built_file_path(INFO_PLIST_PATH, chdir=CHDIR)
- test.must_exist(info_plist)
- test.must_contain(info_plist, 'com.google.Test') # Normal expansion works.
- test.must_contain(info_plist, 'Foo (Bar)')
- test.must_contain(info_plist, 'PROCESSED_KEY2')
-
- # Then turn off the processor.
- test.set_configuration('Three')
- test.run_gyp('test3.gyp', chdir=CHDIR)
- test.build('test3.gyp', chdir=CHDIR)
- info_plist = test.built_file_path('Test App.app/Contents/Info.plist',
- chdir=CHDIR)
- test.must_exist(info_plist)
- test.must_contain(info_plist, 'com.google.Test') # Normal expansion works.
- test.must_contain(info_plist, 'PROCESSED_KEY1')
- test.must_contain(info_plist, 'PROCESSED_KEY2')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that LD_DYLIB_INSTALL_NAME and DYLIB_INSTALL_NAME_BASE are handled
-correctly.
-"""
-
-import TestGyp
-
-import re
-import subprocess
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'installname'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', test.ALL, chdir=CHDIR)
-
- def GetInstallname(p):
- p = test.built_file_path(p, chdir=CHDIR)
- r = re.compile(r'cmd LC_ID_DYLIB.*?name (.*?) \(offset \d+\)', re.DOTALL)
- proc = subprocess.Popen(['otool', '-l', p], stdout=subprocess.PIPE)
- o = proc.communicate()[0]
- assert not proc.returncode
- m = r.search(o)
- assert m
- return m.group(1)
-
- if (GetInstallname('libdefault_installname.dylib') !=
- '/usr/local/lib/libdefault_installname.dylib'):
- test.fail_test()
-
- if (GetInstallname('My Framework.framework/My Framework') !=
- '/Library/Frameworks/My Framework.framework/'
- 'Versions/A/My Framework'):
- test.fail_test()
-
- if (GetInstallname('libexplicit_installname.dylib') !=
- 'Trapped in a dynamiclib factory'):
- test.fail_test()
-
- if (GetInstallname('libexplicit_installname_base.dylib') !=
- '@executable_path/../../../libexplicit_installname_base.dylib'):
- test.fail_test()
-
- if (GetInstallname('My Other Framework.framework/My Other Framework') !=
- '@executable_path/../../../My Other Framework.framework/'
- 'Versions/A/My Other Framework'):
- test.fail_test()
-
- if (GetInstallname('libexplicit_installname_with_base.dylib') !=
- '/usr/local/lib/libexplicit_installname_with_base.dylib'):
- test.fail_test()
-
- if (GetInstallname('libexplicit_installname_with_explicit_base.dylib') !=
- '@executable_path/../libexplicit_installname_with_explicit_base.dylib'):
- test.fail_test()
-
- if (GetInstallname('libboth_base_and_installname.dylib') !=
- 'Still trapped in a dynamiclib factory'):
- test.fail_test()
-
- if (GetInstallname('install_name_with_info_plist.framework/'
- 'install_name_with_info_plist') !=
- '/Library/Frameworks/install_name_with_info_plist.framework/'
- 'Versions/A/install_name_with_info_plist'):
- test.fail_test()
-
- if ('DYLIB_INSTALL_NAME_BASE:standardizepath: command not found' in
- test.stdout()):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that OTHER_LDFLAGS is passed to libtool.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'],
- match = lambda a, b: True)
-
- build_error_code = {
- 'xcode': [1, 65], # 1 for xcode 3, 65 for xcode 4 (see `man sysexits`)
- 'make': 2,
- 'ninja': 1,
- 'xcode-ninja': [1, 65],
- }[test.format]
-
- CHDIR = 'ldflags-libtool'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', 'ldflags_passed_to_libtool', chdir=CHDIR,
- status=build_error_code)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that filenames passed to various linker flags are converted into
-build-directory relative paths correctly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- # The xcode-ninja generator handles gypfiles which are not at the
- # project root incorrectly.
- # cf. https://code.google.com/p/gyp/issues/detail?id=460
- if test.format == 'xcode-ninja':
- test.skip_test()
-
- CHDIR = 'ldflags'
- test.run_gyp('subdirectory/test.gyp', chdir=CHDIR)
-
- test.build('subdirectory/test.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
-
-
-# These flags from `man ld` couldl show up in OTHER_LDFLAGS and need path
-# translation.
-#
-# Done:
-# -exported_symbols_list filename
-# -unexported_symbols_list file
-# -reexported_symbols_list file
-# -sectcreate segname sectname file
-#
-# Will be done on demand:
-# -weak_library path_to_library
-# -reexport_library path_to_library
-# -lazy_library path_to_library
-# -upward_library path_to_library
-# -syslibroot rootdir
-# -framework name[,suffix]
-# -weak_framework name[,suffix]
-# -reexport_framework name[,suffix]
-# -lazy_framework name[,suffix]
-# -upward_framework name[,suffix]
-# -force_load path_to_archive
-# -filelist file[,dirname]
-# -dtrace file
-# -order_file file # should use ORDER_FILE
-# -exported_symbols_order file
-# -bundle_loader executable # should use BUNDLE_LOADER
-# -alias_list filename
-# -seg_addr_table filename
-# -dylib_file install_name:file_name
-# -interposable_list filename
-# -object_path_lto filename
-#
-#
-# obsolete:
-# -sectorder segname sectname orderfile
-# -seg_addr_table_filename path
-#
-#
-# ??:
-# -map map_file_path
-# -sub_library library_name
-# -sub_umbrella framework_name
+++ /dev/null
-#!/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.
-
-"""
-Verifies libraries (in link_settings) are properly found.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- # The xcode-ninja generator handles gypfiles which are not at the
- # project root incorrectly.
- # cf. https://code.google.com/p/gyp/issues/detail?id=460
- if test.format == 'xcode-ninja':
- test.skip_test()
-
- test.run_gyp('subdir/test.gyp', chdir='libraries')
-
- test.build('subdir/test.gyp', test.ALL, chdir='libraries')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies libraries have proper mtime.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'libtool-zero'
-
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', 'mylib', chdir=CHDIR)
-
- test.up_to_date('test.gyp', 'mylib', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Tests that loadable_modules don't collide when using the same name with
-different file extensions.
-"""
-
-import TestGyp
-
-import os
-import struct
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'loadable-module-bundle-product-extension'
- test.run_gyp('test.gyp',
- '-G', 'xcode_ninja_target_pattern=^.*$',
- chdir=CHDIR)
-
- test.build('test.gyp', test.ALL, chdir=CHDIR)
-
- test.must_exist(test.built_file_path('Collide.foo', chdir=CHDIR))
- test.must_exist(test.built_file_path('Collide.bar', chdir=CHDIR))
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Tests that a loadable_module target is built correctly.
-"""
-
-import TestGyp
-
-import os
-import struct
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'loadable-module'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', test.ALL, chdir=CHDIR)
-
- # Binary.
- binary = test.built_file_path(
- 'test_loadable_module.plugin/Contents/MacOS/test_loadable_module',
- chdir=CHDIR)
- test.must_exist(binary)
- MH_BUNDLE = 8
- if struct.unpack('4I', open(binary, 'rb').read(16))[3] != MH_BUNDLE:
- test.fail_test()
-
- # Info.plist.
- info_plist = test.built_file_path(
- 'test_loadable_module.plugin/Contents/Info.plist', chdir=CHDIR)
- test.must_exist(info_plist)
- test.must_contain(info_plist, """
- <key>CFBundleExecutable</key>
- <string>test_loadable_module</string>
-""")
-
- # PkgInfo.
- test.built_file_must_not_exist(
- 'test_loadable_module.plugin/Contents/PkgInfo', chdir=CHDIR)
- test.built_file_must_not_exist(
- 'test_loadable_module.plugin/Contents/Resources', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that an Info.plist with CFBundleSignature works.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp', chdir='missing-cfbundlesignature')
- test.build('test.gyp', test.ALL, chdir='missing-cfbundlesignature')
-
- test.built_file_must_match('mytarget.app/Contents/PkgInfo', 'APPL????',
- chdir='missing-cfbundlesignature')
-
- test.built_file_must_match('myothertarget.app/Contents/PkgInfo', 'APPL????',
- chdir='missing-cfbundlesignature')
-
- test.built_file_must_match('thirdtarget.app/Contents/PkgInfo', 'APPL????',
- chdir='missing-cfbundlesignature')
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that list xcode_settings are flattened before being exported to the
-environment.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'non-strs-flattened-to-env'
- INFO_PLIST_PATH = 'Test.app/Contents/Info.plist'
-
- test.run_gyp('test.gyp', chdir=CHDIR)
- test.build('test.gyp', test.ALL, chdir=CHDIR)
- info_plist = test.built_file_path(INFO_PLIST_PATH, chdir=CHDIR)
- test.must_exist(info_plist)
- test.must_contain(info_plist, '''\
-\t<key>My Variable</key>
-\t<string>some expansion</string>''')
- test.must_contain(info_plist, '''\
-\t<key>CFlags</key>
-\t<string>-fstack-protector-all -fno-strict-aliasing -DS="A Space"</string>''')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that ARC objc settings are handled correctly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- # set |match| to ignore build stderr output.
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'],
- match = lambda a, b: True)
-
- CHDIR = 'objc-arc'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', 'arc_enabled', chdir=CHDIR)
- test.build('test.gyp', 'arc_disabled', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that GC objc settings are handled correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import sys
-
-if sys.platform == 'darwin':
- # set |match| to ignore build stderr output.
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'],
- match = lambda a, b: True)
-
- # Xcode 5.1 removed support for garbage-collection:
- # error: garbage collection is no longer supported
- if TestMac.Xcode.Version() < '0510':
-
- CHDIR = 'objc-gc'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- build_error_code = {
- 'xcode': [1, 65], # 1 for xcode 3, 65 for xcode 4 (see `man sysexits`)
- 'make': 2,
- 'ninja': 1,
- }[test.format]
-
- test.build('test.gyp', 'gc_exe_fails', chdir=CHDIR, status=build_error_code)
- test.build(
- 'test.gyp', 'gc_off_exe_req_lib', chdir=CHDIR, status=build_error_code)
-
- test.build('test.gyp', 'gc_req_exe', chdir=CHDIR)
- test.run_built_executable('gc_req_exe', chdir=CHDIR, stdout="gc on: 1\n")
-
- test.build('test.gyp', 'gc_exe_req_lib', chdir=CHDIR)
- test.run_built_executable(
- 'gc_exe_req_lib', chdir=CHDIR, stdout="gc on: 1\n")
-
- test.build('test.gyp', 'gc_exe', chdir=CHDIR)
- test.run_built_executable('gc_exe', chdir=CHDIR, stdout="gc on: 1\n")
-
- test.build('test.gyp', 'gc_off_exe', chdir=CHDIR)
- test.run_built_executable('gc_off_exe', chdir=CHDIR, stdout="gc on: 0\n")
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a postbuild copying a dependend framework into an app bundle is
-rerun if the resources in the framework change.
-"""
-
-import TestGyp
-
-import os.path
-import sys
-
-if sys.platform == 'darwin':
- # TODO(thakis): Make this pass with the make generator, http://crbug.com/95529
- test = TestGyp.TestGyp(formats=['ninja', 'xcode'])
-
- CHDIR = 'postbuild-copy-bundle'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- app_bundle_dir = test.built_file_path('Test App.app', chdir=CHDIR)
- bundled_framework_dir = os.path.join(
- app_bundle_dir, 'Contents', 'My Framework.framework', 'Resources')
- final_plist_path = os.path.join(bundled_framework_dir, 'Info.plist')
- final_resource_path = os.path.join(bundled_framework_dir, 'resource_file.sb')
- final_copies_path = os.path.join(
- app_bundle_dir, 'Contents', 'My Framework.framework', 'Versions', 'A',
- 'Libraries', 'copied.txt')
-
- # Check that the dependency was built and copied into the app bundle:
- test.build('test.gyp', 'test_app', chdir=CHDIR)
- test.must_exist(final_resource_path)
- test.must_match(final_resource_path,
- 'This is included in the framework bundle.\n')
-
- test.must_exist(final_plist_path)
- test.must_contain(final_plist_path, '''\
-\t<key>RandomKey</key>
-\t<string>RandomValue</string>''')
-
- # Touch the dependency's bundle resource, and check that the modification
- # makes it all the way into the app bundle:
- test.sleep()
- test.write('postbuild-copy-bundle/resource_file.sb', 'New text\n')
- test.build('test.gyp', 'test_app', chdir=CHDIR)
-
- test.must_exist(final_resource_path)
- test.must_match(final_resource_path, 'New text\n')
-
- # Check the same for the plist file.
- test.sleep()
- contents = test.read('postbuild-copy-bundle/Framework-Info.plist')
- contents = contents.replace('RandomValue', 'NewRandomValue')
- test.write('postbuild-copy-bundle/Framework-Info.plist', contents)
- test.build('test.gyp', 'test_app', chdir=CHDIR)
-
- test.must_exist(final_plist_path)
- test.must_contain(final_plist_path, '''\
-\t<key>RandomKey</key>
-\t<string>NewRandomValue</string>''')
-
- # Check the same for the copies section, test for http://crbug.com/157077
- test.sleep()
- contents = test.read('postbuild-copy-bundle/copied.txt')
- contents = contents.replace('old', 'new')
- test.write('postbuild-copy-bundle/copied.txt', contents)
- test.build('test.gyp', 'test_app', chdir=CHDIR)
-
- test.must_exist(final_copies_path)
- test.must_contain(final_copies_path, 'new copied file')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a postbuild invoking |defaults| works.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'postbuild-defaults'
- test.run_gyp('test.gyp', chdir=CHDIR)
- test.build('test.gyp', test.ALL, chdir=CHDIR)
-
- result_file = test.built_file_path('result', chdir=CHDIR)
- test.must_exist(result_file)
- test.must_contain(result_file, '''\
-Test
-${PRODUCT_NAME}
-''')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies that a failing postbuild step lets the build fail.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- # set |match| to ignore build stderr output.
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'],
- match = lambda a, b: True)
-
- test.run_gyp('test.gyp', chdir='postbuild-fail')
-
- build_error_code = {
- 'xcode': [1, 65], # 1 for xcode 3, 65 for xcode 4 (see `man sysexits`)
- 'make': 2,
- 'ninja': 1,
- 'xcode-ninja': [1, 65],
- }[test.format]
-
-
- # If a postbuild fails, all postbuilds should be re-run on the next build.
- # In Xcode 3, even if the first postbuild fails the other postbuilds were
- # still executed. In Xcode 4, postbuilds are stopped after the first
- # failing postbuild. This test checks for the Xcode 4 behavior.
-
- # Ignore this test on Xcode 3.
- import subprocess
- job = subprocess.Popen(['xcodebuild', '-version'],
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT)
- out, err = job.communicate()
- if job.returncode != 0:
- print out
- raise Exception('Error %d running xcodebuild' % job.returncode)
- if out.startswith('Xcode 3.'):
- test.pass_test()
-
- # Non-bundles
- test.build('test.gyp', 'nonbundle', chdir='postbuild-fail',
- status=build_error_code)
- test.built_file_must_not_exist('static_touch',
- chdir='postbuild-fail')
- # Check for non-up-to-date-ness by checking if building again produces an
- # error.
- test.build('test.gyp', 'nonbundle', chdir='postbuild-fail',
- status=build_error_code)
-
-
- # Bundles
- test.build('test.gyp', 'bundle', chdir='postbuild-fail',
- status=build_error_code)
- test.built_file_must_not_exist('dynamic_touch',
- chdir='postbuild-fail')
- # Check for non-up-to-date-ness by checking if building again produces an
- # error.
- test.build('test.gyp', 'bundle', chdir='postbuild-fail',
- status=build_error_code)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a postbuild work in projects with multiple configurations.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'postbuild-multiple-configurations'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- for configuration in ['Debug', 'Release']:
- test.set_configuration(configuration)
- test.build('test.gyp', test.ALL, chdir=CHDIR)
- test.built_file_must_exist('postbuild-file', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a postbuilds on static libraries work, and that sourceless
-libraries don't cause failures at gyp time.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['make', 'xcode'])
-
- CHDIR = 'postbuild-static-library'
- test.run_gyp('test.gyp', chdir=CHDIR)
- test.build('test.gyp', 'my_lib', chdir=CHDIR)
- # Building my_sourceless_lib doesn't work with make. gyp should probably
- # forbid sourceless static libraries, since they're pretty pointless.
- # But they shouldn't cause gyp time exceptions.
-
- test.built_file_must_exist('postbuild-file', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies that postbuild steps work.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp', chdir='postbuilds')
-
- test.build('test.gyp', test.ALL, chdir='postbuilds')
-
- # See comment in test/subdirectory/gyptest-subdir-default.py
- if test.format == 'xcode':
- chdir = 'postbuilds/subdirectory'
- else:
- chdir = 'postbuilds'
-
- # Created by the postbuild scripts
- test.built_file_must_exist('el.a_touch',
- type=test.STATIC_LIB,
- chdir='postbuilds')
- test.built_file_must_exist('el.a_gyp_touch',
- type=test.STATIC_LIB,
- chdir='postbuilds')
- test.built_file_must_exist('nest_el.a_touch',
- type=test.STATIC_LIB,
- chdir=chdir)
- test.built_file_must_exist(
- 'dyna.framework/Versions/A/dyna_touch',
- chdir='postbuilds')
- test.built_file_must_exist(
- 'dyna.framework/Versions/A/dyna_gyp_touch',
- chdir='postbuilds')
- test.built_file_must_exist(
- 'nest_dyna.framework/Versions/A/nest_dyna_touch',
- chdir=chdir)
- test.built_file_must_exist('dyna_standalone.dylib_gyp_touch',
- type=test.SHARED_LIB,
- chdir='postbuilds')
- test.built_file_must_exist('copied_file.txt', chdir='postbuilds')
- test.built_file_must_exist('copied_file_2.txt', chdir=chdir)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that GCC_PREFIX_HEADER works.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
- test.run_gyp('test.gyp', chdir='prefixheader')
-
- test.build('test.gyp', test.ALL, chdir='prefixheader')
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that app bundles are rebuilt correctly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'rebuild'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', 'test_app', chdir=CHDIR)
-
- # Touch a source file, rebuild, and check that the app target is up-to-date.
- test.touch('rebuild/main.c')
- test.build('test.gyp', 'test_app', chdir=CHDIR)
-
- test.up_to_date('test.gyp', 'test_app', chdir=CHDIR)
-
- # Xcode runs postbuilds on every build, so targets with postbuilds are
- # never marked as up_to_date.
- if test.format != 'xcode':
- # Same for a framework bundle.
- test.build('test.gyp', 'test_framework_postbuilds', chdir=CHDIR)
- test.up_to_date('test.gyp', 'test_framework_postbuilds', chdir=CHDIR)
-
- # Test that an app bundle with a postbuild that touches the app binary needs
- # to be built only once.
- test.build('test.gyp', 'test_app_postbuilds', chdir=CHDIR)
- test.up_to_date('test.gyp', 'test_app_postbuilds', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that LD_DYLIB_INSTALL_NAME and DYLIB_INSTALL_NAME_BASE are handled
-correctly.
-"""
-
-import TestGyp
-
-import re
-import subprocess
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'rpath'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- test.build('test.gyp', test.ALL, chdir=CHDIR)
-
- def GetRpaths(p):
- p = test.built_file_path(p, chdir=CHDIR)
- r = re.compile(r'cmd LC_RPATH.*?path (.*?) \(offset \d+\)', re.DOTALL)
- proc = subprocess.Popen(['otool', '-l', p], stdout=subprocess.PIPE)
- o = proc.communicate()[0]
- assert not proc.returncode
- return r.findall(o)
-
- if GetRpaths('libdefault_rpath.dylib') != []:
- test.fail_test()
-
- if GetRpaths('libexplicit_rpath.dylib') != ['@executable_path/.']:
- test.fail_test()
-
- if (GetRpaths('libexplicit_rpaths_escaped.dylib') !=
- ['First rpath', 'Second rpath']):
- test.fail_test()
-
- if GetRpaths('My Framework.framework/My Framework') != ['@loader_path/.']:
- test.fail_test()
-
- if GetRpaths('executable') != ['@executable_path/.']:
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that setting SDKROOT works.
-"""
-
-import TestGyp
-
-import os
-import subprocess
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- def GetSDKPath(sdk):
- """Return SDKROOT if the SDK version |sdk| is installed or empty string."""
- DEVNULL = open(os.devnull, 'wb')
- try:
- proc = subprocess.Popen(
- ['xcodebuild', '-version', '-sdk', 'macosx' + sdk, 'Path'],
- stdout=subprocess.PIPE, stderr=DEVNULL)
- return proc.communicate()[0].rstrip('\n')
- finally:
- DEVNULL.close()
-
- def SelectSDK():
- """Select the oldest SDK installed (greater than 10.6)."""
- for sdk in ['10.6', '10.7', '10.8', '10.9']:
- path = GetSDKPath(sdk)
- if path:
- return True, sdk, path
- return False, '', ''
-
- # Make sure this works on the bots, which only have the 10.6 sdk, and on
- # dev machines which usually don't have the 10.6 sdk.
- sdk_found, sdk, sdk_path = SelectSDK()
- if not sdk_found:
- test.fail_test()
-
- test.write('sdkroot/test.gyp', test.read('sdkroot/test.gyp') % sdk)
-
- test.run_gyp('test.gyp', '-D', 'sdk_path=%s' % sdk_path,
- chdir='sdkroot')
- test.build('test.gyp', test.ALL, chdir='sdkroot')
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that bundles that have no 'sources' (pure resource containers) work.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp', chdir='sourceless-module')
-
- # Just needs to build without errors.
- test.build('test.gyp', 'empty_bundle', chdir='sourceless-module')
- test.built_file_must_not_exist(
- 'empty_bundle.bundle', chdir='sourceless-module')
-
- # Needs to build, and contain a resource.
- test.build('test.gyp', 'resource_bundle', chdir='sourceless-module')
-
- test.built_file_must_exist(
- 'resource_bundle.bundle/Contents/Resources/foo.manifest',
- chdir='sourceless-module')
- test.built_file_must_not_exist(
- 'resource_bundle.bundle/Contents/MacOS/resource_bundle',
- chdir='sourceless-module')
-
- # Build an app containing an actionless bundle.
- test.build(
- 'test.gyp',
- 'bundle_dependent_on_resource_bundle_no_actions',
- chdir='sourceless-module')
-
- test.built_file_must_exist(
- 'bundle_dependent_on_resource_bundle_no_actions.app/Contents/Resources/'
- 'mac_resource_bundle_no_actions.bundle/Contents/Resources/empty.txt',
- chdir='sourceless-module')
-
- # Needs to build and cause the bundle to be built.
- test.build(
- 'test.gyp', 'dependent_on_resource_bundle', chdir='sourceless-module')
-
- test.built_file_must_exist(
- 'resource_bundle.bundle/Contents/Resources/foo.manifest',
- chdir='sourceless-module')
- test.built_file_must_not_exist(
- 'resource_bundle.bundle/Contents/MacOS/resource_bundle',
- chdir='sourceless-module')
-
- # TODO(thakis): shared_libraries that have no sources but depend on static
- # libraries currently only work with the ninja generator. This is used by
- # chrome/mac's components build.
- if test.format == 'ninja':
- # Check that an executable depending on a resource framework links fine too.
- test.build(
- 'test.gyp', 'dependent_on_resource_framework', chdir='sourceless-module')
-
- test.built_file_must_exist(
- 'resource_framework.framework/Resources/foo.manifest',
- chdir='sourceless-module')
- test.built_file_must_exist(
- 'resource_framework.framework/resource_framework',
- chdir='sourceless-module')
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that the default STRIP_STYLEs match between different generators.
-"""
-
-import TestGyp
-
-import re
-import subprocess
-import sys
-import time
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR='strip'
- test.run_gyp('test-defaults.gyp', chdir=CHDIR)
-
- test.build('test-defaults.gyp', test.ALL, chdir=CHDIR)
-
- # Lightweight check if stripping was done.
- def OutPath(s):
- return test.built_file_path(s, chdir=CHDIR)
-
- def CheckNsyms(p, o_expected):
- proc = subprocess.Popen(['nm', '-aU', p], stdout=subprocess.PIPE)
- o = proc.communicate()[0]
-
- # Filter out mysterious "00 0000 OPT radr://5614542" symbol which
- # is apparently only printed on the bots (older toolchain?).
- # Yes, "radr", not "rdar".
- o = ''.join(filter(lambda s: 'radr://5614542' not in s, o.splitlines(True)))
-
- o = o.replace('A', 'T')
- o = re.sub(r'^[a-fA-F0-9]+', 'XXXXXXXX', o, flags=re.MULTILINE)
- assert not proc.returncode
- if o != o_expected:
- print 'Stripping: Expected symbols """\n%s""", got """\n%s"""' % (
- o_expected, o)
- test.fail_test()
-
- CheckNsyms(OutPath('libsingle_dylib.dylib'),
-"""\
-XXXXXXXX S _ci
-XXXXXXXX S _i
-XXXXXXXX T _the_function
-XXXXXXXX t _the_hidden_function
-XXXXXXXX T _the_used_function
-XXXXXXXX T _the_visible_function
-""")
- CheckNsyms(OutPath('single_so.so'),
-"""\
-XXXXXXXX S _ci
-XXXXXXXX S _i
-XXXXXXXX T _the_function
-XXXXXXXX t _the_hidden_function
-XXXXXXXX T _the_used_function
-XXXXXXXX T _the_visible_function
-""")
- CheckNsyms(OutPath('single_exe'),
-"""\
-XXXXXXXX T __mh_execute_header
-""")
-
- CheckNsyms(test.built_file_path(
- 'bundle_dylib.framework/Versions/A/bundle_dylib', chdir=CHDIR),
-"""\
-XXXXXXXX S _ci
-XXXXXXXX S _i
-XXXXXXXX T _the_function
-XXXXXXXX t _the_hidden_function
-XXXXXXXX T _the_used_function
-XXXXXXXX T _the_visible_function
-""")
- CheckNsyms(test.built_file_path(
- 'bundle_so.bundle/Contents/MacOS/bundle_so', chdir=CHDIR),
-"""\
-XXXXXXXX S _ci
-XXXXXXXX S _i
-XXXXXXXX T _the_function
-XXXXXXXX T _the_used_function
-XXXXXXXX T _the_visible_function
-""")
- CheckNsyms(test.built_file_path(
- 'bundle_exe.app/Contents/MacOS/bundle_exe', chdir=CHDIR),
-"""\
-XXXXXXXX T __mh_execute_header
-""")
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that stripping works.
-"""
-
-import TestGyp
-import TestMac
-
-import re
-import subprocess
-import sys
-import time
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp', chdir='strip')
-
- test.build('test.gyp', test.ALL, chdir='strip')
-
- # Lightweight check if stripping was done.
- def OutPath(s):
- return test.built_file_path(s, type=test.SHARED_LIB, chdir='strip')
-
- def CheckNsyms(p, n_expected):
- r = re.compile(r'nsyms\s+(\d+)')
- o = subprocess.check_output(['otool', '-l', p])
- m = r.search(o)
- n = int(m.group(1))
- if n != n_expected:
- print 'Stripping: Expected %d symbols, got %d' % (n_expected, n)
- test.fail_test()
-
- # Starting with Xcode 5.0, clang adds an additional symbols to the compiled
- # file when using a relative path to the input file. So when using ninja
- # with Xcode 5.0 or higher, take this additional symbol into consideration
- # for unstripped builds (it is stripped by all strip commands).
- expected_extra_symbol_count = 0
- if test.format in ['ninja', 'xcode-ninja'] \
- and TestMac.Xcode.Version() >= '0500':
- expected_extra_symbol_count = 1
-
- # The actual numbers here are not interesting, they just need to be the same
- # in both the xcode and the make build.
- CheckNsyms(OutPath('no_postprocess'), 29 + expected_extra_symbol_count)
- CheckNsyms(OutPath('no_strip'), 29 + expected_extra_symbol_count)
- CheckNsyms(OutPath('strip_all'), 0)
- CheckNsyms(OutPath('strip_nonglobal'), 6)
- CheckNsyms(OutPath('strip_debugging'), 7)
- CheckNsyms(OutPath('strip_all_custom_flags'), 0)
- CheckNsyms(test.built_file_path(
- 'strip_all_bundle.framework/Versions/A/strip_all_bundle', chdir='strip'),
- 0)
- CheckNsyms(OutPath('strip_save'), 7)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that a swift framework builds correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import collections
-import sys
-import subprocess
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['xcode'])
-
- # Ensures that the given symbol is present in the given file, by running nm.
- def CheckHasSymbolName(path, symbol):
- output = subprocess.check_output(['nm', '-j', path])
- idx = output.find(symbol)
- if idx == -1:
- print 'Swift: Could not find symobl: %s' % symbol
- test.fail_test()
-
- test_cases = []
-
- # Run this for iOS on XCode 6.0 or greater
- if TestMac.Xcode.Version() >= '0600':
- test_cases.append(('Default', 'iphoneos'))
- test_cases.append(('Default', 'iphonesimulator'))
-
- # Run it for Mac on XCode 6.1 or greater
- if TestMac.Xcode.Version() >= '0610':
- test_cases.append(('Default', None))
-
- # Generate the project.
- test.run_gyp('test.gyp', chdir='swift-library')
-
- # Build and verify for each configuration.
- for configuration, sdk in test_cases:
- kwds = collections.defaultdict(list)
- if test.format == 'xcode':
- if sdk is not None:
- kwds['arguments'].extend(['-sdk', sdk])
-
- test.set_configuration(configuration)
- test.build('test.gyp', 'SwiftFramework', chdir='swift-library', **kwds)
-
- filename = 'SwiftFramework.framework/SwiftFramework'
- result_file = test.built_file_path(filename, chdir='swift-library')
-
- test.must_exist(result_file)
-
- # Check to make sure that our swift class (GypSwiftTest) is present in the
- # built binary
- CheckHasSymbolName(result_file, "C14SwiftFramework12GypSwiftTest")
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Test that MACH_O_TYPE etc are set correctly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- test.run_gyp('test.gyp',
- '-G', 'xcode_ninja_target_pattern=^(?!nonbundle_none).*$',
- chdir='type_envvars')
-
- test.build('test.gyp', test.ALL, chdir='type_envvars')
-
- # The actual test is done by postbuild scripts during |test.build()|.
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright 2013 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.
-
-"""
-Verifies that unicode strings in 'xcode_settings' work.
-Also checks that ASCII control characters are escaped properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['xcode'])
- test.run_gyp('test.gyp', chdir='unicode-settings')
- test.build('test.gyp', test.ALL, chdir='unicode-settings')
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that dependent Xcode settings are processed correctly.
-"""
-
-import TestGyp
-import TestMac
-
-import subprocess
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'xcode-env-order'
- INFO_PLIST_PATH = 'Test.app/Contents/Info.plist'
-
- test.run_gyp('test.gyp', chdir=CHDIR)
- test.build('test.gyp', test.ALL, chdir=CHDIR)
-
- # Env vars in 'copies' filenames.
- test.built_file_must_exist('Test-copy-brace/main.c', chdir=CHDIR)
- test.built_file_must_exist('Test-copy-paren/main.c', chdir=CHDIR)
- test.built_file_must_exist('Test-copy-bare/main.c', chdir=CHDIR)
-
- # Env vars in 'actions' filenames and inline actions
- test.built_file_must_exist('action-copy-brace.txt', chdir=CHDIR)
- test.built_file_must_exist('action-copy-paren.txt', chdir=CHDIR)
- test.built_file_must_exist('action-copy-bare.txt', chdir=CHDIR)
-
- # Env vars in 'rules' filenames and inline actions
- test.built_file_must_exist('rule-copy-brace.txt', chdir=CHDIR)
- test.built_file_must_exist('rule-copy-paren.txt', chdir=CHDIR)
- # TODO: see comment in test.gyp for this file.
- #test.built_file_must_exist('rule-copy-bare.txt', chdir=CHDIR)
-
- # Env vars in Info.plist.
- info_plist = test.built_file_path(INFO_PLIST_PATH, chdir=CHDIR)
- test.must_exist(info_plist)
-
- test.must_contain(info_plist, '''\
-\t<key>BraceProcessedKey1</key>
-\t<string>D:/Source/Project/Test</string>''')
- test.must_contain(info_plist, '''\
-\t<key>BraceProcessedKey2</key>
-\t<string>/Source/Project/Test</string>''')
- test.must_contain(info_plist, '''\
-\t<key>BraceProcessedKey3</key>
-\t<string>com.apple.product-type.application:D:/Source/Project/Test</string>''')
-
- test.must_contain(info_plist, '''\
-\t<key>ParenProcessedKey1</key>
-\t<string>D:/Source/Project/Test</string>''')
- test.must_contain(info_plist, '''\
-\t<key>ParenProcessedKey2</key>
-\t<string>/Source/Project/Test</string>''')
- test.must_contain(info_plist, '''\
-\t<key>ParenProcessedKey3</key>
-\t<string>com.apple.product-type.application:D:/Source/Project/Test</string>''')
-
- test.must_contain(info_plist, '''\
-\t<key>BareProcessedKey1</key>
-\t<string>D:/Source/Project/Test</string>''')
- test.must_contain(info_plist, '''\
-\t<key>BareProcessedKey2</key>
-\t<string>/Source/Project/Test</string>''')
- # NOTE: For bare variables, $PRODUCT_TYPE is not replaced! It _is_ replaced
- # if it's not right at the start of the string (e.g. ':$PRODUCT_TYPE'), so
- # this looks like an Xcode bug. This bug isn't emulated (yet?), so check this
- # only for Xcode.
- if test.format == 'xcode' and TestMac.Xcode.Version() < '0500':
- test.must_contain(info_plist, '''\
-\t<key>BareProcessedKey3</key>
-\t<string>$PRODUCT_TYPE:D:/Source/Project/Test</string>''')
- else:
- # The bug has been fixed by Xcode version 5.0.0.
- test.must_contain(info_plist, '''\
-\t<key>BareProcessedKey3</key>
-\t<string>com.apple.product-type.application:D:/Source/Project/Test</string>''')
-
- test.must_contain(info_plist, '''\
-\t<key>MixedProcessedKey</key>
-\t<string>/Source/Project:Test:mh_execute</string>''')
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that xcode-style GCC_... settings that require clang are handled
-properly.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'xcode-gcc'
- test.run_gyp('test-clang.gyp', chdir=CHDIR)
-
- test.build('test-clang.gyp', 'aliasing_yes', chdir=CHDIR)
- test.run_built_executable('aliasing_yes', chdir=CHDIR, stdout="1\n")
- test.build('test-clang.gyp', 'aliasing_no', chdir=CHDIR)
- test.run_built_executable('aliasing_no', chdir=CHDIR, stdout="0\n")
-
- # The default behavior changed: strict aliasing used to be off, now it's on
- # by default. The important part is that this is identical for all generators
- # (which it is). TODO(thakis): Enable this once the bots have a newer Xcode.
- #test.build('test-clang.gyp', 'aliasing_default', chdir=CHDIR)
- #test.run_built_executable('aliasing_default', chdir=CHDIR, stdout="1\n")
- # For now, just check the generated ninja file:
- if test.format == 'ninja':
- contents = open(test.built_file_path('obj/aliasing_default.ninja',
- chdir=CHDIR)).read()
- if 'strict-aliasing' in contents:
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that xcode-style GCC_... settings are handled properly.
-"""
-
-import TestGyp
-
-import os
-import subprocess
-import sys
-
-def IgnoreOutput(string, expected_string):
- return True
-
-def CompilerVersion(compiler):
- stdout = subprocess.check_output([compiler, '-v'], stderr=subprocess.STDOUT)
- return stdout.rstrip('\n')
-
-def CompilerSupportsWarnAboutInvalidOffsetOfMacro(test):
- # "clang" does not support the "-Winvalid-offsetof" flag, and silently
- # ignore it. Starting with Xcode 5.0.0, "gcc" is just a "clang" binary with
- # some hard-coded include path hack, so use the output of "-v" to detect if
- # the compiler supports the flag or not.
- return 'clang' not in CompilerVersion('/usr/bin/cc')
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
- CHDIR = 'xcode-gcc'
- test.run_gyp('test.gyp', chdir=CHDIR)
-
- # List of targets that'll pass. It expects targets of the same name with
- # '-fail' appended that'll fail to build.
- targets = [
- 'warn_about_missing_newline',
- ]
-
- # clang doesn't warn on invalid offsetofs, it silently ignores
- # -Wno-invalid-offsetof.
- if CompilerSupportsWarnAboutInvalidOffsetOfMacro(test):
- targets.append('warn_about_invalid_offsetof_macro')
-
- for target in targets:
- test.build('test.gyp', target, chdir=CHDIR)
- test.built_file_must_exist(target, chdir=CHDIR)
- fail_target = target + '-fail'
- test.build('test.gyp', fail_target, chdir=CHDIR, status=None,
- stderr=None, match=IgnoreOutput)
- test.built_file_must_not_exist(fail_target, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that support actions are properly created.
-"""
-
-import TestGyp
-
-import os
-import subprocess
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['xcode'])
-
- CHDIR = 'xcode-support-actions'
-
- test.run_gyp('test.gyp', '-Gsupport_target_suffix=_customsuffix', chdir=CHDIR)
- test.build('test.gyp', target='target_customsuffix', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that xctest targets are correctly configured.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['xcode'])
-
- # Ignore this test if Xcode 5 is not installed
- import subprocess
- job = subprocess.Popen(['xcodebuild', '-version'],
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT)
- out, err = job.communicate()
- if job.returncode != 0:
- raise Exception('Error %d running xcodebuild' % job.returncode)
- xcode_version, build_number = out.splitlines()
- # Convert the version string from 'Xcode 5.0' to ['5','0'].
- xcode_version = xcode_version.split()[-1].split('.')
- if xcode_version < ['5']:
- test.pass_test()
-
- CHDIR = 'xctest'
- test.run_gyp('test.gyp', chdir=CHDIR)
- test.build('test.gyp', chdir=CHDIR, arguments=['-scheme', 'classes', 'test'])
-
- test.built_file_must_match('tests.xctest/Contents/Resources/resource.txt',
- 'foo\n', chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-// Empty file
+++ /dev/null
-{
- 'includes': ['../test.gypi'],
- 'targets': [{
- 'target_name': 'testlib',
- 'type': 'none',
- 'dependencies': ['testlib/testlib.gyp:testlib'],
- 'sources': ['proxy.cc'],
- }],
-}
+++ /dev/null
-// Empty file
+++ /dev/null
-{
- 'includes': ['../../test.gypi'],
- 'targets': [{
- 'target_name': 'testlib',
- 'type': 'static_library',
- 'sources': ['testlib.cc'],
- }],
-}
+++ /dev/null
-{
- 'targets': [{
- 'target_name': 'test',
- 'type': 'executable',
- 'dependencies': [
- 'testlib/testlib.gyp:proxy',
- 'proxy/proxy.gyp:testlib',
- ],
- }],
-}
+++ /dev/null
-{
- 'includes': ['test.gypi'],
- 'targets': [{
- 'target_name': 'test',
- 'type': 'executable',
- 'dependencies': [
- 'testlib/testlib.gyp:proxy',
- 'proxy/proxy.gyp:testlib',
- ],
- }],
-}
\ No newline at end of file
+++ /dev/null
-{
- 'target_defaults': {
- 'xcode_settings': {
- 'SYMROOT': '<(DEPTH)/$SRCROOT/',
- },
- },
-}
+++ /dev/null
-int main(int argc, char **argv) {
- return 0;
-}
+++ /dev/null
-{
- 'includes': ['../test.gypi'],
- 'targets': [{
- 'target_name': 'proxy',
- 'type': 'static_library',
- 'sources': ['void.cc'],
- 'dependencies': ['testlib'],
- 'export_dependent_settings': ['testlib'],
- }, {
- 'target_name': 'testlib',
- 'type': 'static_library',
- 'sources': ['main.cc'],
- }],
-}
+++ /dev/null
-// Empty file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.google.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>${MACOSX_DEPLOYMENT_TARGET}</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
- <key>ProcessedKey1</key>
- <string>PROCESSED_KEY1</string>
- <key>ProcessedKey2</key>
- <string>PROCESSED_KEY2</string>
-</dict>
-</plist>
+++ /dev/null
-// Copyright (c) 2011 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'main.c',
- ],
- 'configurations': {
- 'One': {
- },
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- 'INFOPLIST_PREPROCESS': 'YES',
- 'INFOPLIST_PREPROCESSOR_DEFINITIONS': 'PROCESSED_KEY1=Foo PROCESSED_KEY2=Bar',
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'main.c',
- ],
- 'configurations': {
- 'Two': {
- },
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- 'INFOPLIST_PREPROCESS': 'YES',
- 'INFOPLIST_PREPROCESSOR_DEFINITIONS': 'PROCESSED_KEY1="Foo (Bar)"',
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'main.c',
- ],
- 'configurations': {
- 'Three': {
- },
- },
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- 'INFOPLIST_PREPROCESS': 'NO',
- 'INFOPLIST_PREPROCESSOR_DEFINITIONS': 'PROCESSED_KEY1=Foo',
- },
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>NSPrincipalClass</key>
- <string></string>
-</dict>
-</plist>
+++ /dev/null
-int f() { return 0; }
+++ /dev/null
-int main() {}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'default_installname',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- },
- {
- 'target_name': 'default_bundle_installname',
- 'product_name': 'My Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c' ],
- },
- {
- 'target_name': 'explicit_installname',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- 'LD_DYLIB_INSTALL_NAME': 'Trapped in a dynamiclib factory',
- },
- },
- {
- 'target_name': 'explicit_installname_base',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- 'DYLIB_INSTALL_NAME_BASE': '@executable_path/../../..',
-
- },
- },
- {
- 'target_name': 'explicit_installname_base_bundle',
- 'product_name': 'My Other Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- 'DYLIB_INSTALL_NAME_BASE': '@executable_path/../../..',
-
- },
- },
- {
- 'target_name': 'both_base_and_installname',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- # LD_DYLIB_INSTALL_NAME wins.
- 'LD_DYLIB_INSTALL_NAME': 'Still trapped in a dynamiclib factory',
- 'DYLIB_INSTALL_NAME_BASE': '@executable_path/../../..',
- },
- },
- {
- 'target_name': 'explicit_installname_with_base',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- 'LD_DYLIB_INSTALL_NAME': '$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)',
- },
- },
- {
- 'target_name': 'explicit_installname_with_explicit_base',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- 'DYLIB_INSTALL_NAME_BASE': '@executable_path/..',
- 'LD_DYLIB_INSTALL_NAME': '$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)',
- },
- },
- {
- 'target_name': 'executable',
- 'type': 'executable',
- 'sources': [ 'main.c' ],
- 'xcode_settings': {
- 'LD_DYLIB_INSTALL_NAME': 'Should be ignored for not shared_lib',
- },
- },
- # Regression test for http://crbug.com/113918
- {
- 'target_name': 'install_name_with_info_plist',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- 'LD_DYLIB_INSTALL_NAME': '$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)',
- },
- },
- ],
-}
+++ /dev/null
-void f() {}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'ldflags_passed_to_libtool',
- 'type': 'static_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- '-fblorfen-horf-does-not-exist',
- ],
- },
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleSignature</key>
- <string>????</string>
-</dict>
-</plist>
+++ /dev/null
-void f() {}
-void g() {}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'raw',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- '-exported_symbols_list symbol_list.def',
- '-sectcreate __TEXT __info_plist Info.plist',
- ],
- },
- },
- # TODO(thakis): This form should ideally be supported, too. (But
- # -Wlfoo,bar,baz is cleaner so people should use that anyway.)
- #{
- # 'target_name': 'raw_sep',
- # 'type': 'shared_library',
- # 'sources': [ 'file.c', ],
- # 'xcode_settings': {
- # 'OTHER_LDFLAGS': [
- # '-exported_symbols_list', 'symbol_list.def',
- # '-sectcreate', '__TEXT', '__info_plist', 'Info.plist',
- # ],
- # },
- #},
- {
- 'target_name': 'wl_space',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- # Works because clang passes unknown files on to the linker.
- '-Wl,-exported_symbols_list symbol_list.def',
- ],
- },
- },
- # TODO(thakis): This form should ideally be supported, too. (But
- # -Wlfoo,bar,baz is cleaner so people should use that anyway.)
- #{
- # 'target_name': 'wl_space_sep',
- # 'type': 'shared_library',
- # 'sources': [ 'file.c', ],
- # 'xcode_settings': {
- # 'OTHER_LDFLAGS': [
- # # Works because clang passes unknown files on to the linker.
- # '-Wl,-exported_symbols_list', 'symbol_list.def',
- # ],
- # },
- #},
- {
- 'target_name': 'wl_comma',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- '-Wl,-exported_symbols_list,symbol_list.def',
- '-Wl,-sectcreate,__TEXT,__info_plist,Info.plist',
- ],
- },
- },
- ],
-}
+++ /dev/null
-Make things live in a subdirectory, to make sure that DEPTH works correctly.
+++ /dev/null
-// 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.
-
-#include <iostream>
-
-int main() {
- std::cout << "Hello, world!" << std::endl;
- return 0;
-}
+++ /dev/null
-// 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.
-
-int my_foo(int x) {
- return x + 1;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'libraries-test',
- 'type': 'executable',
- 'sources': [
- 'hello.cc',
- ],
- 'link_settings': {
- 'libraries': [
- 'libcrypto.dylib',
- ],
- },
- },
- {
- # This creates a static library and puts it in a nonstandard location for
- # libraries-search-path-test.
- 'target_name': 'mylib',
- 'type': 'static_library',
- 'sources': [
- 'mylib.c',
- ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Make a secret location',
- 'action': [
- 'mkdir',
- '-p',
- '${SRCROOT}/../secret_location',
- ],
- },
- {
- 'postbuild_name': 'Copy to secret location, with secret name',
- 'action': [
- 'cp',
- '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
- '${SRCROOT}/../secret_location/libmysecretlib.a',
- ],
- },
- ],
- },
- {
- 'target_name': 'libraries-search-path-test',
- 'type': 'executable',
- 'dependencies': [ 'mylib' ],
- 'sources': [
- 'hello.cc',
- ],
- 'xcode_settings': {
- 'LIBRARY_SEARCH_PATHS': [
- '<(DEPTH)/secret_location',
- ],
- },
- 'link_settings': {
- 'libraries': [
- 'libmysecretlib.a',
- ],
- },
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-int my_foo(int x) {
- return x + 1;
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'mylib',
- 'type': 'static_library',
- 'sources': [
- 'mylib.c',
- ],
- 'xcode_settings': {
- 'ARCHS': [ 'i386', 'x86_64' ],
- },
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-int test() {
- return 1337;
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-{
- 'targets': [{
- 'target_name': 'test',
- 'type': 'none',
- 'dependencies': ['child_one', 'child_two'],
- }, {
- 'target_name': 'child_one',
- 'product_name': 'Collide',
- 'product_extension': 'bar',
- 'sources': ['src.cc'],
- 'type': 'loadable_module',
- 'mac_bundle': 1,
- }, {
- 'target_name': 'child_two',
- 'product_name': 'Collide',
- 'product_extension': 'foo',
- 'sources': ['src.cc'],
- 'type': 'loadable_module',
- 'mac_bundle': 1,
- }],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIdentifier</key>
- <string>com.google.test_loadable_module</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>BRPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>CFPlugInDynamicRegisterFunction</key>
- <string></string>
- <key>CFPlugInDynamicRegistration</key>
- <string>NO</string>
-</dict>
-</plist>
+++ /dev/null
-// Copyright (c) 2011 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.
-
-int SuperFly() {
- return 42;
-}
-
-const char* SuperFoo() {
- return "Hello World";
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_loadable_module',
- 'type': 'loadable_module',
- 'mac_bundle': 1,
- 'sources': [ 'module.c' ],
- 'product_extension': 'plugin',
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- },
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
-</dict>
-</plist>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>F</string>
-</dict>
-</plist>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>some really long string</string>
-</dict>
-</plist>
+++ /dev/null
-int main() {}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'mytarget',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- },
- },
- {
- 'target_name': 'myothertarget',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Other-Info.plist',
- },
- },
- {
- 'target_name': 'thirdtarget',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Third-Info.plist',
- },
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <!-- Not a valid plist file since it's missing so much. That's fine. -->
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>My Variable</key>
- <string>${MY_VAR}</string>
- <key>CFlags</key>
- <string>${OTHER_CFLAGS}</string>
-</dict>
-</plist>
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'main.c', ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- 'MY_VAR': 'some expansion',
- 'OTHER_CFLAGS': [
- # Just some (more than one) random flags.
- '-fstack-protector-all',
- '-fno-strict-aliasing',
- '-DS="A Space"', # Would normally be in 'defines'
- ],
- },
- 'include_dirs': [
- '$(SDKROOT)/usr/include/libxml2',
- ],
- },
- ],
-}
+++ /dev/null
-#if __has_feature(objc_arc)
-#error "C files shouldn't be ARC'd!"
-#endif
-
-void c_fun() {}
+++ /dev/null
-#if __has_feature(objc_arc)
-#error "C++ files shouldn't be ARC'd!"
-#endif
-
-void cc_fun() {}
+++ /dev/null
-#if __has_feature(objc_arc)
-#error "ObjC files without CLANG_ENABLE_OBJC_ARC should not be ARC'd!"
-#endif
-
-void m_fun() {}
+++ /dev/null
-#if !__has_feature(objc_arc)
-#error "ObjC files with CLANG_ENABLE_OBJC_ARC should be ARC'd!"
-#endif
-
-void m_fun() {}
+++ /dev/null
-#if __has_feature(objc_arc)
-#error "ObjC++ files without CLANG_ENABLE_OBJC_ARC should not be ARC'd!"
-#endif
-
-void mm_fun() {}
+++ /dev/null
-#if !__has_feature(objc_arc)
-#error "ObjC++ files with CLANG_ENABLE_OBJC_ARC should be ARC'd!"
-#endif
-
-void mm_fun() {}
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
-
- 'targets': [
- {
- 'target_name': 'arc_enabled',
- 'type': 'static_library',
- 'sources': [
- 'c-file.c',
- 'cc-file.cc',
- 'm-file.m',
- 'mm-file.mm',
- ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'MACOSX_DEPLOYMENT_TARGET': '10.6',
- 'ARCHS': [ 'x86_64' ], # For the non-fragile objc ABI.
- 'CLANG_ENABLE_OBJC_ARC': 'YES',
- },
- },
-
- {
- 'target_name': 'arc_disabled',
- 'type': 'static_library',
- 'sources': [
- 'c-file.c',
- 'cc-file.cc',
- 'm-file-no-arc.m',
- 'mm-file-no-arc.mm',
- ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'MACOSX_DEPLOYMENT_TARGET': '10.6',
- 'ARCHS': [ 'x86_64' ], # For the non-fragile objc ABI.
- },
- },
- ],
-}
+++ /dev/null
-void c_fun() {}
+++ /dev/null
-void cc_fun() {}
+++ /dev/null
-#import <Foundation/Foundation.h>
-
-int main() {
- printf("gc on: %d\n", [NSGarbageCollector defaultCollector] != NULL);
- return 0;
-}
+++ /dev/null
-void objcpp_fun() { }
+++ /dev/null
-void objc_fun() { }
+++ /dev/null
-# 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.
-{
- 'targets': [
- # For some reason, static_library targets that are built with gc=required
- # and then linked to executables that don't use gc, the linker doesn't
- # complain. For shared_libraries it does, so use that.
- {
- 'target_name': 'no_gc_lib',
- 'type': 'shared_library',
- 'sources': [
- 'c-file.c',
- 'cc-file.cc',
- 'needs-gc-mm.mm',
- 'needs-gc.m',
- ],
- },
- {
- 'target_name': 'gc_lib',
- 'type': 'shared_library',
- 'sources': [
- 'c-file.c',
- 'cc-file.cc',
- 'needs-gc-mm.mm',
- 'needs-gc.m',
- ],
- 'xcode_settings': {
- 'GCC_ENABLE_OBJC_GC': 'supported',
- },
- },
- {
- 'target_name': 'gc_req_lib',
- 'type': 'shared_library',
- 'sources': [
- 'c-file.c',
- 'cc-file.cc',
- 'needs-gc-mm.mm',
- 'needs-gc.m',
- ],
- 'xcode_settings': {
- 'GCC_ENABLE_OBJC_GC': 'required',
- },
- },
-
- {
- 'target_name': 'gc_exe_fails',
- 'type': 'executable',
- 'sources': [ 'main.m' ],
- 'dependencies': [ 'no_gc_lib' ],
- 'xcode_settings': {
- 'GCC_ENABLE_OBJC_GC': 'required',
- },
- 'libraries': [ 'Foundation.framework' ],
- },
- {
- 'target_name': 'gc_req_exe',
- 'type': 'executable',
- 'sources': [ 'main.m' ],
- 'dependencies': [ 'gc_lib' ],
- 'xcode_settings': {
- 'GCC_ENABLE_OBJC_GC': 'required',
- },
- 'libraries': [ 'Foundation.framework' ],
- },
- {
- 'target_name': 'gc_exe_req_lib',
- 'type': 'executable',
- 'sources': [ 'main.m' ],
- 'dependencies': [ 'gc_req_lib' ],
- 'xcode_settings': {
- 'GCC_ENABLE_OBJC_GC': 'supported',
- },
- 'libraries': [ 'Foundation.framework' ],
- },
- {
- 'target_name': 'gc_exe',
- 'type': 'executable',
- 'sources': [ 'main.m' ],
- 'dependencies': [ 'gc_lib' ],
- 'xcode_settings': {
- 'GCC_ENABLE_OBJC_GC': 'supported',
- },
- 'libraries': [ 'Foundation.framework' ],
- },
- {
- 'target_name': 'gc_off_exe_req_lib',
- 'type': 'executable',
- 'sources': [ 'main.m' ],
- 'dependencies': [ 'gc_req_lib' ],
- 'libraries': [ 'Foundation.framework' ],
- },
- {
- 'target_name': 'gc_off_exe',
- 'type': 'executable',
- 'sources': [ 'main.m' ],
- 'dependencies': [ 'gc_lib' ],
- 'libraries': [ 'Foundation.framework' ],
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>NSPrincipalClass</key>
- <string></string>
- <key>RandomKey</key>
- <string>RandomValue</string>
-</dict>
-</plist>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.google.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>${MACOSX_DEPLOYMENT_TARGET}</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
+++ /dev/null
-old copied file
+++ /dev/null
-// 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.
-int main() {}
+++ /dev/null
-#!/bin/bash
-
-# 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.
-
-set -e
-
-rsync -acC --delete "$1" "$2"
+++ /dev/null
-This is included in the framework bundle.
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'test_bundle',
- 'product_name': 'My Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'empty.c', ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Framework-Info.plist',
- },
- 'mac_bundle_resources': [
- 'resource_file.sb',
- ],
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries',
- 'files': [ 'copied.txt' ],
- },
- ],
- },
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'dependencies': [
- 'test_bundle',
- ],
- 'sources': [ 'main.c', ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'TestApp-Info.plist',
- },
- 'postbuilds': [
- {
- 'postbuild_name': 'Copy dependent framework into app',
- 'action': [
- './postbuild-copy-framework.sh',
- '${BUILT_PRODUCTS_DIR}/My Framework.framework',
- '${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <!-- Not a valid plist file since it's missing so much. That's fine. -->
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
-</dict>
-</plist>
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-# This is the built Info.plist in the output directory.
-PLIST="${BUILT_PRODUCTS_DIR}"/Test.app/Contents/Info # No trailing .plist
-echo $(defaults read "${PLIST}" "CFBundleName") > "${BUILT_PRODUCTS_DIR}/result"
-
-# This is the source Info.plist next to this script file.
-PLIST="${SRCROOT}"/Info # No trailing .plist
-echo $(defaults read "${PLIST}" "CFBundleName") \
- >> "${BUILT_PRODUCTS_DIR}/result"
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'main.c', ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- },
- 'postbuilds': [
- {
- 'postbuild_name': 'Postbuild that calls defaults',
- 'action': [
- './postbuild-defaults.sh',
- '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-// That's right, this is copyrighted.
-void f() {}
+++ /dev/null
-#!/usr/bin/bash
-# Copyright (c) 2011 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.
-
-exit 1
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'nonbundle',
- 'type': 'static_library',
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Postbuild Fail',
- 'action': [ './postbuild-fail.sh', ],
- },
- {
- 'postbuild_name': 'Runs after failing postbuild',
- 'action': [ './touch-static.sh', ],
- },
- ],
- },
- {
- 'target_name': 'bundle',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Postbuild Fail',
- 'action': [ './postbuild-fail.sh', ],
- },
- {
- 'postbuild_name': 'Runs after failing postbuild',
- 'action': [ './touch-dynamic.sh', ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/bin/bash
-# Copyright (c) 2011 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.
-
-set -e
-touch "${BUILT_PRODUCTS_DIR}/dynamic_touch"
+++ /dev/null
-#!/bin/bash
-# Copyright (c) 2011 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.
-
-set -e
-touch "${BUILT_PRODUCTS_DIR}/static_touch"
+++ /dev/null
-// 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.
-int main() {}
+++ /dev/null
-#!/bin/bash
-
-# 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.
-
-touch "${BUILT_PRODUCTS_DIR}/postbuild-file"
+++ /dev/null
-# 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.
-{
- 'target_defaults': {
- 'configurations': {
- 'Debug': {},
- 'Release': {},
- },
- },
- 'targets': [
- {
- 'target_name': 'random_target',
- 'type': 'executable',
- 'sources': [ 'main.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Touch a file.',
- 'action': [
- './postbuild-touch-file.sh',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-// 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.
-void f() {}
+++ /dev/null
-#!/bin/bash
-
-# 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.
-
-touch "${BUILT_PRODUCTS_DIR}/$1"
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'my_lib',
- 'type': 'static_library',
- 'sources': [ 'empty.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Postbuild that touches a file',
- 'action': [
- './postbuild-touch-file.sh', 'postbuild-file'
- ],
- },
- ],
- },
-
- {
- 'target_name': 'my_sourceless_lib',
- 'type': 'static_library',
- 'dependencies': [ 'my_lib' ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Postbuild that touches a file',
- 'action': [
- './postbuild-touch-file.sh', 'postbuild-file-sourceless'
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/bin/bash
-
-cp "$@"
+++ /dev/null
-// Copyright (c) 2011 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.
-void f() {}
+++ /dev/null
-// 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.
-void g() {}
+++ /dev/null
-// 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.
-void h() {}
+++ /dev/null
-#!/bin/bash
-# Copyright (c) 2011 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.
-
-set -e
-
-lib="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}"
-nm ${lib} > /dev/null # Just make sure this works.
-
-pattern="${1}"
-
-if [ $pattern != "a|b" ]; then
- echo "Parameter quoting is broken"
- exit 1
-fi
-
-if [ "${2}" != "arg with spaces" ]; then
- echo "Parameter space escaping is broken"
- exit 1
-fi
-
-touch "${lib}"_touch
+++ /dev/null
-#!/bin/bash
-# Copyright (c) 2011 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.
-
-set -e
-
-lib="${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}"
-nm ${lib} > /dev/null # Just make sure this works.
-
-pattern="${1}"
-
-if [ $pattern != "a|b" ]; then
- echo "Parameter quote escaping is broken"
- exit 1
-fi
-
-if [ "${2}" != "arg with spaces" ]; then
- echo "Parameter space escaping is broken"
- exit 1
-fi
-
-touch "${lib}"_touch.a
+++ /dev/null
-This file should be copied to the products dir.
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'nest_el',
- 'type': 'static_library',
- 'sources': [ '../file_g.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Static library postbuild',
- 'variables': {
- 'some_regex': 'a|b',
- },
- 'action': [
- '../script/static_library_postbuild.sh',
- '<(some_regex)',
- 'arg with spaces',
- ],
- },
- ],
- },
- {
- 'target_name': 'nest_dyna',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ '../file_h.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Dynamic library postbuild',
- 'variables': {
- 'some_regex': 'a|b',
- },
- 'action': [
- '../script/shared_library_postbuild.sh',
- '<(some_regex)',
- 'arg with spaces',
- ],
- },
- {
- 'postbuild_name': 'Test paths relative to gyp file',
- 'action': [
- '../copy.sh',
- './copied_file.txt',
- '${BUILT_PRODUCTS_DIR}/copied_file_2.txt',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'el',
- 'type': 'static_library',
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Static library postbuild',
- 'variables': {
- 'some_regex': 'a|b',
- },
- 'action': [
- 'script/static_library_postbuild.sh',
- '<(some_regex)',
- 'arg with spaces',
- ],
- },
- {
- 'postbuild_name': 'Test variable in gyp file',
- 'action': [
- 'cp',
- '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
- '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}_gyp_touch.a',
- ],
- },
- ],
- },
- {
- 'target_name': 'dyna',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'dependencies': [
- 'subdirectory/nested_target.gyp:nest_dyna',
- 'subdirectory/nested_target.gyp:nest_el',
- ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Dynamic library postbuild',
- 'variables': {
- 'some_regex': 'a|b',
- },
- 'action': [
- 'script/shared_library_postbuild.sh',
- '<(some_regex)',
- 'arg with spaces',
- ],
- },
- {
- 'postbuild_name': 'Test variable in gyp file',
- 'action': [
- 'cp',
- '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
- '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}_gyp_touch',
- ],
- },
- {
- 'postbuild_name': 'Test paths relative to gyp file',
- 'action': [
- './copy.sh',
- 'subdirectory/copied_file.txt',
- '${BUILT_PRODUCTS_DIR}',
- ],
- },
- ],
- },
- {
- 'target_name': 'dyna_standalone',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Test variable in gyp file',
- 'action': [
- 'cp',
- '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
- '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}_gyp_touch.dylib',
- ],
- },
- ],
- },
- {
- 'target_name': 'EmptyBundle',
- 'product_extension': 'bundle',
- 'type': 'executable',
- 'mac_bundle': 1,
- },
- ],
-}
+++ /dev/null
-MyInt f() { return 0; }
+++ /dev/null
-MyInt f() { return 0; }
+++ /dev/null
-MyInt f() { return 0; }
+++ /dev/null
-MyInt f() { return 0; }
+++ /dev/null
-typedef int MyInt;
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'prefix_header_c',
- 'type': 'static_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- },
- },
- {
- 'target_name': 'precompiled_prefix_header_c',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- 'GCC_PRECOMPILE_PREFIX_HEADER': 'YES',
- },
- },
-
- {
- 'target_name': 'prefix_header_cc',
- 'type': 'static_library',
- 'sources': [ 'file.cc', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- },
- },
- {
- 'target_name': 'precompiled_prefix_header_cc',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.cc', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- 'GCC_PRECOMPILE_PREFIX_HEADER': 'YES',
- },
- },
-
- {
- 'target_name': 'prefix_header_m',
- 'type': 'static_library',
- 'sources': [ 'file.m', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- },
- },
- {
- 'target_name': 'precompiled_prefix_header_m',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.m', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- 'GCC_PRECOMPILE_PREFIX_HEADER': 'YES',
- },
- },
-
- {
- 'target_name': 'prefix_header_mm',
- 'type': 'static_library',
- 'sources': [ 'file.mm', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- },
- },
- {
- 'target_name': 'precompiled_prefix_header_mm',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.mm', ],
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'header.h',
- 'GCC_PRECOMPILE_PREFIX_HEADER': 'YES',
- },
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.google.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>${MACOSX_DEPLOYMENT_TARGET}</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
+++ /dev/null
-#!/bin/bash
-
-set -e
-
-sleep 1 # mtime resolution is 1 sec on unix.
-touch "$1"
+++ /dev/null
-int main() {}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test App',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'main.c',
- ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'TestApp-Info.plist',
- },
- },
- {
- 'target_name': 'test_app_postbuilds',
- 'product_name': 'Test App 2',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'main.c',
- ],
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'TestApp-Info.plist',
- },
- 'postbuilds': [
- {
- 'postbuild_name': 'Postbuild that touches the app binary',
- 'action': [
- './delay-touch.sh', '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
- ],
- },
- ],
- },
- {
- 'target_name': 'test_framework_postbuilds',
- 'product_name': 'Test Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [
- 'empty.c',
- ],
- 'postbuilds': [
- {
- 'postbuild_name': 'Postbuild that touches the framework binary',
- 'action': [
- './delay-touch.sh', '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-void f() {}
+++ /dev/null
-int main() {}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'default_rpath',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- },
- {
- 'target_name': 'explicit_rpath',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- 'LD_RUNPATH_SEARCH_PATHS': ['@executable_path/.'],
- },
- },
- {
- 'target_name': 'explicit_rpaths_escaped',
- 'type': 'shared_library',
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- # Xcode requires spaces to be escaped, else it ends up adding two
- # independent rpaths.
- 'LD_RUNPATH_SEARCH_PATHS': ['First\\ rpath', 'Second\\ rpath'],
- },
- },
- {
- 'target_name': 'explicit_rpaths_bundle',
- 'product_name': 'My Framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c' ],
- 'xcode_settings': {
- 'LD_RUNPATH_SEARCH_PATHS': ['@loader_path/.'],
- },
- },
- {
- 'target_name': 'executable',
- 'type': 'executable',
- 'sources': [ 'main.c' ],
- 'xcode_settings': {
- 'LD_RUNPATH_SEARCH_PATHS': ['@executable_path/.'],
- },
- },
- ],
-}
+++ /dev/null
-#include <map>
-using std::map;
-
-int main() {
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'mytarget',
- 'type': 'executable',
- 'sources': [ 'file.cc', ],
- 'xcode_settings': {
- 'SDKROOT': 'macosx%s',
- },
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_shorthand.sh', ],
- },
- ],
- },
- {
- 'target_name': 'absolute',
- 'type': 'executable',
- 'sources': [ 'file.cc', ],
- 'xcode_settings': {
- 'SDKROOT': '<(sdk_path)',
- },
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_shorthand.sh', ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-found=false
-for sdk in 10.6 10.7 10.8 10.9 ; do
- if expected=$(xcodebuild -version -sdk macosx$sdk Path 2>/dev/null) ; then
- found=true
- break
- fi
-done
-if ! $found ; then
- echo >&2 "cannot find installed SDK"
- exit 1
-fi
-
-test $SDKROOT = $expected
+++ /dev/null
-int main() {}
+++ /dev/null
-int f() { return 42; }
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'empty_bundle',
- 'type': 'loadable_module',
- 'mac_bundle': 1,
- },
- {
- 'target_name': 'resource_bundle',
- 'type': 'loadable_module',
- 'mac_bundle': 1,
- 'actions': [
- {
- 'action_name': 'Add Resource',
- 'inputs': [],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/app_manifest/foo.manifest',
- ],
- 'action': [
- 'touch', '<(INTERMEDIATE_DIR)/app_manifest/foo.manifest',
- ],
- 'process_outputs_as_mac_bundle_resources': 1,
- },
- ],
- },
- {
- 'target_name': 'dependent_on_resource_bundle',
- 'type': 'executable',
- 'sources': [ 'empty.c' ],
- 'dependencies': [
- 'resource_bundle',
- ],
- },
-
- {
- 'target_name': 'alib',
- 'type': 'static_library',
- 'sources': [ 'fun.c' ]
- },
- { # No sources, but depends on a static_library so must be linked.
- 'target_name': 'resource_framework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'dependencies': [
- 'alib',
- ],
- 'actions': [
- {
- 'action_name': 'Add Resource',
- 'inputs': [],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/app_manifest/foo.manifest',
- ],
- 'action': [
- 'touch', '<(INTERMEDIATE_DIR)/app_manifest/foo.manifest',
- ],
- 'process_outputs_as_mac_bundle_resources': 1,
- },
- ],
- },
- {
- 'target_name': 'dependent_on_resource_framework',
- 'type': 'executable',
- 'sources': [ 'empty.c' ],
- 'dependencies': [
- 'resource_framework',
- ],
- },
-
- { # No actions, but still have resources.
- 'target_name': 'mac_resource_bundle_no_actions',
- 'product_extension': 'bundle',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'mac_bundle_resources': [
- 'empty.txt',
- ],
- },
- {
- 'target_name': 'bundle_dependent_on_resource_bundle_no_actions',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'empty.c' ],
- 'dependencies': [
- 'mac_resource_bundle_no_actions',
- ],
- 'mac_bundle_resources': [
- '<(PRODUCT_DIR)/mac_resource_bundle_no_actions.bundle',
- ],
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-static void the_static_function() {}
-__attribute__((used)) void the_used_function() {}
-
-__attribute__((visibility("hidden"))) __attribute__((used))
- void the_hidden_function() {}
-__attribute__((visibility("default"))) __attribute__((used))
- void the_visible_function() {}
-
-extern const int eci;
-__attribute__((used)) int i;
-__attribute__((used)) const int ci = 34623;
-
-void the_function() {
- the_static_function();
- the_used_function();
- the_hidden_function();
- the_visible_function();
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-static void the_static_function() {}
-__attribute__((used)) void the_used_function() {}
-
-__attribute__((visibility("hidden"))) __attribute__((used))
-void the_hidden_function() {}
-__attribute__((visibility("default"))) __attribute__((used))
-void the_visible_function() {}
-
-void the_function() {}
-
-extern const int eci;
-__attribute__((used)) int i;
-__attribute__((used)) const int ci = 34623;
-
-int main() {
- the_function();
- the_static_function();
- the_used_function();
- the_hidden_function();
- the_visible_function();
-}
+++ /dev/null
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file would list symbols that should not be stripped.
+++ /dev/null
-void nested_f() {}
+++ /dev/null
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file would list symbols that should not be stripped.
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'nested_strip_save',
- 'type': 'shared_library',
- 'sources': [ 'nested_file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- 'STRIPFLAGS': '-s $(CHROMIUM_STRIP_SAVE_FILE)',
- 'CHROMIUM_STRIP_SAVE_FILE': 'nested_strip.saves',
- },
- },
- {
- 'target_name': 'nested_strip_save_postbuild',
- 'type': 'shared_library',
- 'sources': [ 'nested_file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- 'STRIPFLAGS': '-s $(CHROMIUM_STRIP_SAVE_FILE)',
- 'CHROMIUM_STRIP_SAVE_FILE': 'nested_strip.saves',
- },
- 'postbuilds': [
- {
- 'postbuild_name': 'Action that reads CHROMIUM_STRIP_SAVE_FILE',
- 'action': [
- './test_reading_save_file_from_postbuild.sh',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/bin/bash
-
-set -e
-
-test -f ${CHROMIUM_STRIP_SAVE_FILE}
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ],
- 'target_defaults': {
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
- 'targets': [
- {
- 'target_name': 'single_dylib',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- },
- {
- 'target_name': 'single_so',
- 'type': 'loadable_module',
- 'sources': [ 'file.c', ],
- },
- {
- 'target_name': 'single_exe',
- 'type': 'executable',
- 'sources': [ 'main.c', ],
- },
-
- {
- 'target_name': 'bundle_dylib',
- 'type': 'shared_library',
- 'mac_bundle': '1',
- 'sources': [ 'file.c', ],
- },
- {
- 'target_name': 'bundle_so',
- 'type': 'loadable_module',
- 'mac_bundle': '1',
- 'sources': [ 'file.c', ],
- },
- {
- 'target_name': 'bundle_exe',
- 'type': 'executable',
- 'mac_bundle': '1',
- 'sources': [ 'main.c', ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-
-# These xcode_settings affect stripping:
-# "Deployment postprocessing involves stripping the binary, and setting
-# its file mode, owner, and group."
-#'DEPLOYMENT_POSTPROCESSING': 'YES',
-
-# "Specifies whether to strip symbol information from the binary.
-# Prerequisite: $DEPLOYMENT_POSTPROCESSING = YES" "Default Value: 'NO'"
-#'STRIP_INSTALLED_PRODUCT': 'YES',
-
-# "Values:
-# * all: Strips the binary completely, removing the symbol table and
-# relocation information
-# * non-global: Strips nonglobal symbols but saves external symbols.
-# * debugging: Strips debugging symbols but saves local and global
-# symbols."
-# (maps to no flag, -x, -S in that order)
-#'STRIP_STYLE': 'non-global',
-
-# "Additional strip flags"
-#'STRIPFLAGS': '-c',
-
-# "YES: Copied binaries are stripped of debugging symbols. This does
-# not cause the binary produced by the linker to be stripped. Use
-# 'STRIP_INSTALLED_PRODUCT (Strip Linked Product)' to have the linker
-# strip the binary."
-#'COPY_PHASE_STRIP': 'NO',
-{
- 'targets': [
- {
- 'target_name': 'no_postprocess',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'NO',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- },
- },
- {
- 'target_name': 'no_strip',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'NO',
- },
- },
- {
- 'target_name': 'strip_all',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- 'STRIP_STYLE': 'all',
- },
- },
- {
- 'target_name': 'strip_nonglobal',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- 'STRIP_STYLE': 'non-global',
- },
- },
- {
- 'target_name': 'strip_debugging',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- 'STRIP_STYLE': 'debugging',
- },
- },
- {
- 'target_name': 'strip_all_custom_flags',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- 'STRIP_STYLE': 'all',
- 'STRIPFLAGS': '-c',
- },
- },
- {
- 'target_name': 'strip_all_bundle',
- 'type': 'shared_library',
- 'mac_bundle': '1',
- 'sources': [ 'file.c', ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- 'STRIP_STYLE': 'all',
- },
- },
- {
- 'target_name': 'strip_save',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'dependencies': [
- 'subdirectory/subdirectory.gyp:nested_strip_save',
- 'subdirectory/subdirectory.gyp:nested_strip_save_postbuild',
- ],
- 'xcode_settings': {
- 'DEPLOYMENT_POSTPROCESSING': 'YES',
- 'STRIP_INSTALLED_PRODUCT': 'YES',
- 'STRIPFLAGS': '-s $(CHROMIUM_STRIP_SAVE_FILE)',
- 'CHROMIUM_STRIP_SAVE_FILE': 'strip.saves',
- },
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>NSPrincipalClass</key>
- <string></string>
-</dict>
-</plist>
+++ /dev/null
-import Foundation
-
-public class GypSwiftTest {
- let myProperty = false
-
- init() {
- self.myProperty = true
- }
-}
\ No newline at end of file
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'SwiftFramework',
- 'product_name': 'SwiftFramework',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- 'CODE_SIGNING_REQUIRED': 'NO',
- 'CONFIGURATION_BUILD_DIR':'build/Default',
- },
- 'sources': [
- 'file.swift',
- ],
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-void f() {}
-int main() {}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'my_app',
- 'product_name': 'My App',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_bundle_executable.sh', ],
- },
- ],
- },
- {
- 'target_name': 'bundle_loadable_module',
- 'type': 'loadable_module',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_bundle_loadable_module.sh', ],
- },
- ],
- },
- {
- 'target_name': 'bundle_shared_library',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_bundle_shared_library.sh', ],
- },
- ],
- },
- # Types 'static_library' and 'none' can't exist as bundles.
-
- {
- 'target_name': 'nonbundle_executable',
- 'type': 'executable',
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_nonbundle_executable.sh', ],
- },
- ],
- },
- {
- 'target_name': 'nonbundle_loadable_module',
- 'type': 'loadable_module',
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_nonbundle_loadable_module.sh', ],
- },
- ],
- },
- {
- 'target_name': 'nonbundle_shared_library',
- 'type': 'shared_library',
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_nonbundle_shared_library.sh', ],
- },
- ],
- },
- {
- 'target_name': 'nonbundle_static_library',
- 'type': 'static_library',
- 'sources': [ 'file.c', ],
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_nonbundle_static_library.sh', ],
- },
- ],
- },
- {
- 'target_name': 'nonbundle_none',
- 'type': 'none',
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_nonbundle_none.sh', ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-test $MACH_O_TYPE = mh_execute
-test $PRODUCT_TYPE = com.apple.product-type.application
-test "${PRODUCT_NAME}" = "My App"
-test "${FULL_PRODUCT_NAME}" = "My App.app"
-
-test "${EXECUTABLE_NAME}" = "My App"
-test "${EXECUTABLE_PATH}" = "My App.app/Contents/MacOS/My App"
-test "${WRAPPER_NAME}" = "My App.app"
-
-[[ ! $DYLIB_INSTALL_NAME_BASE && ${DYLIB_INSTALL_NAME_BASE-_} ]]
-[[ ! $LD_DYLIB_INSTALL_NAME && ${LD_DYLIB_INSTALL_NAME-_} ]]
-
-"$(dirname "$0")/test_check_sdkroot.sh"
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-test $MACH_O_TYPE = mh_bundle
-test $PRODUCT_TYPE = com.apple.product-type.bundle
-test $PRODUCT_NAME = bundle_loadable_module
-test $FULL_PRODUCT_NAME = bundle_loadable_module.bundle
-
-test $EXECUTABLE_NAME = bundle_loadable_module
-test $EXECUTABLE_PATH = \
- "bundle_loadable_module.bundle/Contents/MacOS/bundle_loadable_module"
-test $WRAPPER_NAME = bundle_loadable_module.bundle
-
-[[ ! $DYLIB_INSTALL_NAME_BASE && ${DYLIB_INSTALL_NAME_BASE-_} ]]
-[[ ! $LD_DYLIB_INSTALL_NAME && ${LD_DYLIB_INSTALL_NAME-_} ]]
-
-"$(dirname "$0")/test_check_sdkroot.sh"
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-test $MACH_O_TYPE = mh_dylib
-test $PRODUCT_TYPE = com.apple.product-type.framework
-test $PRODUCT_NAME = bundle_shared_library
-test $FULL_PRODUCT_NAME = bundle_shared_library.framework
-
-test $EXECUTABLE_NAME = bundle_shared_library
-test $EXECUTABLE_PATH = \
- "bundle_shared_library.framework/Versions/A/bundle_shared_library"
-test $WRAPPER_NAME = bundle_shared_library.framework
-
-test $DYLIB_INSTALL_NAME_BASE = "/Library/Frameworks"
-test $LD_DYLIB_INSTALL_NAME = \
- "/Library/Frameworks/bundle_shared_library.framework/Versions/A/bundle_shared_library"
-
-"$(dirname "$0")/test_check_sdkroot.sh"
+++ /dev/null
-#!/bin/bash
-# Copyright (c) 2014 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.
-
-set -e
-
-# `xcodebuild -version` output looks like
-# Xcode 4.6.3
-# Build version 4H1503
-# or like
-# Xcode 4.2
-# Build version 4C199
-# or like
-# Xcode 3.2.6
-# Component versions: DevToolsCore-1809.0; DevToolsSupport-1806.0
-# BuildVersion: 10M2518
-# Convert that to '0463', '0420' and '0326' respectively.
-function xcodeversion() {
- xcodebuild -version | awk '/Xcode ([0-9]+\.[0-9]+(\.[0-9]+)?)/ {
- version = $2
- gsub(/\./, "", version)
- if (length(version) < 3) {
- version = version "0"
- }
- if (length(version) < 4) {
- version = "0" version
- }
- }
- END { print version }'
-}
-
-# Returns true if |string1| is smaller than |string2|.
-# This function assumes that both strings represent Xcode version numbers
-# as returned by |xcodeversion|.
-function smaller() {
- local min="$(echo -ne "${1}\n${2}\n" | sort -n | head -n1)"
- test "${min}" != "${2}"
-}
-
-if [[ "$(xcodeversion)" < "0500" ]]; then
- # Xcode version is older than 5.0, check that SDKROOT is set but empty.
- [[ -z "${SDKROOT}" && -z "${SDKROOT-_}" ]]
-else
- # Xcode version is newer than 5.0, check that SDKROOT is set.
- [[ "${SDKROOT}" == "$(xcodebuild -version -sdk '' Path)" ]]
-fi
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-# For some reason, Xcode doesn't set MACH_O_TYPE for non-bundle executables.
-# Check for "not set", not just "empty":
-[[ ! $MACH_O_TYPE && ${MACH_O_TYPE-_} ]]
-test $PRODUCT_TYPE = com.apple.product-type.tool
-test $PRODUCT_NAME = nonbundle_executable
-test $FULL_PRODUCT_NAME = nonbundle_executable
-
-test $EXECUTABLE_NAME = nonbundle_executable
-test $EXECUTABLE_PATH = nonbundle_executable
-[[ ! $WRAPPER_NAME && ${WRAPPER_NAME-_} ]]
-
-[[ ! $DYLIB_INSTALL_NAME_BASE && ${DYLIB_INSTALL_NAME_BASE-_} ]]
-[[ ! $LD_DYLIB_INSTALL_NAME && ${LD_DYLIB_INSTALL_NAME-_} ]]
-
-"$(dirname "$0")/test_check_sdkroot.sh"
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-test $MACH_O_TYPE = mh_bundle
-test $PRODUCT_TYPE = com.apple.product-type.library.dynamic
-test $PRODUCT_NAME = nonbundle_loadable_module
-test $FULL_PRODUCT_NAME = nonbundle_loadable_module.so
-
-test $EXECUTABLE_NAME = nonbundle_loadable_module.so
-test $EXECUTABLE_PATH = nonbundle_loadable_module.so
-[[ ! $WRAPPER_NAME && ${WRAPPER_NAME-_} ]]
-
-test $DYLIB_INSTALL_NAME_BASE = "/usr/local/lib"
-test $LD_DYLIB_INSTALL_NAME = "/usr/local/lib/nonbundle_loadable_module.so"
-
-"$(dirname "$0")/test_check_sdkroot.sh"
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-# Check for "not set", not just "empty":
-[[ ! $MACH_O_TYPE && ${MACH_O_TYPE-_} ]]
-[[ ! $PRODUCT_TYPE && ${PRODUCT_TYPE-_} ]]
-test $PRODUCT_NAME = nonbundle_none
-[[ ! $FULL_PRODUCT_NAME && ${FULL_PRODUCT_NAME-_} ]]
-
-[[ ! $EXECUTABLE_NAME && ${EXECUTABLE_NAME-_} ]]
-[[ ! $EXECUTABLE_PATH && ${EXECUTABLE_PATH-_} ]]
-[[ ! $WRAPPER_NAME && ${WRAPPER_NAME-_} ]]
-
-[[ ! $DYLIB_INSTALL_NAME_BASE && ${DYLIB_INSTALL_NAME_BASE-_} ]]
-[[ ! $LD_DYLIB_INSTALL_NAME && ${LD_DYLIB_INSTALL_NAME-_} ]]
-
-"$(dirname "$0")/test_check_sdkroot.sh"
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-test $MACH_O_TYPE = mh_dylib
-test $PRODUCT_TYPE = com.apple.product-type.library.dynamic
-test $PRODUCT_NAME = nonbundle_shared_library
-test $FULL_PRODUCT_NAME = libnonbundle_shared_library.dylib
-
-test $EXECUTABLE_NAME = libnonbundle_shared_library.dylib
-test $EXECUTABLE_PATH = libnonbundle_shared_library.dylib
-[[ ! $WRAPPER_NAME && ${WRAPPER_NAME-_} ]]
-
-test $DYLIB_INSTALL_NAME_BASE = "/usr/local/lib"
-test $LD_DYLIB_INSTALL_NAME = "/usr/local/lib/libnonbundle_shared_library.dylib"
-
-"$(dirname "$0")/test_check_sdkroot.sh"
+++ /dev/null
-#!/bin/bash
-# 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.
-
-set -e
-
-test $MACH_O_TYPE = staticlib
-test $PRODUCT_TYPE = com.apple.product-type.library.static
-test $PRODUCT_NAME = nonbundle_static_library
-test $FULL_PRODUCT_NAME = libnonbundle_static_library.a
-
-test $EXECUTABLE_NAME = libnonbundle_static_library.a
-test $EXECUTABLE_PATH = libnonbundle_static_library.a
-[[ ! $WRAPPER_NAME && ${WRAPPER_NAME-_} ]]
-
-[[ ! $DYLIB_INSTALL_NAME_BASE && ${DYLIB_INSTALL_NAME_BASE-_} ]]
-[[ ! $LD_DYLIB_INSTALL_NAME && ${LD_DYLIB_INSTALL_NAME-_} ]]
-
-"$(dirname "$0")/test_check_sdkroot.sh"
+++ /dev/null
-int main() {
-}
+++ /dev/null
-# Copyright 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'myapp',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [ 'file.cc', ],
- 'xcode_settings': {
- 'BUNDLE_DISPLAY_NAME': 'α\011',
- },
- 'postbuilds': [
- {
- 'postbuild_name': 'envtest',
- 'action': [ './test_bundle_display_name.sh', ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/bin/bash
-
-# Copyright 2013 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.
-
-test "${BUNDLE_DISPLAY_NAME}" = 'α '
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.google.${PRODUCT_NAME}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>${MACOSX_DEPLOYMENT_TARGET}</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-
- <key>BraceProcessedKey1</key>
- <string>${BRACE_DEPENDENT_KEY1}</string>
- <key>BraceProcessedKey2</key>
- <string>${BRACE_DEPENDENT_KEY2}</string>
- <key>BraceProcessedKey3</key>
- <string>${BRACE_DEPENDENT_KEY3}</string>
-
- <key>ParenProcessedKey1</key>
- <string>${PAREN_DEPENDENT_KEY1}</string>
- <key>ParenProcessedKey2</key>
- <string>${PAREN_DEPENDENT_KEY2}</string>
- <key>ParenProcessedKey3</key>
- <string>${PAREN_DEPENDENT_KEY3}</string>
-
- <key>BareProcessedKey1</key>
- <string>${BARE_DEPENDENT_KEY1}</string>
- <key>BareProcessedKey2</key>
- <string>${BARE_DEPENDENT_KEY2}</string>
- <key>BareProcessedKey3</key>
- <string>${BARE_DEPENDENT_KEY3}</string>
-
- <key>MixedProcessedKey</key>
- <string>${MIXED_DEPENDENT_KEY}</string>
-</dict>
-</plist>
+++ /dev/null
-// Copyright (c) 2011 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'test_app',
- 'product_name': 'Test',
- 'type': 'executable',
- 'mac_bundle': 1,
- 'sources': [
- 'main.c',
- 'file.ext1',
- 'file.ext2',
- 'file.ext3',
- ],
- # Env vars in copies.
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/${PRODUCT_NAME}-copy-brace',
- 'files': [ 'main.c', ], # ${SOURCE_ROOT} doesn't work with xcode
- },
- {
- 'destination': '<(PRODUCT_DIR)/$(PRODUCT_NAME)-copy-paren',
- 'files': [ '$(SOURCE_ROOT)/main.c', ],
- },
- {
- 'destination': '<(PRODUCT_DIR)/$PRODUCT_NAME-copy-bare',
- 'files': [ 'main.c', ], # $SOURCE_ROOT doesn't work with xcode
- },
- ],
- # Env vars in actions. The $FOO's are here to test that env vars that
- # aren't defined are handled in some way that doesn't break the build.
- 'actions': [
- {
- 'action_name': 'Action copy braces ${PRODUCT_NAME} ${FOO}',
- 'description': 'Action copy braces ${PRODUCT_NAME} ${FOO}',
- 'inputs': [ '${SOURCE_ROOT}/main.c' ],
- # Referencing ${PRODUCT_NAME} in action outputs doesn't work with
- # the Xcode generator (PRODUCT_NAME expands to "Test Support").
- 'outputs': [ '<(PRODUCT_DIR)/action-copy-brace.txt' ],
- 'action': [ 'cp', '${SOURCE_ROOT}/main.c',
- '<(PRODUCT_DIR)/action-copy-brace.txt' ],
- },
- {
- 'action_name': 'Action copy parens $(PRODUCT_NAME) $(FOO)',
- 'description': 'Action copy parens $(PRODUCT_NAME) $(FOO)',
- 'inputs': [ '$(SOURCE_ROOT)/main.c' ],
- # Referencing $(PRODUCT_NAME) in action outputs doesn't work with
- # the Xcode generator (PRODUCT_NAME expands to "Test Support").
- 'outputs': [ '<(PRODUCT_DIR)/action-copy-paren.txt' ],
- 'action': [ 'cp', '$(SOURCE_ROOT)/main.c',
- '<(PRODUCT_DIR)/action-copy-paren.txt' ],
- },
- {
- 'action_name': 'Action copy bare $PRODUCT_NAME $FOO',
- 'description': 'Action copy bare $PRODUCT_NAME $FOO',
- 'inputs': [ '$SOURCE_ROOT/main.c' ],
- # Referencing $PRODUCT_NAME in action outputs doesn't work with
- # the Xcode generator (PRODUCT_NAME expands to "Test Support").
- 'outputs': [ '<(PRODUCT_DIR)/action-copy-bare.txt' ],
- 'action': [ 'cp', '$SOURCE_ROOT/main.c',
- '<(PRODUCT_DIR)/action-copy-bare.txt' ],
- },
- ],
- # Env vars in xcode_settings.
- 'xcode_settings': {
- 'INFOPLIST_FILE': 'Info.plist',
- 'STRING_KEY': '/Source/Project',
-
- 'BRACE_DEPENDENT_KEY2': '${STRING_KEY}/${PRODUCT_NAME}',
- 'BRACE_DEPENDENT_KEY1': 'D:${BRACE_DEPENDENT_KEY2}',
- 'BRACE_DEPENDENT_KEY3': '${PRODUCT_TYPE}:${BRACE_DEPENDENT_KEY1}',
-
- 'PAREN_DEPENDENT_KEY2': '$(STRING_KEY)/$(PRODUCT_NAME)',
- 'PAREN_DEPENDENT_KEY1': 'D:$(PAREN_DEPENDENT_KEY2)',
- 'PAREN_DEPENDENT_KEY3': '$(PRODUCT_TYPE):$(PAREN_DEPENDENT_KEY1)',
-
- 'BARE_DEPENDENT_KEY2': '$STRING_KEY/$PRODUCT_NAME',
- 'BARE_DEPENDENT_KEY1': 'D:$BARE_DEPENDENT_KEY2',
- 'BARE_DEPENDENT_KEY3': '$PRODUCT_TYPE:$BARE_DEPENDENT_KEY1',
-
- 'MIXED_DEPENDENT_KEY': '${STRING_KEY}:$(PRODUCT_NAME):$MACH_O_TYPE',
- },
- # Env vars in rules. The $FOO's are here to test that env vars that
- # aren't defined are handled in some way that doesn't break the build.
- 'rules': [
- {
- 'rule_name': 'brace_rule',
- 'message': 'Rule braces ${PRODUCT_NAME} ${FOO} <(RULE_INPUT_NAME)',
- 'extension': 'ext1',
- 'inputs': [ '${SOURCE_ROOT}/main.c' ],
- 'outputs': [ '<(PRODUCT_DIR)/rule-copy-brace.txt' ],
- 'action': [ 'cp', '${SOURCE_ROOT}/main.c',
- '<(PRODUCT_DIR)/rule-copy-brace.txt' ],
- },
- {
- 'rule_name': 'paren_rule',
- 'message': 'Rule parens $(PRODUCT_NAME) $(FOO) <(RULE_INPUT_NAME)',
- 'extension': 'ext2',
- 'inputs': [ '$(SOURCE_ROOT)/main.c' ],
- 'outputs': [ '<(PRODUCT_DIR)/rule-copy-paren.txt' ],
- 'action': [ 'cp', '$(SOURCE_ROOT)/main.c',
- '<(PRODUCT_DIR)/rule-copy-paren.txt' ],
- },
- # TODO: Fails in xcode. Looks like a bug in the xcode generator though
- # (which uses makefiles for rules, and thinks $PRODUCT_NAME is
- # $(P)RODUCT_NAME).
- #{
- # 'rule_name': 'bare_rule',
- # 'message': 'Rule copy bare $PRODUCT_NAME $FOO',
- # 'extension': 'ext3',
- # 'inputs': [ '$SOURCE_ROOT/main.c' ],
- # 'outputs': [ '<(PRODUCT_DIR)/rule-copy-bare.txt' ],
- # 'action': [ 'cp', '$SOURCE_ROOT/main.c',
- # '<(PRODUCT_DIR)/rule-copy-bare.txt' ],
- #},
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-void check(int* h, long* k) {
- *h = 1;
- *k = 0;
- printf("%d\n", *h);
-}
-
-int main(void) {
- long k;
- check((int*)&k, &k);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', '/usr/bin/clang'],
- ['CXX', '/usr/bin/clang++'],
- ],
-
- 'targets': [
- {
- 'target_name': 'aliasing_yes',
- 'type': 'executable',
- 'sources': [ 'aliasing.cc', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'GCC_STRICT_ALIASING': 'YES',
- 'GCC_OPTIMIZATION_LEVEL': 2,
- },
- },
- {
- 'target_name': 'aliasing_no',
- 'type': 'executable',
- 'sources': [ 'aliasing.cc', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'GCC_STRICT_ALIASING': 'NO',
- 'GCC_OPTIMIZATION_LEVEL': 2,
- },
- },
- {
- 'target_name': 'aliasing_default',
- 'type': 'executable',
- 'sources': [ 'aliasing.cc', ],
- 'xcode_settings': {
- 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
- 'GCC_OPTIMIZATION_LEVEL': 2,
- },
- },
- ],
-}
+++ /dev/null
-# 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.
-{
- 'target_defaults': {
- 'xcode_settings': {
- 'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES',
- },
- },
-
- 'variables': {
- # Non-failing tests should check that these trivial files in every language
- # still compile correctly.
- 'valid_sources': [
- 'valid_c.c',
- 'valid_cc.cc',
- 'valid_m.m',
- 'valid_mm.mm',
- ],
- },
-
- # Targets come in pairs: 'foo' and 'foo-fail', with the former building with
- # no warnings and the latter not.
- 'targets': [
- # GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO (default: YES):
- {
- 'target_name': 'warn_about_invalid_offsetof_macro',
- 'type': 'executable',
- 'sources': [
- 'warn_about_invalid_offsetof_macro.cc',
- '<@(valid_sources)',
- ],
- 'xcode_settings': {
- 'GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO': 'NO',
- },
- },
- {
- 'target_name': 'warn_about_invalid_offsetof_macro-fail',
- 'type': 'executable',
- 'sources': [ 'warn_about_invalid_offsetof_macro.cc', ],
- },
- # GCC_WARN_ABOUT_MISSING_NEWLINE (default: NO):
- {
- 'target_name': 'warn_about_missing_newline',
- 'type': 'executable',
- 'sources': [
- 'warn_about_missing_newline.c',
- '<@(valid_sources)',
- ],
- },
- {
- 'target_name': 'warn_about_missing_newline-fail',
- 'type': 'executable',
- 'sources': [ 'warn_about_missing_newline.c', ],
- 'xcode_settings': {
- 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES',
- },
- },
- ],
-}
+++ /dev/null
-// 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.
-
-// This file exists to test that valid C files compile correctly.
-
-void FunctionInCFile(void) {
-}
+++ /dev/null
-// 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.
-
-// This file exists to test that valid C++ files compile correctly.
-
-void FunctionInCCFile() {
-}
+++ /dev/null
-// 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.
-
-// This file exists to test that valid Objective-C files compile correctly.
-
-void FunctionInMFile(void) {
-}
+++ /dev/null
-// 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.
-
-// This file exists to test that valid Objective-C++ files compile correctly.
-
-void FunctionInMMFile() {
-}
+++ /dev/null
-// 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.
-
-#define offsetof(st, m) ((unsigned)((char*)&((st*)0)->m - (char*)0))
-
-struct MyStruct {
- virtual void MyFunc() = 0;
- int my_member;
-};
-
-int main() {
- unsigned x = offsetof(MyStruct, my_member);
- return x ? 0 : 1;
-}
+++ /dev/null
-// 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.
-
-// Important: Don't terminate this file with a newline.
-int main() {
- return 0;
-}
\ No newline at end of file
+++ /dev/null
-# Copyright (c) 2014 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.
-{
- 'targets': [
- {
- 'target_name': 'target',
- 'product_name': 'Product',
- 'type': 'shared_library',
- 'mac_bundle': 1,
- 'sources': [
- '<(PRODUCT_DIR)/copy.c',
- ],
- 'actions': [
- {
- 'action_name': 'Helper',
- 'description': 'Helps',
- 'inputs': [ 'source.c' ],
- 'outputs': [ '<(PRODUCT_DIR)/copy.c' ],
- 'action': [ 'cp', '${SOURCE_ROOT}/source.c',
- '<(PRODUCT_DIR)/copy.c' ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#import <Foundation/Foundation.h>
-
-@interface MyClass : NSObject
-@end
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#import "MyClass.h"
-
-@implementation MyClass
-@end
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#import <XCTest/XCTest.h>
-#import "MyClass.h"
-
-@interface TestCase : XCTestCase
-@end
-
-@implementation TestCase
-- (void)testFoo {
- MyClass *foo = [[MyClass alloc] init];
- XCTAssertNotNil(foo, @"expected non-nil object");
-}
-@end
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'classes',
- 'type': 'static_library',
- 'sources': [
- 'MyClass.h',
- 'MyClass.m',
- ],
- 'link_settings': {
- 'libraries': [
- '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
- ],
- },
- },
- {
- 'target_name': 'tests',
- 'type': 'loadable_module',
- 'mac_xctest_bundle': 1,
- 'sources': [
- 'TestCase.m',
- ],
- 'dependencies': [
- 'classes',
- ],
- 'mac_bundle_resources': [
- 'resource.txt',
- ],
- 'xcode_settings': {
- 'WRAPPER_EXTENSION': 'xctest',
- 'FRAMEWORK_SEARCH_PATHS': [
- '$(inherited)',
- '$(DEVELOPER_FRAMEWORKS_DIR)',
- ],
- 'OTHER_LDFLAGS': [
- '$(inherited)',
- '-ObjC',
- ],
- },
- },
- ],
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
- LastUpgradeVersion = "0500"
- version = "1.3">
- <BuildAction
- parallelizeBuildables = "YES"
- buildImplicitDependencies = "YES">
- <BuildActionEntries>
- <BuildActionEntry
- buildForTesting = "YES"
- buildForRunning = "YES"
- buildForProfiling = "YES"
- buildForArchiving = "YES"
- buildForAnalyzing = "YES">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "D3B79173B4570A3C70A902FF"
- BuildableName = "libclasses.a"
- BlueprintName = "classes"
- ReferencedContainer = "container:test.xcodeproj">
- </BuildableReference>
- </BuildActionEntry>
- </BuildActionEntries>
- </BuildAction>
- <TestAction
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- shouldUseLaunchSchemeArgsEnv = "YES"
- buildConfiguration = "Default">
- <Testables>
- <TestableReference
- skipped = "NO">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "2ACDAB234B9E5D65CACBCF9C"
- BuildableName = "tests.xctest"
- BlueprintName = "tests"
- ReferencedContainer = "container:test.xcodeproj">
- </BuildableReference>
- </TestableReference>
- </Testables>
- </TestAction>
- <LaunchAction
- selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
- selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- launchStyle = "0"
- useCustomWorkingDirectory = "NO"
- buildConfiguration = "Default"
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- allowLocationSimulation = "YES">
- <AdditionalOptions>
- </AdditionalOptions>
- </LaunchAction>
- <ProfileAction
- shouldUseLaunchSchemeArgsEnv = "YES"
- savedToolIdentifier = ""
- useCustomWorkingDirectory = "NO"
- buildConfiguration = "Default"
- debugDocumentVersioning = "YES">
- </ProfileAction>
- <AnalyzeAction
- buildConfiguration = "Default">
- </AnalyzeAction>
- <ArchiveAction
- buildConfiguration = "Default"
- revealArchiveInOrganizer = "YES">
- </ArchiveAction>
-</Scheme>
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'main',
- 'type': 'executable',
- 'sources': [
- 'main.cc',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that .d files and all.deps are properly generated.
-"""
-
-import TestGyp
-
-# .d files are only used by the make build.
-test = TestGyp.TestGyp(formats=['make'])
-
-test.run_gyp('dependencies.gyp')
-
-test.build('dependencies.gyp', test.ALL)
-
-deps_file = test.built_file_path(".deps/out/Default/obj.target/main/main.o.d")
-test.must_contain(deps_file, "main.h")
-
-# Build a second time to make sure we generate all.deps.
-test.build('dependencies.gyp', test.ALL)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2010 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.
-
-"""
-Tests the use of the NO_LOAD flag which makes loading sub .mk files
-optional.
-"""
-
-# Python 2.5 needs this for the with statement.
-from __future__ import with_statement
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['make'])
-
-test.run_gyp('all.gyp', chdir='noload')
-
-test.relocate('noload', 'relocate/noload')
-
-test.build('build/all.gyp', test.ALL, chdir='relocate/noload')
-test.run_built_executable('exe', chdir='relocate/noload',
- stdout='Hello from shared.c.\n')
-
-# Just sanity test that NO_LOAD=lib doesn't break anything.
-test.build('build/all.gyp', test.ALL, chdir='relocate/noload',
- arguments=['NO_LOAD=lib'])
-test.run_built_executable('exe', chdir='relocate/noload',
- stdout='Hello from shared.c.\n')
-test.build('build/all.gyp', test.ALL, chdir='relocate/noload',
- arguments=['NO_LOAD=z'])
-test.run_built_executable('exe', chdir='relocate/noload',
- stdout='Hello from shared.c.\n')
-
-# Make sure we can rebuild without reloading the sub .mk file.
-with open('relocate/noload/main.c', 'a') as src_file:
- src_file.write("\n")
-test.build('build/all.gyp', test.ALL, chdir='relocate/noload',
- arguments=['NO_LOAD=lib'])
-test.run_built_executable('exe', chdir='relocate/noload',
- stdout='Hello from shared.c.\n')
-
-# Change shared.c, but verify that it doesn't get rebuild if we don't load it.
-with open('relocate/noload/lib/shared.c', 'w') as shared_file:
- shared_file.write(
- '#include "shared.h"\n'
- 'const char kSharedStr[] = "modified";\n'
- )
-test.build('build/all.gyp', test.ALL, chdir='relocate/noload',
- arguments=['NO_LOAD=lib'])
-test.run_built_executable('exe', chdir='relocate/noload',
- stdout='Hello from shared.c.\n')
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-#include <stdio.h>
-
-#include "main.h"
-
-int main(void) {
- printf("hello world\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'exe',
- 'type': 'executable',
- 'sources': [
- 'main.c',
- ],
- 'dependencies': [
- 'lib/shared.gyp:shared',
- ],
- },
- ],
-}
+++ /dev/null
-#include "shared.h"
-
-const char kSharedStr[] = "shared.c";
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'shared',
- 'type': 'shared_library',
- 'sources': [
- 'shared.c',
- 'shared.h',
- ],
- },
- ],
-}
+++ /dev/null
-extern const char kSharedStr[];
+++ /dev/null
-#include <stdio.h>
-
-#include "lib/shared.h"
-
-int main(void)
-{
- printf("Hello from %s.\n", kSharedStr);
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies 'AR' in make_global_settings.
-"""
-
-import os
-import sys
-import TestGyp
-
-def resolve_path(test, path):
- if path is None:
- return None
- elif test.format == 'make':
- return '$(abspath %s)' % path
- elif test.format in ['ninja', 'xcode-ninja']:
- return os.path.join('..', '..', path)
- else:
- test.fail_test()
-
-
-def verify_ar_target(test, ar=None, rel_path=False):
- if rel_path:
- ar_expected = resolve_path(test, ar)
- else:
- ar_expected = ar
- # Resolve default values
- if ar_expected is None:
- if test.format == 'make':
- # Make generator hasn't set the default value for AR.
- # You can remove the following assertion as long as it doesn't
- # break existing projects.
- test.must_not_contain('Makefile', 'AR ?= ')
- return
- elif test.format in ['ninja', 'xcode-ninja']:
- if sys.platform == 'win32':
- ar_expected = 'lib.exe'
- else:
- ar_expected = 'ar'
- if test.format == 'make':
- test.must_contain('Makefile', 'AR ?= %s' % ar_expected)
- elif test.format in ['ninja', 'xcode-ninja']:
- test.must_contain('out/Default/build.ninja', 'ar = %s' % ar_expected)
- else:
- test.fail_test()
-
-
-def verify_ar_host(test, ar=None, rel_path=False):
- if rel_path:
- ar_expected = resolve_path(test, ar)
- else:
- ar_expected = ar
- # Resolve default values
- if ar_expected is None:
- ar_expected = 'ar'
- if test.format == 'make':
- test.must_contain('Makefile', 'AR.host ?= %s' % ar_expected)
- elif test.format in ['ninja', 'xcode-ninja']:
- test.must_contain('out/Default/build.ninja', 'ar_host = %s' % ar_expected)
- else:
- test.fail_test()
-
-
-test_format = ['ninja']
-if sys.platform in ('linux2', 'darwin'):
- test_format += ['make']
-
-test = TestGyp.TestGyp(formats=test_format)
-
-# Check default values
-test.run_gyp('make_global_settings_ar.gyp')
-verify_ar_target(test)
-
-
-# Check default values with GYP_CROSSCOMPILE enabled.
-with TestGyp.LocalEnv({'GYP_CROSSCOMPILE': '1'}):
- test.run_gyp('make_global_settings_ar.gyp')
-verify_ar_target(test)
-verify_ar_host(test)
-
-
-# Test 'AR' in 'make_global_settings'.
-with TestGyp.LocalEnv({'GYP_CROSSCOMPILE': '1'}):
- test.run_gyp('make_global_settings_ar.gyp', '-Dcustom_ar_target=my_ar')
-verify_ar_target(test, ar='my_ar', rel_path=True)
-
-
-# Test 'AR'/'AR.host' in 'make_global_settings'.
-with TestGyp.LocalEnv({'GYP_CROSSCOMPILE': '1'}):
- test.run_gyp('make_global_settings_ar.gyp',
- '-Dcustom_ar_target=my_ar_target1',
- '-Dcustom_ar_host=my_ar_host1')
-verify_ar_target(test, ar='my_ar_target1', rel_path=True)
-verify_ar_host(test, ar='my_ar_host1', rel_path=True)
-
-
-# Test $AR and $AR_host environment variables.
-with TestGyp.LocalEnv({'AR': 'my_ar_target2',
- 'AR_host': 'my_ar_host2'}):
- test.run_gyp('make_global_settings_ar.gyp')
-# Ninja generator resolves $AR in gyp phase. Make generator doesn't.
-if test.format == 'ninja':
- if sys.platform == 'win32':
- # TODO(yukawa): Make sure if this is an expected result or not.
- verify_ar_target(test, ar='lib.exe', rel_path=False)
- else:
- verify_ar_target(test, ar='my_ar_target2', rel_path=False)
-verify_ar_host(test, ar='my_ar_host2', rel_path=False)
-
-
-# Test 'AR' in 'make_global_settings' with $AR_host environment variable.
-with TestGyp.LocalEnv({'AR_host': 'my_ar_host3'}):
- test.run_gyp('make_global_settings_ar.gyp',
- '-Dcustom_ar_target=my_ar_target3')
-verify_ar_target(test, ar='my_ar_target3', rel_path=True)
-verify_ar_host(test, ar='my_ar_host3', rel_path=False)
-
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2014 Google Inc. All rights reserved.
-# Use of this source code is governed by a BSD-style licence that can be
-# found in the LICENSE file.
-
-{
- 'variables': {
- 'custom_ar_target%': '',
- 'custom_ar_host%': '',
- },
- 'conditions': [
- ['"<(custom_ar_target)"!=""', {
- 'make_global_settings': [
- ['AR', '<(custom_ar_target)'],
- ],
- }],
- ['"<(custom_ar_host)"!=""', {
- 'make_global_settings': [
- ['AR.host', '<(custom_ar_host)'],
- ],
- }],
- ],
- 'targets': [
- {
- 'target_name': 'make_global_settings_ar_test',
- 'type': 'static_library',
- 'sources': [ 'foo.c' ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies make_global_settings.
-"""
-
-import os
-import sys
-import TestGyp
-
-test_format = ['ninja']
-if sys.platform in ('linux2', 'darwin'):
- test_format += ['make']
-
-test = TestGyp.TestGyp(formats=test_format)
-
-test.run_gyp('make_global_settings.gyp')
-
-if test.format == 'make':
- cc_expected = """ifneq (,$(filter $(origin CC), undefined default))
- CC = $(abspath clang)
-endif
-"""
- if sys.platform == 'linux2':
- link_expected = """
-LINK ?= $(abspath clang)
-"""
- elif sys.platform == 'darwin':
- link_expected = """
-LINK ?= $(abspath clang)
-"""
- test.must_contain('Makefile', cc_expected)
- test.must_contain('Makefile', link_expected)
-if test.format == 'ninja':
- cc_expected = 'cc = ' + os.path.join('..', '..', 'clang')
- ld_expected = 'ld = $cc'
- if sys.platform == 'win32':
- ld_expected = 'link.exe'
- test.must_contain('out/Default/build.ninja', cc_expected)
- test.must_contain('out/Default/build.ninja', ld_expected)
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2013 Google Inc. All rights reserved.
-# Use of this source code is governed by a BSD-style licence that can be
-# found in the LICENSE file.
-
-{
- 'make_global_settings': [
- ['CC', 'clang'],
- ['LINK', 'clang'],
- ],
- 'targets': [
- {
- 'target_name': 'test',
- 'type': 'static_library',
- 'sources': [ 'foo.c' ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies *_wrapper in environment.
-"""
-
-import os
-import sys
-import TestGyp
-
-test_format = ['ninja']
-
-os.environ['CC_wrapper'] = 'distcc'
-os.environ['LINK_wrapper'] = 'distlink'
-os.environ['CC.host_wrapper'] = 'ccache'
-
-test = TestGyp.TestGyp(formats=test_format)
-
-old_env = dict(os.environ)
-os.environ['GYP_CROSSCOMPILE'] = '1'
-test.run_gyp('wrapper.gyp')
-os.environ.clear()
-os.environ.update(old_env)
-
-if test.format == 'ninja':
- cc_expected = ('cc = ' + os.path.join('..', '..', 'distcc') + ' ' +
- os.path.join('..', '..', 'clang'))
- cc_host_expected = ('cc_host = ' + os.path.join('..', '..', 'ccache') + ' ' +
- os.path.join('..', '..', 'clang'))
- ld_expected = 'ld = ../../distlink $cc'
- if sys.platform != 'win32':
- ldxx_expected = 'ldxx = ../../distlink $cxx'
-
- if sys.platform == 'win32':
- ld_expected = 'link.exe'
- test.must_contain('out/Default/build.ninja', cc_expected)
- test.must_contain('out/Default/build.ninja', cc_host_expected)
- test.must_contain('out/Default/build.ninja', ld_expected)
- if sys.platform != 'win32':
- test.must_contain('out/Default/build.ninja', ldxx_expected)
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', 'clang'],
- ['CC.host', 'clang'],
- ],
- 'targets': [
- {
- 'target_name': 'test',
- 'type': 'static_library',
- 'sources': [ 'foo.c' ],
- },
- ],
-}
+++ /dev/null
-#error Not a real source file
+++ /dev/null
-#error Not a real source file
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies make_global_settings works with the full toolchain.
-"""
-
-import os
-import sys
-import TestGyp
-
-if sys.platform == 'win32':
- # cross compiling not supported by ninja on windows
- # and make not supported on windows at all.
- sys.exit(0)
-
-test = TestGyp.TestGyp(formats=['ninja'])
-# Must set the test format to something with a flavor (the part after the '-')
-# in order to test the desired behavior. Since we want to run a non-host
-# toolchain, we have to set the flavor to something that the ninja generator
-# doesn't know about, so it doesn't default to the host-specific tools (e.g.,
-# 'otool' on mac to generate the .TOC).
-#
-# Note that we can't just pass format=['ninja-some_toolchain'] to the
-# constructor above, because then this test wouldn't be recognized as a ninja
-# format test.
-test.formats = ['ninja-my_flavor' if f == 'ninja' else f for f in test.formats]
-
-gyp_file = 'make_global_settings.gyp'
-
-test.run_gyp(gyp_file,
- # Teach the .gyp file about the location of my_nm.py and
- # my_readelf.py, and the python executable.
- '-Dworkdir=%s' % test.workdir,
- '-Dpython=%s' % sys.executable)
-test.build(gyp_file,
- arguments=['-v'] if test.format == 'ninja-my_flavor' else [])
-
-expected = ['MY_CC', 'MY_CXX']
-test.must_contain_all_lines(test.stdout(), expected)
-
-test.must_contain(test.built_file_path('RAN_MY_NM'), 'RAN_MY_NM')
-test.must_contain(test.built_file_path('RAN_MY_READELF'), 'RAN_MY_READELF')
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2013 Google Inc. All rights reserved.
-# Use of this source code is governed by a BSD-style licence that can be
-# found in the LICENSE file.
-
-{
- 'make_global_settings': [
- ['CC', '/bin/echo MY_CC'],
- ['CXX', '/bin/echo MY_CXX'],
- ['NM', '<(python) <(workdir)/my_nm.py'],
- ['READELF', '<(python) <(workdir)/my_readelf.py'],
- ],
- 'targets': [
- {
- 'target_name': 'test',
- 'type': 'shared_library',
- 'sources': [
- 'foo.c',
- 'bar.cc',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2014 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.
-import sys
-print sys.argv
-with open('RAN_MY_NM', 'w') as f:
- f.write('RAN_MY_NM')
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2014 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.
-import sys
-print sys.argv
-with open('RAN_MY_READELF', 'w') as f:
- f.write('RAN_MY_READELF')
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies 'LD' in make_global_settings.
-"""
-
-import os
-import sys
-import TestGyp
-
-def resolve_path(test, path):
- if path is None:
- return None
- elif test.format == 'make':
- return '$(abspath %s)' % path
- elif test.format in ['ninja', 'xcode-ninja']:
- return os.path.join('..', '..', path)
- else:
- test.fail_test()
-
-
-def verify_ld_target(test, ld=None, rel_path=False):
- if rel_path:
- ld_expected = resolve_path(test, ld)
- else:
- ld_expected = ld
- # Resolve default values
- if ld_expected is None:
- if test.format == 'make':
- # Make generator hasn't set the default value for LD.
- # You can remove the following assertion as long as it doesn't
- # break existing projects.
- test.must_not_contain('Makefile', 'LD ?= ')
- return
- elif test.format in ['ninja', 'xcode-ninja']:
- if sys.platform == 'win32':
- ld_expected = 'link.exe'
- else:
- ld_expected = '$cc'
- if test.format == 'make':
- test.must_contain('Makefile', 'LD ?= %s' % ld_expected)
- elif test.format in ['ninja', 'xcode-ninja']:
- test.must_contain('out/Default/build.ninja', 'ld = %s' % ld_expected)
- else:
- test.fail_test()
-
-
-def verify_ld_host(test, ld=None, rel_path=False):
- if rel_path:
- ld_expected = resolve_path(test, ld)
- else:
- ld_expected = ld
- # Resolve default values
- if ld_expected is None:
- if test.format == 'make':
- # Make generator hasn't set the default value for LD.host.
- # You can remove the following assertion as long as it doesn't
- # break existing projects.
- test.must_not_contain('Makefile', 'LD.host ?= ')
- return
- elif test.format in ['ninja', 'xcode-ninja']:
- if sys.platform == 'win32':
- ld_expected = '$ld'
- else:
- ld_expected = '$cc_host'
- if test.format == 'make':
- test.must_contain('Makefile', 'LD.host ?= %s' % ld_expected)
- elif test.format in ['ninja', 'xcode-ninja']:
- test.must_contain('out/Default/build.ninja', 'ld_host = %s' % ld_expected)
- else:
- test.fail_test()
-
-
-test_format = ['ninja']
-if sys.platform in ('linux2', 'darwin'):
- test_format += ['make']
-
-test = TestGyp.TestGyp(formats=test_format)
-
-# Check default values
-test.run_gyp('make_global_settings_ld.gyp')
-verify_ld_target(test)
-
-
-# Check default values with GYP_CROSSCOMPILE enabled.
-with TestGyp.LocalEnv({'GYP_CROSSCOMPILE': '1'}):
- test.run_gyp('make_global_settings_ld.gyp')
-verify_ld_target(test)
-verify_ld_host(test)
-
-
-# Test 'LD' in 'make_global_settings'.
-with TestGyp.LocalEnv({'GYP_CROSSCOMPILE': '1'}):
- test.run_gyp('make_global_settings_ld.gyp', '-Dcustom_ld_target=my_ld')
-verify_ld_target(test, ld='my_ld', rel_path=True)
-
-
-# Test 'LD'/'LD.host' in 'make_global_settings'.
-with TestGyp.LocalEnv({'GYP_CROSSCOMPILE': '1'}):
- test.run_gyp('make_global_settings_ld.gyp',
- '-Dcustom_ld_target=my_ld_target1',
- '-Dcustom_ld_host=my_ld_host1')
-verify_ld_target(test, ld='my_ld_target1', rel_path=True)
-verify_ld_host(test, ld='my_ld_host1', rel_path=True)
-
-
-# Unlike other environment variables such as $AR/$AR_host, $CC/$CC_host,
-# and $CXX/$CXX_host, neither Make generator nor Ninja generator recognizes
-# $LD/$LD_host environment variables as of r1935. This may or may not be
-# intentional, but here we leave a test case to verify this behavior just for
-# the record.
-# If you want to support $LD/$LD_host, please revise the following test case as
-# well as the generator.
-with TestGyp.LocalEnv({'GYP_CROSSCOMPILE': '1',
- 'LD': 'my_ld_target2',
- 'LD_host': 'my_ld_host2'}):
- test.run_gyp('make_global_settings_ld.gyp')
-if test.format == 'make':
- test.must_not_contain('Makefile', 'my_ld_target2')
- test.must_not_contain('Makefile', 'my_ld_host2')
-elif test.format == 'ninja':
- test.must_not_contain('out/Default/build.ninja', 'my_ld_target2')
- test.must_not_contain('out/Default/build.ninja', 'my_ld_host2')
-
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2014 Google Inc. All rights reserved.
-# Use of this source code is governed by a BSD-style licence that can be
-# found in the LICENSE file.
-
-{
- 'variables': {
- 'custom_ld_target%': '',
- 'custom_ld_host%': '',
- },
- 'conditions': [
- ['"<(custom_ld_target)"!=""', {
- 'make_global_settings': [
- ['LD', '<(custom_ld_target)'],
- ],
- }],
- ['"<(custom_ld_host)"!=""', {
- 'make_global_settings': [
- ['LD.host', '<(custom_ld_host)'],
- ],
- }],
- ],
- 'targets': [
- {
- 'target_name': 'make_global_settings_ld_test',
- 'type': 'static_library',
- 'sources': [ 'foo.c' ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies *_wrapper in make_global_settings.
-"""
-
-import os
-import sys
-import TestGyp
-
-test_format = ['ninja']
-if sys.platform in ('linux2', 'darwin'):
- test_format += ['make']
-
-test = TestGyp.TestGyp(formats=test_format)
-
-old_env = dict(os.environ)
-os.environ['GYP_CROSSCOMPILE'] = '1'
-test.run_gyp('wrapper.gyp')
-os.environ.clear()
-os.environ.update(old_env)
-
-if test.format == 'make':
- cc_expected = """ifneq (,$(filter $(origin CC), undefined default))
- CC = $(abspath distcc) $(abspath clang)
-endif
-"""
- link_expected = 'LINK ?= $(abspath distlink) $(abspath clang++)'
- test.must_contain('Makefile', cc_expected)
- test.must_contain('Makefile', link_expected)
-if test.format == 'ninja':
- cc_expected = ('cc = ' + os.path.join('..', '..', 'distcc') + ' ' +
- os.path.join('..', '..', 'clang'))
- cc_host_expected = ('cc_host = ' + os.path.join('..', '..', 'ccache') + ' ' +
- os.path.join('..', '..', 'clang'))
- ld_expected = 'ld = ../../distlink $cc'
- if sys.platform == 'win32':
- ld_expected = 'link.exe'
- test.must_contain('out/Default/build.ninja', cc_expected)
- test.must_contain('out/Default/build.ninja', cc_host_expected)
- test.must_contain('out/Default/build.ninja', ld_expected)
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2013 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_global_settings': [
- ['CC', 'clang'],
- ['CC_wrapper', 'distcc'],
- ['LINK', 'clang++'],
- ['LINK_wrapper', 'distlink'],
- ['CC.host', 'clang'],
- ['CC.host_wrapper', 'ccache'],
- ],
- 'targets': [
- {
- 'target_name': 'test',
- 'type': 'static_library',
- 'sources': [ 'foo.c' ],
- },
- ],
-}
+++ /dev/null
-#!/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 lots of actions in the same target don't cause exceeding command
-line length.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('many-actions-unsorted.gyp')
-
-test.build('many-actions-unsorted.gyp', test.ALL)
-for i in range(15):
- test.built_file_must_exist('generated_%d.h' % i)
-
-# Make sure the optimized cygwin setup doesn't cause problems for incremental
-# builds.
-test.touch('file1')
-test.build('many-actions-unsorted.gyp', test.ALL)
-
-test.touch('file0')
-test.build('many-actions-unsorted.gyp', test.ALL)
-
-test.touch('file2')
-test.touch('file3')
-test.touch('file4')
-test.build('many-actions-unsorted.gyp', test.ALL)
-
-test.pass_test()
+++ /dev/null
-#!/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 lots of actions in the same target don't cause exceeding command
-line length.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('many-actions.gyp')
-test.build('many-actions.gyp', test.ALL)
-for i in range(200):
- test.built_file_must_exist('generated_%d.h' % i)
-test.pass_test()
+++ /dev/null
-# 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.
-
-{
- 'target_defaults': {
- 'msvs_cygwin_dirs': ['../../../../<(DEPTH)/third_party/cygwin'],
- },
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'none',
- 'actions': [
- # Notice that the inputs go 0, 1, ..., 0, 1, .... This is to test
- # a regression in the msvs generator in _AddActions.
- {
- 'action_name': 'do_0',
- 'inputs': ['file0'],
- 'outputs': ['<(PRODUCT_DIR)/generated_0.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_0.h',
- ],
- },
- {
- 'action_name': 'do_1',
- 'inputs': ['file1'],
- 'outputs': ['<(PRODUCT_DIR)/generated_1.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_1.h',
- ],
- },
- {
- 'action_name': 'do_2',
- 'inputs': ['file2'],
- 'outputs': ['<(PRODUCT_DIR)/generated_2.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_2.h',
- ],
- },
- {
- 'action_name': 'do_3',
- 'inputs': ['file3'],
- 'outputs': ['<(PRODUCT_DIR)/generated_3.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_3.h',
- ],
- },
- {
- 'action_name': 'do_4',
- 'inputs': ['file4'],
- 'outputs': ['<(PRODUCT_DIR)/generated_4.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_4.h',
- ],
- },
- {
- 'action_name': 'do_5',
- 'inputs': ['file0'],
- 'outputs': ['<(PRODUCT_DIR)/generated_5.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_5.h',
- ],
- },
- {
- 'action_name': 'do_6',
- 'inputs': ['file1'],
- 'outputs': ['<(PRODUCT_DIR)/generated_6.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_6.h',
- ],
- },
- {
- 'action_name': 'do_7',
- 'inputs': ['file2'],
- 'outputs': ['<(PRODUCT_DIR)/generated_7.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_7.h',
- ],
- },
- {
- 'action_name': 'do_8',
- 'inputs': ['file3'],
- 'outputs': ['<(PRODUCT_DIR)/generated_8.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_8.h',
- ],
- },
- {
- 'action_name': 'do_9',
- 'inputs': ['file4'],
- 'outputs': ['<(PRODUCT_DIR)/generated_9.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_9.h',
- ],
- },
- {
- 'action_name': 'do_10',
- 'inputs': ['file0'],
- 'outputs': ['<(PRODUCT_DIR)/generated_10.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_10.h',
- ],
- },
- {
- 'action_name': 'do_11',
- 'inputs': ['file1'],
- 'outputs': ['<(PRODUCT_DIR)/generated_11.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_11.h',
- ],
- },
- {
- 'action_name': 'do_12',
- 'inputs': ['file2'],
- 'outputs': ['<(PRODUCT_DIR)/generated_12.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_12.h',
- ],
- },
- {
- 'action_name': 'do_13',
- 'inputs': ['file3'],
- 'outputs': ['<(PRODUCT_DIR)/generated_13.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_13.h',
- ],
- },
- {
- 'action_name': 'do_14',
- 'inputs': ['file4'],
- 'outputs': ['<(PRODUCT_DIR)/generated_14.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_14.h',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'target_defaults': {
- 'msvs_cygwin_dirs': ['../../../../<(DEPTH)/third_party/cygwin'],
- },
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'do_0',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_0.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_0.h',
- ],
- },
- {
- 'action_name': 'do_1',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_1.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_1.h',
- ],
- },
- {
- 'action_name': 'do_2',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_2.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_2.h',
- ],
- },
- {
- 'action_name': 'do_3',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_3.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_3.h',
- ],
- },
- {
- 'action_name': 'do_4',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_4.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_4.h',
- ],
- },
- {
- 'action_name': 'do_5',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_5.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_5.h',
- ],
- },
- {
- 'action_name': 'do_6',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_6.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_6.h',
- ],
- },
- {
- 'action_name': 'do_7',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_7.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_7.h',
- ],
- },
- {
- 'action_name': 'do_8',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_8.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_8.h',
- ],
- },
- {
- 'action_name': 'do_9',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_9.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_9.h',
- ],
- },
- {
- 'action_name': 'do_10',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_10.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_10.h',
- ],
- },
- {
- 'action_name': 'do_11',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_11.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_11.h',
- ],
- },
- {
- 'action_name': 'do_12',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_12.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_12.h',
- ],
- },
- {
- 'action_name': 'do_13',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_13.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_13.h',
- ],
- },
- {
- 'action_name': 'do_14',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_14.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_14.h',
- ],
- },
- {
- 'action_name': 'do_15',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_15.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_15.h',
- ],
- },
- {
- 'action_name': 'do_16',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_16.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_16.h',
- ],
- },
- {
- 'action_name': 'do_17',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_17.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_17.h',
- ],
- },
- {
- 'action_name': 'do_18',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_18.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_18.h',
- ],
- },
- {
- 'action_name': 'do_19',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_19.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_19.h',
- ],
- },
- {
- 'action_name': 'do_20',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_20.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_20.h',
- ],
- },
- {
- 'action_name': 'do_21',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_21.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_21.h',
- ],
- },
- {
- 'action_name': 'do_22',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_22.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_22.h',
- ],
- },
- {
- 'action_name': 'do_23',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_23.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_23.h',
- ],
- },
- {
- 'action_name': 'do_24',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_24.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_24.h',
- ],
- },
- {
- 'action_name': 'do_25',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_25.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_25.h',
- ],
- },
- {
- 'action_name': 'do_26',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_26.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_26.h',
- ],
- },
- {
- 'action_name': 'do_27',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_27.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_27.h',
- ],
- },
- {
- 'action_name': 'do_28',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_28.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_28.h',
- ],
- },
- {
- 'action_name': 'do_29',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_29.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_29.h',
- ],
- },
- {
- 'action_name': 'do_30',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_30.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_30.h',
- ],
- },
- {
- 'action_name': 'do_31',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_31.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_31.h',
- ],
- },
- {
- 'action_name': 'do_32',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_32.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_32.h',
- ],
- },
- {
- 'action_name': 'do_33',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_33.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_33.h',
- ],
- },
- {
- 'action_name': 'do_34',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_34.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_34.h',
- ],
- },
- {
- 'action_name': 'do_35',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_35.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_35.h',
- ],
- },
- {
- 'action_name': 'do_36',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_36.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_36.h',
- ],
- },
- {
- 'action_name': 'do_37',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_37.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_37.h',
- ],
- },
- {
- 'action_name': 'do_38',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_38.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_38.h',
- ],
- },
- {
- 'action_name': 'do_39',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_39.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_39.h',
- ],
- },
- {
- 'action_name': 'do_40',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_40.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_40.h',
- ],
- },
- {
- 'action_name': 'do_41',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_41.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_41.h',
- ],
- },
- {
- 'action_name': 'do_42',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_42.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_42.h',
- ],
- },
- {
- 'action_name': 'do_43',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_43.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_43.h',
- ],
- },
- {
- 'action_name': 'do_44',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_44.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_44.h',
- ],
- },
- {
- 'action_name': 'do_45',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_45.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_45.h',
- ],
- },
- {
- 'action_name': 'do_46',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_46.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_46.h',
- ],
- },
- {
- 'action_name': 'do_47',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_47.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_47.h',
- ],
- },
- {
- 'action_name': 'do_48',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_48.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_48.h',
- ],
- },
- {
- 'action_name': 'do_49',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_49.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_49.h',
- ],
- },
- {
- 'action_name': 'do_50',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_50.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_50.h',
- ],
- },
- {
- 'action_name': 'do_51',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_51.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_51.h',
- ],
- },
- {
- 'action_name': 'do_52',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_52.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_52.h',
- ],
- },
- {
- 'action_name': 'do_53',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_53.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_53.h',
- ],
- },
- {
- 'action_name': 'do_54',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_54.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_54.h',
- ],
- },
- {
- 'action_name': 'do_55',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_55.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_55.h',
- ],
- },
- {
- 'action_name': 'do_56',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_56.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_56.h',
- ],
- },
- {
- 'action_name': 'do_57',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_57.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_57.h',
- ],
- },
- {
- 'action_name': 'do_58',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_58.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_58.h',
- ],
- },
- {
- 'action_name': 'do_59',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_59.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_59.h',
- ],
- },
- {
- 'action_name': 'do_60',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_60.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_60.h',
- ],
- },
- {
- 'action_name': 'do_61',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_61.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_61.h',
- ],
- },
- {
- 'action_name': 'do_62',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_62.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_62.h',
- ],
- },
- {
- 'action_name': 'do_63',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_63.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_63.h',
- ],
- },
- {
- 'action_name': 'do_64',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_64.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_64.h',
- ],
- },
- {
- 'action_name': 'do_65',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_65.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_65.h',
- ],
- },
- {
- 'action_name': 'do_66',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_66.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_66.h',
- ],
- },
- {
- 'action_name': 'do_67',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_67.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_67.h',
- ],
- },
- {
- 'action_name': 'do_68',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_68.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_68.h',
- ],
- },
- {
- 'action_name': 'do_69',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_69.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_69.h',
- ],
- },
- {
- 'action_name': 'do_70',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_70.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_70.h',
- ],
- },
- {
- 'action_name': 'do_71',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_71.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_71.h',
- ],
- },
- {
- 'action_name': 'do_72',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_72.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_72.h',
- ],
- },
- {
- 'action_name': 'do_73',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_73.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_73.h',
- ],
- },
- {
- 'action_name': 'do_74',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_74.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_74.h',
- ],
- },
- {
- 'action_name': 'do_75',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_75.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_75.h',
- ],
- },
- {
- 'action_name': 'do_76',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_76.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_76.h',
- ],
- },
- {
- 'action_name': 'do_77',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_77.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_77.h',
- ],
- },
- {
- 'action_name': 'do_78',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_78.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_78.h',
- ],
- },
- {
- 'action_name': 'do_79',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_79.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_79.h',
- ],
- },
- {
- 'action_name': 'do_80',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_80.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_80.h',
- ],
- },
- {
- 'action_name': 'do_81',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_81.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_81.h',
- ],
- },
- {
- 'action_name': 'do_82',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_82.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_82.h',
- ],
- },
- {
- 'action_name': 'do_83',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_83.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_83.h',
- ],
- },
- {
- 'action_name': 'do_84',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_84.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_84.h',
- ],
- },
- {
- 'action_name': 'do_85',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_85.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_85.h',
- ],
- },
- {
- 'action_name': 'do_86',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_86.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_86.h',
- ],
- },
- {
- 'action_name': 'do_87',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_87.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_87.h',
- ],
- },
- {
- 'action_name': 'do_88',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_88.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_88.h',
- ],
- },
- {
- 'action_name': 'do_89',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_89.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_89.h',
- ],
- },
- {
- 'action_name': 'do_90',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_90.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_90.h',
- ],
- },
- {
- 'action_name': 'do_91',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_91.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_91.h',
- ],
- },
- {
- 'action_name': 'do_92',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_92.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_92.h',
- ],
- },
- {
- 'action_name': 'do_93',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_93.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_93.h',
- ],
- },
- {
- 'action_name': 'do_94',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_94.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_94.h',
- ],
- },
- {
- 'action_name': 'do_95',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_95.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_95.h',
- ],
- },
- {
- 'action_name': 'do_96',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_96.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_96.h',
- ],
- },
- {
- 'action_name': 'do_97',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_97.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_97.h',
- ],
- },
- {
- 'action_name': 'do_98',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_98.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_98.h',
- ],
- },
- {
- 'action_name': 'do_99',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_99.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_99.h',
- ],
- },
- {
- 'action_name': 'do_100',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_100.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_100.h',
- ],
- },
- {
- 'action_name': 'do_101',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_101.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_101.h',
- ],
- },
- {
- 'action_name': 'do_102',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_102.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_102.h',
- ],
- },
- {
- 'action_name': 'do_103',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_103.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_103.h',
- ],
- },
- {
- 'action_name': 'do_104',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_104.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_104.h',
- ],
- },
- {
- 'action_name': 'do_105',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_105.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_105.h',
- ],
- },
- {
- 'action_name': 'do_106',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_106.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_106.h',
- ],
- },
- {
- 'action_name': 'do_107',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_107.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_107.h',
- ],
- },
- {
- 'action_name': 'do_108',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_108.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_108.h',
- ],
- },
- {
- 'action_name': 'do_109',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_109.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_109.h',
- ],
- },
- {
- 'action_name': 'do_110',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_110.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_110.h',
- ],
- },
- {
- 'action_name': 'do_111',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_111.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_111.h',
- ],
- },
- {
- 'action_name': 'do_112',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_112.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_112.h',
- ],
- },
- {
- 'action_name': 'do_113',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_113.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_113.h',
- ],
- },
- {
- 'action_name': 'do_114',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_114.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_114.h',
- ],
- },
- {
- 'action_name': 'do_115',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_115.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_115.h',
- ],
- },
- {
- 'action_name': 'do_116',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_116.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_116.h',
- ],
- },
- {
- 'action_name': 'do_117',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_117.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_117.h',
- ],
- },
- {
- 'action_name': 'do_118',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_118.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_118.h',
- ],
- },
- {
- 'action_name': 'do_119',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_119.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_119.h',
- ],
- },
- {
- 'action_name': 'do_120',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_120.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_120.h',
- ],
- },
- {
- 'action_name': 'do_121',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_121.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_121.h',
- ],
- },
- {
- 'action_name': 'do_122',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_122.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_122.h',
- ],
- },
- {
- 'action_name': 'do_123',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_123.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_123.h',
- ],
- },
- {
- 'action_name': 'do_124',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_124.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_124.h',
- ],
- },
- {
- 'action_name': 'do_125',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_125.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_125.h',
- ],
- },
- {
- 'action_name': 'do_126',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_126.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_126.h',
- ],
- },
- {
- 'action_name': 'do_127',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_127.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_127.h',
- ],
- },
- {
- 'action_name': 'do_128',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_128.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_128.h',
- ],
- },
- {
- 'action_name': 'do_129',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_129.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_129.h',
- ],
- },
- {
- 'action_name': 'do_130',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_130.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_130.h',
- ],
- },
- {
- 'action_name': 'do_131',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_131.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_131.h',
- ],
- },
- {
- 'action_name': 'do_132',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_132.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_132.h',
- ],
- },
- {
- 'action_name': 'do_133',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_133.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_133.h',
- ],
- },
- {
- 'action_name': 'do_134',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_134.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_134.h',
- ],
- },
- {
- 'action_name': 'do_135',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_135.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_135.h',
- ],
- },
- {
- 'action_name': 'do_136',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_136.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_136.h',
- ],
- },
- {
- 'action_name': 'do_137',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_137.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_137.h',
- ],
- },
- {
- 'action_name': 'do_138',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_138.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_138.h',
- ],
- },
- {
- 'action_name': 'do_139',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_139.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_139.h',
- ],
- },
- {
- 'action_name': 'do_140',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_140.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_140.h',
- ],
- },
- {
- 'action_name': 'do_141',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_141.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_141.h',
- ],
- },
- {
- 'action_name': 'do_142',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_142.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_142.h',
- ],
- },
- {
- 'action_name': 'do_143',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_143.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_143.h',
- ],
- },
- {
- 'action_name': 'do_144',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_144.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_144.h',
- ],
- },
- {
- 'action_name': 'do_145',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_145.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_145.h',
- ],
- },
- {
- 'action_name': 'do_146',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_146.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_146.h',
- ],
- },
- {
- 'action_name': 'do_147',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_147.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_147.h',
- ],
- },
- {
- 'action_name': 'do_148',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_148.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_148.h',
- ],
- },
- {
- 'action_name': 'do_149',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_149.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_149.h',
- ],
- },
- {
- 'action_name': 'do_150',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_150.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_150.h',
- ],
- },
- {
- 'action_name': 'do_151',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_151.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_151.h',
- ],
- },
- {
- 'action_name': 'do_152',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_152.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_152.h',
- ],
- },
- {
- 'action_name': 'do_153',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_153.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_153.h',
- ],
- },
- {
- 'action_name': 'do_154',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_154.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_154.h',
- ],
- },
- {
- 'action_name': 'do_155',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_155.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_155.h',
- ],
- },
- {
- 'action_name': 'do_156',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_156.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_156.h',
- ],
- },
- {
- 'action_name': 'do_157',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_157.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_157.h',
- ],
- },
- {
- 'action_name': 'do_158',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_158.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_158.h',
- ],
- },
- {
- 'action_name': 'do_159',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_159.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_159.h',
- ],
- },
- {
- 'action_name': 'do_160',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_160.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_160.h',
- ],
- },
- {
- 'action_name': 'do_161',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_161.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_161.h',
- ],
- },
- {
- 'action_name': 'do_162',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_162.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_162.h',
- ],
- },
- {
- 'action_name': 'do_163',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_163.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_163.h',
- ],
- },
- {
- 'action_name': 'do_164',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_164.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_164.h',
- ],
- },
- {
- 'action_name': 'do_165',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_165.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_165.h',
- ],
- },
- {
- 'action_name': 'do_166',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_166.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_166.h',
- ],
- },
- {
- 'action_name': 'do_167',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_167.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_167.h',
- ],
- },
- {
- 'action_name': 'do_168',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_168.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_168.h',
- ],
- },
- {
- 'action_name': 'do_169',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_169.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_169.h',
- ],
- },
- {
- 'action_name': 'do_170',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_170.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_170.h',
- ],
- },
- {
- 'action_name': 'do_171',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_171.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_171.h',
- ],
- },
- {
- 'action_name': 'do_172',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_172.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_172.h',
- ],
- },
- {
- 'action_name': 'do_173',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_173.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_173.h',
- ],
- },
- {
- 'action_name': 'do_174',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_174.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_174.h',
- ],
- },
- {
- 'action_name': 'do_175',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_175.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_175.h',
- ],
- },
- {
- 'action_name': 'do_176',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_176.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_176.h',
- ],
- },
- {
- 'action_name': 'do_177',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_177.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_177.h',
- ],
- },
- {
- 'action_name': 'do_178',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_178.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_178.h',
- ],
- },
- {
- 'action_name': 'do_179',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_179.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_179.h',
- ],
- },
- {
- 'action_name': 'do_180',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_180.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_180.h',
- ],
- },
- {
- 'action_name': 'do_181',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_181.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_181.h',
- ],
- },
- {
- 'action_name': 'do_182',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_182.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_182.h',
- ],
- },
- {
- 'action_name': 'do_183',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_183.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_183.h',
- ],
- },
- {
- 'action_name': 'do_184',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_184.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_184.h',
- ],
- },
- {
- 'action_name': 'do_185',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_185.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_185.h',
- ],
- },
- {
- 'action_name': 'do_186',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_186.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_186.h',
- ],
- },
- {
- 'action_name': 'do_187',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_187.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_187.h',
- ],
- },
- {
- 'action_name': 'do_188',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_188.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_188.h',
- ],
- },
- {
- 'action_name': 'do_189',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_189.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_189.h',
- ],
- },
- {
- 'action_name': 'do_190',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_190.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_190.h',
- ],
- },
- {
- 'action_name': 'do_191',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_191.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_191.h',
- ],
- },
- {
- 'action_name': 'do_192',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_192.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_192.h',
- ],
- },
- {
- 'action_name': 'do_193',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_193.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_193.h',
- ],
- },
- {
- 'action_name': 'do_194',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_194.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_194.h',
- ],
- },
- {
- 'action_name': 'do_195',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_195.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_195.h',
- ],
- },
- {
- 'action_name': 'do_196',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_196.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_196.h',
- ],
- },
- {
- 'action_name': 'do_197',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_197.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_197.h',
- ],
- },
- {
- 'action_name': 'do_198',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_198.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_198.h',
- ],
- },
- {
- 'action_name': 'do_199',
- 'inputs': [],
- 'outputs': ['<(PRODUCT_DIR)/generated_199.h'],
- 'action': [
- 'touch',
- '<(PRODUCT_DIR)/generated_199.h',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies simple build of a "Hello, world!" program with loadable modules. The
-default for all platforms should be to output the loadable modules to the same
-path as the executable.
-"""
-
-import TestGyp
-
-# Android doesn't support loadable modules
-test = TestGyp.TestGyp(formats=['!android'])
-
-test.run_gyp('module.gyp', chdir='src')
-
-test.build('module.gyp', test.ALL, chdir='src')
-
-expect = """\
-Hello from program.c
-Hello from lib1.c
-Hello from lib2.c
-"""
-test.run_built_executable('program', chdir='src', stdout=expect)
-
-test.pass_test()
+++ /dev/null
-#include <stdio.h>
-
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-void module_main(void)
-{
- fprintf(stdout, "Hello from lib1.c\n");
- fflush(stdout);
-}
+++ /dev/null
-#include <stdio.h>
-
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
-void module_main(void)
-{
- fprintf(stdout, "Hello from lib2.c\n");
- fflush(stdout);
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'target_defaults': {
- 'conditions': [
- ['OS=="win"', {
- 'defines': ['PLATFORM_WIN'],
- }],
- ['OS=="mac" or OS=="ios"', {
- 'defines': ['PLATFORM_MAC'],
- }],
- ['OS=="linux"', {
- 'defines': ['PLATFORM_LINUX'],
- # Support 64-bit shared libs (also works fine for 32-bit).
- 'cflags': ['-fPIC'],
- 'libraries': ['-ldl'],
- }],
- ],
- },
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'dependencies': [
- 'lib1',
- 'lib2',
- ],
- 'sources': [
- 'program.c',
- ],
- },
- {
- 'target_name': 'lib1',
- 'type': 'loadable_module',
- 'product_name': 'lib1',
- 'product_prefix': '',
- 'sources': [
- 'lib1.c',
- ],
- },
- {
- 'target_name': 'lib2',
- 'product_name': 'lib2',
- 'product_prefix': '',
- 'type': 'loadable_module',
- 'sources': [
- 'lib2.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-
-#if defined(PLATFORM_WIN)
-#include <windows.h>
-#elif defined(PLATFORM_MAC) || defined(PLATFORM_LINUX)
-#include <dlfcn.h>
-#include <libgen.h>
-#include <string.h>
-#include <sys/param.h>
-#define MAX_PATH PATH_MAX
-#endif
-
-#if defined(PLATFORM_WIN)
-#define MODULE_SUFFIX ".dll"
-#elif defined(PLATFORM_MAC)
-#define MODULE_SUFFIX ".so"
-#elif defined(PLATFORM_LINUX)
-#define MODULE_SUFFIX ".so"
-#endif
-
-typedef void (*module_symbol)(void);
-char bin_path[MAX_PATH + 1];
-
-
-void CallModule(const char* module) {
- char module_path[MAX_PATH + 1];
- const char* module_function = "module_main";
- module_symbol funcptr;
-#if defined(PLATFORM_WIN)
- HMODULE dl;
- char drive[_MAX_DRIVE];
- char dir[_MAX_DIR];
-
- if (_splitpath_s(bin_path, drive, _MAX_DRIVE, dir, _MAX_DIR,
- NULL, 0, NULL, 0)) {
- fprintf(stderr, "Failed to split executable path.\n");
- return;
- }
- if (_makepath_s(module_path, MAX_PATH, drive, dir, module, MODULE_SUFFIX)) {
- fprintf(stderr, "Failed to calculate module path.\n");
- return;
- }
-
- dl = LoadLibrary(module_path);
- if (!dl) {
- fprintf(stderr, "Failed to open module: %s\n", module_path);
- return;
- }
-
- funcptr = (module_symbol) GetProcAddress(dl, module_function);
- if (!funcptr) {
- fprintf(stderr, "Failed to find symbol: %s\n", module_function);
- return;
- }
- funcptr();
-
- FreeLibrary(dl);
-#elif defined(PLATFORM_MAC) || defined(PLATFORM_LINUX)
- void* dl;
- char* path_copy = strdup(bin_path);
- char* bin_dir = dirname(path_copy);
- int path_size = snprintf(module_path, MAX_PATH, "%s/%s%s", bin_dir, module,
- MODULE_SUFFIX);
- free(path_copy);
- if (path_size < 0 || path_size > MAX_PATH) {
- fprintf(stderr, "Failed to calculate module path.\n");
- return;
- }
- module_path[path_size] = 0;
-
- dl = dlopen(module_path, RTLD_LAZY);
- if (!dl) {
- fprintf(stderr, "Failed to open module: %s\n", module_path);
- return;
- }
-
- funcptr = dlsym(dl, module_function);
- if (!funcptr) {
- fprintf(stderr, "Failed to find symbol: %s\n", module_function);
- return;
- }
- funcptr();
-
- dlclose(dl);
-#endif
-}
-
-int main(int argc, char *argv[])
-{
- fprintf(stdout, "Hello from program.c\n");
- fflush(stdout);
-
-#if defined(PLATFORM_WIN)
- if (!GetModuleFileName(NULL, bin_path, MAX_PATH)) {
- fprintf(stderr, "Failed to determine executable path.\n");
- return 1;
- }
-#elif defined(PLATFORM_MAC) || defined(PLATFORM_LINUX)
- // Using argv[0] should be OK here since we control how the tests run, and
- // can avoid exec and such issues that make it unreliable.
- if (!realpath(argv[0], bin_path)) {
- fprintf(stderr, "Failed to determine executable path (%s).\n", argv[0]);
- return 1;
- }
-#endif
-
- CallModule("lib1");
- CallModule("lib2");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-{
- 'targets': [
- {
- 'target_name': 'main',
- 'type': 'executable',
- 'sources': [ 'main.cc', ],
- 'msvs_prebuild': r'echo starting',
- 'msvs_postbuild': r'echo finished',
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies that msvs_prebuild and msvs_postbuild can be specified in both
-VS 2008 and 2010.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['msvs'], workdir='workarea_all')
-
-test.run_gyp('buildevents.gyp', '-G', 'msvs_version=2008')
-test.must_contain('main.vcproj', 'Name="VCPreBuildEventTool"')
-test.must_contain('main.vcproj', 'Name="VCPostBuildEventTool"')
-
-test.run_gyp('buildevents.gyp', '-G', 'msvs_version=2010')
-test.must_contain('main.vcxproj', '<PreBuildEvent>')
-test.must_contain('main.vcxproj', '<PostBuildEvent>')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that ninja errors out when encountering msvs_prebuild/msvs_postbuild.
-"""
-
-import sys
-import TestCmd
-import TestGyp
-
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- test.run_gyp('buildevents.gyp',
- status=1,
- stderr=r'.*msvs_prebuild not supported \(target main\).*',
- match=TestCmd.match_re_dotall)
-
- test.run_gyp('buildevents.gyp',
- status=1,
- stderr=r'.*msvs_postbuild not supported \(target main\).*',
- match=TestCmd.match_re_dotall)
-
- test.pass_test()
+++ /dev/null
-// Copyright (c) 2014 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.
-
-int main() {}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that msvs_configuration_attributes and
-msbuild_configuration_attributes are applied by using
-them to set the OutputDirectory.
-"""
-
-import TestGyp
-import os
-
-test = TestGyp.TestGyp(workdir='workarea_all',formats=['msvs'])
-
-vc_version = 'VC90'
-
-if os.getenv('GYP_MSVS_VERSION'):
- vc_version = ['VC90','VC100'][int(os.getenv('GYP_MSVS_VERSION')) >= 2010]
-
-expected_exe_file = os.path.join(test.workdir, vc_version, 'hello.exe')
-
-test.run_gyp('hello.gyp')
-
-test.build('hello.gyp')
-
-test.must_exist(expected_exe_file)
-
-test.pass_test()
+++ /dev/null
-/* 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. */
-
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- 'msvs_configuration_attributes': {
- 'OutputDirectory':'$(SolutionDir)VC90/'
- },
- 'msbuild_configuration_attributes': {
- 'OutputDirectory':'$(SolutionDir)VC100/',
- },
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'static_library',
- 'sources': [
- 'a.c',
- ],
- },
- {
- 'target_name': 'b',
- 'type': 'static_library',
- 'sources': [
- 'b.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'express',
- 'type': 'executable',
- 'dependencies': [
- 'base/base.gyp:a',
- 'base/base.gyp:b',
- ],
- 'sources': [
- 'main.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies that flat solutions get generated for Express versions of
-Visual Studio.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['msvs'])
-
-test.run_gyp('express.gyp', '-G', 'msvs_version=2005')
-test.must_contain('express.sln', '(base)')
-
-test.run_gyp('express.gyp', '-G', 'msvs_version=2008')
-test.must_contain('express.sln', '(base)')
-
-test.run_gyp('express.gyp', '-G', 'msvs_version=2005e')
-test.must_not_contain('express.sln', '(base)')
-
-test.run_gyp('express.gyp', '-G', 'msvs_version=2008e')
-test.must_not_contain('express.sln', '(base)')
-
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'variables': {
- # the test driver switches this flag when testing external builder
- 'use_external_builder%': 0,
- },
- 'targets': [
- {
- 'target_name': 'external',
- 'type': 'executable',
- 'sources': [
- 'hello.cpp',
- 'hello.z',
- ],
- 'rules': [
- {
- 'rule_name': 'test_rule',
- 'extension': 'z',
- 'outputs': [
- 'msbuild_rule.out',
- ],
- 'action': [
- 'python',
- 'msbuild_rule.py',
- '<(RULE_INPUT_PATH)',
- 'a', 'b', 'c',
- ],
- 'msvs_cygwin_shell': 0,
- },
- ],
- 'actions': [
- {
- 'action_name': 'test action',
- 'inputs': [
- 'msbuild_action.py',
- ],
- 'outputs': [
- 'msbuild_action.out',
- ],
- 'action': [
- 'python',
- '<@(_inputs)',
- 'x', 'y', 'z',
- ],
- 'msvs_cygwin_shell': 0,
- },
- ],
- 'conditions': [
- ['use_external_builder==1', {
- 'msvs_external_builder': 'test',
- 'msvs_external_builder_build_cmd': [
- 'python',
- 'external_builder.py',
- 'build', '1', '2', '3',
- ],
- 'msvs_external_builder_clean_cmd': [
- 'python',
- 'external_builder.py',
- 'clean', '4', '5',
- ],
- }],
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-import sys
-
-with open('external_builder.out', 'w') as f:
- f.write(' '.join(sys.argv))
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that msvs_external_builder being set will invoke the provided
-msvs_external_builder_build_cmd and msvs_external_builder_clean_cmd, and will
-not invoke MSBuild actions and rules.
-"""
-
-import os
-import sys
-import TestGyp
-
-if int(os.environ.get('GYP_MSVS_VERSION', 0)) < 2010:
- sys.exit(0)
-
-test = TestGyp.TestGyp(formats=['msvs'], workdir='workarea_all')
-
-# without the flag set
-test.run_gyp('external.gyp')
-test.build('external.gyp', target='external')
-test.must_not_exist('external_builder.out')
-test.must_exist('msbuild_rule.out')
-test.must_exist('msbuild_action.out')
-test.must_match('msbuild_rule.out', 'msbuild_rule.py hello.z a b c')
-test.must_match('msbuild_action.out', 'msbuild_action.py x y z')
-os.remove('msbuild_rule.out')
-os.remove('msbuild_action.out')
-
-# with the flag set, using Build
-try:
- os.environ['GYP_DEFINES'] = 'use_external_builder=1'
- test.run_gyp('external.gyp')
- test.build('external.gyp', target='external')
-finally:
- del os.environ['GYP_DEFINES']
-test.must_not_exist('msbuild_rule.out')
-test.must_not_exist('msbuild_action.out')
-test.must_exist('external_builder.out')
-test.must_match('external_builder.out', 'external_builder.py build 1 2 3')
-os.remove('external_builder.out')
-
-# with the flag set, using Clean
-try:
- os.environ['GYP_DEFINES'] = 'use_external_builder=1'
- test.run_gyp('external.gyp')
- test.build('external.gyp', target='external', clean=True)
-finally:
- del os.environ['GYP_DEFINES']
-test.must_not_exist('msbuild_rule.out')
-test.must_not_exist('msbuild_action.out')
-test.must_exist('external_builder.out')
-test.must_match('external_builder.out', 'external_builder.py clean 4 5')
-os.remove('external_builder.out')
-
-test.pass_test()
+++ /dev/null
-// 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.
-
-#include <stdio.h>
-
-int main(void) {
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-This file will be passed to the test rule.
+++ /dev/null
-# Copyright (c) 2013 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.
-
-import sys
-
-with open('msbuild_action.out', 'w') as f:
- f.write(' '.join(sys.argv))
+++ /dev/null
-# Copyright (c) 2013 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.
-
-import sys, os.path
-
-sys.argv[1] = os.path.basename(sys.argv[1])
-
-with open('msbuild_rule.out', 'w') as f:
- f.write(' '.join(sys.argv))
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'no_source_files',
- 'type': 'none',
- 'sources': [ ],
- },
- {
- 'target_name': 'one_source_file',
- 'type': 'executable',
- 'sources': [
- '../folder/a.c',
- ],
- },
- {
- 'target_name': 'two_source_files',
- 'type': 'executable',
- 'sources': [
- '../folder/a.c',
- '../folder/b.c',
- ],
- },
- {
- 'target_name': 'three_files_in_two_folders',
- 'type': 'executable',
- 'sources': [
- '../folder1/a.c',
- '../folder1/b.c',
- '../folder2/c.c',
- ],
- },
- {
- 'target_name': 'nested_folders',
- 'type': 'executable',
- 'sources': [
- '../folder1/nested/a.c',
- '../folder2/d.c',
- '../folder1/nested/b.c',
- '../folder1/other/c.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that extra filters are pruned correctly for Visual Studio 2008.
-"""
-
-import re
-import TestGyp
-
-
-def strip_ws(str):
- return re.sub('^ +', '', str, flags=re.M).replace('\n', '')
-
-
-test = TestGyp.TestGyp(formats=['msvs'])
-
-test.run_gyp('filters.gyp', '-G', 'standalone', '-G', 'msvs_version=2008')
-
-test.must_contain('no_source_files.vcproj', '<Files/>')
-
-test.must_contain('one_source_file.vcproj', strip_ws('''\
-<Files>
- <File RelativePath="..\\folder\\a.c"/>
-</Files>
-'''))
-
-test.must_contain('two_source_files.vcproj', strip_ws('''\
-<Files>
- <File RelativePath="..\\folder\\a.c"/>
- <File RelativePath="..\\folder\\b.c"/>
-</Files>
-'''))
-
-test.must_contain('three_files_in_two_folders.vcproj', strip_ws('''\
-<Files>
- <Filter Name="folder1">
- <File RelativePath="..\\folder1\\a.c"/>
- <File RelativePath="..\\folder1\\b.c"/>
- </Filter>
- <Filter Name="folder2">
- <File RelativePath="..\\folder2\\c.c"/>
- </Filter>
-</Files>
-'''))
-
-test.must_contain('nested_folders.vcproj', strip_ws('''\
-<Files>
- <Filter Name="folder1">
- <Filter Name="nested">
- <File RelativePath="..\\folder1\\nested\\a.c"/>
- <File RelativePath="..\\folder1\\nested\\b.c"/>
- </Filter>
- <Filter Name="other">
- <File RelativePath="..\\folder1\\other\\c.c"/>
- </Filter>
- </Filter>
- <Filter Name="folder2">
- <File RelativePath="..\\folder2\\d.c"/>
- </Filter>
-</Files>
-'''))
-
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that extra filters are pruned correctly for Visual Studio 2010
-and later.
-"""
-
-import TestGyp
-
-
-test = TestGyp.TestGyp(formats=['msvs'])
-
-test.run_gyp('filters.gyp', '-G', 'standalone', '-G', 'msvs_version=2010')
-
-test.must_not_exist('no_source_files.vcxproj.filters')
-
-test.must_not_exist('one_source_file.vcxproj.filters')
-
-test.must_not_exist('two_source_files.vcxproj.filters')
-
-test.must_contain('three_files_in_two_folders.vcxproj.filters', '''\
- <ItemGroup>
- <ClCompile Include="..\\folder1\\a.c">
- <Filter>folder1</Filter>
- </ClCompile>
- <ClCompile Include="..\\folder1\\b.c">
- <Filter>folder1</Filter>
- </ClCompile>
- <ClCompile Include="..\\folder2\\c.c">
- <Filter>folder2</Filter>
- </ClCompile>
- </ItemGroup>
-'''.replace('\n', '\r\n'))
-
-test.must_contain('nested_folders.vcxproj.filters', '''\
- <ItemGroup>
- <ClCompile Include="..\\folder1\\nested\\a.c">
- <Filter>folder1\\nested</Filter>
- </ClCompile>
- <ClCompile Include="..\\folder2\\d.c">
- <Filter>folder2</Filter>
- </ClCompile>
- <ClCompile Include="..\\folder1\\nested\\b.c">
- <Filter>folder1\\nested</Filter>
- </ClCompile>
- <ClCompile Include="..\\folder1\\other\\c.c">
- <Filter>folder1\\other</Filter>
- </ClCompile>
- </ItemGroup>
-'''.replace('\n', '\r\n'))
-
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that msvs_list_excluded_files=0 doesn't list files that would
-normally be in _excluded_files, and that if that flag is not set, then they
-are still listed.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['msvs'], workdir='workarea_all')
-
-
-# with the flag set to 0
-try:
- os.environ['GYP_GENERATOR_FLAGS'] = 'msvs_list_excluded_files=0'
- test.run_gyp('hello_exclude.gyp')
-finally:
- del os.environ['GYP_GENERATOR_FLAGS']
-if test.uses_msbuild:
- test.must_not_contain('hello.vcxproj', 'hello_mac')
-else:
- test.must_not_contain('hello.vcproj', 'hello_mac')
-
-
-# with the flag not set
-test.run_gyp('hello_exclude.gyp')
-if test.uses_msbuild:
- test.must_contain('hello.vcxproj', 'hello_mac')
-else:
- test.must_contain('hello.vcproj', 'hello_mac')
-
-
-# with the flag explicitly set to 1
-try:
- os.environ['GYP_GENERATOR_FLAGS'] = 'msvs_list_excluded_files=1'
- test.run_gyp('hello_exclude.gyp')
-finally:
- del os.environ['GYP_GENERATOR_FLAGS']
-if test.uses_msbuild:
- test.must_contain('hello.vcxproj', 'hello_mac')
-else:
- test.must_contain('hello.vcproj', 'hello_mac')
-
-
-test.pass_test()
+++ /dev/null
-// 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.
-
-#include <stdio.h>
-
-int main(void) {
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.cpp',
- 'hello_mac.cpp',
- ],
- 'conditions': [
- ['OS!="mac"', {'sources!': ['hello_mac.cpp']}],
- ]
- },
- ],
-}
+++ /dev/null
-// 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.
-
-#include <stdio.h>
-
-int hello2() {
- printf("Hello, two!\n");
- return 0;
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that missing 'sources' files are treated as fatal errors when the
-the generator flag 'msvs_error_on_missing_sources' is set.
-"""
-
-import TestGyp
-import os
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'], workdir='workarea_all')
-
- # With the flag not set
- test.run_gyp('hello_missing.gyp')
-
- # With the flag explicitly set to 0
- try:
- os.environ['GYP_GENERATOR_FLAGS'] = 'msvs_error_on_missing_sources=0'
- test.run_gyp('hello_missing.gyp')
- finally:
- del os.environ['GYP_GENERATOR_FLAGS']
-
- # With the flag explicitly set to 1
- try:
- os.environ['GYP_GENERATOR_FLAGS'] = 'msvs_error_on_missing_sources=1'
- # Test to make sure GYP raises an exception (exit status 1). Since this will
- # also print a backtrace, ensure that TestGyp is not checking that stderr is
- # empty by specifying None, which means do not perform any checking.
- # Instead, stderr is checked below to ensure it contains the expected
- # output.
- test.run_gyp('hello_missing.gyp', status=1, stderr=None)
- finally:
- del os.environ['GYP_GENERATOR_FLAGS']
- test.must_contain_any_line(test.stderr(),
- ["Missing input files:"])
-
- test.pass_test()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello_missing.cpp',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-import sys
-
-sys.exit(1)
+++ /dev/null
-# Copyright (c) 2014 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.
-
-import sys
-
-sys.exit(0)
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'actions-test',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'first action (fails)',
- 'inputs': [
- 'action_fail.py',
- ],
- 'outputs': [
- 'ALWAYS_OUT_OF_DATE',
- ],
- 'action': [
- 'python', '<@(_inputs)'
- ],
- 'msvs_cygwin_shell': 0,
- },
- {
- 'action_name': 'second action (succeeds)',
- 'inputs': [
- 'action_succeed.py',
- ],
- 'outputs': [
- 'ALWAYS_OUT_OF_DATE',
- ],
- 'action': [
- 'python', '<@(_inputs)'
- ],
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies that failing actions make the build fail reliably, even when there
-are multiple actions in one project.
-"""
-
-import os
-import sys
-import TestGyp
-import TestCmd
-
-test = TestGyp.TestGyp(formats=['msvs'], workdir='workarea_all')
-
-test.run_gyp('actions.gyp')
-test.build('actions.gyp',
- target='actions-test',
- status=1,
- stdout=r'.*"cmd\.exe" exited with code 1\..*',
- match=TestCmd.match_re_dotall)
-
-test.pass_test()
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Label="UserMacros">
- <AppName>Greet</AppName>
- </PropertyGroup>
- <PropertyGroup>
- <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
- </PropertyGroup>
- <ItemGroup>
- <BuildMacro Include="AppName">
- <Value>$(AppName)</Value>
- </BuildMacro>
- </ItemGroup>
-</Project>
+++ /dev/null
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="Common"
- >
- <UserMacro
- Name="AppName"
- Value="Greet"
- />
-</VisualStudioPropertySheet>
+++ /dev/null
-#!/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.
-
-"""
-Verifies props files are added by using a
-props file to set the name of the built executable.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_all', formats=['msvs'])
-
-test.run_gyp('hello.gyp')
-
-test.build('hello.gyp')
-
-test.built_file_must_exist('Greet.exe')
-
-test.pass_test()
+++ /dev/null
-/* 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. */
-
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'product_name': '$(AppName)',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- 'msvs_props': [
- '$(SolutionDir)AppName.vsprops'
- ],
- 'msbuild_props': [
- '$(SolutionDir)AppName.props'
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'target_defaults': {
- 'default_configuration': 'Baz',
- 'configurations': {
- 'Baz': {
- 'msvs_configuration_attributes': {
- 'OutputDirectory': '<(DEPTH)/foo',
- 'IntermediateDirectory': '$(OutDir)/bar',
- },
- },
- },
- },
-}
+++ /dev/null
-#!/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.
-
-"""
-Test checking that IntermediateDirectory can be defined in terms of
-OutputDirectory. We previously had emitted the definition of
-IntermediateDirectory before the definition of OutputDirectory.
-This is required so that $(IntDir) can be based on $(OutDir).
-"""
-
-import TestGyp
-import os
-
-# NOTE: This test really is vcbuild/msbuild specific (not applicable to windows
-# ninja), as it is testing the msvs output location when opening an .sln
-# other than all.sln.
-test = TestGyp.TestGyp(workdir='workarea_shared_output', formats=['msvs'])
-
-test.run_gyp('hello.gyp')
-test.set_configuration('Baz')
-
-test.build('there/there.gyp', test.ALL)
-test.must_exist(os.path.join(test.workdir, 'foo', 'there.exe'))
-test.must_exist(os.path.join(test.workdir, 'foo', 'bar', 'there.obj'))
-
-test.build('hello.gyp', test.ALL)
-test.must_exist(os.path.join(test.workdir, 'foo', 'hello.exe'))
-test.must_exist(os.path.join(test.workdir, 'foo', 'bar', 'hello.obj'))
-
-if test.format == 'msvs':
- if test.uses_msbuild:
- test.must_contain('pull_in_there.vcxproj',
- '<IntDir>$(OutDir)bar\\</IntDir>')
- else:
- test.must_contain('pull_in_there.vcproj',
- 'IntermediateDirectory="$(OutDir)bar\\"')
-
-test.pass_test()
+++ /dev/null
-/*
- * 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.
- */
-
-#include <stdio.h>
-
-int main(void) {
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'includes': ['common.gypi'],
- 'targets': [
- {
- 'target_name': 'pull_in_there',
- 'type': 'none',
- 'dependencies': ['there/there.gyp:*'],
- },
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
- ],
-}
+++ /dev/null
-/*
- * 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.
- */
-
-#include <stdio.h>
-
-int main(void) {
- printf("Hello, world!\n");
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'includes': ['../common.gypi'],
- 'targets': [
- {
- 'target_name': 'there',
- 'type': 'executable',
- 'sources': [
- 'there.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that uldi can be disabled on a per-project-reference basis in vs2010.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['msvs'], workdir='workarea_all')
-
-test.run_gyp('hello.gyp')
-
-if test.uses_msbuild:
- test.must_contain('hello.vcxproj', '<UseLibraryDependencyInputs>false')
-
-test.pass_test()
+++ /dev/null
-/* 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. */
-
-#include <stdio.h>
-
-extern int hello2();
-
-int main(void) {
- printf("Hello, world!\n");
- hello2();
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- 'dependencies': [
- 'hellolib',
- ]
- },
- {
- 'target_name': 'hellolib',
- 'type': 'static_library',
- 'sources': [
- 'hello2.c',
- ],
- 'msvs_2010_disable_uldi_when_referenced': 1,
- },
- ],
-}
+++ /dev/null
-/* 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. */
-
-#include <stdio.h>
-
-int hello2() {
- printf("Hello, two!\n");
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('multiple.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('multiple.gyp', test.ALL, chdir='relocate/src', stderr=None)
-
-expect1 = """\
-hello from prog1.c
-hello from common.c
-"""
-
-expect2 = """\
-hello from prog2.c
-hello from common.c
-"""
-
-test.run_built_executable('prog1', stdout=expect1, chdir='relocate/src')
-test.run_built_executable('prog2', stdout=expect2, chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('multiple.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('multiple.gyp', chdir='relocate/src')
-
-expect1 = """\
-hello from prog1.c
-hello from common.c
-"""
-
-expect2 = """\
-hello from prog2.c
-hello from common.c
-"""
-
-test.run_built_executable('prog1', stdout=expect1, chdir='relocate/src')
-test.run_built_executable('prog2', stdout=expect2, chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#include <stdio.h>
-
-void common(void)
-{
- printf("hello from common.c\n");
- return;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'prog1',
- 'type': 'executable',
- 'sources': [
- 'prog1.c',
- 'common.c',
- ],
- },
- {
- 'target_name': 'prog2',
- 'type': 'executable',
- 'sources': [
- 'prog2.c',
- 'common.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void common(void);
-
-int main(void)
-{
- printf("hello from prog1.c\n");
- common();
- return 0;
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void common(void);
-
-int main(void)
-{
- printf("hello from prog2.c\n");
- common();
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verify that running gyp in a different directory does not cause actions and
-rules to rerun.
-"""
-
-import os
-import sys
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['ninja'])
-# The xcode-ninja generator handles gypfiles which are not at the
-# project root incorrectly.
-# cf. https://code.google.com/p/gyp/issues/detail?id=460
-if test.format == 'xcode-ninja':
- test.skip_test()
-
-test.run_gyp('subdir/action-rule-hash.gyp')
-test.build('subdir/action-rule-hash.gyp', test.ALL)
-test.up_to_date('subdir/action-rule-hash.gyp')
-
-# Verify that everything is still up-to-date when we re-invoke gyp from a
-# different directory.
-test.run_gyp('action-rule-hash.gyp', '--depth=../', chdir='subdir')
-test.up_to_date('subdir/action-rule-hash.gyp')
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [
- '<(INTERMEDIATE_DIR)/main.cc',
- ],
- 'actions': [
- {
- 'action_name': 'emit_main_cc',
- 'inputs': ['emit.py'],
- 'outputs': ['<(INTERMEDIATE_DIR)/main.cc'],
- 'action': [
- 'python',
- 'emit.py',
- '<(INTERMEDIATE_DIR)/main.cc',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-import sys
-
-f = open(sys.argv[1], 'wb')
-f.write('int main() {\n')
-f.write(' return 0;\n')
-f.write('}\n')
-f.close()
+++ /dev/null
-#!/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.
-
-"""
-Verify that building an object file correctly depends on running actions in
-dependent targets, but not the targets themselves.
-"""
-
-import os
-import sys
-import TestGyp
-
-# NOTE(piman): This test will not work with other generators because:
-# - it explicitly tests the optimization, which is not implemented (yet?) on
-# other generators
-# - it relies on the exact path to output object files, which is generator
-# dependent, and actually, relies on the ability to build only that object file,
-# which I don't think is available on all generators.
-# TODO(piman): Extend to other generators when possible.
-test = TestGyp.TestGyp(formats=['ninja'])
-# xcode-ninja doesn't support building single object files by design.
-if test.format == 'xcode-ninja':
- test.skip_test()
-
-test.run_gyp('action_dependencies.gyp', chdir='src')
-
-chdir = 'relocate/src'
-test.relocate('src', chdir)
-
-objext = '.obj' if sys.platform == 'win32' else '.o'
-
-test.build('action_dependencies.gyp',
- os.path.join('obj', 'b.b' + objext),
- chdir=chdir)
-
-# The 'a' actions should be run (letting b.c compile), but the a static library
-# should not be built.
-test.built_file_must_not_exist('a', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_not_exist('b', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_exist(os.path.join('obj', 'b.b' + objext), chdir=chdir)
-
-test.build('action_dependencies.gyp',
- os.path.join('obj', 'c.c' + objext),
- chdir=chdir)
-
-# 'a' and 'b' should be built, so that the 'c' action succeeds, letting c.c
-# compile
-test.built_file_must_exist('a', type=test.STATIC_LIB, chdir=chdir)
-test.built_file_must_exist('b', type=test.EXECUTABLE, chdir=chdir)
-test.built_file_must_exist(os.path.join('obj', 'c.c' + objext), chdir=chdir)
-
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2011 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.
- */
-
-#include "a.h"
-
-int funcA() {
- return 42;
-}
+++ /dev/null
-/* Copyright (c) 2011 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.
- */
-
-#ifndef A_H_
-#define A_H_
-
-#include "a/generated.h"
-
-int funcA();
-
-#endif // A_H_
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'static_library',
- 'sources': [
- 'a.c',
- 'a.h',
- ],
- 'actions': [
- {
- 'action_name': 'generate_headers',
- 'inputs': [
- 'emit.py'
- ],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/a/generated.h'
- ],
- 'action': [
- 'python',
- 'emit.py',
- '<(SHARED_INTERMEDIATE_DIR)/a/generated.h',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- },
- },
- {
- 'target_name': 'b',
- 'type': 'executable',
- 'sources': [
- 'b.c',
- 'b.h',
- ],
- 'dependencies': [
- 'a',
- ],
- },
- {
- 'target_name': 'c',
- 'type': 'static_library',
- 'sources': [
- 'c.c',
- 'c.h',
- ],
- 'dependencies': [
- 'b',
- ],
- 'actions': [
- {
- 'action_name': 'generate_headers',
- 'inputs': [
- ],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/c/generated.h'
- ],
- 'action': [
- '<(PRODUCT_DIR)/b',
- '<(SHARED_INTERMEDIATE_DIR)/c/generated.h',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- },
- },
- ],
-}
+++ /dev/null
-/* 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.
- */
-
-#include <stdio.h>
-
-#include "b.h"
-
-int main(int argc, char** argv) {
- FILE* f;
- if (argc < 2)
- return 1;
- f = fopen(argv[1], "wt");
- fprintf(f, "#define VALUE %d\n", funcA());
- fclose(f);
- return 0;
-}
+++ /dev/null
-/* Copyright (c) 2011 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.
- */
-
-#ifndef B_H_
-#define B_H_
-
-#include "a.h"
-
-int funcB();
-
-#endif // B_H_
+++ /dev/null
-/* Copyright (c) 2011 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.
- */
-
-#include "c.h"
-
-int funcC() {
- return VALUE;
-}
+++ /dev/null
-/* Copyright (c) 2011 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.
- */
-
-#ifndef C_H_
-#define C_H_
-
-#include "c/generated.h"
-
-int funcC();
-
-#endif // C_H_
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-import sys
-
-f = open(sys.argv[1], 'wb')
-f.write('/* Hello World */\n')
-f.close()
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- # This first target generates a header.
- {
- 'target_name': 'generate_header',
- 'type': 'none',
- 'msvs_cygwin_shell': '0',
- 'actions': [
- {
- 'action_name': 'generate header',
- 'inputs': [],
- 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/generated/header.h'],
- 'action': [
- 'python', '-c', 'open(<(_outputs), "w")'
- ]
- },
- ],
- 'all_dependent_settings': {
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- },
- },
-
- # This intermediate target does nothing other than pull in a
- # dependency on the above generated target.
- {
- 'target_name': 'chain',
- 'type': 'none',
- 'dependencies': [
- 'generate_header',
- ],
- },
-
- # This final target is:
- # - a static library (so gyp doesn't transitively pull in dependencies);
- # - that relies on the generated file two dependencies away.
- {
- 'target_name': 'chained',
- 'type': 'static_library',
- 'dependencies': [
- 'chain',
- ],
- 'sources': [
- 'chained.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include "generated/header.h"
-
-int main(void) {
- return 0;
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that files generated by two-steps-removed actions are built before
-dependent compile steps.
-"""
-
-import os
-import sys
-import TestGyp
-
-# This test is Ninja-specific in that:
-# - the bug only showed nondeterministically in parallel builds;
-# - it relies on a ninja-specific output file path.
-
-test = TestGyp.TestGyp(formats=['ninja'])
-# xcode-ninja doesn't support building single object files by design.
-if test.format == 'xcode-ninja':
- test.skip_test()
-
-test.run_gyp('chained-dependency.gyp')
-objext = '.obj' if sys.platform == 'win32' else '.o'
-test.build('chained-dependency.gyp',
- os.path.join('obj', 'chained.chained' + objext))
-# The test passes if the .o file builds successfully.
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verifies a phony target isn't output if a target exists with the same name that
-was output.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['ninja'])
-
-# Reset xcode_ninja_target_pattern to its default for this test.
-test.run_gyp('test.gyp', '-G', 'xcode_ninja_target_pattern=^$')
-
-# Check for both \r and \n to cover both windows and linux.
-test.must_not_contain('out/Default/build.ninja', 'build empty_target: phony\r')
-test.must_not_contain('out/Default/build.ninja', 'build empty_target: phony\n')
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'empty_target',
- 'type': 'executable',
- 'sources': [
- 'test.cc',
- ],
- },
- {
- 'target_name': 'included_empty_target',
- 'type': 'none',
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'All',
- 'type': 'none',
- 'dependencies': [
- 'subdir/included.gyp:included_empty_target'
- ]
- },
- {
- 'target_name': 'empty_target',
- 'type': 'none',
- },
- ],
-}
+++ /dev/null
-#!/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 paths are normalized with VS macros properly expanded on Windows.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- test.run_gyp('normalize-paths.gyp')
-
- # We can't use existence tests because any case will pass, so we check the
- # contents of ninja files directly since that's what we're most concerned
- # with anyway.
- subninja = open(test.built_file_path('obj/some_target.ninja')).read()
- if '$!product_dir' in subninja:
- test.fail_test()
- if 'out\\Default' in subninja:
- test.fail_test()
-
- second = open(test.built_file_path('obj/second.ninja')).read()
- if ('..\\..\\things\\AnotherName.exe' in second or
- 'AnotherName.exe' not in second):
- test.fail_test()
-
- copytarget = open(test.built_file_path('obj/copy_target.ninja')).read()
- if '$(VSInstallDir)' in copytarget:
- test.fail_test()
-
- action = open(test.built_file_path('obj/action.ninja')).read()
- if '..\\..\\out\\Default' in action:
- test.fail_test()
- if '..\\..\\SomethingElse' in action or 'SomethingElse' not in action:
- test.fail_test()
- if '..\\..\\SomeOtherInput' in action or 'SomeOtherInput' not in action:
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'Some_Target',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '<(PRODUCT_DIR)/stuff/AnotherName.exe',
- },
- },
- 'sources': [
- 'HeLLo.cc',
- 'blOrP.idl',
- ],
- },
- {
- 'target_name': 'second',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(OutDir)\\things\\AnotherName.exe',
- },
- },
- 'sources': [
- 'HeLLo.cc',
- ],
- },
- {
- 'target_name': 'Copy_Target',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)',
- 'files': [
- '$(VSInstallDir)\\bin\\cl.exe',
- ],
- },
- ],
- },
- {
- 'target_name': 'action',
- 'type': 'none',
- 'msvs_cygwin_shell': '0',
- 'actions': [
- {
- 'inputs': [
- '$(IntDir)\\SomeInput',
- '$(OutDir)\\SomeOtherInput',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/ReSuLt',
- '<(SHARED_INTERMEDIATE_DIR)/TempFile',
- '$(OutDir)\SomethingElse',
- ],
- 'action_name': 'Test action',
- # Unfortunately, we can't normalize this field because it's
- # free-form. Fortunately, ninja doesn't inspect it at all (only the
- # inputs and outputs) so it's not mandatory.
- 'action': [],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# This file intentionally left blank.
+++ /dev/null
-#!/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.
-
-"""
-Verify that .s files don't always trigger a rebuild, as would happen if depfiles
-were used for them (since clang & gcc ignore -MMD when building .s->.o on
-linux).
-"""
-
-import os
-import sys
-import TestCommon
-import TestGyp
-
-# NOTE(fischman): Each generator uses depfiles (or not) differently, so this is
-# a ninja-specific test.
-test = TestGyp.TestGyp(formats=['ninja'])
-
-if sys.platform == 'win32' or sys.platform == 'win64':
- # This test is about clang/gcc vs. depfiles; VS gets a pass.
- test.pass_test()
- sys.exit(0)
-
-test.run_gyp('s-needs-no-depfiles.gyp')
-
-# Build the library, grab its timestamp, rebuild the library, ensure timestamp
-# hasn't changed.
-test.build('s-needs-no-depfiles.gyp', 'empty')
-empty_dll = test.built_file_path('empty', test.SHARED_LIB)
-test.built_file_must_exist(empty_dll)
-pre_stat = os.stat(test.built_file_path(empty_dll))
-test.sleep()
-test.build('s-needs-no-depfiles.gyp', 'empty')
-post_stat = os.stat(test.built_file_path(empty_dll))
-
-if pre_stat.st_mtime != post_stat.st_mtime:
- test.fail_test()
-else:
- test.pass_test()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'empty',
- 'type': 'shared_library',
- 'sources': [ 'empty.s' ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verify that relinking a solib doesn't relink a dependent executable if the
-solib's public API hasn't changed.
-"""
-
-import os
-import sys
-import TestCommon
-import TestGyp
-
-# NOTE(fischman): This test will not work with other generators because the
-# API-hash-based-mtime-preservation optimization is only implemented in
-# ninja.py. It could be extended to the make.py generator as well pretty
-# easily, probably.
-# (also, it tests ninja-specific out paths, which would have to be generalized
-# if this was extended to other generators).
-test = TestGyp.TestGyp(formats=['ninja'])
-
-if not os.environ.get('ProgramFiles(x86)'):
- # TODO(scottmg)
- print 'Skipping test on x86, http://crbug.com/365833'
- test.pass_test()
-
-test.run_gyp('solibs_avoid_relinking.gyp')
-
-# Build the executable, grab its timestamp, touch the solib's source, rebuild
-# executable, ensure timestamp hasn't changed.
-test.build('solibs_avoid_relinking.gyp', 'b')
-test.built_file_must_exist('b' + TestCommon.exe_suffix)
-pre_stat = os.stat(test.built_file_path('b' + TestCommon.exe_suffix))
-os.utime(os.path.join(test.workdir, 'solib.cc'),
- (pre_stat.st_atime, pre_stat.st_mtime + 100))
-test.sleep()
-test.build('solibs_avoid_relinking.gyp', 'b')
-post_stat = os.stat(test.built_file_path('b' + TestCommon.exe_suffix))
-
-if pre_stat.st_mtime != post_stat.st_mtime:
- test.fail_test()
-else:
- test.pass_test()
+++ /dev/null
-extern int foo();
-
-int main() {
- return foo();
-}
+++ /dev/null
-#ifdef _MSC_VER
-__declspec(dllexport)
-#else
-__attribute__((visibility("default")))
-#endif
-int foo() {
- return 42;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'shared_library',
- 'sources': [ 'solib.cc' ],
- # Incremental linking enabled so that .lib timestamp is maintained when
- # exports are unchanged.
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '2',
- }
- },
- },
- {
- 'target_name': 'b',
- 'type': 'executable',
- 'sources': [ 'main.cc' ],
- 'dependencies': [ 'a' ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '2',
- }
- },
- },
- ],
- 'conditions': [
- ['OS=="linux"', {
- 'target_defaults': {
- 'cflags': ['-fPIC'],
- },
- }],
- ],
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-This is a dummy file for rule/action input.
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 'ninja_use_console' is supported in actions and rules.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['ninja'])
-
-test.run_gyp('use-console.gyp')
-
-no_pool = open(test.built_file_path('obj/no_pool.ninja')).read()
-if 'pool =' in no_pool:
- test.fail_test()
-
-action_pool = open(test.built_file_path('obj/action_pool.ninja')).read()
-if 'pool = console' not in action_pool:
- test.fail_test()
-
-rule_pool = open(test.built_file_path('obj/rule_pool.ninja')).read()
-if 'pool = console' not in rule_pool:
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'no_pool',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'some_action',
- 'action': ['echo', 'hello'],
- 'inputs': ['foo.bar'],
- 'outputs': ['dummy'],
- },
- ],
- 'rules': [
- {
- 'rule_name': 'some_rule',
- 'extension': 'bar',
- 'action': ['echo', 'hello'],
- 'outputs': ['dummy'],
- },
- ],
- 'sources': [
- 'foo.bar',
- ],
- },
- {
- 'target_name': 'action_pool',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'some_action',
- 'action': ['echo', 'hello'],
- 'inputs': ['foo.bar'],
- 'outputs': ['dummy'],
- 'ninja_use_console': 1,
- },
- ],
- },
- {
- 'target_name': 'rule_pool',
- 'type': 'none',
- 'rules': [
- {
- 'rule_name': 'some_rule',
- 'extension': 'bar',
- 'action': ['echo', 'hello'],
- 'outputs': ['dummy'],
- 'ninja_use_console': 1,
- },
- ],
- 'sources': [
- 'foo.bar',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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 environment files can be suppressed.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- test.run_gyp('use-custom-environment-files.gyp',
- '-G', 'ninja_use_custom_environment_files')
-
- # Make sure environment files do not exist.
- if os.path.exists(test.built_file_path('environment.x86')):
- test.fail_test()
- if os.path.exists(test.built_file_path('environment.x64')):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_use_custom_environment_files',
- 'type': 'executable',
- 'sources': [
- 'use-custom-environment-files.cc',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Checks that C-only targets aren't linked against libstdc++.
-"""
-
-import TestGyp
-
-import re
-import subprocess
-import sys
-
-# set |match| to ignore build stderr output.
-test = TestGyp.TestGyp(match = lambda a, b: True)
-if sys.platform != 'win32' and test.format not in ('make', 'android'):
- # TODO: This doesn't pass with make.
- # TODO: Does a test like this make sense with Windows? Android?
-
- CHDIR = 'src'
- test.run_gyp('test.gyp', chdir=CHDIR)
- test.build('test.gyp', 'no_cpp', chdir=CHDIR)
-
- def LinksLibStdCpp(path):
- path = test.built_file_path(path, chdir=CHDIR)
- if sys.platform == 'darwin':
- proc = subprocess.Popen(['otool', '-L', path], stdout=subprocess.PIPE)
- else:
- proc = subprocess.Popen(['ldd', path], stdout=subprocess.PIPE)
- output = proc.communicate()[0]
- assert not proc.returncode
- return 'libstdc++' in output or 'libc++' in output
-
- if LinksLibStdCpp('no_cpp'):
- test.fail_test()
-
- build_error_code = {
- 'xcode': [1, 65], # 1 for xcode 3, 65 for xcode 4 (see `man sysexits`)
- 'make': 2,
- 'ninja': 1,
- 'cmake': 0, # CMake picks the compiler driver based on transitive checks.
- 'xcode-ninja': [1, 65],
- }[test.format]
-
- test.build('test.gyp', 'no_cpp_dep_on_cc_lib', chdir=CHDIR,
- status=build_error_code)
-
- test.pass_test()
+++ /dev/null
-void* f();
-int main() { f(); }
+++ /dev/null
-int main() {}
+++ /dev/null
-extern "C" { void* f(); }
-
-void* f() { return new int; }
+++ /dev/null
-# Copyright (c) 2013 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.
-{
- 'targets': [
- {
- 'target_name': 'no_cpp',
- 'type': 'executable',
- 'sources': [ 'empty-main.c' ],
- },
- # A static_library with a cpp file and a linkable with only .c files
- # depending on it causes a linker error:
- {
- 'target_name': 'cpp_lib',
- 'type': 'static_library',
- 'sources': [ 'f.cc' ],
- },
- {
- 'target_name': 'no_cpp_dep_on_cc_lib',
- 'type': 'executable',
- 'dependencies': [ 'cpp_lib' ],
- 'sources': [ 'call-f-main.c' ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verified things don't explode when there are targets without outputs.
-"""
-
-import TestGyp
-
-# TODO(evan): in ninja when there are no targets, there is no 'all'
-# target either. Disabling this test for now.
-test = TestGyp.TestGyp(formats=['!ninja'])
-
-test.run_gyp('nooutput.gyp', chdir='src')
-test.relocate('src', 'relocate/src')
-test.build('nooutput.gyp', chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'no_output',
- 'type': 'none',
- 'direct_dependent_settings': {
- 'defines': [
- 'NADA',
- ],
- },
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies simplest-possible build of a "Hello, world!" program
-using the default build target.
-"""
-
-import TestGyp
-
-# Android does not support setting the build directory.
-test = TestGyp.TestGyp(formats=['!android'])
-
-test.run_gyp('product.gyp')
-test.build('product.gyp')
-
-# executables
-test.built_file_must_exist('alt1' + test._exe, test.EXECUTABLE, bare=True)
-test.built_file_must_exist('hello2.stuff', test.EXECUTABLE, bare=True)
-test.built_file_must_exist('yoalt3.stuff', test.EXECUTABLE, bare=True)
-
-# shared libraries
-test.built_file_must_exist(test.dll_ + 'alt4' + test._dll,
- test.SHARED_LIB, bare=True)
-test.built_file_must_exist(test.dll_ + 'hello5.stuff',
- test.SHARED_LIB, bare=True)
-test.built_file_must_exist('yoalt6.stuff', test.SHARED_LIB, bare=True)
-
-# static libraries
-test.built_file_must_exist(test.lib_ + 'alt7' + test._lib,
- test.STATIC_LIB, bare=True)
-test.built_file_must_exist(test.lib_ + 'hello8.stuff',
- test.STATIC_LIB, bare=True)
-test.built_file_must_exist('yoalt9.stuff', test.STATIC_LIB, bare=True)
-
-# alternate product_dir
-test.built_file_must_exist('bob/yoalt10.stuff', test.EXECUTABLE, bare=True)
-test.built_file_must_exist('bob/yoalt11.stuff', test.EXECUTABLE, bare=True)
-test.built_file_must_exist('bob/yoalt12.stuff', test.EXECUTABLE, bare=True)
-
-test.pass_test()
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-#include <stdio.h>
-
-int func1(void) {
- return 42;
-}
-
-int main(void) {
- printf("Hello, world!\n");
- printf("%d\n", func1());
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello1',
- 'product_name': 'alt1',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello2',
- 'product_extension': 'stuff',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello3',
- 'product_name': 'alt3',
- 'product_extension': 'stuff',
- 'product_prefix': 'yo',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
-
- {
- 'target_name': 'hello4',
- 'product_name': 'alt4',
- 'type': 'shared_library',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello5',
- 'product_extension': 'stuff',
- 'type': 'shared_library',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello6',
- 'product_name': 'alt6',
- 'product_extension': 'stuff',
- 'product_prefix': 'yo',
- 'type': 'shared_library',
- 'sources': [
- 'hello.c',
- ],
- },
-
- {
- 'target_name': 'hello7',
- 'product_name': 'alt7',
- 'type': 'static_library',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello8',
- 'product_extension': 'stuff',
- 'type': 'static_library',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello9',
- 'product_name': 'alt9',
- 'product_extension': 'stuff',
- 'product_prefix': 'yo',
- 'type': 'static_library',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello10',
- 'product_name': 'alt10',
- 'product_extension': 'stuff',
- 'product_prefix': 'yo',
- 'product_dir': '<(PRODUCT_DIR)/bob',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello11',
- 'product_name': 'alt11',
- 'product_extension': 'stuff',
- 'product_prefix': 'yo',
- 'product_dir': '<(PRODUCT_DIR)/bob',
- 'type': 'shared_library',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello12',
- 'product_name': 'alt12',
- 'product_extension': 'stuff',
- 'product_prefix': 'yo',
- 'product_dir': '<(PRODUCT_DIR)/bob',
- 'type': 'static_library',
- 'sources': [
- 'hello.c',
- ],
- },
- ],
- 'conditions': [
- ['OS=="linux"', {
- 'target_defaults': {
- 'cflags': ['-fPIC'],
- },
- }],
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies --root-target removes the unnecessary targets.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-# The xcode-ninja generator has its own logic for which targets to include
-if test.format == 'xcode-ninja':
- test.skip_test()
-
-build_error_code = {
- 'android': 2,
- 'cmake': 1,
- 'make': 2,
- 'msvs': 1,
- 'ninja': 1,
- 'xcode': 65,
-}[test.format]
-
-# By default, everything will be included.
-test.run_gyp('test1.gyp')
-test.build('test2.gyp', 'lib1')
-test.build('test2.gyp', 'lib2')
-test.build('test2.gyp', 'lib3')
-test.build('test2.gyp', 'lib_indirect')
-test.build('test1.gyp', 'program1')
-test.build('test1.gyp', 'program2')
-test.build('test1.gyp', 'program3')
-
-# With deep dependencies of program1 only.
-test.run_gyp('test1.gyp', '--root-target=program1')
-test.build('test2.gyp', 'lib1')
-test.build('test2.gyp', 'lib2', status=build_error_code, stderr=None)
-test.build('test2.gyp', 'lib3', status=build_error_code, stderr=None)
-test.build('test2.gyp', 'lib_indirect')
-test.build('test1.gyp', 'program1')
-test.build('test1.gyp', 'program2', status=build_error_code, stderr=None)
-test.build('test1.gyp', 'program3', status=build_error_code, stderr=None)
-
-# With deep dependencies of program2 only.
-test.run_gyp('test1.gyp', '--root-target=program2')
-test.build('test2.gyp', 'lib1', status=build_error_code, stderr=None)
-test.build('test2.gyp', 'lib2')
-test.build('test2.gyp', 'lib3', status=build_error_code, stderr=None)
-test.build('test2.gyp', 'lib_indirect')
-test.build('test1.gyp', 'program1', status=build_error_code, stderr=None)
-test.build('test1.gyp', 'program2')
-test.build('test1.gyp', 'program3', status=build_error_code, stderr=None)
-
-# With deep dependencies of program1 and program2.
-test.run_gyp('test1.gyp', '--root-target=program1', '--root-target=program2')
-test.build('test2.gyp', 'lib1')
-test.build('test2.gyp', 'lib2')
-test.build('test2.gyp', 'lib3', status=build_error_code, stderr=None)
-test.build('test2.gyp', 'lib_indirect')
-test.build('test1.gyp', 'program1')
-test.build('test1.gyp', 'program2')
-test.build('test1.gyp', 'program3', status=build_error_code, stderr=None)
-
-test.pass_test()
+++ /dev/null
-// Copyright (c) 2013 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.
-
-void libfunc1() {
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-void libfunc2() {
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-void libfunc3() {
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-void libfunc_indirect() {
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program1',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'dependencies': [ 'test2.gyp:lib1' ],
- },
- {
- 'target_name': 'program2',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'dependencies': [ 'test2.gyp:lib2' ],
- },
- {
- 'target_name': 'program3',
- 'type': 'executable',
- 'sources': [ 'program.cc' ],
- 'dependencies': [ 'test2.gyp:lib3' ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib1',
- 'type': 'static_library',
- 'sources': [ 'lib1.cc' ],
- 'dependencies': [ 'lib_indirect' ],
- },
- {
- 'target_name': 'lib2',
- 'type': 'static_library',
- 'sources': [ 'lib2.cc' ],
- 'dependencies': [ 'lib_indirect' ],
- },
- {
- 'target_name': 'lib3',
- 'type': 'static_library',
- 'sources': [ 'lib3.cc' ],
- },
- {
- 'target_name': 'lib_indirect',
- 'type': 'static_library',
- 'sources': [ 'lib_indirect.cc' ],
- },
- ],
-}
+++ /dev/null
-/*
- * Copyright (c) 2011 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.
- */
-
-int main() {
- return 0;
-}
+++ /dev/null
-{
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'executable',
- 'sources': ['a.cc'],
- 'dependencies': [
- '../../foo/b/b.gyp:b',
- 'c/c.gyp:c',
- ],
- },
- ],
-}
+++ /dev/null
-/*
- * Copyright (c) 2011 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.
- */
-
-int func() {
- return 0;
-}
+++ /dev/null
-{
- 'targets': [
- {
- 'target_name': 'c',
- 'type': 'static_library',
- 'sources': ['c.cc'],
- 'dependencies': [
- '../../b/b.gyp:b',
- ],
- },
- ],
-}
+++ /dev/null
-/*
- * Copyright (c) 2011 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.
- */
-
-int func2() {
- return 0;
-}
+++ /dev/null
-{
- 'targets': [
- {
- 'target_name': 'b',
- 'type': 'static_library',
- 'sources': ['b.cc'],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies simplest-possible build of a "Hello, world!" program
-using the default build target.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_default', formats=['msvs'])
-
-# Run from down in foo.
-test.run_gyp('a.gyp', chdir='foo/a')
-sln = test.workpath('foo/a/a.sln')
-sln_data = open(sln, 'rb').read()
-vcproj = sln_data.count('b.vcproj')
-vcxproj = sln_data.count('b.vcxproj')
-if (vcproj, vcxproj) not in [(1, 0), (0, 1)]:
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-int main() { return 0; }
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'filecaserename_sensitive',
- 'type': 'executable',
- 'sources': [
- 'FiLe.c',
- 'fIlE.c',
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'filecaserename',
- 'type': 'executable',
- 'sources': [
- 'file.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Checks that files whose file case changes get rebuilt correctly.
-"""
-
-import os
-import TestGyp
-
-test = TestGyp.TestGyp()
-CHDIR = 'filecase'
-test.run_gyp('test.gyp', chdir=CHDIR)
-test.build('test.gyp', test.ALL, chdir=CHDIR)
-
-os.rename('filecase/file.c', 'filecase/fIlE.c')
-test.write('filecase/test.gyp',
- test.read('filecase/test.gyp').replace('file.c', 'fIlE.c'))
-test.run_gyp('test.gyp', chdir=CHDIR)
-test.build('test.gyp', test.ALL, chdir=CHDIR)
-
-
-# Check that having files that differ just in their case still work on
-# case-sensitive file systems.
-test.write('filecase/FiLe.c', 'int f(); int main() { return f(); }')
-test.write('filecase/fIlE.c', 'int f() { return 42; }')
-is_case_sensitive = test.read('filecase/FiLe.c') != test.read('filecase/fIlE.c')
-if is_case_sensitive:
- test.run_gyp('test-casesensitive.gyp', chdir=CHDIR)
- test.build('test-casesensitive.gyp', test.ALL, chdir=CHDIR)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verify that dependent rules are executed iff a dependency action modifies its
-outputs.
-"""
-
-import TestGyp
-import os
-
-test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
-
-test.run_gyp('restat.gyp', chdir='src')
-
-chdir = 'relocate/src'
-test.relocate('src', chdir)
-
-# Building 'dependent' the first time generates 'side_effect', but building it
-# the second time doesn't, because 'create_intermediate' doesn't update its
-# output.
-test.build('restat.gyp', 'dependent', chdir=chdir)
-test.built_file_must_exist('side_effect', chdir=chdir)
-os.remove(test.built_file_path('side_effect', chdir=chdir))
-test.build('restat.gyp', 'dependent', chdir=chdir)
-test.built_file_must_not_exist('side_effect', chdir=chdir)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-import os
-import sys
-
-"""
-Create argv[1] iff it doesn't already exist.
-"""
-
-outfile = sys.argv[1]
-if os.path.exists(outfile):
- sys.exit()
-open(outfile, "wb").close()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'create_intermediate',
- 'type': 'none',
- 'msvs_cygwin_shell': '0',
- 'actions': [
- {
- 'action_name': 'create_intermediate',
- 'inputs': [
- 'create_intermediate.py',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/intermediate',
- 'ALWAYS.run.ALWAYS',
- ],
- 'action': [
- 'python', 'create_intermediate.py', '<(PRODUCT_DIR)/intermediate',
- ],
- },
- ],
- },
- {
- 'target_name': 'dependent',
- 'type': 'none',
- 'msvs_cygwin_shell': '0',
- 'dependencies': [
- 'create_intermediate',
- ],
- 'actions': [
- {
- 'action_name': 'dependent',
- 'inputs': [
- '<(PRODUCT_DIR)/intermediate',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/dependent'
- ],
- 'action': [
- 'python', 'touch.py', '<(PRODUCT_DIR)/dependent', '<(PRODUCT_DIR)/side_effect',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-import os
-import sys
-
-"""Cross-platform touch."""
-
-for fname in sys.argv[1:]:
- if os.path.exists(fname):
- os.utime(fname, None)
- else:
- open(fname, 'w').close()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies simple rules when using an explicit build target of 'all'.
-"""
-
-import TestGyp
-import os
-import sys
-
-test = TestGyp.TestGyp(formats=['make', 'ninja', 'android', 'xcode', 'msvs'])
-
-test.run_gyp('actions.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('actions.gyp', chdir='relocate/src')
-
-expect = """\
-no dir here
-hi c
-hello baz
-"""
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('gencc_int_output', chdir=chdir, stdout=expect)
-if test.format == 'msvs':
- test.run_built_executable('gencc_int_output_external', chdir=chdir,
- stdout=expect)
-
-test.must_match('relocate/src/subdir/foo/bar/baz.dirname',
- os.path.join('foo', 'bar'))
-test.must_match('relocate/src/subdir/a/b/c.dirname',
- os.path.join('a', 'b'))
-
-# FIXME the xcode and make generators incorrectly convert RULE_INPUT_PATH
-# to an absolute path, making the tests below fail!
-if test.format != 'xcode' and test.format != 'make':
- test.must_match('relocate/src/subdir/foo/bar/baz.path',
- os.path.join('foo', 'bar', 'baz.printvars'))
- test.must_match('relocate/src/subdir/a/b/c.path',
- os.path.join('a', 'b', 'c.printvars'))
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'pull_in_all_actions',
- 'type': 'none',
- 'dependencies': [
- 'subdir/input-rule-dirname.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-import sys
-
-contents = open(sys.argv[1], 'r').read()
-open(sys.argv[2], 'wb').write(contents)
-
-sys.exit(0)
+++ /dev/null
-// -*- mode: c++ -*-
-#include <stdio.h>
-
-namespace gen {
- void c() {
- printf("hi c\n");
- }
-}
+++ /dev/null
-# Empty file for testing build rules
+++ /dev/null
-// -*- mode: c++ -*-
-#include <stdio.h>
-
-namespace gen {
- void baz() {
- printf("hello baz\n");
- }
-}
+++ /dev/null
-# Empty file for testing build rules
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'print_rule_input_dirname',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'foo/bar/baz.printvars',
- 'a/b/c.printvars',
- ],
- 'rules': [
- {
- 'rule_name': 'printvars',
- 'extension': 'printvars',
- 'inputs': [
- 'printvars.py',
- ],
- 'outputs': [
- '<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).dirname',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(RULE_INPUT_DIRNAME)', '<@(_outputs)',
- ],
- },
- ],
- },
- {
- 'target_name': 'print_rule_input_path',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'foo/bar/baz.printvars',
- 'a/b/c.printvars',
- ],
- 'rules': [
- {
- 'rule_name': 'printvars',
- 'extension': 'printvars',
- 'inputs': [
- 'printvars.py',
- ],
- 'outputs': [
- '<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).path',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- },
- ],
- },
- {
- 'target_name': 'gencc_int_output',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'nodir.gencc',
- 'foo/bar/baz.gencc',
- 'a/b/c.gencc',
- 'main.cc',
- ],
- 'rules': [
- {
- 'rule_name': 'gencc',
- 'extension': 'gencc',
- 'inputs': [
- '<(DEPTH)/copy-file.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).cc',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
- 'conditions': [
- ['OS=="win"', {
- 'targets': [
- {
- 'target_name': 'gencc_int_output_external',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'msvs_cygwin_dirs': ['../../../../../../<(DEPTH)/third_party/cygwin'],
- 'sources': [
- 'nodir.gencc',
- 'foo/bar/baz.gencc',
- 'a/b/c.gencc',
- 'main.cc',
- ],
- 'dependencies': [
- 'cygwin',
- ],
- 'rules': [
- {
- 'rule_name': 'gencc',
- 'extension': 'gencc',
- 'msvs_external_rule': 1,
- 'inputs': [
- '<(DEPTH)/copy-file.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).cc',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- {
- 'target_name': 'cygwin',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'setup_mount',
- 'msvs_cygwin_shell': 0,
- 'inputs': [
- '../../../../../../<(DEPTH)/third_party/cygwin/setup_mount.bat',
- ],
- # Visual Studio requires an output file, or else the
- # custom build step won't run.
- 'outputs': [
- '<(INTERMEDIATE_DIR)/_always_run_setup_mount.marker',
- ],
- 'action': ['<@(_inputs)'],
- },
- ],
- },
- ],
- }],
- ],
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-namespace gen {
- extern void nodir();
- extern void c();
- extern void baz();
-}
-
-int main() {
- gen::nodir();
- gen::c();
- gen::baz();
-}
+++ /dev/null
-// -*- mode: c++ -*-
-#include <stdio.h>
-
-namespace gen {
- void nodir() {
- printf("no dir here\n");
- }
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Prints interesting vars
-"""
-
-import sys;
-
-out = open(sys.argv[2], 'w')
-out.write(sys.argv[1]);
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies that a rule that generates multiple outputs rebuilds
-correctly when the inputs change.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_all')
-
-test.run_gyp('same_target.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-
-test.build('same_target.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from main.c
-Hello from prog1.in!
-Hello from prog2.in!
-"""
-
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-test.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
-
-
-test.sleep()
-contents = test.read(['relocate', 'src', 'prog1.in'])
-contents = contents.replace('!', ' AGAIN!')
-test.write(['relocate', 'src', 'prog1.in'], contents)
-
-test.build('same_target.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from main.c
-Hello from prog1.in AGAIN!
-Hello from prog2.in!
-"""
-
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-test.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
-
-
-test.sleep()
-contents = test.read(['relocate', 'src', 'prog2.in'])
-contents = contents.replace('!', ' AGAIN!')
-test.write(['relocate', 'src', 'prog2.in'], contents)
-
-test.build('same_target.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from main.c
-Hello from prog1.in AGAIN!
-Hello from prog2.in AGAIN!
-"""
-
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-test.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
-
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a rule that generates multiple outputs rebuilds
-correctly when the inputs change.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(workdir='workarea_default')
-
-test.run_gyp('same_target.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-
-test.build('same_target.gyp', chdir='relocate/src')
-
-expect = """\
-Hello from main.c
-Hello from prog1.in!
-Hello from prog2.in!
-"""
-
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-test.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
-
-
-test.sleep()
-contents = test.read(['relocate', 'src', 'prog1.in'])
-contents = contents.replace('!', ' AGAIN!')
-test.write(['relocate', 'src', 'prog1.in'], contents)
-
-test.build('same_target.gyp', chdir='relocate/src')
-
-expect = """\
-Hello from main.c
-Hello from prog1.in AGAIN!
-Hello from prog2.in!
-"""
-
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-test.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
-
-
-test.sleep()
-contents = test.read(['relocate', 'src', 'prog2.in'])
-contents = contents.replace('!', ' AGAIN!')
-test.write(['relocate', 'src', 'prog2.in'], contents)
-
-test.build('same_target.gyp', chdir='relocate/src')
-
-expect = """\
-Hello from main.c
-Hello from prog1.in AGAIN!
-Hello from prog2.in AGAIN!
-"""
-
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-test.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
-
-
-# Test that modifying a rule's inputs (specifically, make-sources.py) causes
-# the targets to be built.
-
-test.sleep()
-contents = test.read(['relocate', 'src', 'make-sources.py'])
-contents = contents.replace('%s', 'the amazing %s')
-test.write(['relocate', 'src', 'make-sources.py'], contents)
-
-test.build('same_target.gyp', chdir='relocate/src')
-
-expect = """\
-Hello from main.c
-Hello from the amazing prog1.in AGAIN!
-Hello from the amazing prog2.in AGAIN!
-"""
-
-test.run_built_executable('program', chdir='relocate/src', stdout=expect)
-
-test.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
-
-
-test.pass_test()
+++ /dev/null
-#include <stdio.h>
-
-extern void prog1(void);
-extern void prog2(void);
-
-int main(void)
-{
- printf("Hello from main.c\n");
- prog1();
- prog2();
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2011 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.
-
-import sys
-
-assert len(sys.argv) == 4, sys.argv
-
-(in_file, c_file, h_file) = sys.argv[1:]
-
-def write_file(filename, contents):
- open(filename, 'wb').write(contents)
-
-write_file(c_file, open(in_file, 'rb').read())
-
-write_file(h_file, '#define NAME "%s"\n' % in_file)
-
-sys.exit(0)
+++ /dev/null
-#include <stdio.h>
-#include "prog1.h"
-
-void prog1(void)
-{
- printf("Hello from %s!\n", NAME);
-}
+++ /dev/null
-#include <stdio.h>
-#include "prog2.h"
-
-void prog2(void)
-{
- printf("Hello from %s!\n", NAME);
-}
+++ /dev/null
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'main.c',
- 'prog1.in',
- 'prog2.in',
- ],
- 'rules': [
- {
- 'rule_name': 'make_sources',
- 'extension': 'in',
- 'inputs': [
- 'make-sources.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).c',
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).h',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_NAME)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verifies that rules which use built dependencies work correctly.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('use-built-dependencies-rule.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-test.build('use-built-dependencies-rule.gyp', chdir='relocate/src')
-
-test.built_file_must_exist('main_output', chdir='relocate/src')
-test.built_file_must_match('main_output', 'output', chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-// Copyright (c) 2013 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.
-#include <stdio.h>
-
-int main(int argc, char *argv[]) {
- if (argc < 2) {
- return 2;
- }
- FILE* file;
- file = fopen(argv[1], "wb");
- const char output[] = "output";
- fwrite(output, 1, sizeof(output) - 1, file);
- fclose(file);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'main',
- 'toolsets': ['host'],
- 'type': 'executable',
- 'sources': [
- 'main.cc',
- ],
- },
- {
- 'target_name': 'post',
- 'toolsets': ['host'],
- 'type': 'none',
- 'dependencies': [
- 'main',
- ],
- 'sources': [
- # As this test is written it could easily be made into an action.
- # An acutal use case would have a number of these 'sources'.
- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)main<(EXECUTABLE_SUFFIX)',
- ],
- 'rules': [
- {
- 'rule_name': 'generate_output',
- 'extension': '<(EXECUTABLE_SUFFIX)',
- 'outputs': [ '<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT)_output', ],
- 'msvs_cygwin_shell': 0,
- 'action': [
- '<(RULE_INPUT_PATH)',
- '<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT)_output',
- ],
- 'message': 'Generating output for <(RULE_INPUT_ROOT)'
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies rules related variables are expanded.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['ninja'])
-
-test.relocate('src', 'relocate/src')
-
-test.run_gyp('variables.gyp', chdir='relocate/src')
-
-test.build('variables.gyp', chdir='relocate/src')
-
-test.run_built_executable('all_rule_variables',
- chdir='relocate/src',
- stdout="input_root\ninput_dirname\ninput_path\n" +
- "input_ext\ninput_name\n")
-
-test.pass_test()
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#include <stdio.h>
-
-void input_ext() {
- printf("input_ext\n");
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#include <stdio.h>
-
-void input_name() {
- printf("input_name\n");
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#include <stdio.h>
-
-void input_path() {
- printf("input_path\n");
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#include <stdio.h>
-
-void input_dirname() {
- printf("input_dirname\n");
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-extern void input_root();
-extern void input_dirname();
-extern void input_path();
-extern void input_ext();
-extern void input_name();
-
-int main() {
- input_root();
- input_dirname();
- input_path();
- input_ext();
- input_name();
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2011 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.
-
-#include <stdio.h>
-
-void input_root() {
- printf("input_root\n");
-}
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'target_defaults': {
- # This test shouldn't ever actually need to execute its rules: there's no
- # command line that generates any output anyway. However, there's something
- # slightly broken in either ninja or (maybe more likely?) on the win32 VM
- # gypbots that breaks dependency checking and causes this rule to want to
- # run. When it does run, the cygwin path is wrong, so the do-nothing step
- # fails.
- # TODO: Investigate and fix whatever's actually failing and remove this.
- 'msvs_cygwin_dirs': ['../../../../../../<(DEPTH)/third_party/cygwin'],
- },
- 'targets': [
- {
- 'target_name': 'all_rule_variables',
- 'type': 'executable',
- 'sources': [
- 'subdir/test.c',
- ],
- 'rules': [
- {
- 'rule_name': 'rule_variable',
- 'extension': 'c',
- 'outputs': [
- '<(RULE_INPUT_ROOT).input_root.c',
- '<(RULE_INPUT_DIRNAME)/input_dirname.c',
- 'input_path/<(RULE_INPUT_PATH)',
- 'input_ext<(RULE_INPUT_EXT)',
- 'input_name/<(RULE_INPUT_NAME)',
- ],
- 'action': [],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies simple rules when using an explicit build target of 'all'.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('no_action_with_rules_fails.gyp', chdir='src/noaction', status=1,
- stderr=None)
-
-test.run_gyp('actions.gyp',
- '-G', 'xcode_ninja_target_pattern=^pull_in_all_actions$',
- chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('actions.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from program.c
-Hello from function1.in
-Hello from function2.in
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir1'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('program', chdir=chdir, stdout=expect)
-
-expect = """\
-Hello from program.c
-Hello from function3.in
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir3'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('program2', chdir=chdir, stdout=expect)
-
-test.must_match('relocate/src/subdir2/file1.out', 'Hello from file1.in\n')
-test.must_match('relocate/src/subdir2/file2.out', 'Hello from file2.in\n')
-
-test.must_match('relocate/src/subdir2/file1.out2', 'Hello from file1.in\n')
-test.must_match('relocate/src/subdir2/file2.out2', 'Hello from file2.in\n')
-
-test.must_match('relocate/src/subdir2/file1.out4', 'Hello from file1.in\n')
-test.must_match('relocate/src/subdir2/file2.out4', 'Hello from file2.in\n')
-test.must_match('relocate/src/subdir2/file1.copy', 'Hello from file1.in\n')
-
-test.must_match('relocate/src/external/file1.external_rules.out',
- 'Hello from file1.in\n')
-test.must_match('relocate/src/external/file2.external_rules.out',
- 'Hello from file2.in\n')
-
-expect = """\
-Hello from program.c
-Got 41.
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir4'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('program4', chdir=chdir, stdout=expect)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies simple rules when using an explicit build target of 'all'.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('actions.gyp',
- '-G', 'xcode_ninja_target_pattern=^pull_in_all_actions$',
- chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('actions.gyp', chdir='relocate/src')
-
-expect = """\
-Hello from program.c
-Hello from function1.in
-Hello from function2.in
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir1'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('program', chdir=chdir, stdout=expect)
-
-expect = """\
-Hello from program.c
-Hello from function3.in
-"""
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir3'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('program2', chdir=chdir, stdout=expect)
-
-test.must_match('relocate/src/subdir2/file1.out', 'Hello from file1.in\n')
-test.must_match('relocate/src/subdir2/file2.out', 'Hello from file2.in\n')
-
-test.must_match('relocate/src/subdir2/file1.out2', 'Hello from file1.in\n')
-test.must_match('relocate/src/subdir2/file2.out2', 'Hello from file2.in\n')
-
-test.must_match('relocate/src/subdir2/file1.out4', 'Hello from file1.in\n')
-test.must_match('relocate/src/subdir2/file2.out4', 'Hello from file2.in\n')
-test.must_match('relocate/src/subdir2/file1.copy', 'Hello from file1.in\n')
-
-test.must_match('relocate/src/external/file1.external_rules.out',
- 'Hello from file1.in\n')
-test.must_match('relocate/src/external/file2.external_rules.out',
- 'Hello from file2.in\n')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies that RULE_INPUT_ROOT isn't turned into a path in rule actions
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('input-root.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('input-root.gyp', target='test', chdir='relocate/src')
-
-expect = """\
-Hello somefile
-"""
-
-test.run_built_executable('test', chdir='relocate/src', stdout=expect)
-test.pass_test()
+++ /dev/null
-#!/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.
-
-""" Verifies that VS variables that require special variables are expanded
-correctly. """
-
-import sys
-import TestGyp
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp()
-
- test.run_gyp('special-variables.gyp', chdir='src')
- test.build('special-variables.gyp', test.ALL, chdir='src')
- test.pass_test()
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'pull_in_all_actions',
- 'type': 'none',
- 'dependencies': [
- 'subdir1/executable.gyp:*',
- 'subdir2/both_rule_and_action_input.gyp:*',
- 'subdir2/never_used.gyp:*',
- 'subdir2/no_inputs.gyp:*',
- 'subdir2/no_action.gyp:*',
- 'subdir2/none.gyp:*',
- 'subdir3/executable2.gyp:*',
- 'subdir4/build-asm.gyp:*',
- 'external/external.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-// 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.
-
-// Fake asm file.
-int main() {}
+++ /dev/null
-@echo off
-:: Copyright (c) 2011 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.
-
-:: Fake assembler for Windows
-cl /TP /c %1 /Fo%2
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-import sys
-
-contents = open(sys.argv[1], 'r').read()
-open(sys.argv[2], 'wb').write(contents)
-
-sys.exit(0)
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# Test that the case where there are no inputs (other than the
-# file the rule applies to).
-{
- 'target_defaults': {
- 'msvs_cygwin_dirs': ['../../../../../../<(DEPTH)/third_party/cygwin'],
- },
- 'targets': [
- {
- 'target_name': 'external_rules',
- 'type': 'none',
- 'sources': [
- 'file1.in',
- 'file2.in',
- ],
- 'conditions': [
- ['OS=="win"', {
- 'dependencies': [
- 'cygwin',
- ],
- }],
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file',
- 'extension': 'in',
- 'msvs_external_rule': 1,
- 'outputs': [
- '<(RULE_INPUT_ROOT).external_rules.out',
- ],
- 'action': [
- 'python', '../copy-file.py', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- },
- ],
- },
- ],
- 'conditions': [
- ['OS=="win"', {
- 'targets': [
- {
- 'target_name': 'cygwin',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'setup_mount',
- 'msvs_cygwin_shell': 0,
- 'inputs': [
- '../../../../../../<(DEPTH)/third_party/cygwin/setup_mount.bat',
- ],
- # Visual Studio requires an output file, or else the
- # custom build step won't run.
- 'outputs': [
- '<(INTERMEDIATE_DIR)/_always_run_setup_mount.marker',
- ],
- 'action': ['<@(_inputs)'],
- },
- ],
- },
- ],
- }],
- ],
-}
+++ /dev/null
-Hello from file1.in
+++ /dev/null
-Hello from file2.in
+++ /dev/null
-# Copyright (c) 2011 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test',
- 'type': 'executable',
- 'sources': [ 'somefile.ext', ],
- 'rules': [{
- 'rule_name': 'rule',
- 'extension': 'ext',
- 'inputs': [ 'rule.py', ],
- 'outputs': [ '<(RULE_INPUT_ROOT).cc', ],
- 'action': [ 'python', 'rule.py', '<(RULE_INPUT_ROOT)', ],
- 'message': 'Processing <(RULE_INPUT_PATH)',
- 'process_outputs_as_sources': 1,
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- }],
- },
- ],
-}
+++ /dev/null
-Hello from file1.in
+++ /dev/null
-# 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.
-
-# Test the case where there's no action but there are input rules that should
-# be processed results in a gyp failure.
-{
- 'targets': [
- {
- 'target_name': 'extension_does_match_sources_but_no_action',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'file1.in',
- ],
- 'rules': [
- {
- 'rule_name': 'assembled',
- 'extension': 'in',
- 'outputs': [
- '<(RULE_INPUT_ROOT).in',
- ],
- 'conditions': [
- # Always fails.
- [ '"true"=="false"', {
- 'action': [
- 'python', '../copy-file.py', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- 'message': 'test_rule',
- }],
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-# Copyright (c) 2011 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.
-
-import sys
-
-f = open(sys.argv[1] + ".cc", "w")
-f.write("""\
-#include <stdio.h>
-
-int main() {
- puts("Hello %s");
- return 0;
-}
-""" % sys.argv[1])
-f.close()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'rules': [
- {
- 'rule_name': 'assembler (gnu-compatible)',
- 'msvs_cygwin_shell': 0,
- 'msvs_quote_cmd': 0,
- 'extension': 'S',
- 'inputs': [
- 'as.bat',
- ],
- 'outputs': [
- '$(IntDir)/$(InputName).obj',
- ],
- 'action': [
- 'as.bat',
- '$(InputPath)',
- '$(IntDir)/$(InputName).obj',
- ],
- 'message': 'Building assembly language file $(InputPath)',
- 'process_outputs_as_sources': 1,
- },
- ],
- 'target_name': 'test',
- 'type': 'static_library',
- 'sources': [ 'an_asm.S' ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'program.c',
- 'function1.in',
- 'function2.in',
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file',
- 'extension': 'in',
- 'inputs': [
- '../copy-file.py',
- ],
- 'outputs': [
- # TODO: fix Make to support generated files not
- # in a variable-named path like <(INTERMEDIATE_DIR)
- #'<(RULE_INPUT_ROOT).c',
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).c',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-void function1(void)
-{
- printf("Hello from function1.in\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-void function2(void)
-{
- printf("Hello from function2.in\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void function1(void);
-extern void function2(void);
-
-int main(void)
-{
- printf("Hello from program.c\n");
- function1();
- function2();
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-# Tests that if a rule input is also an action input, both the rule and action
-# are executed
-{
- 'targets': [
- {
- 'target_name': 'files_both_rule_and_action_input',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'program.c',
- 'file1.in',
- 'file2.in',
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file',
- 'extension': 'in',
- 'inputs': [
- '../copy-file.py',
- ],
- 'outputs': [
- '<(RULE_INPUT_ROOT).out4',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- },
- ],
- 'actions': [
- {
- 'action_name': 'copy_file1_in',
- 'inputs': [
- '../copy-file.py',
- 'file1.in',
- ],
- 'outputs': [
- 'file1.copy',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(_outputs)'
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-Hello from file1.in
+++ /dev/null
-Hello from file2.in
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# Test that the case where there is a rule that doesn't apply to anything.
-{
- 'targets': [
- {
- 'target_name': 'files_no_input2',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'file1.in',
- 'file2.in',
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file3',
- 'extension': 'in2',
- 'outputs': [
- '<(RULE_INPUT_ROOT).out3',
- ],
- 'action': [
- 'python', '../copy-file.py', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-# Test that the case where an action is only specified under a conditional is
-# evaluated appropriately.
-{
- 'targets': [
- {
- 'target_name': 'extension_does_not_match_sources_and_no_action',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'file1.in',
- 'file2.in',
- ],
- 'rules': [
- {
- 'rule_name': 'assemble',
- 'extension': 'asm',
- 'outputs': [
- '<(RULE_INPUT_ROOT).fail',
- ],
- 'conditions': [
- # Always fails.
- [ '"true"=="false"', {
- 'action': [
- 'python', '../copy-file.py', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- 'message': 'test_rule',
- }],
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# Test that the case where there are no inputs (other than the
-# file the rule applies to).
-{
- 'targets': [
- {
- 'target_name': 'files_no_input',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'file1.in',
- 'file2.in',
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file2',
- 'extension': 'in',
- 'outputs': [
- '<(RULE_INPUT_ROOT).out2',
- ],
- 'action': [
- 'python', '../copy-file.py', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'files',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'file1.in',
- 'file2.in',
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file',
- 'extension': 'in',
- 'inputs': [
- '../copy-file.py',
- ],
- 'outputs': [
- '<(RULE_INPUT_ROOT).out',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2014 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.
- */
-
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from program.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# This one tests that rules are properly written if extensions are different
-# between the target's sources (program.c) and the generated files
-# (function3.cc)
-
-{
- 'targets': [
- {
- 'target_name': 'program2',
- 'type': 'executable',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'program.c',
- 'function3.in',
- ],
- 'rules': [
- {
- 'rule_name': 'copy_file',
- 'extension': 'in',
- 'inputs': [
- '../copy-file.py',
- ],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).cc',
- ],
- 'action': [
- 'python', '<(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-extern "C" void function3(void)
-{
- printf("Hello from function3.in\n");
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void function3(void);
-
-int main(void)
-{
- printf("Hello from program.c\n");
- function3();
- return 0;
-}
+++ /dev/null
-#if PLATFORM_WINDOWS || PLATFORM_MAC
-# define IDENTIFIER(n) _##n
-#else /* Linux */
-# define IDENTIFIER(n) n
-#endif
-
-.globl IDENTIFIER(asm_function)
-IDENTIFIER(asm_function):
- movl $41, %eax
- ret
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# This one tests that assembly files ended as .s and .S are compiled.
-
-{
- 'target_defaults': {
- 'conditions': [
- ['OS=="win"', {
- 'defines': ['PLATFORM_WIN'],
- }],
- ['OS=="mac"', {
- 'defines': ['PLATFORM_MAC'],
- }],
- ['OS=="linux"', {
- 'defines': ['PLATFORM_LINUX'],
- }],
- ],
- },
- 'targets': [
- {
- 'target_name': 'program4',
- 'type': 'executable',
- 'sources': [
- 'asm-function.assem',
- 'program.c',
- ],
- 'conditions': [
- ['OS=="linux" or OS=="mac"', {
- 'rules': [
- {
- 'rule_name': 'convert_assem',
- 'extension': 'assem',
- 'inputs': [],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).S',
- ],
- 'action': [
- 'bash', '-c', 'cp <(RULE_INPUT_PATH) <@(_outputs)',
- ],
- 'process_outputs_as_sources': 1,
- },
- ],
- }],
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-// Use the assembly function in linux and mac where it is built.
-#if PLATFORM_LINUX || PLATFORM_MAC
-extern int asm_function(void);
-#else
-int asm_function() {
- return 41;
-}
-#endif
-
-int main(void)
-{
- fprintf(stdout, "Hello from program.c\n");
- fflush(stdout);
- fprintf(stdout, "Got %d.\n", asm_function());
- fflush(stdout);
- return 0;
-}
+++ /dev/null
-#!/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.
-
-"""
-Build a .gyp that depends on 2 gyp files with the same name.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('all.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('all.gyp', test.ALL, chdir='relocate/src')
-
-expect1 = """\
-Hello from main1.cc
-"""
-
-expect2 = """\
-Hello from main2.cc
-"""
-
-if test.format == 'xcode':
- chdir1 = 'relocate/src/subdir1'
- chdir2 = 'relocate/src/subdir2'
-else:
- chdir1 = chdir2 = 'relocate/src'
-
-test.run_built_executable('program1', chdir=chdir1, stdout=expect1)
-test.run_built_executable('program2', chdir=chdir2, stdout=expect2)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Build a .gyp that depends on 2 gyp files with the same name.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('all.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('all.gyp', chdir='relocate/src')
-
-expect1 = """\
-Hello from main1.cc
-"""
-
-expect2 = """\
-Hello from main2.cc
-"""
-
-if test.format == 'xcode':
- chdir1 = 'relocate/src/subdir1'
- chdir2 = 'relocate/src/subdir2'
-else:
- chdir1 = chdir2 = 'relocate/src'
-
-test.run_built_executable('program1', chdir=chdir1, stdout=expect1)
-test.run_built_executable('program2', chdir=chdir2, stdout=expect2)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a dependency on two gyp files with the same name do not create a
-uid collision in the resulting generated xcode file.
-"""
-
-import TestGyp
-
-import sys
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('test.gyp', chdir='library')
-
-test.pass_test()
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'one',
- 'type': 'static_library',
- },
- ],
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'duplicate_names',
- 'type': 'shared_library',
- 'dependencies': [
- 'one/sub.gyp:one',
- 'two/sub.gyp:two',
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-{
- 'targets': [
- {
- 'target_name': 'two',
- 'type': 'static_library',
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'all_exes',
- 'type': 'none',
- 'dependencies': [
- 'subdir1/executable.gyp:*',
- 'subdir2/executable.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program1',
- 'type': 'executable',
- 'sources': [
- 'main1.cc',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main() {
- printf("Hello from main1.cc\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program2',
- 'type': 'executable',
- 'sources': [
- 'main2.cc',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main() {
- printf("Hello from main2.cc\n");
- return 0;
-}
+++ /dev/null
-#!/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.
-
-"""
-Tests the use of rules with the same output file name.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('subdirs.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('subdirs.gyp', test.ALL, chdir='relocate/src')
-test.must_exist('relocate/src/subdir1/rule.txt')
-test.must_exist('relocate/src/subdir2/rule.txt')
-
-test.pass_test()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'target1',
- 'type': 'none',
- 'sources': [
- '../touch.py'
- ],
- 'rules': [
- {
- 'rule_name': 'rule1',
- 'extension': 'py',
- 'inputs': [],
- 'outputs': [
- 'rule.txt',
- ],
- 'action': [
- 'python', '../touch.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'target2',
- 'type': 'none',
- 'sources': [
- '../touch.py'
- ],
- 'rules': [
- {
- 'rule_name': 'rule2',
- 'extension': 'py',
- 'inputs': [],
- 'outputs': [
- 'rule.txt',
- ],
- 'action': [
- 'python', '../touch.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'subdirs',
- 'type': 'none',
- 'dependencies': [
- 'subdir1/subdir1.gyp:*',
- 'subdir2/subdir2.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-import sys
-
-f = open(sys.argv[1], 'w+')
-f.write('Hello from touch.py\n')
-f.close()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Build a .gyp with two targets that share a common .c source file.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('all.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('all.gyp', test.ALL, chdir='relocate/src')
-
-expect1 = """\
-Hello from prog1.c
-Hello prog1 from func.c
-"""
-
-expect2 = """\
-Hello from prog2.c
-Hello prog2 from func.c
-"""
-
-test.run_built_executable('prog1', chdir='relocate/src', stdout=expect1)
-test.run_built_executable('prog2', chdir='relocate/src', stdout=expect2)
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Build a .gyp with two targets that share a common .c source file.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('all.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('all.gyp', chdir='relocate/src')
-
-expect1 = """\
-Hello from prog1.c
-Hello prog1 from func.c
-"""
-
-expect2 = """\
-Hello from prog2.c
-Hello prog2 from func.c
-"""
-
-test.run_built_executable('prog1', chdir='relocate/src', stdout=expect1)
-test.run_built_executable('prog2', chdir='relocate/src', stdout=expect2)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Checks that gyp does not fail on executable targets which have several files
-with the same basename.
-"""
-
-import TestGyp
-
-# While MSVS supports building executables that contain several files with the
-# same name, the msvs gyp generator does not.
-test = TestGyp.TestGyp(formats=['!msvs'])
-
-test.run_gyp('double-executable.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('double-executable.gyp', test.ALL, chdir='relocate/src')
-
-expect = """\
-Hello from prog3.c
-Hello prog3 from func.c
-Hello prog3 from subdir1/func.c
-Hello prog3 from subdir2/func.c
-"""
-
-test.run_built_executable('prog3', chdir='relocate/src', stdout=expect)
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Checks that gyp succeeds on shared_library targets which have several files with
-the same basename.
-"""
-
-import os
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if ((test.format == 'msvs') and
- (int(os.environ.get('GYP_MSVS_VERSION', 2010)) < 2010)):
- test.run_gyp('double-shared.gyp',
- chdir='src', status=0, stderr=None)
-else:
- test.run_gyp('double-shared.gyp',
- chdir='src')
- test.build('double-shared.gyp', test.ALL, chdir='src')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Checks that gyp succeeds on static_library targets which have several files with
-the same basename.
-"""
-
-import os
-import sys
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-if ((test.format == 'make' and sys.platform == 'darwin') or
- (test.format == 'msvs' and
- int(os.environ.get('GYP_MSVS_VERSION', 2010)) < 2010)):
- test.run_gyp('double-static.gyp',
- chdir='src', status=1, stderr=None)
-else:
- test.run_gyp('double-static.gyp',
- chdir='src')
- test.build('double-static.gyp', test.ALL, chdir='src')
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'prog1',
- 'type': 'executable',
- 'defines': [
- 'PROG="prog1"',
- ],
- 'sources': [
- 'prog1.c',
- 'func.c',
- ],
- },
- {
- 'target_name': 'prog2',
- 'type': 'executable',
- 'defines': [
- 'PROG="prog2"',
- ],
- 'sources': [
- 'prog2.c',
- 'func.c',
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'prog3',
- 'type': 'executable',
- 'sources': [
- 'prog3.c',
- 'func.c',
- 'subdir1/func.c',
- 'subdir2/func.c',
- ],
- 'defines': [
- 'PROG="prog3"',
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib',
- 'product_name': 'test_shared_lib',
- 'type': 'shared_library',
- 'sources': [
- 'prog2.c',
- 'func.c',
- 'subdir1/func.c',
- 'subdir2/func.c',
- ],
- 'defines': [
- 'PROG="prog2"',
- ],
- 'conditions': [
- ['OS=="linux"', {
- 'cflags': ['-fPIC'],
- }],
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib',
- 'product_name': 'test_static_lib',
- 'type': 'static_library',
- 'sources': [
- 'prog1.c',
- 'func.c',
- 'subdir1/func.c',
- 'subdir2/func.c',
- ],
- 'defines': [
- 'PROG="prog1"',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-void func(void)
-{
- printf("Hello %s from func.c\n", PROG);
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void func(void);
-
-int main(void)
-{
- printf("Hello from prog1.c\n");
- func();
- /*
- * Uncomment to test same-named files in different directories,
- * which Visual Studio doesn't support.
- subdir1_func();
- subdir2_func();
- */
- return 0;
-}
+++ /dev/null
-#include <stdio.h>
-
-extern void func(void);
-
-int main(void)
-{
- printf("Hello from prog2.c\n");
- func();
- /*
- * Uncomment to test same-named files in different directories,
- * which Visual Studio doesn't support.
- subdir1_func();
- subdir2_func();
- */
- return 0;
-}
+++ /dev/null
-// 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.
-
-#include <stdio.h>
-
-extern void func(void);
-extern void subdir1_func(void);
-extern void subdir2_func(void);
-
-int main(void)
-{
- printf("Hello from prog3.c\n");
- func();
- subdir1_func();
- subdir2_func();
- return 0;
-}
+++ /dev/null
-#include <stdio.h>
-
-void subdir1_func(void)
-{
- printf("Hello %s from subdir1/func.c\n", PROG);
-}
+++ /dev/null
-#include <stdio.h>
-
-void subdir2_func(void)
-{
- printf("Hello %s from subdir2/func.c\n", PROG);
-}
+++ /dev/null
-#!/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.
-
-"""
-Test cases when multiple targets in different directories have the same name.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(formats=['android', 'ninja', 'make'])
-
-# xcode-ninja fails to generate a project due to id collisions
-# cf. https://code.google.com/p/gyp/issues/detail?id=461
-if test.format == 'xcode-ninja':
- test.skip_test()
-
-test.run_gyp('subdirs.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-# Test that we build all targets.
-test.build('subdirs.gyp', 'target', chdir='relocate/src')
-test.must_exist('relocate/src/subdir1/action1.txt')
-test.must_exist('relocate/src/subdir2/action2.txt')
-
-# Test that we build all targets using the correct actions, even if they have
-# the same names.
-test.build('subdirs.gyp', 'target_same_action_name', chdir='relocate/src')
-test.must_exist('relocate/src/subdir1/action.txt')
-test.must_exist('relocate/src/subdir2/action.txt')
-
-# Test that we build all targets using the correct rules, even if they have
-# the same names.
-test.build('subdirs.gyp', 'target_same_rule_name', chdir='relocate/src')
-test.must_exist('relocate/src/subdir1/rule.txt')
-test.must_exist('relocate/src/subdir2/rule.txt')
-
-test.pass_test()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'target',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'action1',
- 'inputs': [],
- 'outputs': [
- 'action1.txt',
- ],
- 'action': [
- 'python', '../touch.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'target_same_action_name',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'action',
- 'inputs': [],
- 'outputs': [
- 'action.txt',
- ],
- 'action': [
- 'python', '../touch.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'target_same_rule_name',
- 'type': 'none',
- 'sources': [
- '../touch.py'
- ],
- 'rules': [
- {
- 'rule_name': 'rule',
- 'extension': 'py',
- 'inputs': [],
- 'outputs': [
- 'rule.txt',
- ],
- 'action': [
- 'python', '../touch.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'target',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'action2',
- 'inputs': [],
- 'outputs': [
- 'action2.txt',
- ],
- 'action': [
- 'python', '../touch.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'target_same_action_name',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'action',
- 'inputs': [],
- 'outputs': [
- 'action.txt',
- ],
- 'action': [
- 'python', '../touch.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- {
- 'target_name': 'target_same_rule_name',
- 'type': 'none',
- 'sources': [
- '../touch.py'
- ],
- 'rules': [
- {
- 'rule_name': 'rule',
- 'extension': 'py',
- 'inputs': [],
- 'outputs': [
- 'rule.txt',
- ],
- 'action': [
- 'python', '../touch.py', '<(_outputs)',
- ],
- # Allows the test to run without hermetic cygwin on windows.
- 'msvs_cygwin_shell': 0,
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'subdirs',
- 'type': 'none',
- 'dependencies': [
- 'subdir1/subdir1.gyp:*',
- 'subdir2/subdir2.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-import sys
-
-f = open(sys.argv[1], 'w+')
-f.write('Hello from touch.py\n')
-f.close()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2010 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.
-
-"""
-Check that duplicate targets in a directory gives an error.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-# Require that gyp files with duplicate targets spit out an error.
-test.run_gyp('all.gyp', chdir='src', status=1, stderr=None)
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'all_exes',
- 'type': 'none',
- 'dependencies': [
- 'executable1.gyp:*',
- 'executable2.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [
- 'main1.cc',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [
- 'main2.cc',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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 rule names with non-"normal" characters in them don't cause
-broken build files. This test was originally causing broken .ninja files.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-test.run_gyp('sanitize-rule-names.gyp')
-test.build('sanitize-rule-names.gyp', test.ALL)
-test.pass_test()
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 's_test',
- 'type': 'executable',
- 'rules': [
- {
- # Make sure this rule name doesn't cause an invalid ninja file.
- 'rule_name': 'rule name with odd characters ()/',
- 'extension': 'S',
- 'outputs': ['outfile'],
- 'msvs_cygwin_shell': 0,
- 'msvs_quote_cmd': 0,
- 'action': ['python', 'script.py', '<(RULE_INPUT_PATH)', 'outfile'],
- },
- ],
- 'sources': [
- 'blah.S',
- 'hello.cc',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-import shutil
-import sys
-
-shutil.copyfile(*sys.argv[1:])
+++ /dev/null
-# Copyright (c) 2013 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.
-
-# A common file that other .gyp files include.
-# Makes every target in the project depend on dep.gyp:dep.
-{
- 'target_defaults': {
- 'dependencies': [
- 'dep.gyp:dep',
- ],
- },
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-# dep.gyp contains a target dep, on which all the targets in the project
-# depend. This means there's a self-dependency of dep on itself, which is
-# pruned by setting prune_self_dependency to 1.
-
-{
- 'includes': [
- 'common.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'dep',
- 'type': 'none',
- 'variables': {
- # Without this GYP will report a cycle in dependency graph.
- 'prune_self_dependency': 1,
- },
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Verify that pulling in a dependency a second time in a conditional works for
-shared_library targets. Regression test for http://crbug.com/122588
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('self_dependency.gyp')
-
-# If running gyp worked, all is well.
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'includes': [
- 'common.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'a',
- 'type': 'none',
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-# The xcode-ninja generator handles gypfiles which are not at the
-# project root incorrectly.
-# cf. https://code.google.com/p/gyp/issues/detail?id=460
-if test.format == 'xcode-ninja':
- test.skip_test()
-
-test.run_gyp('build/all.gyp', chdir='src')
-
-test.build('build/all.gyp', test.ALL, chdir='src')
-
-chdir = 'src/build'
-
-# The top-level Makefile is in the directory where gyp was run.
-# TODO(mmoss) Should the Makefile go in the directory of the passed in .gyp
-# file? What about when passing in multiple .gyp files? Would sub-project
-# Makefiles (see http://codereview.chromium.org/340008 comments) solve this?
-if test.format in ('make', 'ninja', 'cmake'):
- chdir = 'src'
-
-if test.format == 'xcode':
- chdir = 'src/prog1'
-test.run_built_executable('program1',
- chdir=chdir,
- stdout="Hello from prog1.c\n")
-
-if test.format == 'xcode':
- chdir = 'src/prog2'
-test.run_built_executable('program2',
- chdir=chdir,
- stdout="Hello from prog2.c\n")
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-# The xcode-ninja generator handles gypfiles which are not at the
-# project root incorrectly.
-# cf. https://code.google.com/p/gyp/issues/detail?id=460
-if test.format == 'xcode-ninja':
- test.skip_test()
-
-test.run_gyp('build/all.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('build/all.gyp', test.ALL, chdir='relocate/src')
-
-chdir = 'relocate/src/build'
-
-# The top-level Makefile is in the directory where gyp was run.
-# TODO(mmoss) Should the Makefile go in the directory of the passed in .gyp
-# file? What about when passing in multiple .gyp files? Would sub-project
-# Makefiles (see http://codereview.chromium.org/340008 comments) solve this?
-if test.format in ('make', 'ninja', 'cmake'):
- chdir = 'relocate/src'
-
-if test.format == 'xcode':
- chdir = 'relocate/src/prog1'
-test.run_built_executable('program1',
- chdir=chdir,
- stdout="Hello from prog1.c\n")
-
-if test.format == 'xcode':
- chdir = 'relocate/src/prog2'
-test.run_built_executable('program2',
- chdir=chdir,
- stdout="Hello from prog2.c\n")
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'All',
- 'type': 'none',
- 'dependencies': [
- '../prog1/prog1.gyp:*',
- '../prog2/prog2.gyp:*',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from prog1.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program1',
- 'type': 'executable',
- 'sources': [
- 'prog1.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from prog2.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'program2',
- 'type': 'executable',
- 'sources': [
- 'prog2.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Runs small tests.
-"""
-
-import imp
-import os
-import sys
-import unittest
-
-import TestGyp
-
-
-test = TestGyp.TestGyp()
-
-# Add pylib to the import path (so tests can import their dependencies).
-# This is consistant with the path.append done in the top file "gyp".
-sys.path.append(os.path.join(test._cwd, 'pylib'))
-
-# Add new test suites here.
-files_to_test = [
- 'pylib/gyp/MSVSSettings_test.py',
- 'pylib/gyp/easy_xml_test.py',
- 'pylib/gyp/generator/msvs_test.py',
- 'pylib/gyp/generator/ninja_test.py',
- 'pylib/gyp/generator/xcode_test.py',
- 'pylib/gyp/common_test.py',
- 'pylib/gyp/input_test.py',
-]
-
-# Collect all the suites from the above files.
-suites = []
-for filename in files_to_test:
- # Carve the module name out of the path.
- name = os.path.splitext(os.path.split(filename)[1])[0]
- # Find the complete module path.
- full_filename = os.path.join(test._cwd, filename)
- # Load the module.
- module = imp.load_source(name, full_filename)
- # Add it to the list of test suites.
- suites.append(unittest.defaultTestLoader.loadTestsFromModule(module))
-# Create combined suite.
-all_tests = unittest.TestSuite(suites)
-
-# Run all the tests.
-result = unittest.TextTestRunner(verbosity=2).run(all_tests)
-if result.failures or result.errors:
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies build of a static_library with the standalone_static_library flag set.
-"""
-
-import os
-import subprocess
-import sys
-import TestGyp
-
-# standalone_static_library currently means two things: a specific output
-# location for the built target and non-thin archive files. The Android gyp
-# generator leaves both decisions to the Android build system, so this test
-# doesn't work for that format.
-test = TestGyp.TestGyp(formats=['!android'])
-
-# Verify that types other than static_library cause a failure.
-test.run_gyp('invalid.gyp', status=1, stderr=None)
-target_str = 'invalid.gyp:bad#target'
-err = ['gyp: Target %s has type executable but standalone_static_library flag '
- 'is only valid for static_library type.' % target_str]
-test.must_contain_all_lines(test.stderr(), err)
-
-# Build a valid standalone_static_library.
-test.run_gyp('mylib.gyp')
-test.build('mylib.gyp', target='prog')
-
-# Verify that the static library is copied to the correct location.
-# We expect the library to be copied to $PRODUCT_DIR.
-standalone_static_library_dir = test.EXECUTABLE
-path_to_lib = os.path.split(
- test.built_file_path('mylib', type=standalone_static_library_dir))[0]
-lib_name = test.built_file_basename('mylib', type=test.STATIC_LIB)
-path = os.path.join(path_to_lib, lib_name)
-test.must_exist(path)
-
-# Verify that the program runs properly.
-expect = 'hello from mylib.c\n'
-test.run_built_executable('prog', stdout=expect)
-
-# Verify that libmylib.a contains symbols. "ar -x" fails on a 'thin' archive.
-supports_thick = ('make', 'ninja', 'cmake')
-if test.format in supports_thick and sys.platform.startswith('linux'):
- retcode = subprocess.call(['ar', '-x', path])
- assert retcode == 0
-
-test.pass_test()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'bad',
- 'type': 'executable',
- 'standalone_static_library': 1,
- 'sources': [
- 'prog.c',
- ],
- },
- ],
-}
\ No newline at end of file
+++ /dev/null
-#include <stdio.h>
-
-void print(void)
-{
- printf("hello from mylib.c\n");
- return;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'mylib',
- 'type': 'static_library',
- 'standalone_static_library': 1,
- 'sources': [
- 'mylib.c',
- ],
- },
- {
- 'target_name': 'prog',
- 'type': 'executable',
- 'sources': [
- 'prog.c',
- ],
- 'dependencies': [
- 'mylib',
- ],
- },
- ],
-}
+++ /dev/null
-extern void print(void);
-
-int main(void)
-{
- print();
- return 0;
-}
+++ /dev/null
-#!/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.
-
-"""
-Verifies that a project hierarchy created with the --generator-output=
-option can be built even when it's relocated to a different path.
-"""
-
-import TestGyp
-import os
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('standalone.gyp', '-Gstandalone')
-
-# Look at all the files in the tree to make sure none
-# of them reference the gyp file.
-for root, dirs, files in os.walk("."):
- for file in files:
- # ignore ourself
- if os.path.splitext(__file__)[0] in file:
- continue
- file = os.path.join(root, file)
- contents = open(file).read()
- if 'standalone.gyp' in contents:
- print 'gyp file referenced in generated output: %s' % file
- test.fail_test()
-
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name' : 'foo',
- 'type' : 'executable'
- },
- ]
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies building a target and a subsidiary dependent target from a
-.gyp file in a subdirectory, without specifying an explicit output build
-directory, and using the generated solution or project file at the top
-of the tree as the entry point.
-
-The configuration sets the Xcode SYMROOT variable and uses --depth=
-to make Xcode behave like the other build tools--that is, put all
-built targets in a single output build directory at the top of the tree.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('prog1.gyp', '-Dset_symroot=1', '--depth=.', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-# Suppress the test infrastructure's setting SYMROOT on the command line.
-test.build('prog1.gyp', test.ALL, SYMROOT=None, chdir='relocate/src')
-
-test.run_built_executable('prog1',
- stdout="Hello from prog1.c\n",
- chdir='relocate/src')
-test.run_built_executable('prog2',
- stdout="Hello from prog2.c\n",
- chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies building a target and a subsidiary dependent target from a
-.gyp file in a subdirectory, without specifying an explicit output build
-directory, and using the generated solution or project file at the top
-of the tree as the entry point.
-
-The configuration sets the Xcode SYMROOT variable and uses --depth=
-to make Xcode behave like the other build tools--that is, put all
-built targets in a single output build directory at the top of the tree.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('prog1.gyp', '-Dset_symroot=1', '--depth=.', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-# Suppress the test infrastructure's setting SYMROOT on the command line.
-test.build('prog1.gyp', SYMROOT=None, chdir='relocate/src')
-
-test.run_built_executable('prog1',
- stdout="Hello from prog1.c\n",
- chdir='relocate/src')
-
-test.run_built_executable('prog2',
- stdout="Hello from prog2.c\n",
- chdir='relocate/src')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies building a subsidiary dependent target from a .gyp file in a
-subdirectory, without specifying an explicit output build directory,
-and using the subdirectory's solution or project file as the entry point.
-"""
-
-import TestGyp
-
-# Android doesn't support running from subdirectories.
-# Ninja doesn't support relocation.
-# CMake produces a single CMakeLists.txt in the output directory.
-test = TestGyp.TestGyp(formats=['!ninja', '!android', '!cmake'])
-
-test.run_gyp('prog1.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-chdir = 'relocate/src/subdir'
-target = test.ALL
-
-test.build('prog2.gyp', target, chdir=chdir)
-
-test.built_file_must_not_exist('prog1', type=test.EXECUTABLE, chdir=chdir)
-
-test.run_built_executable('prog2',
- chdir=chdir,
- stdout="Hello from prog2.c\n")
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies building a subsidiary dependent target from a .gyp file in a
-subdirectory, without specifying an explicit output build directory,
-and using the subdirectory's solution or project file as the entry point.
-"""
-
-import TestGyp
-import errno
-
-# Android doesn't support running from subdirectories.
-# Ninja doesn't support relocation.
-# CMake produces a single CMakeLists.txt in the output directory.
-test = TestGyp.TestGyp(formats=['!ninja', '!android', '!cmake'])
-
-test.run_gyp('prog1.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-chdir = 'relocate/src/subdir'
-
-test.build('prog2.gyp', chdir=chdir)
-
-test.built_file_must_not_exist('prog1', type=test.EXECUTABLE, chdir=chdir)
-
-test.run_built_executable('prog2',
- chdir=chdir,
- stdout="Hello from prog2.c\n")
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies building a project rooted several layers under src_dir works.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('prog3.gyp', chdir='src/subdir/subdir2')
-
-test.relocate('src', 'relocate/src')
-
-test.build('prog3.gyp', test.ALL, chdir='relocate/src/subdir/subdir2')
-
-test.run_built_executable('prog3',
- chdir='relocate/src/subdir/subdir2',
- stdout="Hello from prog3.c\n")
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies building a target and a subsidiary dependent target from a
-.gyp file in a subdirectory, without specifying an explicit output build
-directory, and using the generated solution or project file at the top
-of the tree as the entry point.
-
-There is a difference here in the default behavior of the underlying
-build tools. Specifically, when building the entire "solution", Xcode
-puts the output of each project relative to the .xcodeproj directory,
-while Visual Studio (and our implementation of Make) put it
-in a build directory relative to the "solution"--that is, the entry-point
-from which you built the entire tree.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('prog1.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('prog1.gyp', test.ALL, chdir='relocate/src')
-
-test.run_built_executable('prog1',
- stdout="Hello from prog1.c\n",
- chdir='relocate/src')
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('prog2',
- chdir=chdir,
- stdout="Hello from prog2.c\n")
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies building a target and a subsidiary dependent target from a
-.gyp file in a subdirectory, without specifying an explicit output build
-directory, and using the generated solution or project file at the top
-of the tree as the entry point.
-
-There is a difference here in the default behavior of the underlying
-build tools. Specifically, when building the entire "solution", Xcode
-puts the output of each project relative to the .xcodeproj directory,
-while Visual Studio (and our implementation of Make) put it
-in a build directory relative to the "solution"--that is, the entry-point
-from which you built the entire tree.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('prog1.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('prog1.gyp', chdir='relocate/src')
-
-test.run_built_executable('prog1',
- stdout="Hello from prog1.c\n",
- chdir='relocate/src')
-
-if test.format == 'xcode':
- chdir = 'relocate/src/subdir'
-else:
- chdir = 'relocate/src'
-test.run_built_executable('prog2',
- chdir=chdir,
- stdout="Hello from prog2.c\n")
-
-test.pass_test()
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from prog1.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- 'symroot.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog1',
- 'type': 'executable',
- 'dependencies': [
- 'subdir/prog2.gyp:prog2',
- ],
- 'sources': [
- 'prog1.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from prog2.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../symroot.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog2',
- 'type': 'executable',
- 'sources': [
- 'prog2.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from prog3.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'includes': [
- '../../symroot.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'prog3',
- 'type': 'executable',
- 'sources': [
- 'prog3.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'variables': {
- 'set_symroot%': 0,
- },
- 'conditions': [
- ['set_symroot == 1', {
- 'xcode_settings': {
- 'SYMROOT': '<(DEPTH)/build',
- },
- }],
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies simplest-possible build of a "Hello, world!" program
-using non-default extension. In particular, verifies how
-target_extension is used to avoid MSB8012 for msvs.
-"""
-
-import sys
-import TestGyp
-
-if sys.platform in ('win32', 'cygwin'):
- test = TestGyp.TestGyp()
-
- test.run_gyp('target.gyp')
- test.build('target.gyp')
-
- # executables
- test.built_file_must_exist('hello1.stuff', test.EXECUTABLE, bare=True)
- test.built_file_must_exist('hello2.exe', test.EXECUTABLE, bare=True)
- test.built_file_must_not_exist('hello2.stuff', test.EXECUTABLE, bare=True)
-
- # check msvs log for errors
- if test.format == "msvs":
- log_file = "obj\\hello1\\hello1.log"
- test.built_file_must_exist(log_file)
- test.built_file_must_not_contain(log_file, "MSB8012")
-
- log_file = "obj\\hello2\\hello2.log"
- test.built_file_must_exist(log_file)
- test.built_file_must_not_contain(log_file, "MSB8012")
-
- test.pass_test()
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-void main(void) {
- printf("Hello, world!\n");
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello1',
- 'product_extension': 'stuff',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- },
- {
- 'target_name': 'hello2',
- 'target_extension': 'stuff',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- ],
- }
- ]
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies that toolsets are correctly applied
-"""
-import os
-import sys
-import TestGyp
-
-if sys.platform.startswith('linux'):
-
- test = TestGyp.TestGyp(formats=['make', 'ninja'])
-
- oldenv = os.environ.copy()
- try:
- os.environ['GYP_CROSSCOMPILE'] = '1'
- test.run_gyp('toolsets.gyp')
- finally:
- os.environ.clear()
- os.environ.update(oldenv)
-
- test.build('toolsets.gyp', test.ALL)
-
- test.run_built_executable('host-main', stdout="Host\nShared: Host\n")
- test.run_built_executable('target-main', stdout="Target\nShared: Target\n")
-
- test.pass_test()
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-#include <stdio.h>
-
-const char *GetToolset();
-const char *GetToolsetShared();
-
-int main(void) {
- printf("%s\n", GetToolset());
- printf("Shared: %s\n", GetToolsetShared());
-}
+++ /dev/null
-/* Copyright (c) 2009 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. */
-
-const char *GetToolset() {
-#ifdef TARGET
- return "Target";
-#else
- return "Host";
-#endif
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'target_defaults': {
- 'target_conditions': [
- ['_toolset=="target"', {'defines': ['TARGET']}]
- ]
- },
- 'targets': [
- {
- 'target_name': 'toolsets',
- 'type': 'static_library',
- 'toolsets': ['target', 'host'],
- 'sources': [
- 'toolsets.cc',
- ],
- },
- {
- 'target_name': 'host-main',
- 'type': 'executable',
- 'toolsets': ['host'],
- 'dependencies': ['toolsets', 'toolsets_shared'],
- 'sources': [
- 'main.cc',
- ],
- },
- {
- 'target_name': 'target-main',
- 'type': 'executable',
- 'dependencies': ['toolsets', 'toolsets_shared'],
- 'sources': [
- 'main.cc',
- ],
- },
- # This tests that build systems can handle a shared library being build for
- # both host and target.
- {
- 'target_name': 'janus',
- 'type': 'shared_library',
- 'toolsets': ['target', 'host'],
- 'sources': [
- 'toolsets.cc',
- ],
- 'cflags': [ '-fPIC' ],
- },
- {
- 'target_name': 'toolsets_shared',
- 'type': 'shared_library',
- 'toolsets': ['target', 'host'],
- 'target_conditions': [
- # Ensure target and host have different shared_library names
- ['_toolset=="host"', {'product_extension': 'host'}],
- ],
- 'sources': [
- 'toolsets_shared.cc',
- ],
- 'cflags': [ '-fPIC' ],
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2013 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. */
-
-const char *GetToolsetShared() {
-#ifdef TARGET
- return "Target";
-#else
- return "Host";
-#endif
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-
-"""
-Verifies building a subsidiary dependent target from a .gyp file in a
-subdirectory, without specifying an explicit output build directory,
-and using the subdirectory's solution or project file as the entry point.
-"""
-
-import TestGyp
-import errno
-
-test = TestGyp.TestGyp(formats=['ninja', 'make'])
-
-# We want our Makefile to be one dir up from main.gyp.
-test.run_gyp('main.gyp', '--toplevel-dir=..', chdir='src/sub1')
-
-toplevel_dir = 'src'
-
-test.build('sub1/main.gyp', test.ALL, chdir=toplevel_dir)
-
-test.built_file_must_exist('prog1', type=test.EXECUTABLE, chdir=toplevel_dir)
-
-test.run_built_executable('prog1',
- chdir=toplevel_dir,
- stdout="Hello from prog1.c\n")
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'prog1',
- 'type': 'executable',
- 'dependencies': [
- '<(DEPTH)/../sub2/prog2.gyp:prog2',
- ],
- 'sources': [
- 'prog1.c',
- ],
- },
- ],
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from prog1.c\n");
- return 0;
-}
+++ /dev/null
-#include <stdio.h>
-
-int main(void)
-{
- printf("Hello from prog2.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'targets': [
- {
- 'target_name': 'prog2',
- 'type': 'executable',
- 'sources': [
- 'prog2.c',
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# This is a simple test file to make sure that variable substitution
-# happens correctly. Run "run_tests.py" using python to generate the
-# output from this gyp file.
-
-{
- 'variables': {
- 'pi': 'import math; print math.pi',
- 'third_letters': "<(other_letters)HIJK",
- 'letters_list': 'ABCD',
- 'other_letters': '<(letters_list)EFG',
- 'check_included': '<(included_variable)',
- 'check_lists': [
- '<(included_variable)',
- '<(third_letters)',
- ],
- 'check_int': 5,
- 'check_str_int': '6',
- 'check_list_int': [
- 7,
- '8',
- 9,
- ],
- 'not_int_1': ' 10',
- 'not_int_2': '11 ',
- 'not_int_3': '012',
- 'not_int_4': '13.0',
- 'not_int_5': '+14',
- 'negative_int': '-15',
- 'zero_int': '0',
- },
- 'includes': [
- 'commands.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'none',
- 'variables': {
- 'var1': '<!(["python", "-c", "<(pi)"])',
- 'var2': '<!(python -c "print \'<!(python -c "<(pi)") <(letters_list)\'")',
- 'var3': '<!(python -c "print \'<(letters_list)\'")',
- 'var4': '<(<!(python -c "print \'letters_list\'"))',
- 'var5': 'letters_',
- 'var6': 'list',
- 'var7': '<(check_int)',
- 'var8': '<(check_int)blah',
- 'var9': '<(check_str_int)',
- 'var10': '<(check_list_int)',
- 'var11': ['<@(check_list_int)'],
- 'var12': '<(not_int_1)',
- 'var13': '<(not_int_2)',
- 'var14': '<(not_int_3)',
- 'var15': '<(not_int_4)',
- 'var16': '<(not_int_5)',
- 'var17': '<(negative_int)',
- 'var18': '<(zero_int)',
- # A second set with different names to make sure they only execute the
- # commands once.
- 'var1prime': '<!(["python", "-c", "<(pi)"])',
- 'var2prime': '<!(python -c "print \'<!(python -c "<(pi)") <(letters_list)\'")',
- 'var3prime': '<!(python -c "print \'<(letters_list)\'")',
- 'var4prime': '<(<!(python -c "print \'letters_list\'"))',
- },
- 'actions': [
- {
- 'action_name': 'test_action',
- 'variables': {
- 'var7': '<!(echo <(var5)<(var6))',
- },
- 'inputs' : [
- '<(var2)',
- ],
- 'outputs': [
- '<(var4)',
- '<(var7)',
- ],
- 'action': [
- 'echo',
- '<(_inputs)',
- '<(_outputs)',
- ],
- },
- # Again with the same vars to make sure the right things happened.
- {
- 'action_name': 'test_action_prime',
- 'variables': {
- 'var7': '<!(echo <(var5)<(var6))',
- },
- 'inputs' : [
- '<(var2)',
- ],
- 'outputs': [
- '<(var4)',
- '<(var7)',
- ],
- 'action': [
- 'echo',
- '<(_inputs)',
- '<(_outputs)',
- ],
- },
- # And one more time with the other vars...
- {
- 'action_name': 'test_action_prime_prime',
- 'variables': {
- 'var7': '<!(echo <(var5)<(var6))',
- },
- 'inputs' : [
- '<(var2prime)',
- ],
- 'outputs': [
- '<(var4prime)',
- '<(var7)',
- ],
- 'action': [
- 'echo',
- '<(_inputs)',
- '<(_outputs)',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'other_letters', 'is_array': '', 'replace': '<(other_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(letters_list)EFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFG', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'included_variable', 'is_array': '', 'replace': '<(included_variable)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'XYZ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'included_variable', 'is_array': '', 'replace': '<(included_variable)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'XYZ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'third_letters', 'is_array': '', 'replace': '<(third_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(other_letters)HIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'other_letters', 'is_array': '', 'replace': '<(other_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(letters_list)EFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'<!(python -c "<(pi', 'is_array': '', 'replace': '<!(python -c "print \'<!(python -c "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "<(pi', 'is_array': '', 'replace': '<!(python -c "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'pi', 'is_array': '', 'replace': '<(pi)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "import math; print math.pi"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "import math; print math.pi"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "print \'3.14159265359 ABCD\'"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print '3.14159265359 ABCD'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '"python", "-c", "<(pi', 'is_array': '[', 'replace': '<!(["python", "-c", "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'pi', 'is_array': '', 'replace': '<(pi)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '["python", "-c", "import math; print math.pi"]', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command '['python', '-c', 'import math; print math.pi']' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '<!(python -c "print \'letters_list\'"', 'is_array': '', 'replace': '<(<!(python -c "print \'letters_list\'")', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'letters_list\'"', 'is_array': '', 'replace': '<!(python -c "print \'letters_list\'")', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print 'letters_list'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_int', 'is_array': '', 'replace': '<(check_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '5', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '"python", "-c", "<(pi', 'is_array': '[', 'replace': '<!(["python", "-c", "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'pi', 'is_array': '', 'replace': '<(pi)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '["python", "-c", "import math; print math.pi"]', recursing.
-VARIABLES:input.py:889:ExpandVariables Had cache value for command '['python', '-c', 'import math; print math.pi']' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'<(letters_list', 'is_array': '', 'replace': '<!(python -c "print \'<(letters_list)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "print \'ABCD\'"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print 'ABCD'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'<!(python -c "<(pi', 'is_array': '', 'replace': '<!(python -c "print \'<!(python -c "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "<(pi', 'is_array': '', 'replace': '<!(python -c "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'pi', 'is_array': '', 'replace': '<(pi)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "import math; print math.pi"', recursing.
-VARIABLES:input.py:889:ExpandVariables Had cache value for command 'python -c "import math; print math.pi"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "print \'3.14159265359 ABCD\'"', recursing.
-VARIABLES:input.py:889:ExpandVariables Had cache value for command 'python -c "print '3.14159265359 ABCD'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_str_int', 'is_array': '', 'replace': '<(check_str_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '6', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_int', 'is_array': '', 'replace': '<(check_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '5blah', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '<!(python -c "print \'letters_list\'"', 'is_array': '', 'replace': '<(<!(python -c "print \'letters_list\'")', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'letters_list\'"', 'is_array': '', 'replace': '<!(python -c "print \'letters_list\'")', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:889:ExpandVariables Had cache value for command 'python -c "print 'letters_list'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'<(letters_list', 'is_array': '', 'replace': '<!(python -c "print \'<(letters_list)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "print \'ABCD\'"', recursing.
-VARIABLES:input.py:889:ExpandVariables Had cache value for command 'python -c "print 'ABCD'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_4', 'is_array': '', 'replace': '<(not_int_4)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '13.0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_3', 'is_array': '', 'replace': '<(not_int_3)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '012', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'negative_int', 'is_array': '', 'replace': '<(negative_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '-15', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_5', 'is_array': '', 'replace': '<(not_int_5)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '+14', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_list_int', 'is_array': '', 'replace': '<(check_list_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '7 8 9', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_2', 'is_array': '', 'replace': '<(not_int_2)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '11 ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_1', 'is_array': '', 'replace': '<(not_int_1)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output ' 10', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'zero_int', 'is_array': '', 'replace': '<(zero_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_list_int', 'is_array': '', 'replace': '<@(check_list_int)', 'type': '<@', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output [7, 8, 9], recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var6', 'is_array': '', 'replace': '<(var6)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'echo <(var5', 'is_array': '', 'replace': '<!(echo <(var5)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var5', 'is_array': '', 'replace': '<(var5)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'echo letters_list', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'echo letters_list' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_inputs', 'is_array': '', 'replace': '<(_inputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var2', 'is_array': '', 'replace': '<(var2)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output '"3.14159265359 ABCD"', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_outputs', 'is_array': '', 'replace': '<(_outputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var4', 'is_array': '', 'replace': '<(var4)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var7', 'is_array': '', 'replace': '<(var7)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD letters_list', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var6', 'is_array': '', 'replace': '<(var6)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'echo <(var5', 'is_array': '', 'replace': '<!(echo <(var5)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var5', 'is_array': '', 'replace': '<(var5)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'echo letters_list', recursing.
-VARIABLES:input.py:889:ExpandVariables Had cache value for command 'echo letters_list' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_inputs', 'is_array': '', 'replace': '<(_inputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var2', 'is_array': '', 'replace': '<(var2)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output '"3.14159265359 ABCD"', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_outputs', 'is_array': '', 'replace': '<(_outputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var4', 'is_array': '', 'replace': '<(var4)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var7', 'is_array': '', 'replace': '<(var7)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD letters_list', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var6', 'is_array': '', 'replace': '<(var6)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'echo <(var5', 'is_array': '', 'replace': '<!(echo <(var5)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var5', 'is_array': '', 'replace': '<(var5)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'echo letters_list', recursing.
-VARIABLES:input.py:889:ExpandVariables Had cache value for command 'echo letters_list' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_inputs', 'is_array': '', 'replace': '<(_inputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var2prime', 'is_array': '', 'replace': '<(var2prime)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output '"3.14159265359 ABCD"', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_outputs', 'is_array': '', 'replace': '<(_outputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var4prime', 'is_array': '', 'replace': '<(var4prime)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var7', 'is_array': '', 'replace': '<(var7)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD letters_list', recursing.
+++ /dev/null
-{'_DEPTH': '.',
- 'included_files': ['commands-repeated.gyp', 'commands.gypi'],
- 'targets': [{'actions': [{'action': ['echo',
- '"3.14159265359 ABCD"',
- 'ABCD letters_list'],
- 'action_name': 'test_action',
- 'inputs': ['3.14159265359 ABCD'],
- 'outputs': ['ABCD', 'letters_list'],
- 'variables': {'var7': 'letters_list'}},
- {'action': ['echo',
- '"3.14159265359 ABCD"',
- 'ABCD letters_list'],
- 'action_name': 'test_action_prime',
- 'inputs': ['3.14159265359 ABCD'],
- 'outputs': ['ABCD', 'letters_list'],
- 'variables': {'var7': 'letters_list'}},
- {'action': ['echo',
- '"3.14159265359 ABCD"',
- 'ABCD letters_list'],
- 'action_name': 'test_action_prime_prime',
- 'inputs': ['3.14159265359 ABCD'],
- 'outputs': ['ABCD', 'letters_list'],
- 'variables': {'var7': 'letters_list'}}],
- 'configurations': {'Default': {}},
- 'default_configuration': 'Default',
- 'target_name': 'foo',
- 'toolset': 'target',
- 'type': 'none',
- 'variables': {'var1': '3.14159265359',
- 'var10': '7 8 9',
- 'var11': ['7', '8', '9'],
- 'var12': ' 10',
- 'var13': '11 ',
- 'var14': '012',
- 'var15': '13.0',
- 'var16': '+14',
- 'var17': '-15',
- 'var18': '0',
- 'var1prime': '3.14159265359',
- 'var2': '3.14159265359 ABCD',
- 'var2prime': '3.14159265359 ABCD',
- 'var3': 'ABCD',
- 'var3prime': 'ABCD',
- 'var4': 'ABCD',
- 'var4prime': 'ABCD',
- 'var5': 'letters_',
- 'var6': 'list',
- 'var7': '5',
- 'var8': '5blah',
- 'var9': '6'}},
- {'configurations': {'Default': {}},
- 'default_configuration': 'Default',
- 'target_name': 'dummy',
- 'toolset': 'target',
- 'type': 'none'}],
- 'variables': {'check_included': 'XYZ',
- 'check_int': '5',
- 'check_list_int': ['7', '8', '9'],
- 'check_lists': ['XYZ', 'ABCDEFGHIJK'],
- 'check_str_int': '6',
- 'default_empty_files%': '',
- 'default_empty_str%': '',
- 'default_int%': '0',
- 'default_int_files%': '0',
- 'default_str%': 'my_str',
- 'included_variable': 'XYZ',
- 'letters_list': 'ABCD',
- 'negative_int': '-15',
- 'not_int_1': ' 10',
- 'not_int_2': '11 ',
- 'not_int_3': '012',
- 'not_int_4': '13.0',
- 'not_int_5': '+14',
- 'other_letters': 'ABCDEFG',
- 'pi': 'import math; print math.pi',
- 'third_letters': 'ABCDEFGHIJK',
- 'zero_int': '0'}}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# This is a simple test file to make sure that variable substitution
-# happens correctly. Run "run_tests.py" using python to generate the
-# output from this gyp file.
-
-{
- 'variables': {
- 'pi': 'import math; print math.pi',
- 'third_letters': "<(other_letters)HIJK",
- 'letters_list': 'ABCD',
- 'other_letters': '<(letters_list)EFG',
- 'check_included': '<(included_variable)',
- 'check_lists': [
- '<(included_variable)',
- '<(third_letters)',
- ],
- 'check_int': 5,
- 'check_str_int': '6',
- 'check_list_int': [
- 7,
- '8',
- 9,
- ],
- 'not_int_1': ' 10',
- 'not_int_2': '11 ',
- 'not_int_3': '012',
- 'not_int_4': '13.0',
- 'not_int_5': '+14',
- 'negative_int': '-15',
- 'zero_int': '0',
- },
- 'includes': [
- 'commands.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'none',
- 'variables': {
- 'var1': '<!(["python", "-c", "<(pi)"])',
- 'var2': '<!(python -c "print \'<!(python -c "<(pi)") <(letters_list)\'")',
- 'var3': '<!(python -c "print \'<(letters_list)\'")',
- 'var4': '<(<!(python -c "print \'letters_list\'"))',
- 'var5': 'letters_',
- 'var6': 'list',
- 'var7': '<(check_int)',
- 'var8': '<(check_int)blah',
- 'var9': '<(check_str_int)',
- 'var10': '<(check_list_int)',
- 'var11': ['<@(check_list_int)'],
- 'var12': '<(not_int_1)',
- 'var13': '<(not_int_2)',
- 'var14': '<(not_int_3)',
- 'var15': '<(not_int_4)',
- 'var16': '<(not_int_5)',
- 'var17': '<(negative_int)',
- 'var18': '<(zero_int)',
- 'var19': ['<!@(python test.py)'],
- 'var20': '<!(python test.py)',
- 'var21': '<(default_str)',
- 'var22': '<(default_empty_str)',
- 'var23': '<(default_int)',
- 'var24': '<(default_empty_files)',
- 'var25': '<(default_int_files)',
- },
- 'actions': [
- {
- 'action_name': 'test_action',
- 'variables': {
- 'var7': '<!(echo <(var5)<(var6))',
- },
- 'inputs' : [
- '<(var2)',
- ],
- 'outputs': [
- '<(var4)',
- '<(var7)',
- ],
- 'action': [
- 'echo',
- '<(_inputs)',
- '<(_outputs)',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'other_letters', 'is_array': '', 'replace': '<(other_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(letters_list)EFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFG', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'included_variable', 'is_array': '', 'replace': '<(included_variable)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'XYZ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'included_variable', 'is_array': '', 'replace': '<(included_variable)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'XYZ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'third_letters', 'is_array': '', 'replace': '<(third_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(other_letters)HIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'other_letters', 'is_array': '', 'replace': '<(other_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(letters_list)EFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_empty_files', 'is_array': '', 'replace': '<(default_empty_files)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_int_files', 'is_array': '', 'replace': '<(default_int_files)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python test.py', 'is_array': '', 'replace': '<!(python test.py)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:838:ExpandVariables Executing command 'python test.py' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'sample\\path\\foo.cpp', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_str', 'is_array': '', 'replace': '<(default_str)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'my_str', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_empty_str', 'is_array': '', 'replace': '<(default_empty_str)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_int', 'is_array': '', 'replace': '<(default_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '<!(python -c "print \'letters_list\'"', 'is_array': '', 'replace': '<(<!(python -c "print \'letters_list\'")', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'letters_list\'"', 'is_array': '', 'replace': '<!(python -c "print \'letters_list\'")', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print 'letters_list'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_int', 'is_array': '', 'replace': '<(check_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '5', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '"python", "-c", "<(pi', 'is_array': '[', 'replace': '<!(["python", "-c", "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'pi', 'is_array': '', 'replace': '<(pi)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '["python", "-c", "import math; print math.pi"]', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command '['python', '-c', 'import math; print math.pi']' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'<(letters_list', 'is_array': '', 'replace': '<!(python -c "print \'<(letters_list)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "print \'ABCD\'"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print 'ABCD'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'<!(python -c "<(pi', 'is_array': '', 'replace': '<!(python -c "print \'<!(python -c "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "<(pi', 'is_array': '', 'replace': '<!(python -c "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'pi', 'is_array': '', 'replace': '<(pi)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "import math; print math.pi"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "import math; print math.pi"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "print \'3.14159265359 ABCD\'"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print '3.14159265359 ABCD'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_str_int', 'is_array': '', 'replace': '<(check_str_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '6', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_int', 'is_array': '', 'replace': '<(check_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '5blah', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_4', 'is_array': '', 'replace': '<(not_int_4)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '13.0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_3', 'is_array': '', 'replace': '<(not_int_3)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '012', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'negative_int', 'is_array': '', 'replace': '<(negative_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '-15', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_5', 'is_array': '', 'replace': '<(not_int_5)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '+14', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_list_int', 'is_array': '', 'replace': '<(check_list_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '7 8 9', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_2', 'is_array': '', 'replace': '<(not_int_2)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '11 ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_1', 'is_array': '', 'replace': '<(not_int_1)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output ' 10', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'zero_int', 'is_array': '', 'replace': '<(zero_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_list_int', 'is_array': '', 'replace': '<@(check_list_int)', 'type': '<@', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output [7, 8, 9], recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python test.py', 'is_array': '', 'replace': '<!@(python test.py)', 'type': '<!@', 'command_string': None}
-VARIABLES:input.py:889:ExpandVariables Had cache value for command 'python test.py' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output ['samplepathfoo.cpp'], recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var6', 'is_array': '', 'replace': '<(var6)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'echo <(var5', 'is_array': '', 'replace': '<!(echo <(var5)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var5', 'is_array': '', 'replace': '<(var5)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'echo letters_list', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'echo letters_list' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_inputs', 'is_array': '', 'replace': '<(_inputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var2', 'is_array': '', 'replace': '<(var2)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output '"3.14159265359 ABCD"', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_outputs', 'is_array': '', 'replace': '<(_outputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var4', 'is_array': '', 'replace': '<(var4)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var7', 'is_array': '', 'replace': '<(var7)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD letters_list', recursing.
+++ /dev/null
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'other_letters', 'is_array': '', 'replace': '<(other_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(letters_list)EFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFG', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'included_variable', 'is_array': '', 'replace': '<(included_variable)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'XYZ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'included_variable', 'is_array': '', 'replace': '<(included_variable)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'XYZ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'third_letters', 'is_array': '', 'replace': '<(third_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(other_letters)HIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'other_letters', 'is_array': '', 'replace': '<(other_letters)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '<(letters_list)EFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCDEFGHIJK', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_empty_files', 'is_array': '', 'replace': '<(default_empty_files)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_int_files', 'is_array': '', 'replace': '<(default_int_files)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python test.py', 'is_array': '', 'replace': '<!(python test.py)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:838:ExpandVariables Executing command 'python test.py' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'sample\\path\\foo.cpp', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_str', 'is_array': '', 'replace': '<(default_str)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'my_str', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_empty_str', 'is_array': '', 'replace': '<(default_empty_str)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'default_int', 'is_array': '', 'replace': '<(default_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '<!(python -c "print \'letters_list\'"', 'is_array': '', 'replace': '<(<!(python -c "print \'letters_list\'")', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'letters_list\'"', 'is_array': '', 'replace': '<!(python -c "print \'letters_list\'")', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print 'letters_list'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_int', 'is_array': '', 'replace': '<(check_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '5', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '"python", "-c", "<(pi', 'is_array': '[', 'replace': '<!(["python", "-c", "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'pi', 'is_array': '', 'replace': '<(pi)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '["python", "-c", "import math; print math.pi"]', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command '['python', '-c', 'import math; print math.pi']' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'<(letters_list', 'is_array': '', 'replace': '<!(python -c "print \'<(letters_list)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "print \'ABCD\'"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print 'ABCD'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'letters_list', 'is_array': '', 'replace': '<(letters_list)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "print \'<!(python -c "<(pi', 'is_array': '', 'replace': '<!(python -c "print \'<!(python -c "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python -c "<(pi', 'is_array': '', 'replace': '<!(python -c "<(pi)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'pi', 'is_array': '', 'replace': '<(pi)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "import math; print math.pi"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "import math; print math.pi"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'python -c "print \'3.14159265359 ABCD\'"', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'python -c "print '3.14159265359 ABCD'"' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_str_int', 'is_array': '', 'replace': '<(check_str_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '6', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_int', 'is_array': '', 'replace': '<(check_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '5blah', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_4', 'is_array': '', 'replace': '<(not_int_4)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '13.0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_3', 'is_array': '', 'replace': '<(not_int_3)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '012', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'negative_int', 'is_array': '', 'replace': '<(negative_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '-15', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_5', 'is_array': '', 'replace': '<(not_int_5)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '+14', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_list_int', 'is_array': '', 'replace': '<(check_list_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '7 8 9', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_2', 'is_array': '', 'replace': '<(not_int_2)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '11 ', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'not_int_1', 'is_array': '', 'replace': '<(not_int_1)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output ' 10', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'zero_int', 'is_array': '', 'replace': '<(zero_int)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '0', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'check_list_int', 'is_array': '', 'replace': '<@(check_list_int)', 'type': '<@', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output [7, 8, 9], recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'python test.py', 'is_array': '', 'replace': '<!@(python test.py)', 'type': '<!@', 'command_string': None}
-VARIABLES:input.py:889:ExpandVariables Had cache value for command 'python test.py' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output ['samplepathfoo.cpp'], recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var6', 'is_array': '', 'replace': '<(var6)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'echo <(var5', 'is_array': '', 'replace': '<!(echo <(var5)', 'type': '<!', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var5', 'is_array': '', 'replace': '<(var5)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'echo letters_list', recursing.
-VARIABLES:input.py:838:ExpandVariables Executing command 'echo letters_list' in directory 'None'
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_inputs', 'is_array': '', 'replace': '<(_inputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var2', 'is_array': '', 'replace': '<(var2)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output '3.14159265359 ABCD', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output '"3.14159265359 ABCD"', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': '_outputs', 'is_array': '', 'replace': '<(_outputs)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var4', 'is_array': '', 'replace': '<(var4)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD', recursing.
-VARIABLES:input.py:724:ExpandVariables Matches: {'content': 'var7', 'is_array': '', 'replace': '<(var7)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:964:ExpandVariables Found output 'letters_list', recursing.
-VARIABLES:input.py:964:ExpandVariables Found output 'ABCD letters_list', recursing.
+++ /dev/null
-{'_DEPTH': '.',
- 'included_files': ['commands.gyp', 'commands.gypi'],
- 'targets': [{'actions': [{'action': ['echo',
- '"3.14159265359 ABCD"',
- 'ABCD letters_list'],
- 'action_name': 'test_action',
- 'inputs': ['3.14159265359 ABCD'],
- 'outputs': ['ABCD', 'letters_list'],
- 'variables': {'var7': 'letters_list'}}],
- 'configurations': {'Default': {}},
- 'default_configuration': 'Default',
- 'target_name': 'foo',
- 'toolset': 'target',
- 'type': 'none',
- 'variables': {'var1': '3.14159265359',
- 'var10': '7 8 9',
- 'var11': ['7', '8', '9'],
- 'var12': ' 10',
- 'var13': '11 ',
- 'var14': '012',
- 'var15': '13.0',
- 'var16': '+14',
- 'var17': '-15',
- 'var18': '0',
- 'var19': ['samplepathfoo.cpp'],
- 'var2': '3.14159265359 ABCD',
- 'var20': 'sample\\path\\foo.cpp',
- 'var21': 'my_str',
- 'var22': '',
- 'var23': '0',
- 'var24': '',
- 'var25': '0',
- 'var3': 'ABCD',
- 'var4': 'ABCD',
- 'var5': 'letters_',
- 'var6': 'list',
- 'var7': '5',
- 'var8': '5blah',
- 'var9': '6'}},
- {'configurations': {'Default': {}},
- 'default_configuration': 'Default',
- 'target_name': 'dummy',
- 'toolset': 'target',
- 'type': 'none'}],
- 'variables': {'check_included': 'XYZ',
- 'check_int': '5',
- 'check_list_int': ['7', '8', '9'],
- 'check_lists': ['XYZ', 'ABCDEFGHIJK'],
- 'check_str_int': '6',
- 'default_empty_files%': '',
- 'default_empty_str%': '',
- 'default_int%': '0',
- 'default_int_files%': '0',
- 'default_str%': 'my_str',
- 'included_variable': 'XYZ',
- 'letters_list': 'ABCD',
- 'negative_int': '-15',
- 'not_int_1': ' 10',
- 'not_int_2': '11 ',
- 'not_int_3': '012',
- 'not_int_4': '13.0',
- 'not_int_5': '+14',
- 'other_letters': 'ABCDEFG',
- 'pi': 'import math; print math.pi',
- 'third_letters': 'ABCDEFGHIJK',
- 'zero_int': '0'}}
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# This file is included from commands.gyp to test evaluation order of includes.
-{
- 'variables': {
- 'included_variable': 'XYZ',
-
- 'default_str%': 'my_str',
- 'default_empty_str%': '',
- 'default_int%': 0,
-
- 'default_empty_files%': '',
- 'default_int_files%': 0,
- },
- 'targets': [
- {
- 'target_name': 'dummy',
- 'type': 'none',
- },
- ],
-}
+++ /dev/null
-#!/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.
-
-"""
-Test that environment variables are ignored when --ignore-environment is
-specified.
-"""
-
-import os
-
-import TestGyp
-
-test = TestGyp.TestGyp(format='gypd')
-
-os.environ['GYP_DEFINES'] = 'FOO=BAR'
-os.environ['GYP_GENERATORS'] = 'foo'
-os.environ['GYP_GENERATOR_FLAGS'] = 'genflag=foo'
-os.environ['GYP_GENERATOR_OUTPUT'] = 'somedir'
-
-expect = test.read('commands.gyp.ignore-env.stdout').replace('\r\n', '\n')
-
-test.run_gyp('commands.gyp',
- '--debug', 'variables',
- '--ignore-environment',
- stdout=expect, ignore_line_numbers=True)
-
-# Verify the commands.gypd against the checked-in expected contents.
-#
-# Normally, we should canonicalize line endings in the expected
-# contents file setting the Subversion svn:eol-style to native,
-# but that would still fail if multiple systems are sharing a single
-# workspace on a network-mounted file system. Consequently, we
-# massage the Windows line endings ('\r\n') in the output to the
-# checked-in UNIX endings ('\n').
-
-contents = test.read('commands.gypd').replace('\r', '')
-expect = test.read('commands.gypd.golden').replace('\r', '')
-if not test.match(contents, expect):
- print "Unexpected contents of `commands.gypd'"
- test.diff(expect, contents, 'commands.gypd ')
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright 2014 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.
-
-"""
-Test variable expansion of '<!()' syntax commands where they are evaluated
-more than once from different directories.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-# This tests GYP's cache of commands, ensuring that the directory a command is
-# run from is part of its cache key. Parallelism may lead to multiple cache
-# lookups failing, resulting in the command being run multiple times by
-# chance, not by GYP's logic. Turn off parallelism to ensure that the logic is
-# being tested.
-test.run_gyp('repeated_multidir/main.gyp', '--no-parallel')
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Test variable expansion of '<!()' syntax commands where they are evaluated
-more then once..
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp(format='gypd')
-
-expect = test.read('commands-repeated.gyp.stdout').replace('\r\n', '\n')
-
-test.run_gyp('commands-repeated.gyp',
- '--debug', 'variables',
- stdout=expect, ignore_line_numbers=True)
-
-# Verify the commands-repeated.gypd against the checked-in expected contents.
-#
-# Normally, we should canonicalize line endings in the expected
-# contents file setting the Subversion svn:eol-style to native,
-# but that would still fail if multiple systems are sharing a single
-# workspace on a network-mounted file system. Consequently, we
-# massage the Windows line endings ('\r\n') in the output to the
-# checked-in UNIX endings ('\n').
-
-contents = test.read('commands-repeated.gypd').replace('\r\n', '\n')
-expect = test.read('commands-repeated.gypd.golden').replace('\r\n', '\n')
-if not test.match(contents, expect):
- print "Unexpected contents of `commands-repeated.gypd'"
- test.diff(expect, contents, 'commands-repeated.gypd ')
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Test variable expansion of '<!()' syntax commands.
-"""
-
-import os
-
-import TestGyp
-
-test = TestGyp.TestGyp(format='gypd')
-
-expect = test.read('commands.gyp.stdout').replace('\r', '')
-
-test.run_gyp('commands.gyp',
- '--debug', 'variables',
- stdout=expect, ignore_line_numbers=True)
-
-# Verify the commands.gypd against the checked-in expected contents.
-#
-# Normally, we should canonicalize line endings in the expected
-# contents file setting the Subversion svn:eol-style to native,
-# but that would still fail if multiple systems are sharing a single
-# workspace on a network-mounted file system. Consequently, we
-# massage the Windows line endings ('\r\n') in the output to the
-# checked-in UNIX endings ('\n').
-
-contents = test.read('commands.gypd').replace('\r', '')
-expect = test.read('commands.gypd.golden').replace('\r', '')
-if not test.match(contents, expect):
- print "Unexpected contents of `commands.gypd'"
- test.diff(expect, contents, 'commands.gypd ')
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'variables': {
- 'expected_value': 'dir_1',
- 'target_name': 'target_1',
- },
- 'includes': [
- '../repeated_command_common.gypi',
- ],
-}
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'variables': {
- 'expected_value': 'dir_2',
- 'target_name': 'target_2',
- },
- 'includes': [
- '../repeated_command_common.gypi',
- ],
-}
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'main',
- 'type': 'none',
- 'dependencies': [
- 'dir_1/test_1.gyp:target_1',
- 'dir_2/test_2.gyp:target_2',
- ],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright 2014 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.
-
-import os
-import os.path
-
-print os.path.basename(os.getcwd())
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'variables': {
- # This command will be run from the directories of the .gyp files that
- # include this .gypi, the subdirectories dir_1 and dir_2, so use a
- # relative path from those directories to the script.
- 'observed_value': '<!(python ../print_cwd_basename.py)',
- },
- 'targets': [
- {
- 'target_name': '<(target_name)',
- 'type': 'none',
- 'conditions': [
- ['observed_value != expected_value', {
- # Attempt to expand an undefined variable. This triggers a GYP
- # error.
- 'assertion': '<(observed_value_must_equal_expected_value)',
- }],
- ],
- },
- ],
-}
+++ /dev/null
-print "sample\\path\\foo.cpp"
+++ /dev/null
-#!/bin/bash
-
-# Copyright (c) 2009 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.
-
-python ../../../gyp --debug variables --format gypd --depth . commands.gyp > commands.gyp.stdout
-python ../../../gyp --ignore-environment --debug variables --format gypd --depth . commands.gyp > commands.gyp.ignore-env.stdout
-cp -f commands.gypd commands.gypd.golden
-python ../../../gyp --debug variables --format gypd --depth . commands-repeated.gyp > commands-repeated.gyp.stdout
-cp -f commands-repeated.gypd commands-repeated.gypd.golden
+++ /dev/null
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'names.txt <@(names', 'is_array': '', 'replace': '<|(names.txt <@(names)', 'type': '<|', 'command_string': None}
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'names', 'is_array': '', 'replace': '<@(names)', 'type': '<@', 'command_string': None}
-VARIABLES:input.py:797:ExpandVariables Found output 'names.txt John Jacob Jingleheimer Schmidt', recursing.
-VARIABLES:input.py:797:ExpandVariables Found output 'names.txt', recursing.
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'names_listfile', 'is_array': '', 'replace': '<(names_listfile)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:797:ExpandVariables Found output 'names.txt', recursing.
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'names_listfile', 'is_array': '', 'replace': '<(names_listfile)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:797:ExpandVariables Found output 'names.txt', recursing.
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'cat <(names_listfile', 'is_array': '', 'replace': '<!@(cat <(names_listfile)', 'type': '<!@', 'command_string': None}
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'names_listfile', 'is_array': '', 'replace': '<(names_listfile)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:797:ExpandVariables Found output 'cat names.txt', recursing.
-VARIABLES:input.py:676:ExpandVariables Executing command 'cat names.txt' in directory 'src'
-VARIABLES:input.py:797:ExpandVariables Found output ['John', 'Jacob', 'Jingleheimer', 'Schmidt'], recursing.
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'sources.txt <@(_sources', 'is_array': '', 'replace': '<|(sources.txt <@(_sources)', 'type': '<|', 'command_string': None}
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': '_sources', 'is_array': '', 'replace': '<@(_sources)', 'type': '<@', 'command_string': None}
-VARIABLES:input.py:797:ExpandVariables Found output 'sources.txt John Jacob Jingleheimer Schmidt', recursing.
-VARIABLES:input.py:797:ExpandVariables Found output 'sources.txt', recursing.
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'sources_listfile', 'is_array': '', 'replace': '<(sources_listfile)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:797:ExpandVariables Found output 'sources.txt', recursing.
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'sources_listfile', 'is_array': '', 'replace': '<(sources_listfile)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:797:ExpandVariables Found output 'sources.txt', recursing.
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'cat <(sources_listfile', 'is_array': '', 'replace': '<!@(cat <(sources_listfile)', 'type': '<!@', 'command_string': None}
-VARIABLES:input.py:562:ExpandVariables Matches: {'content': 'sources_listfile', 'is_array': '', 'replace': '<(sources_listfile)', 'type': '<', 'command_string': None}
-VARIABLES:input.py:797:ExpandVariables Found output 'cat sources.txt', recursing.
-VARIABLES:input.py:676:ExpandVariables Executing command 'cat sources.txt' in directory 'src'
-VARIABLES:input.py:797:ExpandVariables Found output ['John', 'Jacob', 'Jingleheimer', 'Schmidt'], recursing.
+++ /dev/null
-{'_DEPTH': '.',
- 'included_files': ['filelist.gyp'],
- 'targets': [{'actions': [{'action': ['python', 'dummy.py', 'names.txt'],
- 'action_name': 'test_action',
- 'inputs': ['names.txt',
- 'John',
- 'Jacob',
- 'Jingleheimer',
- 'Schmidt'],
- 'outputs': ['dummy_foo']}],
- 'configurations': {'Default': {}},
- 'default_configuration': 'Default',
- 'target_name': 'foo',
- 'toolset': 'target',
- 'type': 'none',
- 'variables': {'names_listfile': 'names.txt'}},
- {'actions': [{'action': ['python', 'dummy.py', 'sources.txt'],
- 'action_name': 'test_action',
- 'inputs': ['sources.txt',
- 'John',
- 'Jacob',
- 'Jingleheimer',
- 'Schmidt'],
- 'outputs': ['dummy_foo']}],
- 'configurations': {'Default': {}},
- 'default_configuration': 'Default',
- 'sources': ['John', 'Jacob', 'Jingleheimer', 'Schmidt'],
- 'sources_excluded': ['Astor', 'Jerome', 'Schultz'],
- 'target_name': 'bar',
- 'toolset': 'target',
- 'type': 'none',
- 'variables': {'sources_listfile': 'sources.txt'}}],
- 'variables': {'names': ['John',
- 'Jacob',
- 'Astor',
- 'Jingleheimer',
- 'Jerome',
- 'Schmidt',
- 'Schultz'],
- 'names!': ['Astor'],
- 'names/': [['exclude', 'Sch.*'],
- ['include', '.*dt'],
- ['exclude', 'Jer.*']]}}
+++ /dev/null
-#!/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.
-
-"""
-Test variable expansion of '<|(list.txt ...)' syntax commands.
-"""
-
-import os
-import sys
-
-import TestGyp
-
-test = TestGyp.TestGyp(format='gypd')
-
-expect = test.read('filelist.gyp.stdout')
-if sys.platform == 'win32':
- expect = expect.replace('/', r'\\').replace('\r\n', '\n')
-
-test.run_gyp('src/filelist.gyp',
- '--debug', 'variables',
- stdout=expect, ignore_line_numbers=True)
-
-# Verify the filelist.gypd against the checked-in expected contents.
-#
-# Normally, we should canonicalize line endings in the expected
-# contents file setting the Subversion svn:eol-style to native,
-# but that would still fail if multiple systems are sharing a single
-# workspace on a network-mounted file system. Consequently, we
-# massage the Windows line endings ('\r\n') in the output to the
-# checked-in UNIX endings ('\n').
-
-contents = test.read('src/filelist.gypd').replace(
- '\r', '').replace('\\\\', '/')
-expect = test.read('filelist.gypd.golden').replace('\r', '')
-if not test.match(contents, expect):
- print "Unexpected contents of `src/filelist.gypd'"
- test.diff(expect, contents, 'src/filelist.gypd ')
- test.fail_test()
-
-contents = test.read('src/names.txt')
-expect = 'John\nJacob\nJingleheimer\nSchmidt\n'
-if not test.match(contents, expect):
- print "Unexpected contents of `src/names.txt'"
- test.diff(expect, contents, 'src/names.txt ')
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Test variable expansion of '<|(list.txt ...)' syntax commands.
-"""
-
-import os
-import sys
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-CHDIR = 'src'
-test.run_gyp('filelist2.gyp', chdir=CHDIR)
-
-test.build('filelist2.gyp', 'foo', chdir=CHDIR)
-contents = test.read('src/dummy_foo').replace('\r', '')
-expect = 'John\nJacob\nJingleheimer\nSchmidt\n'
-if not test.match(contents, expect):
- print "Unexpected contents of `src/dummy_foo'"
- test.diff(expect, contents, 'src/dummy_foo')
- test.fail_test()
-
-test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-import sys
-
-open(sys.argv[1], 'w').write(open(sys.argv[2]).read())
+++ /dev/null
-# Copyright (c) 2009 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.
-
-# This is a test to make sure that <|(foo.txt a b c) generates
-# a pre-calculated file list at gyp time and returns foo.txt.
-# This feature is useful to work around limits in the number of arguments that
-# can be passed to rule/action.
-
-{
- 'variables': {
- 'names': [
- 'John',
- 'Jacob',
- 'Astor',
- 'Jingleheimer',
- 'Jerome',
- 'Schmidt',
- 'Schultz',
- ],
- 'names!': [
- 'Astor',
- ],
- 'names/': [
- ['exclude', 'Sch.*'],
- ['include', '.*dt'],
- ['exclude', 'Jer.*'],
- ],
- },
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'none',
- 'variables': {
- 'names_listfile': '<|(names.txt <@(names))',
- },
- 'actions': [
- {
- 'action_name': 'test_action',
- 'inputs' : [
- '<(names_listfile)',
- '<!@(cat <(names_listfile))',
- ],
- 'outputs': [
- 'dummy_foo',
- ],
- 'action': [
- 'python', 'dummy.py', '<(names_listfile)',
- ],
- },
- ],
- },
- {
- 'target_name': 'bar',
- 'type': 'none',
- 'sources': [
- 'John',
- 'Jacob',
- 'Astor',
- 'Jingleheimer',
- 'Jerome',
- 'Schmidt',
- 'Schultz',
- ],
- 'sources!': [
- 'Astor',
- ],
- 'sources/': [
- ['exclude', 'Sch.*'],
- ['include', '.*dt'],
- ['exclude', 'Jer.*'],
- ],
- 'variables': {
- 'sources_listfile': '<|(sources.txt <@(_sources))',
- },
- 'actions': [
- {
- 'action_name': 'test_action',
- 'inputs' : [
- '<(sources_listfile)',
- '<!@(cat <(sources_listfile))',
- ],
- 'outputs': [
- 'dummy_foo',
- ],
- 'action': [
- 'python', 'dummy.py', '<(sources_listfile)',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-# This is a test to make sure that <|(foo.txt a b c) generates
-# a pre-calculated file list at gyp time and returns foo.txt.
-# This feature is useful to work around limits in the number of arguments that
-# can be passed to rule/action.
-
-{
- 'variables': {
- 'names': [
- 'John',
- 'Jacob',
- 'Jingleheimer',
- 'Schmidt',
- ],
- },
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'none',
- 'variables': {
- 'names_listfile': '<|(names.txt <@(names))',
- },
- 'actions': [
- {
- 'action_name': 'test_action',
- 'msvs_cygwin_shell': 0,
- 'inputs' : [ '<(names_listfile)' ],
- 'outputs': [ 'dummy_foo' ],
- 'action': [
- 'python', 'dummy.py', '<@(_outputs)', '<(names_listfile)',
- ],
- },
- ],
- },
- ],
-}
+++ /dev/null
-#!/bin/bash
-
-# Copyright (c) 2009 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.
-
-python ../../../gyp --debug variables --debug general --format gypd --depth . src/filelist.gyp > filelist.gyp.stdout
-cp -f src/filelist.gypd filelist.gypd.golden
+++ /dev/null
-#!/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.
-
-"""
-Verifies that ^(latelate) style variables work.
-"""
-
-import TestGyp
-
-test = TestGyp.TestGyp()
-
-test.run_gyp('latelate.gyp', chdir='src')
-
-test.relocate('src', 'relocate/src')
-
-test.build('latelate.gyp', test.ALL, chdir='relocate/src')
-
-test.run_built_executable(
- 'program', chdir='relocate/src', stdout='program.cc\n')
-
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2009 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.
-
-{
- 'target_defaults': {
- 'target_conditions': [
- ['has_lame==1', {
- 'sources/': [
- ['exclude', 'lame'],
- ],
- }],
- ],
- },
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'variables': {
- 'has_lame': 1,
- },
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- 'defines': [
- 'FOO="^(_sources)"',
- ],
- 'sources': [
- 'program.cc',
- 'this_is_lame.cc',
- ],
- },
- ],
-}
+++ /dev/null
-/*
- * 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.
- */
-
-#include <stdio.h>
-
-
-int main(void) {
- printf(FOO "\n");
- return 0;
-}
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-#!/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 <(CONFIGURATION_NAME) variable is correctly expanded.
-"""
-
-import TestGyp
-
-import sys
-
-test = TestGyp.TestGyp()
-test.set_configuration('C1')
-
-test.run_gyp('variable-in-path.gyp')
-test.build('variable-in-path.gyp', 'hello1')
-test.build('variable-in-path.gyp', 'hello2')
-
-
-test.pass_test()
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello1',
- 'type': 'executable',
- 'sources': [
- '<(CONFIGURATION_NAME)/hello.cc',
- ],
- },
- {
- 'target_name': 'hello2',
- 'type': 'executable',
- 'sources': [
- './<(CONFIGURATION_NAME)/hello.cc',
- ],
- },
- ],
- 'target_defaults': {
- 'default_configuration': 'C1',
- 'configurations': {
- 'C1': {
- },
- 'C2': {
- },
- },
- },
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'sources_with_asm',
- 'type': 'executable',
- 'sources': [
- 'hello.cc',
- 'b.s',
- 'c.S',
- ],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_batch',
- 'type': 'none',
- 'actions': [
- {
- 'action_name': 'copy_to_output',
- 'inputs': ['infile'],
- 'outputs': ['outfile'],
- 'action': ['somecmd.bat', 'infile', 'outfile'],
- 'msvs_cygwin_shell': 0,
- }
- ],
- },
- ]
-}
+++ /dev/null
-@echo off
-:: The redirs to nul are important. %2 can end up being an unterminated "'d
-:: string, so the remainder of the command line becomes the target file name,
-:: which in turn fails because it's a filename containing >, nul, etc.
-copy /y %1 %2 >nul 2>nul
+++ /dev/null
-@echo off
-
-:: 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.
-
-copy %1 %2
+++ /dev/null
-# 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.
-
-{
- 'target_defaults': {
- 'msvs_cygwin_dirs': ['../../../../../<(DEPTH)/third_party/cygwin'],
- },
- 'targets': [
- {
- 'target_name': 'test_batch',
- 'type': 'none',
- 'rules': [
- {
- 'rule_name': 'build_with_batch',
- 'msvs_cygwin_shell': 0,
- 'extension': 'S',
- 'outputs': ['output.obj'],
- 'action': ['call go.bat', '<(RULE_INPUT_PATH)', 'output.obj'],
- },],
- 'sources': ['a.S'],
- },
- {
- 'target_name': 'test_call_separate',
- 'type': 'none',
- 'rules': [
- {
- 'rule_name': 'build_with_batch2',
- 'msvs_cygwin_shell': 0,
- 'extension': 'S',
- 'outputs': ['output2.obj'],
- 'action': ['call', 'go.bat', '<(RULE_INPUT_PATH)', 'output2.obj'],
- },],
- 'sources': ['a.S'],
- },
- {
- 'target_name': 'test_with_spaces',
- 'type': 'none',
- 'rules': [
- {
- 'rule_name': 'build_with_batch3',
- 'msvs_cygwin_shell': 0,
- 'extension': 'S',
- 'outputs': ['output3.obj'],
- 'action': ['bat with spaces.bat', '<(RULE_INPUT_PATH)', 'output3.obj'],
- },],
- 'sources': ['a.S'],
- },
- {
- 'target_name': 'test_with_double_quotes',
- 'type': 'none',
- 'rules': [
- {
- 'rule_name': 'build_with_batch3',
- 'msvs_cygwin_shell': 1,
- 'extension': 'S',
- 'outputs': ['output4.obj'],
- 'arguments': ['-v'],
- 'action': ['python', '-c', 'import shutil; '
- 'shutil.copy("<(RULE_INPUT_PATH)", "output4.obj")'],
- },],
- 'sources': ['a.S'],
- },
- {
- 'target_name': 'test_with_single_quotes',
- 'type': 'none',
- 'rules': [
- {
- 'rule_name': 'build_with_batch3',
- 'msvs_cygwin_shell': 1,
- 'extension': 'S',
- 'outputs': ['output5.obj'],
- 'action': ['python', '-c', "import shutil; "
- "shutil.copy('<(RULE_INPUT_PATH)', 'output5.obj')"],
- },],
- 'sources': ['a.S'],
- },
- ]
-}
+++ /dev/null
-@echo off
-
-:: 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.
-
-copy %1 %2
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_batch_depth',
- 'type': 'none',
- 'variables': {
- # Taken from native_client/build/common.gypi. Seems unintentional (a
- # string in a 1 element list)? But since it works on other generators,
- # I guess it should work here too.
- 'filepath': [ 'call <(DEPTH)/../../../go.bat' ],
- },
- 'rules': [
- {
- 'rule_name': 'build_with_batch4',
- 'msvs_cygwin_shell': 0,
- 'extension': 'S',
- 'outputs': ['output4.obj'],
- 'action': ['<@(filepath)', '<(RULE_INPUT_PATH)', 'output4.obj'],
- },],
- 'sources': ['<(DEPTH)\\..\\..\\..\\a.S'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-// No path qualification to test compiler include dir specification.
-#include "header.h"
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_incs',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'AdditionalIncludeDirectories': [
- 'subdir',
- ],
- }
- },
- 'sources': ['additional-include-dirs.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-int main() {
- // Generate a warning that will appear at level 4, but not level 1
- // (truncation and unused local).
- char c = 123456;
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_additional_none',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '4',
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['additional-options.cc'],
- },
- {
- 'target_name': 'test_additional_one',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '4',
- 'WarnAsError': 'true',
- 'AdditionalOptions': [ '/W1' ],
- }
- },
- 'sources': ['additional-options.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_analysis_on',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnablePREfast': 'true',
- 'WarnAsError': 'true',
- },
- },
- 'sources': ['uninit.cc'],
- },
- {
- 'target_name': 'test_analysis_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnablePREfast': 'false',
- 'WarnAsError': 'true',
- },
- },
- 'sources': ['uninit.cc'],
- },
- {
- 'target_name': 'test_analysis_unspec',
- 'type': 'executable',
- 'sources': ['uninit.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarnAsError': 'true',
- },
- },
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Turn debug information on so that we can see the name of the buffer
- # security check cookie in the disassembly.
- {
- 'target_name': 'test_bsc_unset',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- },
- 'sources': ['buffer-security.cc'],
- },
- {
- 'target_name': 'test_bsc_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'BufferSecurityCheck': 'false',
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- },
- 'sources': ['buffer-security.cc'],
- },
- {
- 'target_name': 'test_bsc_on',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'BufferSecurityCheck': 'true',
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- },
- 'sources': ['buffer-security.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-#include <malloc.h>
-#include <string.h>
-
-int main() {
- char* stuff = reinterpret_cast<char*>(_alloca(256));
- strcpy(stuff, "blah");
- return 0;
-}
+++ /dev/null
-; Copyright (c) 2014 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.
-
-EXPORTS
- foo
+++ /dev/null
-; Copyright (c) 2014 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.
-
-EXPORTS
- @foo@0
+++ /dev/null
-; Copyright (c) 2014 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.
-
-EXPORTS
- _foo@0
+++ /dev/null
-; Copyright (c) 2014 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.
-
-EXPORTS
- foo@@0
+++ /dev/null
-// Copyright (c) 2014 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.
-
-extern "C" void foo() {
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_cdecl',
- 'type': 'loadable_module',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'CallingConvention': 0,
- },
- },
- 'sources': [
- 'calling-convention.cc',
- 'calling-convention-cdecl.def',
- ],
- },
- {
- 'target_name': 'test_fastcall',
- 'type': 'loadable_module',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'CallingConvention': 1,
- },
- },
- 'sources': [
- 'calling-convention.cc',
- 'calling-convention-fastcall.def',
- ],
- },
- {
- 'target_name': 'test_stdcall',
- 'type': 'loadable_module',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'CallingConvention': 2,
- },
- },
- 'sources': [
- 'calling-convention.cc',
- 'calling-convention-stdcall.def',
- ],
- },
- ],
- 'conditions': [
- ['MSVS_VERSION[0:4]>="2013"', {
- 'targets': [
- {
- 'target_name': 'test_vectorcall',
- 'type': 'loadable_module',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'CallingConvention': 3,
- },
- },
- 'sources': [
- 'calling-convention.cc',
- 'calling-convention-vectorcall.def',
- ],
- },
- ],
- }],
- ],
-}
+++ /dev/null
-// 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.
-
-#ifndef _MBCS
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-#ifndef _UNICODE
-#error
-#endif
-
-#ifndef UNICODE
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_cs_notset',
- 'product_name': 'test_cs_notset',
- 'type': 'executable',
- 'msvs_configuration_attributes': {
- 'CharacterSet': '0'
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_cs_unicode',
- 'product_name': 'test_cs_unicode',
- 'type': 'executable',
- 'msvs_configuration_attributes': {
- 'CharacterSet': '1'
- },
- 'sources': ['character-set-unicode.cc'],
- },
- {
- 'target_name': 'test_cs_mbcs',
- 'product_name': 'test_cs_mbcs',
- 'type': 'executable',
- 'msvs_configuration_attributes': {
- 'CharacterSet': '2'
- },
- 'sources': ['character-set-mbcs.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test-debug-format-off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '0'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test-debug-format-oldstyle',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '1'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test-debug-format-pdb',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test-debug-format-editcontinue',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '4'
- }
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-template <bool>
-struct CompileAssert {
-};
-
-#define COMPILE_ASSERT(expr, msg) \
- typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
-
-int main() {
- COMPILE_ASSERT(char(-1) > 0, default_char_is_unsigned);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_default_char_is_unsigned',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DefaultCharIsUnsigned': 'true',
- },
- },
- 'sources': [
- 'default-char-is-unsigned.cc',
- ],
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int main() {
- // Causes level 1 warning (C4700)
- int i;
- return i;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_disable_specific_warnings_set',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarnAsError': 'true',
- 'DisableSpecificWarnings': ['4700']
- }
- },
- 'sources': ['disable-specific-warnings.cc']
- },
- {
- 'target_name': 'test_disable_specific_warnings_unset',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarnAsError': 'true'
- }
- },
- 'sources': ['disable-specific-warnings.cc']
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#include <stdio.h>
-
-static const char* GetArchOption() {
-#if _M_IX86_FP == 0
- return "IA32";
-#elif _M_IX86_FP == 1
- return "SSE";
-#elif _M_IX86_FP == 2
-# if defined(__AVX2__)
- return "AVX2";
-# elif defined(__AVX__)
- return "AVX";
-# else
- return "SSE2";
-# endif
-#else
- return "UNSUPPORTED OPTION";
-#endif
-}
-
-int main() {
- printf("/arch:%s\n", GetArchOption());
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'sse_extensions',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableEnhancedInstructionSet': '1', # StreamingSIMDExtensions
- }
- },
- 'sources': ['enable-enhanced-instruction-set.cc'],
- },
- {
- 'target_name': 'sse2_extensions',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableEnhancedInstructionSet': '2', # StreamingSIMDExtensions2
- }
- },
- 'sources': ['enable-enhanced-instruction-set.cc'],
- },
- ],
- 'conditions': [
- ['MSVS_VERSION[0:4]>"2010"', {
- 'targets': [
- {
- 'target_name': 'avx_extensions',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableEnhancedInstructionSet': '3', # AdvancedVectorExtensions
- }
- },
- 'sources': ['enable-enhanced-instruction-set.cc'],
- },
- {
- 'target_name': 'no_extensions',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableEnhancedInstructionSet': '4', # NoExtensions
- }
- },
- 'sources': ['enable-enhanced-instruction-set.cc'],
- },
- ],
- }],
- ['MSVS_VERSION[0:4]>="2013"', {
- 'targets': [
- {
- 'target_name': 'avx2_extensions',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableEnhancedInstructionSet': '5', # AdvancedVectorExtensions2
- }
- },
- 'sources': ['enable-enhanced-instruction-set.cc'],
- },
- ],
- }],
- ],
-}
+++ /dev/null
-// 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.
-
-#include <excpt.h>
-#include <stdlib.h>
-
-void fail() {
- try {
- int i = 0, j = 1;
- j /= i;
- } catch(...) {
- exit(1);
- }
-}
-
-int main() {
- __try {
- fail();
- } __except(EXCEPTION_EXECUTE_HANDLER) {
- return 2;
- }
- return 3;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Optimization disabled so that the exception-causing code is not removed
- # (divide by zero was getting optimized away in VS2010).
- {
- 'target_name': 'test_eh_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'ExceptionHandling': '0',
- 'WarnAsError': 'true',
- 'Optimization': '0',
- }
- },
- 'sources': ['exception-handling-on.cc'],
- },
- {
- 'target_name': 'test_eh_s',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'ExceptionHandling': '1',
- 'WarnAsError': 'true',
- 'Optimization': '0',
- }
- },
- 'sources': ['exception-handling-on.cc'],
- },
- {
- 'target_name': 'test_eh_a',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'ExceptionHandling': '2',
- 'WarnAsError': 'true',
- 'Optimization': '0',
- }
- },
- 'sources': ['exception-handling-on.cc'],
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#ifdef _M_FP_PRECISE
-#error
-#endif
-
-#ifdef _M_FP_STRICT
-#error
-#endif
-
-#ifndef _M_FP_FAST
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#ifndef _M_FP_PRECISE
-#error
-#endif
-
-#ifdef _M_FP_STRICT
-#error
-#endif
-
-#ifdef _M_FP_FAST
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-#ifdef _M_FP_PRECISE
-#error
-#endif
-
-#ifndef _M_FP_STRICT
-#error
-#endif
-
-#ifdef _M_FP_FAST
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test-floating-point-model-default',
- 'type': 'executable',
- 'sources': ['floating-point-model-precise.cc'],
- },
- {
- 'target_name': 'test-floating-point-model-precise',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'FloatingPointModel': '0'
- }
- },
- 'sources': ['floating-point-model-precise.cc'],
- },
- {
- 'target_name': 'test-floating-point-model-strict',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'FloatingPointModel': '1'
- }
- },
- 'sources': ['floating-point-model-strict.cc'],
- },
- {
- 'target_name': 'test-floating-point-model-fast',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'FloatingPointModel': '2'
- }
- },
- 'sources': ['floating-point-model-fast.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-#include <stdio.h>
-
-int main() {
- std::string s;
- return 0;
-}
+++ /dev/null
-// 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.
-
-int main() {
- std::list<std::vector<std::string> > l;
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_force_include_files',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'ForcedIncludeFiles': ['string', 'vector', 'list'],
- },
- },
- 'sources': [
- 'force-include-files.cc',
- ],
- },
- {
- 'target_name': 'test_force_include_with_precompiled',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'ForcedIncludeFiles': ['string'],
- },
- },
- 'msvs_precompiled_header': 'stdio.h',
- 'msvs_precompiled_source': 'precomp.cc',
- 'msvs_disabled_warnings': [ 4530, ],
- 'sources': [
- 'force-include-files-with-precompiled.cc',
- 'precomp.cc',
- ],
- },
- ],
-}
+++ /dev/null
-// 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.
-
-int comdat_function() {
- return 1;
-}
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_fll_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFunctionLevelLinking': 'false'
- }
- },
- 'sources': ['function-level-linking.cc'],
- },
- {
- 'target_name': 'test_fll_on',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFunctionLevelLinking': 'true',
- }
- },
- 'sources': ['function-level-linking.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_opt_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'Optimization': '0'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_lev_size',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'Optimization': '1'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_lev_speed',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'Optimization': '2'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_lev_max',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'Optimization': '3'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_unset',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_fpo',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'OmitFramePointers': 'true'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_fpo_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'OmitFramePointers': 'false'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_intrinsic',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableIntrinsicFunctions': 'true'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_intrinsic_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableIntrinsicFunctions': 'false'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_inline_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'InlineFunctionExpansion': '0'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_inline_manual',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'InlineFunctionExpansion': '1'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_inline_auto',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'InlineFunctionExpansion': '2'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_neither',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'FavorSizeOrSpeed': '0'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_speed',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'FavorSizeOrSpeed': '1'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_size',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'FavorSizeOrSpeed': '2'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_wpo',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WholeProgramOptimization': 'true'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_sp',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'StringPooling': 'true'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_sp_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'StringPooling': 'false'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_fso',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFiberSafeOptimizations': 'true'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_opt_fso_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFiberSafeOptimizations': 'false'
- }
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_pdbname',
- 'type': 'executable',
- 'sources': [
- 'hello.cc',
- 'pdbname.cc',
- ],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- 'ProgramDataBaseFileName': '<(PRODUCT_DIR)/compiler_generated.pdb',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': '<(PRODUCT_DIR)/linker_generated.pdb',
- },
- },
- },
- ]
-}
+++ /dev/null
-// 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.
-
-int some_function() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_pdbname',
- 'type': 'executable',
- 'sources': [
- 'hello.cc',
- 'pdbname.cc',
- ],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- },
- },
- ]
-}
+++ /dev/null
-// Copyright 2013 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.
-
-#include <windows.h>
-#include <stdio.h>
+++ /dev/null
-// 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.
-
-#ifndef _CPPRTTI
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_rtti_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'RuntimeTypeInfo': 'false',
- 'WarnAsError': 'true'
- }
- },
- 'sources': ['rtti-on.cc'],
- },
- {
- 'target_name': 'test_rtti_on',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'RuntimeTypeInfo': 'true',
- 'WarnAsError': 'true'
- }
- },
- 'sources': ['rtti-on.cc'],
- },
- {
- 'target_name': 'test_rtti_unset',
- 'type': 'executable',
- 'msvs_settings': {
- },
- 'sources': ['rtti-on.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-#ifndef __MSVC_RUNTIME_CHECKS
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_brc_none',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'Optimization': '0',
- }
- },
- 'sources': ['runtime-checks.cc'],
- },
- {
- 'target_name': 'test_brc_1',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'Optimization': '0',
- 'BasicRuntimeChecks': '3'
- }
- },
- 'sources': ['runtime-checks.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-#ifndef _MT
-#error
-#endif
-
-#ifdef _DEBUG
-#error
-#endif
-
-#ifndef _DLL
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-#ifndef _MT
-#error
-#endif
-
-#ifndef _DEBUG
-#error
-#endif
-
-#ifndef _DLL
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-#ifndef _MT
-#error
-#endif
-
-#ifdef _DEBUG
-#error
-#endif
-
-#ifdef _DLL
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-#ifndef _MT
-#error
-#endif
-
-#ifndef _DEBUG
-#error
-#endif
-
-#ifdef _DLL
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_rl_md',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'RuntimeLibrary': '2'
- }
- },
- 'sources': ['runtime-library-md.cc'],
- },
- {
- 'target_name': 'test_rl_mdd',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'RuntimeLibrary': '3'
- }
- },
- 'sources': ['runtime-library-mdd.cc'],
- },
- {
- 'target_name': 'test_rl_mt',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'RuntimeLibrary': '0'
- }
- },
- 'sources': ['runtime-library-mt.cc'],
- },
- {
- 'target_name': 'test_rl_mtd',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'RuntimeLibrary': '1'
- }
- },
- 'sources': ['runtime-library-mtd.cc'],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2010 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_treat_wchar_t_as_built_in_type_negative',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'TreatWChar_tAsBuiltInType': 'false',
- },
- },
- 'sources': [
- 'treat-wchar-t-as-built-in-type1.cc',
- ],
- },
- {
- 'target_name': 'test_treat_wchar_t_as_built_in_type_positive',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'TreatWChar_tAsBuiltInType': 'true',
- },
- },
- 'sources': [
- 'treat-wchar-t-as-built-in-type2.cc',
- ],
- },
-
- ],
-}
+++ /dev/null
-// 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.
-
-#ifdef _NATIVE_WCHAR_T_DEFINED
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-#ifndef _NATIVE_WCHAR_T_DEFINED
-#error
-#endif
-
-int main() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-// Should trigger C6001: using uninitialized memory <variable> for |i|.
-int f(bool b) {
- int i;
- if (b)
- i = 0;
- return i;
-}
-
-int main() {}
+++ /dev/null
-// 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.
-
-int main() {
- // Cause a warning, even at /W1
- int export;
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_warn_as_error_false',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarnAsError': 'false'
- }
- },
- 'sources': ['warning-as-error.cc']
- },
- {
- 'target_name': 'test_warn_as_error_true',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarnAsError': 'true'
- }
- },
- 'sources': ['warning-as-error.cc']
- },
- {
- 'target_name': 'test_warn_as_error_unset',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- }
- },
- 'sources': ['warning-as-error.cc']
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Level 1
- {
- 'target_name': 'test_wl1_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '1',
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['warning-level1.cc'],
- },
- {
- 'target_name': 'test_wl1_pass',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '1',
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['warning-level2.cc'],
- },
-
- # Level 2
- {
- 'target_name': 'test_wl2_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '2',
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['warning-level2.cc'],
- },
- {
- 'target_name': 'test_wl2_pass',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '2',
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['warning-level3.cc'],
- },
-
- # Level 3
- {
- 'target_name': 'test_wl3_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '3',
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['warning-level3.cc'],
- },
- {
- 'target_name': 'test_wl3_pass',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '3',
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['warning-level4.cc'],
- },
-
-
- # Level 4
- {
- 'target_name': 'test_wl4_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '4',
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['warning-level4.cc'],
- },
-
- # Default level
- {
- 'target_name': 'test_def_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarnAsError': 'true',
- }
- },
- 'sources': ['warning-level1.cc'],
- },
- {
- 'target_name': 'test_def_pass',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- }
- },
- 'sources': ['warning-level2.cc'],
- },
-
- ]
-}
+++ /dev/null
-// 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.
-
-int main() {
- int export; // Cause a level 1 warning (C4237).
- return 0;
-}
+++ /dev/null
-// 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.
-
-int f(int x) {
- return 0;
-}
-
-int main() {
- double x = 10.1;
- // Cause a level 2 warning (C4243).
- return f(x);
- return 0;
-}
+++ /dev/null
-// 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.
-
-// Cause a level 3 warning (C4359).
-struct __declspec(align(8)) C8 { __int64 i; };
-struct __declspec(align(4)) C4 { C8 m8; };
-
-int main() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-int main() {
- const int i = -1;
- // Cause a level 4 warning (C4245).
- unsigned int j = i;
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#include <windows.h>
-#include <wrl.h>
-#include <wrl/wrappers/corewrappers.h>
-#include <windows.graphics.display.h>
-
-using namespace Microsoft::WRL;
-using namespace Microsoft::WRL::Wrappers;
-using namespace ABI::Windows::Foundation;
-using namespace ABI::Windows::Graphics::Display;
-
-bool TryToUseSomeWinRT() {
- ComPtr<IDisplayPropertiesStatics> dp;
- HStringReference s(RuntimeClass_Windows_Graphics_Display_DisplayProperties);
- HRESULT hr = GetActivationFactory(s.Get(), dp.GetAddressOf());
- if (SUCCEEDED(hr)) {
- float dpi = 96.0f;
- if (SUCCEEDED(dp->get_LogicalDpi(&dpi))) {
- return true;
- }
- }
- return false;
-}
-
-BOOL WINAPI DllMain(HINSTANCE hinstance, DWORD reason, LPVOID reserved) {
- return TRUE;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'enable_winrt_dll',
- 'type': 'shared_library',
- 'msvs_enable_winrt': 1,
- 'sources': [
- 'dllmain.cc',
- ],
- },
- {
- 'target_name': 'enable_winrt_missing_dll',
- 'type': 'shared_library',
- 'sources': [
- 'dllmain.cc',
- ],
- },
- {
- 'target_name': 'enable_winrt_winphone_dll',
- 'type': 'shared_library',
- 'msvs_enable_winrt': 1,
- 'msvs_enable_winphone': 1,
- 'sources': [
- 'dllmain.cc',
- ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'AdditionalDependencies': [
- '%(AdditionalDependencies)',
- ],
- },
- },
- },
- ]
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-"""
-Test that the generator output can be written to a different drive on Windows.
-"""
-
-import os
-import TestGyp
-import string
-import subprocess
-import sys
-
-
-if sys.platform == 'win32':
- import win32api
-
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- def GetFirstFreeDriveLetter():
- """ Returns the first unused Windows drive letter in [A, Z] """
- all_letters = [c for c in string.uppercase]
- in_use = win32api.GetLogicalDriveStrings()
- free = list(set(all_letters) - set(in_use))
- return free[0]
-
- output_dir = os.path.join('different-drive', 'output')
- if not os.path.isdir(os.path.abspath(output_dir)):
- os.makedirs(os.path.abspath(output_dir))
- output_drive = GetFirstFreeDriveLetter()
- subprocess.call(['subst', '%c:' % output_drive, os.path.abspath(output_dir)])
- try:
- test.run_gyp('prog.gyp', '--generator-output=%s' % (
- os.path.join(output_drive, 'output')))
- test.build('prog.gyp', test.ALL, chdir=os.path.join(output_drive, 'output'))
- test.built_file_must_exist('program', chdir=os.path.join(output_drive,
- 'output'),
- type=test.EXECUTABLE)
- test.pass_test()
- finally:
- subprocess.call(['subst', '%c:' % output_drive, '/D'])
+++ /dev/null
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <stdio.h>
-
-int main(void) {
- printf("Hello from prog.c\n");
- return 0;
-}
+++ /dev/null
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'targets': [
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [
- 'prog.c',
- ],
- },
- ],
-}
+++ /dev/null
-#!/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 .s files aren't passed to cl.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'asm-files'
- test.run_gyp('asm-files.gyp', chdir=CHDIR)
- # The compiler will error out if it's passed the .s files, so just make sure
- # the build succeeds. The compiler doesn't directly support building
- # assembler files on Windows, they have to be built explicitly with a
- # third-party tool.
- test.build('asm-files.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 additional include dirs are extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('additional-include-dirs.gyp', chdir=CHDIR)
- test.build('additional-include-dirs.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 additional manual compiler flags are extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('additional-options.gyp', chdir=CHDIR)
-
- # Warning level not overidden, must fail.
- test.build('additional-options.gyp', 'test_additional_none', chdir=CHDIR,
- status=1)
-
- # Warning level is overridden, must succeed.
- test.build('additional-options.gyp', 'test_additional_one', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 PREfast (code analysis) setting is extracted properly.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if (sys.platform == 'win32' and
- int(os.environ.get('GYP_MSVS_VERSION', 0)) >= 2012):
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('analysis.gyp', chdir=CHDIR)
-
- # Analysis enabled, should fail.
- test.build('analysis.gyp', 'test_analysis_on', chdir=CHDIR, status=1)
-
- # Analysis not enabled, or unspecified, should pass.
- test.build('analysis.gyp', 'test_analysis_off', chdir=CHDIR)
- test.build('analysis.gyp', 'test_analysis_unspec', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 buffer security check setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('buffer-security-check.gyp', chdir=CHDIR)
- test.build('buffer-security-check.gyp', chdir=CHDIR)
-
- def GetDisassemblyOfMain(exe):
- # The standard library uses buffer security checks independent of our
- # buffer security settings, so we extract just our code (i.e. main()) to
- # check against.
- full_path = test.built_file_path(exe, chdir=CHDIR)
- output = test.run_dumpbin('/disasm', full_path)
- result = []
- in_main = False
- for line in output.splitlines():
- if line == '_main:':
- in_main = True
- elif in_main:
- # Disassembly of next function starts.
- if line.startswith('_'):
- break
- result.append(line)
- return '\n'.join(result)
-
- # Buffer security checks are on by default, make sure security_cookie
- # appears in the disassembly of our code.
- if 'security_cookie' not in GetDisassemblyOfMain('test_bsc_unset.exe'):
- test.fail_test()
-
- # Explicitly on.
- if 'security_cookie' not in GetDisassemblyOfMain('test_bsc_on.exe'):
- test.fail_test()
-
- # Explicitly off, shouldn't be a reference to the security cookie.
- if 'security_cookie' in GetDisassemblyOfMain('test_bsc_off.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 calling convention setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('calling-convention.gyp', chdir=CHDIR)
- test.build('calling-convention.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 character set setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('character-set.gyp', chdir=CHDIR)
- test.build('character-set.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 debug format settings are extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('debug-format.gyp', chdir=CHDIR)
-
- # While there's ways to via .pdb contents, the .pdb doesn't include
- # which style the debug information was created from, so we resort to just
- # verifying the flags are correct on the command line.
-
- ninja_file = test.built_file_path('obj/test-debug-format-off.ninja',
- chdir=CHDIR)
- test.must_not_contain(ninja_file, '/Z7')
- test.must_not_contain(ninja_file, '/Zi')
- test.must_not_contain(ninja_file, '/ZI')
-
- ninja_file = test.built_file_path('obj/test-debug-format-oldstyle.ninja',
- chdir=CHDIR)
- test.must_contain(ninja_file, '/Z7')
-
- ninja_file = test.built_file_path('obj/test-debug-format-pdb.ninja',
- chdir=CHDIR)
- test.must_contain(ninja_file, '/Zi')
-
- ninja_file = test.built_file_path('obj/test-debug-format-editcontinue.ninja',
- chdir=CHDIR)
- test.must_contain(ninja_file, '/ZI')
-
- test.pass_test()
+++ /dev/null
-#!/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 DefaultCharIsUnsigned option is functional.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('default-char-is-unsigned.gyp', chdir=CHDIR)
- test.build('default-char-is-unsigned.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 disable specific warnings is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('disable-specific-warnings.gyp', chdir=CHDIR)
-
- # The source file contains a warning, so if WarnAsError is true and
- # DisableSpecificWarnings for the warning in question is set, then the build
- # should succeed, otherwise it must fail.
-
- test.build('disable-specific-warnings.gyp',
- 'test_disable_specific_warnings_set',
- chdir=CHDIR)
- test.build('disable-specific-warnings.gyp',
- 'test_disable_specific_warnings_unset',
- chdir=CHDIR, status=1)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Test VCCLCompilerTool EnableEnhancedInstructionSet setting.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp()
-
- CHDIR = 'compiler-flags'
- test.run_gyp('enable-enhanced-instruction-set.gyp', chdir=CHDIR)
-
- test.build('enable-enhanced-instruction-set.gyp', test.ALL, chdir=CHDIR)
-
- test.run_built_executable('sse_extensions', chdir=CHDIR,
- stdout='/arch:SSE\n')
- test.run_built_executable('sse2_extensions', chdir=CHDIR,
- stdout='/arch:SSE2\n')
-
- # /arch:AVX introduced in VS2010, but MSBuild support lagged until 2012.
- if os.path.exists(test.built_file_path('avx_extensions')):
- test.run_built_executable('avx_extensions', chdir=CHDIR,
- stdout='/arch:AVX\n')
-
- # /arch:IA32 introduced in VS2012.
- if os.path.exists(test.built_file_path('no_extensions')):
- test.run_built_executable('no_extensions', chdir=CHDIR,
- stdout='/arch:IA32\n')
-
- # /arch:AVX2 introduced in VS2013r2.
- if os.path.exists(test.built_file_path('avx2_extensions')):
- test.run_built_executable('avx2_extensions', chdir=CHDIR,
- stdout='/arch:AVX2\n')
-
- test.pass_test()
+++ /dev/null
-#!/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 exception handling settings are extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('exception-handling.gyp', chdir=CHDIR)
-
- # Must fail.
- test.build('exception-handling.gyp', 'test_eh_off', chdir=CHDIR,
- status=1)
-
- # Must succeed.
- test.build('exception-handling.gyp', 'test_eh_s', chdir=CHDIR)
- test.build('exception-handling.gyp', 'test_eh_a', chdir=CHDIR)
-
- # Error code must be 1 if EHa, and 2 if EHsc.
- test.run_built_executable('test_eh_a', chdir=CHDIR, status=1)
- test.run_built_executable('test_eh_s', chdir=CHDIR, status=2)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 floating point model settings are extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp()
-
- CHDIR = 'compiler-flags'
- test.run_gyp('floating-point-model.gyp', chdir=CHDIR)
- test.build('floating-point-model.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 ForcedIncludeFiles option is functional.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('force-include-files.gyp', chdir=CHDIR)
- test.build('force-include-files.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 function-level linking setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('function-level-linking.gyp', chdir=CHDIR)
- test.build('function-level-linking.gyp', test.ALL, chdir=CHDIR)
-
- def CheckForSectionString(binary, search_for, should_exist):
- output = test.run_dumpbin('/headers', binary)
- if should_exist and search_for not in output:
- print 'Did not find "%s" in %s' % (search_for, binary)
- test.fail_test()
- elif not should_exist and search_for in output:
- print 'Found "%s" in %s (and shouldn\'t have)' % (search_for, binary)
- test.fail_test()
-
- def Object(proj, obj):
- sep = '.' if test.format == 'ninja' else '\\'
- return 'obj\\%s%s%s' % (proj, sep, obj)
-
- look_for = '''COMDAT; sym= "int __cdecl comdat_function'''
-
- # When function level linking is on, the functions should be listed as
- # separate comdat entries.
-
- CheckForSectionString(
- test.built_file_path(Object('test_fll_on', 'function-level-linking.obj'),
- chdir=CHDIR),
- look_for,
- should_exist=True)
-
- CheckForSectionString(
- test.built_file_path(Object('test_fll_off', 'function-level-linking.obj'),
- chdir=CHDIR),
- look_for,
- should_exist=False)
-
- test.pass_test()
+++ /dev/null
-#!/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()
+++ /dev/null
-#!/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 pdb is named as expected (shared between .cc files).
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp()
-
- CHDIR = 'compiler-flags'
- test.run_gyp('pdbname-override.gyp', chdir=CHDIR)
- test.build('pdbname-override.gyp', test.ALL, chdir=CHDIR)
-
- # Confirm that the pdb generated by the compiler was renamed (and we also
- # have the linker generated one).
- test.built_file_must_exist('compiler_generated.pdb', chdir=CHDIR)
- test.built_file_must_exist('linker_generated.pdb', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 pdb is named as expected (shared between .cc files).
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('pdbname.gyp', chdir=CHDIR)
- test.build('pdbname.gyp', test.ALL, chdir=CHDIR)
-
- # Confirm that the default behaviour is to name the .pdb per-target (rather
- # than per .cc file).
- test.built_file_must_exist('obj/test_pdbname.cc.pdb', chdir=CHDIR)
-
- # Confirm that there should be a .pdb alongside the executable.
- test.built_file_must_exist('test_pdbname.exe', chdir=CHDIR)
- test.built_file_must_exist('test_pdbname.exe.pdb', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 RTTI setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('rtti.gyp', chdir=CHDIR)
-
- # Must fail.
- test.build('rtti.gyp', 'test_rtti_off', chdir=CHDIR, status=1)
-
- # Must succeed.
- test.build('rtti.gyp', 'test_rtti_on', chdir=CHDIR)
-
- # Must succeed.
- test.build('rtti.gyp', 'test_rtti_unset', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 RTC setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('runtime-checks.gyp', chdir=CHDIR)
-
- # Runtime checks disabled, should fail.
- test.build('runtime-checks.gyp', 'test_brc_none', chdir=CHDIR, status=1)
-
- # Runtime checks enabled, should pass.
- test.build('runtime-checks.gyp', 'test_brc_1', chdir=CHDIR)
-
- # TODO(scottmg): There are other less frequently used/partial options, but
- # it's not clear how to verify them, so ignore for now.
-
- test.pass_test()
+++ /dev/null
-#!/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 runtime C library setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('runtime-library.gyp', chdir=CHDIR)
- test.build('runtime-library.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 TreatWChar_tAsBuiltInType option is functional.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('treat-wchar-t-as-built-in-type.gyp', chdir=CHDIR)
- test.build('treat-wchar-t-as-built-in-type.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 warning-as-error is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('warning-as-error.gyp', chdir=CHDIR)
-
- # The source file contains a warning, so if WarnAsError is false (or
- # default, which is also false), then the build should succeed, otherwise it
- # must fail.
-
- test.build('warning-as-error.gyp', 'test_warn_as_error_false', chdir=CHDIR)
- test.build('warning-as-error.gyp', 'test_warn_as_error_unset', chdir=CHDIR)
- test.build('warning-as-error.gyp', 'test_warn_as_error_true', chdir=CHDIR,
- status=1)
-
- test.pass_test()
+++ /dev/null
-#!/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 warning level is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'compiler-flags'
- test.run_gyp('warning-level.gyp', chdir=CHDIR)
-
- # A separate target for each warning level: one pass (compiling a file
- # containing a warning that's above the specified level); and one fail
- # (compiling a file at the specified level). No pass for 4 of course,
- # because it would have to have no warnings. The default warning level is
- # equivalent to level 1.
-
- test.build('warning-level.gyp', 'test_wl1_fail', chdir=CHDIR, status=1)
- test.build('warning-level.gyp', 'test_wl1_pass', chdir=CHDIR)
-
- test.build('warning-level.gyp', 'test_wl2_fail', chdir=CHDIR, status=1)
- test.build('warning-level.gyp', 'test_wl2_pass', chdir=CHDIR)
-
- test.build('warning-level.gyp', 'test_wl3_fail', chdir=CHDIR, status=1)
- test.build('warning-level.gyp', 'test_wl3_pass', chdir=CHDIR)
-
- test.build('warning-level.gyp', 'test_wl4_fail', chdir=CHDIR, status=1)
-
- test.build('warning-level.gyp', 'test_def_fail', chdir=CHDIR, status=1)
- test.build('warning-level.gyp', 'test_def_pass', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 the program in a command can be a called batch file, or an
-application in the path. Specifically, this means not quoting something like
-"call x.bat", lest the shell look for a program named "call x.bat", rather
-than calling "x.bat".
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
- CHDIR = 'command-quote'
- test.run_gyp('command-quote.gyp', chdir=CHDIR)
-
- test.build('command-quote.gyp', 'test_batch', chdir=CHDIR)
- test.build('command-quote.gyp', 'test_call_separate', chdir=CHDIR)
- test.build('command-quote.gyp', 'test_with_double_quotes', chdir=CHDIR)
- test.build('command-quote.gyp', 'test_with_single_quotes', chdir=CHDIR)
-
- # We confirm that this fails because other generators don't handle spaces in
- # inputs so it's preferable to not have it work here.
- test.build('command-quote.gyp', 'test_with_spaces', chdir=CHDIR, status=1)
-
- CHDIR = 'command-quote/subdir/and/another'
- test.run_gyp('in-subdir.gyp', chdir=CHDIR)
- test.build('in-subdir.gyp', 'test_batch_depth', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 LTCG setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'lib-flags'
- test.run_gyp('ltcg.gyp', chdir=CHDIR)
- test.build('ltcg.gyp', test.ALL, chdir=CHDIR)
- test.must_not_contain_any_line(test.stdout(), ['restarting link with /LTCG'])
- test.pass_test()
+++ /dev/null
-#!/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 additional library dependencies are handled.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('additional-deps.gyp', chdir=CHDIR)
- test.build('additional-deps.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 additional options are handled.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('additional-options.gyp', chdir=CHDIR)
- test.build('additional-options.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 aslr setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('aslr.gyp', chdir=CHDIR)
- test.build('aslr.gyp', test.ALL, chdir=CHDIR)
-
- def HasDynamicBase(exe):
- full_path = test.built_file_path(exe, chdir=CHDIR)
- output = test.run_dumpbin('/headers', full_path)
- return ' Dynamic base' in output
-
- # Default is to be on.
- if not HasDynamicBase('test_aslr_default.exe'):
- test.fail_test()
- if HasDynamicBase('test_aslr_no.exe'):
- test.fail_test()
- if not HasDynamicBase('test_aslr_yes.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright 2013 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 the base address setting is extracted properly.
-"""
-
-import TestGyp
-
-import re
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('base-address.gyp', chdir=CHDIR)
- test.build('base-address.gyp', test.ALL, chdir=CHDIR)
-
- def GetHeaders(exe):
- full_path = test.built_file_path(exe, chdir=CHDIR)
- return test.run_dumpbin('/headers', full_path)
-
- # Extract the image base address from the headers output.
- image_base_reg_ex = re.compile(r'.*\s+([0-9]+) image base.*', re.DOTALL)
-
- exe_headers = GetHeaders('test_base_specified_exe.exe')
- exe_match = image_base_reg_ex.match(exe_headers)
-
- if not exe_match or not exe_match.group(1):
- test.fail_test()
- if exe_match.group(1) != '420000':
- test.fail_test()
-
- dll_headers = GetHeaders('test_base_specified_dll.dll')
- dll_match = image_base_reg_ex.match(dll_headers)
-
- if not dll_match or not dll_match.group(1):
- test.fail_test()
- if dll_match.group(1) != '10420000':
- test.fail_test()
-
- default_exe_headers = GetHeaders('test_base_default_exe.exe')
- default_exe_match = image_base_reg_ex.match(default_exe_headers)
-
- if not default_exe_match or not default_exe_match.group(1):
- test.fail_test()
- if default_exe_match.group(1) != '400000':
- test.fail_test()
-
- default_dll_headers = GetHeaders('test_base_default_dll.dll')
- default_dll_match = image_base_reg_ex.match(default_dll_headers)
-
- if not default_dll_match or not default_dll_match.group(1):
- test.fail_test()
- if default_dll_match.group(1) != '10000000':
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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 debug info setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('debug-info.gyp', chdir=CHDIR)
- test.build('debug-info.gyp', test.ALL, chdir=CHDIR)
-
- suffix = '.exe.pdb' if test.format == 'ninja' else '.pdb'
- test.built_file_must_not_exist('test_debug_off%s' % suffix, chdir=CHDIR)
- test.built_file_must_exist('test_debug_on%s' % suffix, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 we include the default libs.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('no-default-libs.gyp', chdir=CHDIR)
- test.build('no-default-libs.gyp', test.ALL, chdir=CHDIR, status=1)
-
- test.pass_test()
+++ /dev/null
-#!/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 a .def file is handled in the link.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
-
- # Multiple .def files doesn't make any sense, should fail at generate time.
- test.run_gyp('deffile-multiple.gyp', chdir=CHDIR, stderr=None, status=1)
-
- test.run_gyp('deffile.gyp', chdir=CHDIR)
- test.build('deffile.gyp', test.ALL, chdir=CHDIR)
-
- def HasExport(binary, export):
- full_path = test.built_file_path(binary, chdir=CHDIR)
- output = test.run_dumpbin('/exports', full_path)
- return export in output
-
- # Make sure we only have the export when the .def file is in use.
-
- if HasExport('test_deffile_dll_notexported.dll', 'AnExportedFunction'):
- test.fail_test()
- if not HasExport('test_deffile_dll_ok.dll', 'AnExportedFunction'):
- test.fail_test()
-
- if HasExport('test_deffile_exe_notexported.exe', 'AnExportedFunction'):
- test.fail_test()
- if not HasExport('test_deffile_exe_ok.exe', 'AnExportedFunction'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 a relink is performed when a .def file is touched.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- target = 'test_deffile_dll_ok'
- def_contents = test.read('linker-flags/deffile.def')
-
- # This first build makes sure everything is up to date.
- test.run_gyp('deffile.gyp', chdir=CHDIR)
- test.build('deffile.gyp', target, chdir=CHDIR)
- test.up_to_date('deffile.gyp', target, chdir=CHDIR)
-
- def HasExport(binary, export):
- full_path = test.built_file_path(binary, chdir=CHDIR)
- output = test.run_dumpbin('/exports', full_path)
- return export in output
-
- # Verify that only one function is exported.
- if not HasExport('test_deffile_dll_ok.dll', 'AnExportedFunction'):
- test.fail_test()
- if HasExport('test_deffile_dll_ok.dll', 'AnotherExportedFunction'):
- test.fail_test()
-
- # Add AnotherExportedFunction to the def file, then rebuild. If it doesn't
- # relink the DLL, then the subsequent check for AnotherExportedFunction will
- # fail.
- new_def_contents = def_contents + "\n AnotherExportedFunction"
- test.write('linker-flags/deffile.def', new_def_contents)
- test.build('deffile.gyp', target, chdir=CHDIR)
- test.up_to_date('deffile.gyp', target, chdir=CHDIR)
-
- if not HasExport('test_deffile_dll_ok.dll', 'AnExportedFunction'):
- test.fail_test()
- if not HasExport('test_deffile_dll_ok.dll', 'AnotherExportedFunction'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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 delay load setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('delay-load-dlls.gyp', chdir=CHDIR)
- test.build('delay-load-dlls.gyp', test.ALL, chdir=CHDIR)
-
- prefix = 'contains the following delay load imports:'
- shell32_look_for = prefix + '\r\n\r\n SHELL32.dll'
-
- output = test.run_dumpbin(
- '/all', test.built_file_path('test_dld_none.exe', chdir=CHDIR))
- if prefix in output:
- test.fail_test()
-
- output = test.run_dumpbin(
- '/all', test.built_file_path('test_dld_shell32.exe', chdir=CHDIR))
- if shell32_look_for not in output:
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 Yandex LLC. 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 manifests are embedded in binaries properly. Handling of
-AdditionalManifestFiles is tested too.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- import pywintypes
- import win32api
- import winerror
-
- RT_MANIFEST = 24
-
- class LoadLibrary(object):
- """Context manager for loading and releasing binaries in Windows.
- Yields the handle of the binary loaded."""
- def __init__(self, path):
- self._path = path
- self._handle = None
-
- def __enter__(self):
- self._handle = win32api.LoadLibrary(self._path)
- return self._handle
-
- def __exit__(self, type, value, traceback):
- win32api.FreeLibrary(self._handle)
-
-
- def extract_manifest(path, resource_name):
- """Reads manifest from |path| and returns it as a string.
- Returns None is there is no such manifest."""
- with LoadLibrary(path) as handle:
- try:
- return win32api.LoadResource(handle, RT_MANIFEST, resource_name)
- except pywintypes.error as error:
- if error.args[0] == winerror.ERROR_RESOURCE_DATA_NOT_FOUND:
- return None
- else:
- raise
-
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
- CHDIR = 'linker-flags'
- test.run_gyp('embed-manifest.gyp', chdir=CHDIR)
- test.build('embed-manifest.gyp', test.ALL, chdir=CHDIR)
-
- # The following binaries must contain a manifest embedded.
- test.fail_test(not extract_manifest(test.built_file_path(
- 'test_manifest_exe.exe', chdir=CHDIR), 1))
- test.fail_test(not extract_manifest(test.built_file_path(
- 'test_manifest_exe_inc.exe', chdir=CHDIR), 1))
- test.fail_test(not extract_manifest(test.built_file_path(
- 'test_manifest_dll.dll', chdir=CHDIR), 2))
- test.fail_test(not extract_manifest(test.built_file_path(
- 'test_manifest_dll_inc.dll', chdir=CHDIR), 2))
-
- # Must contain the Win7 support GUID, but not the Vista one (from
- # extra2.manifest).
- test.fail_test(
- '35138b9a-5d96-4fbd-8e2d-a2440225f93a' not in
- extract_manifest(test.built_file_path('test_manifest_extra1.exe',
- chdir=CHDIR), 1))
- test.fail_test(
- 'e2011457-1546-43c5-a5fe-008deee3d3f0' in
- extract_manifest(test.built_file_path('test_manifest_extra1.exe',
- chdir=CHDIR), 1))
- # Must contain both.
- test.fail_test(
- '35138b9a-5d96-4fbd-8e2d-a2440225f93a' not in
- extract_manifest(test.built_file_path('test_manifest_extra2.exe',
- chdir=CHDIR), 1))
- test.fail_test(
- 'e2011457-1546-43c5-a5fe-008deee3d3f0' not in
- extract_manifest(test.built_file_path('test_manifest_extra2.exe',
- chdir=CHDIR), 1))
-
- # Same as extra2, but using list syntax instead.
- test.fail_test(
- '35138b9a-5d96-4fbd-8e2d-a2440225f93a' not in
- extract_manifest(test.built_file_path('test_manifest_extra_list.exe',
- chdir=CHDIR), 1))
- test.fail_test(
- 'e2011457-1546-43c5-a5fe-008deee3d3f0' not in
- extract_manifest(test.built_file_path('test_manifest_extra_list.exe',
- chdir=CHDIR), 1))
-
- # Test that incremental linking doesn't force manifest embedding.
- test.fail_test(extract_manifest(test.built_file_path(
- 'test_manifest_exe_inc_no_embed.exe', chdir=CHDIR), 1))
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright 2013 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.
-
-"""
-Verifies that embedding UAC information into the manifest works.
-"""
-
-import TestGyp
-
-import sys
-from xml.dom.minidom import parseString
-
-if sys.platform == 'win32':
- import pywintypes
- import win32api
- import winerror
-
- RT_MANIFEST = 24
-
- class LoadLibrary(object):
- """Context manager for loading and releasing binaries in Windows.
- Yields the handle of the binary loaded."""
- def __init__(self, path):
- self._path = path
- self._handle = None
-
- def __enter__(self):
- self._handle = win32api.LoadLibrary(self._path)
- return self._handle
-
- def __exit__(self, type, value, traceback):
- win32api.FreeLibrary(self._handle)
-
-
- def extract_manifest(path, resource_name):
- """Reads manifest from |path| and returns it as a string.
- Returns None is there is no such manifest."""
- with LoadLibrary(path) as handle:
- try:
- return win32api.LoadResource(handle, RT_MANIFEST, resource_name)
- except pywintypes.error as error:
- if error.args[0] == winerror.ERROR_RESOURCE_DATA_NOT_FOUND:
- return None
- else:
- raise
-
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
- CHDIR = 'linker-flags'
- test.run_gyp('enable-uac.gyp', chdir=CHDIR)
- test.build('enable-uac.gyp', test.ALL, chdir=CHDIR)
-
- # The following binaries must contain a manifest embedded.
- test.fail_test(not extract_manifest(test.built_file_path(
- 'enable_uac.exe', chdir=CHDIR), 1))
- test.fail_test(not extract_manifest(test.built_file_path(
- 'enable_uac_no.exe', chdir=CHDIR), 1))
- test.fail_test(not extract_manifest(test.built_file_path(
- 'enable_uac_admin.exe', chdir=CHDIR), 1))
-
- # Verify that <requestedExecutionLevel level="asInvoker" uiAccess="false" />
- # is present.
- manifest = parseString(extract_manifest(
- test.built_file_path('enable_uac.exe', chdir=CHDIR), 1))
- execution_level = manifest.getElementsByTagName('requestedExecutionLevel')
- test.fail_test(len(execution_level) != 1)
- execution_level = execution_level[0].attributes
- test.fail_test(not (
- execution_level.has_key('level') and
- execution_level.has_key('uiAccess') and
- execution_level['level'].nodeValue == 'asInvoker' and
- execution_level['uiAccess'].nodeValue == 'false'))
-
- # Verify that <requestedExecutionLevel> is not in the menifest.
- manifest = parseString(extract_manifest(
- test.built_file_path('enable_uac_no.exe', chdir=CHDIR), 1))
- execution_level = manifest.getElementsByTagName('requestedExecutionLevel')
- test.fail_test(len(execution_level) != 0)
-
- # Verify that <requestedExecutionLevel level="requireAdministrator"
- # uiAccess="true" /> is present.
- manifest = parseString(extract_manifest(
- test.built_file_path('enable_uac_admin.exe', chdir=CHDIR), 1))
- execution_level = manifest.getElementsByTagName('requestedExecutionLevel')
- test.fail_test(len(execution_level) != 1)
- execution_level = execution_level[0].attributes
- test.fail_test(not (
- execution_level.has_key('level') and
- execution_level.has_key('uiAccess') and
- execution_level['level'].nodeValue == 'requireAdministrator' and
- execution_level['uiAccess'].nodeValue == 'true'))
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 msvs_enable_winrt works correctly.
-"""
-
-import TestGyp
-
-import os
-import sys
-import struct
-
-CHDIR = 'enable-winrt'
-
-print 'This test is not currently working on the bots: https://code.google.com/p/gyp/issues/detail?id=466'
-sys.exit(0)
-
-if (sys.platform == 'win32' and
- int(os.environ.get('GYP_MSVS_VERSION', 0)) >= 2013):
- test = TestGyp.TestGyp(formats=['msvs'])
-
- test.run_gyp('enable-winrt.gyp', chdir=CHDIR)
-
- test.build('enable-winrt.gyp', 'enable_winrt_dll', chdir=CHDIR)
-
- test.build('enable-winrt.gyp', 'enable_winrt_missing_dll', chdir=CHDIR,
- status=1)
-
- test.build('enable-winrt.gyp', 'enable_winrt_winphone_dll', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 entrypointsymbol setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('entrypointsymbol.gyp', chdir=CHDIR)
-
- test.build('entrypointsymbol.gyp', 'test_ok', chdir=CHDIR)
- test.build('entrypointsymbol.gyp', 'test_fail', chdir=CHDIR, status=1)
-
- test.pass_test()
+++ /dev/null
-#!/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 fixed base setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('fixed-base.gyp', chdir=CHDIR)
- test.build('fixed-base.gyp', test.ALL, chdir=CHDIR)
-
- def GetHeaders(exe):
- full_path = test.built_file_path(exe, chdir=CHDIR)
- return test.run_dumpbin('/headers', full_path)
-
- # For exe, default is fixed, for dll, it's not fixed.
- if 'Relocations stripped' not in GetHeaders('test_fixed_default_exe.exe'):
- test.fail_test()
- if 'Relocations stripped' in GetHeaders('test_fixed_default_dll.dll'):
- test.fail_test()
-
- # Explicitly not fixed.
- if 'Relocations stripped' in GetHeaders('test_fixed_no.exe'):
- test.fail_test()
-
- # Explicitly fixed.
- if 'Relocations stripped' not in GetHeaders('test_fixed_yes.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 ForceSymbolReference is translated properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('force-symbol-reference.gyp', chdir=CHDIR)
- test.build('force-symbol-reference.gyp', test.ALL, chdir=CHDIR)
-
- output = test.run_dumpbin(
- '/disasm', test.built_file_path('test_force_reference.exe', chdir=CHDIR))
- if '?x@@YAHXZ:' not in output or '?y@@YAHXZ:' not in output:
- test.fail_test()
- test.pass_test()
+++ /dev/null
-#!/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 we generate a manifest file when linking binaries, including
-handling AdditionalManifestFiles.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- import pywintypes
- import win32api
- import winerror
-
- RT_MANIFEST = 24
-
- class LoadLibrary(object):
- """Context manager for loading and releasing binaries in Windows.
- Yields the handle of the binary loaded."""
- def __init__(self, path):
- self._path = path
- self._handle = None
-
- def __enter__(self):
- self._handle = win32api.LoadLibrary(self._path)
- return self._handle
-
- def __exit__(self, type, value, traceback):
- win32api.FreeLibrary(self._handle)
-
- def extract_manifest(path, resource_name):
- """Reads manifest from |path| and returns it as a string.
- Returns None is there is no such manifest."""
- with LoadLibrary(path) as handle:
- try:
- return win32api.LoadResource(handle, RT_MANIFEST, resource_name)
- except pywintypes.error as error:
- if error.args[0] == winerror.ERROR_RESOURCE_DATA_NOT_FOUND:
- return None
- else:
- raise
-
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('generate-manifest.gyp', chdir=CHDIR)
- test.build('generate-manifest.gyp', test.ALL, chdir=CHDIR)
-
- # Make sure that generation of .generated.manifest does not cause a relink.
- test.run_gyp('generate-manifest.gyp', chdir=CHDIR)
- test.up_to_date('generate-manifest.gyp', test.ALL, chdir=CHDIR)
-
- def test_manifest(filename, generate_manifest, embedded_manifest,
- extra_manifest):
- exe_file = test.built_file_path(filename, chdir=CHDIR)
- if not generate_manifest:
- test.must_not_exist(exe_file + '.manifest')
- manifest = extract_manifest(exe_file, 1)
- test.fail_test(manifest)
- return
- if embedded_manifest:
- manifest = extract_manifest(exe_file, 1)
- test.fail_test(not manifest)
- else:
- test.must_exist(exe_file + '.manifest')
- manifest = test.read(exe_file + '.manifest')
- test.fail_test(not manifest)
- test.fail_test(extract_manifest(exe_file, 1))
- if generate_manifest:
- test.must_contain_any_line(manifest, 'requestedExecutionLevel')
- if extra_manifest:
- test.must_contain_any_line(manifest,
- '35138b9a-5d96-4fbd-8e2d-a2440225f93a')
- test.must_contain_any_line(manifest,
- 'e2011457-1546-43c5-a5fe-008deee3d3f0')
-
- test_manifest('test_generate_manifest_true.exe',
- generate_manifest=True,
- embedded_manifest=False,
- extra_manifest=False)
- test_manifest('test_generate_manifest_false.exe',
- generate_manifest=False,
- embedded_manifest=False,
- extra_manifest=False)
- test_manifest('test_generate_manifest_default.exe',
- generate_manifest=True,
- embedded_manifest=False,
- extra_manifest=False)
- test_manifest('test_generate_manifest_true_as_embedded.exe',
- generate_manifest=True,
- embedded_manifest=True,
- extra_manifest=False)
- test_manifest('test_generate_manifest_false_as_embedded.exe',
- generate_manifest=False,
- embedded_manifest=True,
- extra_manifest=False)
- test_manifest('test_generate_manifest_default_as_embedded.exe',
- generate_manifest=True,
- embedded_manifest=True,
- extra_manifest=False)
- test_manifest('test_generate_manifest_true_with_extra_manifest.exe',
- generate_manifest=True,
- embedded_manifest=False,
- extra_manifest=True)
- test_manifest('test_generate_manifest_false_with_extra_manifest.exe',
- generate_manifest=False,
- embedded_manifest=False,
- extra_manifest=True)
- test_manifest('test_generate_manifest_true_with_extra_manifest_list.exe',
- generate_manifest=True,
- embedded_manifest=False,
- extra_manifest=True)
- test_manifest('test_generate_manifest_false_with_extra_manifest_list.exe',
- generate_manifest=False,
- embedded_manifest=False,
- extra_manifest=True)
- test_manifest('test_generate_manifest_default_embed_default.exe',
- generate_manifest=True,
- embedded_manifest=True,
- extra_manifest=False)
- test.pass_test()
+++ /dev/null
-#!/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 incremental linking setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('incremental.gyp', chdir=CHDIR)
- test.build('incremental.gyp', test.ALL, chdir=CHDIR)
-
- def HasILTTables(exe):
- full_path = test.built_file_path(exe, chdir=CHDIR)
- output = test.run_dumpbin('/disasm', full_path)
- return '@ILT+' in output
-
- # Default or unset is to be on.
- if not HasILTTables('test_incremental_unset.exe'):
- test.fail_test()
- if not HasILTTables('test_incremental_default.exe'):
- test.fail_test()
- if HasILTTables('test_incremental_no.exe'):
- test.fail_test()
- if not HasILTTables('test_incremental_yes.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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 largeaddressaware setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('large-address-aware.gyp', chdir=CHDIR)
- test.build('large-address-aware.gyp', test.ALL, chdir=CHDIR)
-
- def GetHeaders(exe):
- return test.run_dumpbin('/headers', test.built_file_path(exe, chdir=CHDIR))
-
- MARKER = 'Application can handle large (>2GB) addresses'
-
- # Explicitly off.
- if MARKER in GetHeaders('test_large_address_aware_no.exe'):
- test.fail_test()
-
- # Explicitly on.
- if MARKER not in GetHeaders('test_large_address_aware_yes.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 msvs_large_pdb works correctly.
-"""
-
-import TestGyp
-
-import struct
-import sys
-
-
-CHDIR = 'large-pdb'
-
-
-def CheckImageAndPdb(test, image_basename, expected_page_size,
- pdb_basename=None):
- if not pdb_basename:
- pdb_basename = image_basename + '.pdb'
- test.built_file_must_exist(image_basename, chdir=CHDIR)
- test.built_file_must_exist(pdb_basename, chdir=CHDIR)
-
- # We expect the PDB to have the given page size. For full details of the
- # header look here: https://code.google.com/p/pdbparser/wiki/MSF_Format
- # We read the little-endian 4-byte unsigned integer at position 32 of the
- # file.
- pdb_path = test.built_file_path(pdb_basename, chdir=CHDIR)
- pdb_file = open(pdb_path, 'rb')
- pdb_file.seek(32, 0)
- page_size = struct.unpack('<I', pdb_file.read(4))[0]
- if page_size != expected_page_size:
- print "Expected page size of %d, got %d for PDB file `%s'." % (
- expected_page_size, page_size, pdb_path)
-
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- test.run_gyp('large-pdb.gyp', chdir=CHDIR)
-
- test.build('large-pdb.gyp', 'large_pdb_exe', chdir=CHDIR)
- CheckImageAndPdb(test, 'large_pdb_exe.exe', 4096)
-
- test.build('large-pdb.gyp', 'small_pdb_exe', chdir=CHDIR)
- CheckImageAndPdb(test, 'small_pdb_exe.exe', 1024)
-
- test.build('large-pdb.gyp', 'large_pdb_dll', chdir=CHDIR)
- CheckImageAndPdb(test, 'large_pdb_dll.dll', 4096)
-
- test.build('large-pdb.gyp', 'small_pdb_dll', chdir=CHDIR)
- CheckImageAndPdb(test, 'small_pdb_dll.dll', 1024)
-
- test.build('large-pdb.gyp', 'large_pdb_implicit_exe', chdir=CHDIR)
- CheckImageAndPdb(test, 'large_pdb_implicit_exe.exe', 4096)
-
- # This target has a different PDB name because it uses an
- # 'msvs_large_pdb_path' variable.
- test.build('large-pdb.gyp', 'large_pdb_variable_exe', chdir=CHDIR)
- CheckImageAndPdb(test, 'large_pdb_variable_exe.exe', 4096,
- pdb_basename='foo.pdb')
-
- # This target has a different output name because it uses 'product_name'.
- test.build('large-pdb.gyp', 'large_pdb_product_exe', chdir=CHDIR)
- CheckImageAndPdb(test, 'bar.exe', 4096)
-
- test.pass_test()
+++ /dev/null
-#!/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 link_settings containing -lblah.lib is remapped to just blah.lib.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('library-adjust.gyp', chdir=CHDIR)
- test.build('library-adjust.gyp', test.ALL, chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/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 libpath is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
-
- # Build subdirectory library.
- test.run_gyp('subdir/library.gyp', chdir=CHDIR)
- test.build('subdir/library.gyp', test.ALL, chdir=CHDIR)
-
- # And then try to link the main project against the library using only
- # LIBPATH to find it.
- test.run_gyp('library-directories.gyp', chdir=CHDIR)
-
- # Without additional paths specified, should fail.
- test.build('library-directories.gyp', 'test_libdirs_none', chdir=CHDIR,
- status=1)
-
- # With the additional library directory, should pass.
- test.build('library-directories.gyp', 'test_libdirs_with', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 LTCG is working properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('ltcg.gyp', chdir=CHDIR)
-
- # Here we expect LTCG is able to inline functions beyond compile unit.
- # Note: This marker is embedded in 'inline_test_main.cc'
- INLINE_MARKER = '==== inlined ===='
-
- # test 'LinkTimeCodeGenerationOptionDefault'
- test.build('ltcg.gyp', 'test_ltcg_off', chdir=CHDIR)
- test.run_built_executable('test_ltcg_off', chdir=CHDIR)
- test.must_not_contain_any_line(test.stdout(), [INLINE_MARKER])
-
- # test 'LinkTimeCodeGenerationOptionUse'
- test.build('ltcg.gyp', 'test_ltcg_on', chdir=CHDIR)
- test.must_contain_any_line(test.stdout(), ['Generating code'])
- test.run_built_executable('test_ltcg_on', chdir=CHDIR)
- test.must_contain_any_line(test.stdout(), [INLINE_MARKER])
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 mapfile settings are extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('mapfile.gyp', chdir=CHDIR)
- test.build('mapfile.gyp', test.ALL, chdir=CHDIR)
-
- map_file = test.built_file_path('test_mapfile_unset.map', chdir=CHDIR)
- test.must_not_exist(map_file)
-
- map_file = test.built_file_path('test_mapfile_generate.map', chdir=CHDIR)
- test.must_exist(map_file)
- test.must_contain(map_file, '?AnExportedFunction@@YAXXZ')
- test.must_not_contain(map_file, 'void __cdecl AnExportedFunction(void)')
-
- map_file = test.built_file_path('test_mapfile_generate_exports.map',
- chdir=CHDIR)
- test.must_exist(map_file)
- test.must_contain(map_file, 'void __cdecl AnExportedFunction(void)')
-
- map_file = test.built_file_path('test_mapfile_generate_filename.map',
- chdir=CHDIR)
- test.must_not_exist(map_file)
-
- map_file = test.built_file_path('custom_file_name.map', chdir=CHDIR)
- test.must_exist(map_file)
- test.must_contain(map_file, '?AnExportedFunction@@YAXXZ')
- test.must_not_contain(map_file, 'void __cdecl AnExportedFunction(void)')
-
- test.pass_test()
+++ /dev/null
-#!/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 nodefaultlib setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('nodefaultlib.gyp', chdir=CHDIR)
-
- test.build('nodefaultlib.gyp', 'test_ok', chdir=CHDIR)
- test.build('nodefaultlib.gyp', 'test_fail', chdir=CHDIR, status=1)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2015 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 that the (custom) NoImportLibrary flag is handled correctly.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- CHDIR = 'importlib'
- test.run_gyp('noimplib.gyp', chdir=CHDIR)
- test.build('noimplib.gyp', test.ALL, chdir=CHDIR)
-
- # The target has an entry point, but no exports. Ordinarily, ninja expects
- # all DLLs to export some symbols (with the exception of /NOENTRY resource-
- # only DLLs). When the NoImportLibrary flag is set, this is suppressed. If
- # this is not working correctly, the expected .lib will never be generated
- # but will be expected, so the build will not be up to date.
- test.up_to_date('noimplib.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 nxcompat setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('nxcompat.gyp', chdir=CHDIR)
- test.build('nxcompat.gyp', test.ALL, chdir=CHDIR)
-
- def GetHeaders(exe):
- return test.run_dumpbin('/headers', test.built_file_path(exe, chdir=CHDIR))
-
- # NXCOMPAT is on by default.
- if 'NX compatible' not in GetHeaders('test_nxcompat_default.exe'):
- test.fail_test()
-
- # Explicitly off, should not be marked NX compatiable.
- if 'NX compatible' in GetHeaders('test_nxcompat_no.exe'):
- test.fail_test()
-
- # Explicitly on.
- if 'NX compatible' not in GetHeaders('test_nxcompat_yes.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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 comdat folding optimization setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('opt-icf.gyp', chdir=CHDIR)
- test.build('opt-icf.gyp', chdir=CHDIR)
-
- # We're specifying /DEBUG so the default is to not merge identical
- # functions, so all of the similar_functions should be preserved.
- output = test.run_dumpbin(
- '/disasm', test.built_file_path('test_opticf_default.exe', chdir=CHDIR))
- if output.count('similar_function') != 6: # 3 definitions, 3 calls.
- test.fail_test()
-
- # Explicitly off, all functions preserved seperately.
- output = test.run_dumpbin(
- '/disasm', test.built_file_path('test_opticf_no.exe', chdir=CHDIR))
- if output.count('similar_function') != 6: # 3 definitions, 3 calls.
- test.fail_test()
-
- # Explicitly on, all but one removed.
- output = test.run_dumpbin(
- '/disasm', test.built_file_path('test_opticf_yes.exe', chdir=CHDIR))
- if output.count('similar_function') != 4: # 1 definition, 3 calls.
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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 reference optimization setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('opt-ref.gyp', chdir=CHDIR)
- test.build('opt-ref.gyp', chdir=CHDIR)
-
- # We're specifying /DEBUG so the default is to not remove unused functions.
- output = test.run_dumpbin(
- '/disasm', test.built_file_path('test_optref_default.exe', chdir=CHDIR))
- if 'unused_function' not in output:
- test.fail_test()
-
- # Explicitly off, unused_function preserved.
- output = test.run_dumpbin(
- '/disasm', test.built_file_path('test_optref_no.exe', chdir=CHDIR))
- if 'unused_function' not in output:
- test.fail_test()
-
- # Explicitly on, should be removed.
- output = test.run_dumpbin(
- '/disasm', test.built_file_path('test_optref_yes.exe', chdir=CHDIR))
- if 'unused_function' in output:
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 the link order of object files is the same between msvs and ninja.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('link-ordering.gyp', chdir=CHDIR)
- test.build('link-ordering.gyp', test.ALL, chdir=CHDIR)
-
- def GetDisasm(exe):
- full_path = test.built_file_path(exe, chdir=CHDIR)
- # Get disassembly and drop int3 padding between functions.
- return '\n'.join(
- x for x in test.run_dumpbin('/disasm', full_path).splitlines()
- if 'CC' not in x)
-
- # This is the full dump that we expect. The source files in the .gyp match
- # this order which is what determines the ordering in the binary.
-
- expected_disasm_basic = '''
-_mainCRTStartup:
- 00401000: B8 05 00 00 00 mov eax,5
- 00401005: C3 ret
-?z@@YAHXZ:
- 00401010: B8 03 00 00 00 mov eax,3
- 00401015: C3 ret
-?x@@YAHXZ:
- 00401020: B8 01 00 00 00 mov eax,1
- 00401025: C3 ret
-?y@@YAHXZ:
- 00401030: B8 02 00 00 00 mov eax,2
- 00401035: C3 ret
-_main:
- 00401040: 33 C0 xor eax,eax
- 00401042: C3 ret
-'''
-
- if expected_disasm_basic not in GetDisasm('test_ordering_exe.exe'):
- print GetDisasm('test_ordering_exe.exe')
- test.fail_test()
-
- # Similar to above. The VS generator handles subdirectories differently.
-
- expected_disasm_subdirs = '''
-_mainCRTStartup:
- 00401000: B8 05 00 00 00 mov eax,5
- 00401005: C3 ret
-_main:
- 00401010: 33 C0 xor eax,eax
- 00401012: C3 ret
-?y@@YAHXZ:
- 00401020: B8 02 00 00 00 mov eax,2
- 00401025: C3 ret
-?z@@YAHXZ:
- 00401030: B8 03 00 00 00 mov eax,3
- 00401035: C3 ret
-'''
-
- if expected_disasm_subdirs not in GetDisasm('test_ordering_subdirs.exe'):
- print GetDisasm('test_ordering_subdirs.exe')
- test.fail_test()
-
- # Similar, but with directories mixed into folders (crt and main at the same
- # level, but with a subdir in the middle).
-
- expected_disasm_subdirs_mixed = '''
-_mainCRTStartup:
- 00401000: B8 05 00 00 00 mov eax,5
- 00401005: C3 ret
-?x@@YAHXZ:
- 00401010: B8 01 00 00 00 mov eax,1
- 00401015: C3 ret
-_main:
- 00401020: 33 C0 xor eax,eax
- 00401022: C3 ret
-?z@@YAHXZ:
- 00401030: B8 03 00 00 00 mov eax,3
- 00401035: C3 ret
-?y@@YAHXZ:
- 00401040: B8 02 00 00 00 mov eax,2
- 00401045: C3 ret
-'''
-
- if (expected_disasm_subdirs_mixed not in
- GetDisasm('test_ordering_subdirs_mixed.exe')):
- print GetDisasm('test_ordering_subdirs_mixed.exe')
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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 linker OutputFile setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('outputfile.gyp', chdir=CHDIR)
- test.build('outputfile.gyp', test.ALL, chdir=CHDIR)
-
- test.built_file_must_exist('blorp.exe', chdir=CHDIR)
- test.built_file_must_exist('blorp.dll', chdir=CHDIR)
- test.built_file_must_exist('subdir/blorp.exe', chdir=CHDIR)
- test.built_file_must_exist('blorp.lib', chdir=CHDIR)
- test.built_file_must_exist('subdir/blorp.lib', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Ensure that when debug information is not output, a pdb is not expected.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp()
- CHDIR = 'linker-flags'
- test.run_gyp('pdb-output.gyp', chdir=CHDIR)
- test.build('pdb-output.gyp', 'test_pdb_output_disabled', chdir=CHDIR)
- # Make sure that the build doesn't expect a PDB to be generated when there
- # will be none.
- test.up_to_date('pdb-output.gyp', 'test_pdb_output_disabled', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Ensure that ninja includes the .pdb as an output file from linking.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
- CHDIR = 'linker-flags'
- test.run_gyp('pdb-output.gyp', chdir=CHDIR)
- # Note, building the pdbs rather than ALL or gyp target.
- test.build('pdb-output.gyp', 'output_exe.pdb', chdir=CHDIR)
- test.build('pdb-output.gyp', 'output_dll.pdb', chdir=CHDIR)
-
- def FindFile(pdb):
- full_path = test.built_file_path(pdb, chdir=CHDIR)
- return os.path.isfile(full_path)
-
- if not FindFile('output_exe.pdb'):
- test.fail_test()
- if not FindFile('output_dll.pdb'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that the 'ProgramDatabaseFile' attribute in VCLinker is extracted
-properly.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
- CHDIR = 'linker-flags'
- test.run_gyp('program-database.gyp', chdir=CHDIR)
- test.build('program-database.gyp', test.ALL, chdir=CHDIR)
-
- def FindFile(pdb):
- full_path = test.built_file_path(pdb, chdir=CHDIR)
- return os.path.isfile(full_path)
-
- # Verify the specified PDB is created when ProgramDatabaseFile
- # is provided.
- if not FindFile('name_outdir.pdb'):
- test.fail_test()
- if not FindFile('name_proddir.pdb'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 PGO is working properly.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('pgo.gyp', chdir=CHDIR)
-
- def IsPGOAvailable():
- """Returns true if the Visual Studio available here supports PGO."""
- test.build('pgo.gyp', 'gen_linker_option', chdir=CHDIR)
- tmpfile = test.read(test.built_file_path('linker_options.txt', chdir=CHDIR))
- return any(line.find('PGOPTIMIZE') for line in tmpfile)
-
- # Test generated build files look fine.
- if test.format == 'ninja':
- ninja = test.built_file_path('obj/test_pgo_instrument.ninja', chdir=CHDIR)
- test.must_contain(ninja, '/LTCG:PGINSTRUMENT')
- test.must_contain(ninja, 'test_pgo.pgd')
- ninja = test.built_file_path('obj/test_pgo_optimize.ninja', chdir=CHDIR)
- test.must_contain(ninja, '/LTCG:PGOPTIMIZE')
- test.must_contain(ninja, 'test_pgo.pgd')
- ninja = test.built_file_path('obj/test_pgo_update.ninja', chdir=CHDIR)
- test.must_contain(ninja, '/LTCG:PGUPDATE')
- test.must_contain(ninja, 'test_pgo.pgd')
- elif test.format == 'msvs':
- LTCG_FORMAT = '<LinkTimeCodeGeneration>%s</LinkTimeCodeGeneration>'
- vcproj = test.workpath('linker-flags/test_pgo_instrument.vcxproj')
- test.must_contain(vcproj, LTCG_FORMAT % 'PGInstrument')
- test.must_contain(vcproj, 'test_pgo.pgd')
- vcproj = test.workpath('linker-flags/test_pgo_optimize.vcxproj')
- test.must_contain(vcproj, LTCG_FORMAT % 'PGOptimization')
- test.must_contain(vcproj, 'test_pgo.pgd')
- vcproj = test.workpath('linker-flags/test_pgo_update.vcxproj')
- test.must_contain(vcproj, LTCG_FORMAT % 'PGUpdate')
- test.must_contain(vcproj, 'test_pgo.pgd')
-
- # When PGO is available, try building binaries with PGO.
- if IsPGOAvailable():
- pgd_path = test.built_file_path('test_pgo.pgd', chdir=CHDIR)
-
- # Test if 'PGInstrument' generates PGD (Profile-Guided Database) file.
- if os.path.exists(pgd_path):
- test.unlink(pgd_path)
- test.must_not_exist(pgd_path)
- test.build('pgo.gyp', 'test_pgo_instrument', chdir=CHDIR)
- test.must_exist(pgd_path)
-
- # Test if 'PGOptimize' works well
- test.build('pgo.gyp', 'test_pgo_optimize', chdir=CHDIR)
- test.must_contain_any_line(test.stdout(), ['profiled functions'])
-
- # Test if 'PGUpdate' works well
- test.build('pgo.gyp', 'test_pgo_update', chdir=CHDIR)
- # With 'PGUpdate', linker should not complain that sources are changed after
- # the previous training run.
- test.touch(test.workpath('linker-flags/inline_test_main.cc'))
- test.unlink(test.built_file_path('test_pgo_update.exe', chdir=CHDIR))
- test.build('pgo.gyp', 'test_pgo_update', chdir=CHDIR)
- test.must_contain_any_line(test.stdout(), ['profiled functions'])
-
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Verifies that the 'Profile' attribute in VCLinker is extracted properly.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
- CHDIR = 'linker-flags'
- test.run_gyp('profile.gyp', chdir=CHDIR)
- test.build('profile.gyp', test.ALL, chdir=CHDIR)
-
- def GetSummary(exe):
- full_path = test.built_file_path(exe, chdir=CHDIR)
- return test.run_dumpbin(full_path)
-
- # '.idata' section will be missing when /PROFILE is enabled.
- if '.idata' in GetSummary('test_profile_true.exe'):
- test.fail_test()
-
- if not '.idata' in GetSummary('test_profile_false.exe'):
- test.fail_test()
-
- if not '.idata' in GetSummary('test_profile_default.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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 we don't cause unnecessary builds due to import libs appearing
-to be out of date.
-"""
-
-import TestGyp
-
-import os
-import sys
-import time
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- if not os.environ.get('ProgramFiles(x86)'):
- # TODO(scottmg)
- print 'Skipping test on x86, http://crbug.com/365833'
- test.pass_test()
-
- CHDIR = 'importlib'
- test.run_gyp('importlib.gyp', chdir=CHDIR)
- test.build('importlib.gyp', test.ALL, chdir=CHDIR)
-
- # Delay briefly so that there's time for this touch not to have the
- # timestamp as the previous run.
- test.sleep()
-
- # Touch the .cc file; the .dll will rebuild, but the import libs timestamp
- # won't be updated.
- test.touch('importlib/has-exports.cc')
- test.build('importlib.gyp', 'test_importlib', chdir=CHDIR)
-
- # This is the important part. The .dll above will relink and have an updated
- # timestamp, however the import .libs timestamp won't be updated. So, we
- # have to handle restating inputs in ninja so the final binary doesn't
- # continually relink (due to thinking the .lib isn't up to date).
- test.up_to_date('importlib.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 safeseh setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp()
-
- CHDIR = 'linker-flags'
- test.run_gyp('safeseh.gyp', chdir=CHDIR)
- test.build('safeseh.gyp', test.ALL, chdir=CHDIR)
-
- def HasSafeExceptionHandlers(exe):
- full_path = test.built_file_path(exe, chdir=CHDIR)
- output = test.run_dumpbin('/LOADCONFIG', full_path)
- return ' Safe Exception Handler Table' in output
-
- # From MSDN: http://msdn.microsoft.com/en-us/library/9a89h429.aspx
- # If /SAFESEH is not specified, the linker will produce an image with a
- # table of safe exceptions handlers if all modules are compatible with
- # the safe exception handling feature. If any modules were not
- # compatible with safe exception handling feature, the resulting image
- # will not contain a table of safe exception handlers.
- # However, the msvs IDE passes /SAFESEH to the linker by default, if
- # ImageHasSafeExceptionHandlers is not set to false in the vcxproj file.
- # We emulate this behavior in msvs_emulation.py, so 'test_safeseh_default'
- # and 'test_safeseh_yes' are built identically.
- if not HasSafeExceptionHandlers('test_safeseh_default.exe'):
- test.fail_test()
- if HasSafeExceptionHandlers('test_safeseh_no.exe'):
- test.fail_test()
- if not HasSafeExceptionHandlers('test_safeseh_yes.exe'):
- test.fail_test()
- if HasSafeExceptionHandlers('test_safeseh_x64.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 msvs_shard works correctly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'shard'
- test.run_gyp('shard.gyp', chdir=CHDIR)
- test.build('shard.gyp', test.ALL, chdir=CHDIR)
-
- test.built_file_must_exist('shard_0.lib', chdir=CHDIR)
- test.built_file_must_exist('shard_1.lib', chdir=CHDIR)
- test.built_file_must_exist('shard_2.lib', chdir=CHDIR)
- test.built_file_must_exist('shard_3.lib', chdir=CHDIR)
-
- test.run_gyp('shard_ref.gyp', chdir=CHDIR)
- test.build('shard_ref.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 subsystem setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('subsystem.gyp', chdir=CHDIR)
-
- test.build('subsystem.gyp', 'test_console_ok', chdir=CHDIR)
- test.build('subsystem.gyp', 'test_console_fail', chdir=CHDIR, status=1)
- test.build('subsystem.gyp', 'test_windows_ok', chdir=CHDIR)
- test.build('subsystem.gyp', 'test_windows_fail', chdir=CHDIR, status=1)
-
- test.build('subsystem.gyp', 'test_console_xp', chdir=CHDIR)
- test.build('subsystem.gyp', 'test_windows_xp', chdir=CHDIR)
- # Make sure we are targeting XP.
- def GetHeaders(exe):
- return test.run_dumpbin('/headers', test.built_file_path(exe, chdir=CHDIR))
- if '5.01 subsystem version' not in GetHeaders('test_console_xp.exe'):
- test.fail_test()
- if '5.01 subsystem version' not in GetHeaders('test_windows_xp.exe'):
- test.fail_test()
-
- # TODO(scottmg): There are other subsystems (WinCE, etc.) that we don't use.
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 TargetMachine setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('target-machine.gyp', chdir=CHDIR)
- # The .cc file is compiled as x86 (the default), so the link/libs that are
- # x64 need to fail.
- test.build('target-machine.gyp', 'test_target_link_x86', chdir=CHDIR)
- test.build(
- 'target-machine.gyp', 'test_target_link_x64', chdir=CHDIR, status=1)
- test.build('target-machine.gyp', 'test_target_lib_x86', chdir=CHDIR)
- test.build('target-machine.gyp', 'test_target_lib_x64', chdir=CHDIR, status=1)
-
- test.pass_test()
+++ /dev/null
-#!/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 tsaware setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('tsaware.gyp', chdir=CHDIR)
- test.build('tsaware.gyp', test.ALL, chdir=CHDIR)
-
- def GetHeaders(exe):
- return test.run_dumpbin('/headers', test.built_file_path(exe, chdir=CHDIR))
-
- # Explicitly off, should not be marked NX compatiable.
- if 'Terminal Server Aware' in GetHeaders('test_tsaware_no.exe'):
- test.fail_test()
-
- # Explicitly on.
- if 'Terminal Server Aware' not in GetHeaders('test_tsaware_yes.exe'):
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/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 that when ULDI is on, we link .objs that make up .libs rather than
-the .libs themselves.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'uldi'
- test.run_gyp('uldi.gyp', chdir=CHDIR)
- # When linking with ULDI, the duplicated function from the lib will be an
- # error.
- test.build('uldi.gyp', 'final_uldi', chdir=CHDIR, status=1)
- # And when in libs, the duplicated function will be silently dropped, so the
- # build succeeds.
- test.build('uldi.gyp', 'final_no_uldi', chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 we error out if #pragma comments are used to modify manifests.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- # This assertion only applies to the ninja build.
- test = TestGyp.TestGyp(formats=['ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('unsupported-manifest.gyp', chdir=CHDIR)
-
- # Just needs to fail to build.
- test.build('unsupported-manifest.gyp',
- 'test_unsupported', chdir=CHDIR, status=1)
- test.must_not_exist(test.built_file_path('test_unsupported.exe', chdir=CHDIR))
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 binary is relinked when manifest settings are changed.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'win32':
- import pywintypes
- import win32api
- import winerror
-
- RT_MANIFEST = 24
-
- class LoadLibrary(object):
- """Context manager for loading and releasing binaries in Windows.
- Yields the handle of the binary loaded."""
- def __init__(self, path):
- self._path = path
- self._handle = None
-
- def __enter__(self):
- self._handle = win32api.LoadLibrary(self._path)
- return self._handle
-
- def __exit__(self, type, value, traceback):
- win32api.FreeLibrary(self._handle)
-
- def extract_manifest(path, resource_name):
- """Reads manifest from |path| and returns it as a string.
- Returns None is there is no such manifest."""
- with LoadLibrary(path) as handle:
- try:
- return win32api.LoadResource(handle, RT_MANIFEST, resource_name)
- except pywintypes.error as error:
- if error.args[0] == winerror.ERROR_RESOURCE_DATA_NOT_FOUND:
- return None
- else:
- raise
-
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
-
- gyp_template = '''
-{
- 'targets': [
- {
- 'target_name': 'test_update_manifest',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'UACExecutionLevel': '%(uac_execution_level)d',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- 'AdditionalManifestFiles': '%(additional_manifest_files)s',
- },
- },
- },
- ],
-}
-'''
-
- gypfile = 'update-manifest.gyp'
-
- def WriteAndUpdate(uac_execution_level, additional_manifest_files, do_build):
- with open(os.path.join(CHDIR, gypfile), 'wb') as f:
- f.write(gyp_template % {
- 'uac_execution_level': uac_execution_level,
- 'additional_manifest_files': additional_manifest_files,
- })
- test.run_gyp(gypfile, chdir=CHDIR)
- if do_build:
- test.build(gypfile, chdir=CHDIR)
- exe_file = test.built_file_path('test_update_manifest.exe', chdir=CHDIR)
- return extract_manifest(exe_file, 1)
-
- manifest = WriteAndUpdate(0, '', True)
- test.fail_test('asInvoker' not in manifest)
- test.fail_test('35138b9a-5d96-4fbd-8e2d-a2440225f93a' in manifest)
-
- # Make sure that updating .gyp and regenerating doesn't cause a rebuild.
- WriteAndUpdate(0, '', False)
- test.up_to_date(gypfile, test.ALL, chdir=CHDIR)
-
- # But make sure that changing a manifest property does cause a relink.
- manifest = WriteAndUpdate(2, '', True)
- test.fail_test('requireAdministrator' not in manifest)
-
- # Adding a manifest causes a rebuild.
- manifest = WriteAndUpdate(2, 'extra.manifest', True)
- test.fail_test('35138b9a-5d96-4fbd-8e2d-a2440225f93a' not in manifest)
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 linker warnings-as-errors setting is extracted properly.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'linker-flags'
- test.run_gyp('warn-as-error.gyp', chdir=CHDIR)
-
- test.build('warn-as-error.gyp', 'test_on', chdir=CHDIR, status=1)
- test.build('warn-as-error.gyp', 'test_off', chdir=CHDIR)
- test.build('warn-as-error.gyp', 'test_default', chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/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 long command lines work.
-"""
-
-import TestGyp
-
-import subprocess
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja', 'msvs'])
-
- CHDIR = 'long-command-line'
- test.run_gyp('long-command-line.gyp', chdir=CHDIR)
- test.build('long-command-line.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 macro expansion of $(ProjectName) is handled.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'vs-macros'
- test.run_gyp('projectname.gyp', chdir=CHDIR)
- test.build('projectname.gyp', test.ALL, chdir=CHDIR)
- test.built_file_must_exist('test_expansions_plus_something.exe', chdir=CHDIR)
- test.built_file_must_exist(
- 'test_with_product_name_plus_something.exe', chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 macro expansion of $(TargetExt) is handled.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'vs-macros'
- test.run_gyp('targetext.gyp', chdir=CHDIR)
- test.build('targetext.gyp', test.ALL, chdir=CHDIR)
- test.built_file_must_exist('executable.exe', chdir=CHDIR)
- test.built_file_must_exist('loadable_module.dll', chdir=CHDIR)
- test.built_file_must_exist('shared_library.dll', chdir=CHDIR)
- test.built_file_must_exist('static_library.lib', chdir=CHDIR)
- test.built_file_must_exist('product_extension.library', chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 macro expansion of $(TargetFileName) is handled.
-"""
-
-import TestGyp
-
-import os
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
- if not (test.format == 'msvs' and
- int(os.environ.get('GYP_MSVS_VERSION', 0)) == 2013):
- CHDIR = 'vs-macros'
- test.run_gyp('targetfilename.gyp', chdir=CHDIR)
- test.build('targetfilename.gyp', test.ALL, chdir=CHDIR)
- test.built_file_must_exist('test_targetfilename_executable.exe', chdir=CHDIR)
- test.built_file_must_exist('test_targetfilename_loadable_module.dll',
- chdir=CHDIR)
- test.built_file_must_exist('test_targetfilename_shared_library.dll',
- chdir=CHDIR)
- test.built_file_must_exist('test_targetfilename_static_library.lib',
- chdir=CHDIR)
- test.built_file_must_exist('test_targetfilename_product_extension.foo',
- chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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 macro expansion of $(TargetName) and $(TargetDir) are handled.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'vs-macros'
- test.run_gyp('targetname.gyp', chdir=CHDIR)
- test.build('targetname.gyp', test.ALL, chdir=CHDIR)
- test.built_file_must_exist('test_targetname_plus_something1.exe',
- chdir=CHDIR)
- test.built_file_must_exist(
- 'prod_prefixtest_targetname_with_prefix_plus_something2.exe',
- chdir=CHDIR)
- test.built_file_must_exist('prod_name_plus_something3.exe', chdir=CHDIR)
- test.built_file_must_exist('prod_prefixprod_name_plus_something4.exe',
- chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 macro expansion of $(TargetPath) is handled.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'vs-macros'
- test.run_gyp('targetpath.gyp', chdir=CHDIR)
- test.build('targetpath.gyp', test.ALL, chdir=CHDIR)
- test.built_file_must_exist('test_targetpath_executable.exe', chdir=CHDIR)
- test.built_file_must_exist('test_targetpath_loadable_module.dll',
- chdir=CHDIR)
- test.built_file_must_exist('test_targetpath_shared_library.dll',
- chdir=CHDIR)
- test.built_file_must_exist('test_targetpath_static_library.lib',
- chdir=CHDIR)
- test.built_file_must_exist('test_targetpath_product_extension.foo',
- chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/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 macro expansion of $(VCInstallDir) is handled, and specifically
-always / terminated for compatibility.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'vs-macros'
- test.run_gyp('vcinstalldir.gyp', chdir=CHDIR)
- # This fails on VS because the trailing slash escapes the trailing quote.
- test.build('vcinstalldir.gyp', 'test_slash_trailing', chdir=CHDIR, status=1)
- test.build('vcinstalldir.gyp', 'test_slash_dir', chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Handle VS macro expansion containing gyp variables.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'vs-macros'
- test.run_gyp('containing-gyp.gyp', chdir=CHDIR)
- test.build('containing-gyp.gyp', test.ALL, chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Handle macro expansion in inputs and outputs of rules.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'vs-macros'
- test.run_gyp('input-output-macros.gyp', chdir=CHDIR)
-
- test.build('input-output-macros.gyp', 'test_expansions', chdir=CHDIR)
-
- test.built_file_must_exist('stuff.blah.something',
- content='Random data file.\nModified.',
- chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Test that .idl files in actions and non-native rules are excluded.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'idl-excluded'
- test.run_gyp('idl-excluded.gyp', chdir=CHDIR)
- test.build('idl-excluded.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Verify that 'midl_include_dirs' is handled.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'idl-includedirs'
- test.run_gyp('idl-includedirs.gyp', chdir=CHDIR)
- test.build('idl-includedirs.gyp', test.ALL, chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-#!/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.
-
-"""
-Handle default .idl build rules.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'idl-rules'
- test.run_gyp('basic-idl.gyp', chdir=CHDIR)
- for platform in ['Win32', 'x64']:
- test.set_configuration('Debug|%s' % platform)
- test.build('basic-idl.gyp', test.ALL, chdir=CHDIR)
-
- # Make sure ninja win_tool.py filters out noisy lines.
- if test.format == 'ninja' and 'Processing' in test.stdout():
- test.fail_test()
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 the /safeseh option can be passed to ml.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- CHDIR = 'ml-safeseh'
- test.run_gyp('ml-safeseh.gyp', chdir=CHDIR)
- test.build('ml-safeseh.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 batch files run as actions. Regression test for previously missing
-trailing quote on command line. cmd typically will implicitly insert a missing
-quote, but if the command ends in a quote, it will not insert another, so the
-command can sometimes become unterminated.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'batch-file-action'
- test.run_gyp('batch-file-action.gyp', chdir=CHDIR)
- test.build('batch-file-action.gyp', test.ALL, chdir=CHDIR)
-
- test.pass_test()
+++ /dev/null
-#!/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 we build and include .rc files.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'rc-build'
- test.run_gyp('hello.gyp', chdir=CHDIR)
- test.build('hello.gyp', test.ALL, chdir=CHDIR)
- test.up_to_date('hello.gyp', 'resource_only_dll', chdir=CHDIR)
- test.run_built_executable('with_resources', chdir=CHDIR, status=4)
-
- test.pass_test()
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-"""
-Checks that msvs_system_include_dirs works.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'])
-
- CHDIR = 'system-include'
- test.run_gyp('test.gyp', chdir=CHDIR)
- test.build('test.gyp', test.ALL, chdir=CHDIR)
- test.pass_test()
+++ /dev/null
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-This is a dummy .idl file that will trigger an error if it is not excluded from
-the build.
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2009 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.
-import sys
-
-contents = open(sys.argv[1], 'r').read()
-open(sys.argv[2], 'wb').write(contents)
-
-sys.exit(0)
+++ /dev/null
-# Copyright (c) 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'targets': [
- {
- 'target_name': 'exclude_with_action',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'actions': [{
- 'action_name': 'copy_action',
- 'inputs': [
- 'copy-file.py',
- 'bad.idl',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/bad.idl',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<@(_outputs)',
- ],
- }],
- },
- {
- 'target_name': 'exclude_with_rule',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'sources': [
- 'bad.idl',
- ],
- 'rules': [{
- 'rule_name': 'copy_rule',
- 'extension': 'idl',
- 'inputs': [
- 'copy-file.py',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).idl',
- ],
- 'action': [
- 'python', '<@(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)',
- ],
- }],
- },
- {
- 'target_name': 'program',
- 'type': 'executable',
- 'sources': [
- 'program.cc',
- ],
- 'dependencies': [
- 'exclude_with_action',
- 'exclude_with_rule',
- ],
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'targets': [
- {
- 'target_name': 'test_midl_include_dirs',
- 'type': 'executable',
- 'sources': [
- 'hello.cc',
- 'subdir/foo.idl',
- 'subdir/bar.idl',
- ],
- 'midl_include_dirs': [
- 'subdir',
- ],
- 'msvs_settings': {
- 'VCMIDLTool': {
- 'OutputDirectory': '<(INTERMEDIATE_DIR)',
- 'DLLDataFileName': '$(InputName)_dlldata.h',
- },
- },
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import "oaidl.idl";
-
-[
- object,
- uuid(A03D1421-B1EC-11D0-8C3A-00C04FC31D3F),
-]
-interface Bar : IUnknown {
- HRESULT BarFunction();
-};
+++ /dev/null
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import "oaidl.idl";
-import "bar.idl";
-
-[
- object,
- uuid(9C1100DD-51D4-4827-AE9F-3B8FAC4AED72),
-]
-interface Foo : IUnknown {
- HRESULT FooFunction(Bar* bar);
-};
+++ /dev/null
-// Copyright (c) 2014 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.
-
-[
- WillBeGarbageCollected,
-] interface Window {
- void alert();
-};
+++ /dev/null
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'variables': {
- 'midl_out_dir': '<(SHARED_INTERMEDIATE_DIR)',
- },
- 'target_defaults': {
- 'configurations': {
- 'Debug': {
- 'msvs_configuration_platform': 'Win32',
- },
- 'Debug_x64': {
- 'inherit_from': ['Debug'],
- 'msvs_configuration_platform': 'x64',
- },
- },
- },
- 'targets': [
- {
- 'target_name': 'idl_test',
- 'type': 'executable',
- 'sources': [
- 'history_indexer.idl',
- '<(midl_out_dir)/history_indexer.h',
- '<(midl_out_dir)/history_indexer_i.c',
- 'history_indexer_user.cc',
- ],
- 'libraries': ['ole32.lib'],
- 'include_dirs': [
- '<(midl_out_dir)',
- ],
- 'msvs_settings': {
- 'VCMIDLTool': {
- 'OutputDirectory': '<(midl_out_dir)',
- 'HeaderFileName': '<(RULE_INPUT_ROOT).h',
- },
- },
- },
- {
- 'target_name': 'idl_explicit_action',
- 'type': 'none',
- 'sources': [
- 'Window.idl',
- ],
- 'actions': [{
- 'action_name': 'blink_idl',
- 'explicit_idl_action': 1,
- 'msvs_cygwin_shell': 0,
- 'inputs': [
- 'Window.idl',
- 'idl_compiler.py',
- ],
- 'outputs': [
- 'Window.cpp',
- 'Window.h',
- ],
- 'action': [
- 'python',
- 'idl_compiler.py',
- 'Window.idl',
- ],
- }],
- },
- ],
-}
+++ /dev/null
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import "oaidl.idl";
-import "ocidl.idl";
-
-[
- object,
- uuid(9C1100DD-51D4-4827-AE9F-3B8FAC4AED72),
- oleautomation,
- nonextensible,
- pointer_default(unique)
-]
-interface IChromeHistoryIndexer : IUnknown {
- HRESULT SomeFunction([in] VARIANT begin_time, [in] VARIANT end_time);
-};
+++ /dev/null
-// 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.
-
-#include "history_indexer.h"
-
-// Use the thing in the IDL.
-int main() {
- IChromeHistoryIndexer** indexer = 0;
- IID fake_iid;
- CoCreateInstance(fake_iid, NULL, CLSCTX_INPROC,
- __uuidof(IChromeHistoryIndexer),
- reinterpret_cast<void**>(indexer));
- return 0;
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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.
-
-# mock, just outputs empty .h/.cpp files
-
-import os
-import sys
-
-if len(sys.argv) == 2:
- basename, ext = os.path.splitext(sys.argv[1])
- with open('%s.h' % basename, 'w') as f:
- f.write('// %s.h\n' % basename)
- with open('%s.cpp' % basename, 'w') as f:
- f.write('// %s.cpp\n' % basename)
+++ /dev/null
-// Copyright (c) 2015 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.
-
-#include <windows.h>
-
-BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID reserved) {
- return TRUE;
-}
+++ /dev/null
-// 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.
-
-__declspec(dllexport) void some_function() {
-}
-
-int main() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-__declspec(dllimport) void some_function();
-
-int main() {
- some_function();
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_importlib',
- 'type': 'shared_library',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '2',
- }
- },
- 'sources': ['has-exports.cc'],
- },
-
- {
- 'target_name': 'test_linkagainst',
- 'type': 'executable',
- 'dependencies': ['test_importlib'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '2',
- }
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2015 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.
-
-{
- 'targets': [
- {
- 'target_name': 'no_import_library',
- 'type': 'loadable_module',
- 'msvs_settings': {
- 'NoImportLibrary': 'true',
- },
- 'sources': ['dll_no_exports.cc'],
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#include <windows.h>
-
-BOOL WINAPI DllMain(HINSTANCE hinstance, DWORD reason, LPVOID reserved) {
- return TRUE;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'large_pdb_exe',
- 'type': 'executable',
- 'msvs_large_pdb': 1,
- 'sources': [
- 'main.cc',
- ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': '<(PRODUCT_DIR)/large_pdb_exe.exe.pdb',
- },
- },
- },
- {
- 'target_name': 'small_pdb_exe',
- 'type': 'executable',
- 'msvs_large_pdb': 0,
- 'sources': [
- 'main.cc',
- ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': '<(PRODUCT_DIR)/small_pdb_exe.exe.pdb',
- },
- },
- },
- {
- 'target_name': 'large_pdb_dll',
- 'type': 'shared_library',
- 'msvs_large_pdb': 1,
- 'sources': [
- 'dllmain.cc',
- ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': '<(PRODUCT_DIR)/large_pdb_dll.dll.pdb',
- },
- },
- },
- {
- 'target_name': 'small_pdb_dll',
- 'type': 'shared_library',
- 'msvs_large_pdb': 0,
- 'sources': [
- 'dllmain.cc',
- ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': '<(PRODUCT_DIR)/small_pdb_dll.dll.pdb',
- },
- },
- },
- {
- 'target_name': 'large_pdb_implicit_exe',
- 'type': 'executable',
- 'msvs_large_pdb': 1,
- 'sources': [
- 'main.cc',
- ],
- # No PDB file is specified. However, the msvs_large_pdb mechanism should
- # default to the appropriate <(PRODUCT_DIR)/<(TARGET_NAME).exe.pdb.
- },
- {
- 'target_name': 'large_pdb_variable_exe',
- 'type': 'executable',
- 'msvs_large_pdb': 1,
- 'sources': [
- 'main.cc',
- ],
- # No PDB file is specified. However, the msvs_large_pdb_path variable
- # explicitly sets one.
- 'variables': {
- 'msvs_large_pdb_path': '<(PRODUCT_DIR)/foo.pdb',
- },
- },
- {
- 'target_name': 'large_pdb_product_exe',
- 'product_name': 'bar',
- 'type': 'executable',
- 'msvs_large_pdb': 1,
- 'sources': [
- 'main.cc',
- ],
- # No PDB file is specified. However, we've specified a product name so
- # it should use <(PRODUCT_DIR)/bar.exe.pdb.
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int main(void) {
- return 0;
-}
+++ /dev/null
-// 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.
-
-#include "answer.h"
-
-int answer() {
- return 42;
-}
+++ /dev/null
-// 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.
-
-int answer();
\ No newline at end of file
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib_answer',
- 'type': 'static_library',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WholeProgramOptimization': 'true', # /GL
- },
- 'VCLibrarianTool': {
- 'LinkTimeCodeGeneration': 'true', # /LTCG
- },
- },
- 'sources': ['answer.cc'],
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int x() {
- return 1;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int z() {
- return 3;
-}
+++ /dev/null
-// 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.
-
-#include <winsock2.h>
-
-int main() {
- WSAStartup(0, 0);
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_deps_none',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_deps_few',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'AdditionalDependencies': [
- 'wininet.lib',
- 'ws2_32.lib',
- ]
- }
- },
- 'sources': ['additional-deps.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_additional_none',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_additional_few',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'AdditionalOptions': [
- '/dynamicbase:no',
- ]
- }
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_aslr_default',
- 'type': 'executable',
- 'msvs_settings': {
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_aslr_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'RandomizedBaseAddress': '1',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_aslr_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'RandomizedBaseAddress': '2',
- }
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int y() {
- return 2;
-}
+++ /dev/null
-# Copyright 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_base_specified_exe',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'BaseAddress': '0x00420000',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_base_specified_dll',
- 'type': 'shared_library',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'BaseAddress': '0x10420000',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_base_default_exe',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_base_default_dll',
- 'type': 'shared_library',
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_debug_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'false'
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_debug_on',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true'
- },
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_deffile_multiple_fail',
- 'type': 'shared_library',
- 'sources': [
- 'deffile.cc',
- 'deffile.def',
- 'deffile2.def',
- ],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-void AnExportedFunction() {
-}
-
-void AnotherExportedFunction() {
-}
-
-int main() {
- return 0;
-}
+++ /dev/null
-; 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.
-
-LIBRARY test_deffile_ok
-
-EXPORTS
- AnExportedFunction
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_deffile_dll_ok',
- 'type': 'shared_library',
- 'sources': [
- 'deffile.cc',
- 'deffile.def',
- ],
- },
- {
- 'target_name': 'test_deffile_dll_notexported',
- 'type': 'shared_library',
- 'sources': [
- 'deffile.cc',
- ],
- },
- {
- 'target_name': 'test_deffile_exe_ok',
- 'type': 'executable',
- 'sources': [
- 'deffile.cc',
- 'deffile.def',
- ],
- },
- {
- 'target_name': 'test_deffile_exe_notexported',
- 'type': 'executable',
- 'sources': [
- 'deffile.cc',
- ],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_dld_none',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- }
- },
- 'sources': ['delay-load.cc'],
- 'libraries': [
- 'delayimp.lib',
- 'shell32.lib',
- ],
- },
- {
- 'target_name': 'test_dld_shell32',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'DelayLoadDLLs': ['shell32.dll']
- }
- },
- 'sources': ['delay-load.cc'],
- 'libraries': [
- 'delayimp.lib',
- 'shell32.lib',
- ],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-#include <shlobj.h>
-
-int main() {
- SHCreateDirectory(0, 0);
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2013 Yandex LLC. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'targets': [
- {
- 'target_name': 'test_manifest_exe',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '1',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- }
- },
- },
- {
- 'target_name': 'test_manifest_dll',
- 'type': 'loadable_module',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '1',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- }
- },
- },
- {
- 'target_name': 'test_manifest_extra1',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- 'AdditionalManifestFiles': 'extra.manifest',
- }
- },
- },
- {
- 'target_name': 'test_manifest_extra2',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- 'AdditionalManifestFiles': 'extra.manifest;extra2.manifest',
- }
- },
- },
- {
- 'target_name': 'test_manifest_extra_list',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- 'AdditionalManifestFiles': [
- 'extra.manifest',
- 'extra2.manifest'
- ],
- }
- },
- },
- {
- 'target_name': 'test_manifest_dll_inc',
- 'type': 'loadable_module',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '2',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- }
- },
- },
- {
- 'target_name': 'test_manifest_exe_inc',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '2',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- }
- },
- },
- {
- 'target_name': 'test_manifest_exe_inc_no_embed',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkIncremental': '2',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'false',
- }
- },
- },
- ]
-}
+++ /dev/null
-# Copyright 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'enable_uac',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- }
- },
- },
- {
- 'target_name': 'enable_uac_no',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'false',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- }
- },
- },
- {
- 'target_name': 'enable_uac_admin',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'UACExecutionLevel': 2,
- 'UACUIAccess': 'true',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- }
- },
- },
- ]
-}
+++ /dev/null
-// 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.
-
-// The entry point specified by link.exe /ENTRY option.
-extern "C" void MainEntryPoint() {
-}
-
-// Still needed because the linker checks for existence of one of main, wmain,
-// WinMain, or wMain to offer informative diagnositics.
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_ok',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EntryPointSymbol': 'MainEntryPoint',
- }
- },
- 'sources': ['entrypointsymbol.cc'],
- },
- {
- 'target_name': 'test_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EntryPointSymbol': 'MainEntryPoint',
- }
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-
- <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
- <application>
- <!--This Id value indicates the application supports Windows 7 functionality-->
- <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
- </application>
- </compatibility>
-
-</assembly>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-
- <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
- <application>
- <!--This Id value indicates the application supports Windows Vista functionality -->
- <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
- </application>
- </compatibility>
-
-</assembly>
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Disable DYNAMICBASE for these tests because it implies/doesn't imply
- # FIXED in certain cases so it complicates the test for FIXED.
- {
- 'target_name': 'test_fixed_default_exe',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'RandomizedBaseAddress': '1',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_fixed_default_dll',
- 'type': 'shared_library',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'RandomizedBaseAddress': '1',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_fixed_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'FixedBaseAddress': '1',
- 'RandomizedBaseAddress': '1',
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_fixed_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'FixedBaseAddress': '2',
- 'RandomizedBaseAddress': '1',
- },
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_force_reference_lib',
- 'type': 'static_library',
- 'sources': ['x.cc', 'y.cc'],
- },
- {
- 'target_name': 'test_force_reference',
- 'type': 'executable',
- # Turn on debug info to get symbols in disasm for the test code, and
- # turn on opt:ref to drop unused symbols to make sure we wouldn't
- # otherwise have the symbols.
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'AdditionalOptions': [
- '/OPT:REF',
- ],
- 'ForceSymbolReferences': [
- '?x@@YAHXZ',
- '?y@@YAHXZ',
- ],
- },
- },
- 'sources': ['hello.cc'],
- 'dependencies': [
- 'test_force_reference_lib',
- ],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_generate_manifest_true',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'GenerateManifest': 'true',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'false',
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_false',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'GenerateManifest': 'false',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'false',
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_default',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'false',
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_true_as_embedded',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'GenerateManifest': 'true',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_false_as_embedded',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'GenerateManifest': 'false',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_default_as_embedded',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'true',
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_true_with_extra_manifest',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'GenerateManifest': 'true',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'false',
- 'AdditionalManifestFiles': 'extra.manifest;extra2.manifest',
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_false_with_extra_manifest',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'GenerateManifest': 'false',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'false',
- 'AdditionalManifestFiles': 'extra.manifest;extra2.manifest',
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_true_with_extra_manifest_list',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'GenerateManifest': 'true',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'false',
- 'AdditionalManifestFiles': [
- 'extra.manifest',
- 'extra2.manifest',
- ],
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_false_with_extra_manifest_list',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- 'GenerateManifest': 'false',
- },
- 'VCManifestTool': {
- 'EmbedManifest': 'false',
- 'AdditionalManifestFiles': [
- 'extra.manifest',
- 'extra2.manifest',
- ],
- },
- },
- },
- {
- 'target_name': 'test_generate_manifest_default_embed_default',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'EnableUAC': 'true',
- },
- },
- },
- ]
-}
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Turn on debug information so the incremental linking tables have a
- # visible symbolic name in the disassembly.
- {
- 'target_name': 'test_incremental_unset',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_incremental_default',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'LinkIncremental': '0',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_incremental_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'LinkIncremental': '1',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_incremental_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'LinkIncremental': '2',
- }
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#include "inline_test.h"
-
-#include <intrin.h>
-#pragma intrinsic(_ReturnAddress)
-
-bool IsFunctionInlined(void* caller_return_address) {
- return _ReturnAddress() == caller_return_address;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-bool IsFunctionInlined(void* current_return_address);
+++ /dev/null
-// Copyright (c) 2013 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.
-
-#include "inline_test.h"
-
-#include <intrin.h>
-#include <stdio.h>
-
-#pragma intrinsic(_ReturnAddress)
-
-int main() {
- if (IsFunctionInlined(_ReturnAddress()))
- puts("==== inlined ====\n");
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_large_address_aware_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LargeAddressAware': '1',
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_large_address_aware_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LargeAddressAware': '2',
- },
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-#include <winsock2.h>
-
-int main() {
- WSAStartup(0, 0);
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_adjust',
- 'type': 'executable',
- 'libraries': [
- '-lws2_32.lib'
- ],
- 'sources': ['library-adjust.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-int library_function() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-extern int library_function();
-
-int main() {
- library_function();
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_libdirs_none',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'AdditionalDependencies': [
- 'test_lib.lib',
- ],
- },
- },
- 'sources': ['library-directories-reference.cc'],
- },
- {
- 'target_name': 'test_libdirs_with',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- # NOTE: Don't use this for general dependencies between gyp
- # libraries (use 'dependencies' instead). This is done here only for
- # testing.
- #
- # This setting should only be used to depend on third party prebuilt
- # libraries that are stored as binaries at a known location.
- 'AdditionalLibraryDirectories': [
- '<(DEPTH)/out/Default/obj/subdir', # ninja style
- '<(DEPTH)/subdir/Default/lib', # msvs style
- ],
- 'AdditionalDependencies': [
- 'test_lib.lib',
- ],
- },
- },
- 'sources': ['library-directories-reference.cc'],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_ordering_exe',
- 'type': 'executable',
- # These are so the names of the functions appear in the disassembly.
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- 'Optimization': '2',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'LinkIncremental': '1',
- 'GenerateManifest': 'false',
- # Minimize the disassembly to just our code.
- 'AdditionalOptions': [
- '/NODEFAULTLIB',
- ],
- },
- },
- 'sources': [
- # Explicitly sorted the same way as the disassembly in the test .py.
- 'main-crt.c',
- 'z.cc',
- 'x.cc',
- 'y.cc',
- 'hello.cc',
- ],
- },
-
- {
- 'target_name': 'test_ordering_subdirs',
- 'type': 'executable',
- # These are so the names of the functions appear in the disassembly.
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- 'Optimization': '2',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'LinkIncremental': '1',
- 'GenerateManifest': 'false',
- # Minimize the disassembly to just our code.
- 'AdditionalOptions': [
- '/NODEFAULTLIB',
- ],
- },
- },
- 'sources': [
- # Explicitly sorted the same way as the disassembly in the test .py.
- 'main-crt.c',
- 'hello.cc',
- 'b/y.cc',
- 'a/z.cc',
- ],
- },
-
-
- {
- 'target_name': 'test_ordering_subdirs_mixed',
- 'type': 'executable',
- # These are so the names of the functions appear in the disassembly.
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- 'Optimization': '2',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'LinkIncremental': '1',
- 'GenerateManifest': 'false',
- # Minimize the disassembly to just our code.
- 'AdditionalOptions': [
- '/NODEFAULTLIB',
- ],
- },
- },
- 'sources': [
- # Explicitly sorted the same way as the disassembly in the test .py.
- 'main-crt.c',
- 'a/x.cc',
- 'hello.cc',
- 'a/z.cc',
- 'y.cc',
- ],
- },
-
- ]
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-// This will cause LNK4254.
-#pragma comment(linker, "/merge:.data=.text")
-
-int main() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_ltcg_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WholeProgramOptimization': 'false',
- },
- 'VCLinkerTool': {
- 'LinkTimeCodeGeneration': '0',
- },
- },
- 'sources': [
- 'inline_test.h',
- 'inline_test.cc',
- 'inline_test_main.cc',
- ],
- },
- {
- 'target_name': 'test_ltcg_on',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WholeProgramOptimization': 'true', # /GL
- },
- 'VCLinkerTool': {
- 'LinkTimeCodeGeneration': '1', # /LTCG
- },
- },
- 'sources': [
- 'inline_test.h',
- 'inline_test.cc',
- 'inline_test_main.cc',
- ],
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-// Stub so we can link with /NODEFAULTLIB when checking disasm.
-int mainCRTStartup() {
- return 5;
-}
+++ /dev/null
-// Copyright 2013 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.
-
-#pragma comment(linker, \
- "\"/manifestdependency:type='Win32' " \
- "name='Test.Research.SampleAssembly' version='6.0.0.0' " \
- "processorArchitecture='X86' " \
- "publicKeyToken='0000000000000000' language='*'\"")
-
-int main() {
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-__declspec(dllexport)
-void AnExportedFunction() {
- // We need an exported function to verify that /MAPINFO:EXPORTS works.
-}
-
-int main() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_mapfile_unset',
- 'type': 'executable',
- 'sources': ['mapfile.cc'],
- },
- {
- 'target_name': 'test_mapfile_generate',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateMapFile': 'true',
- },
- },
- 'sources': ['mapfile.cc'],
- },
- {
- 'target_name': 'test_mapfile_generate_exports',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateMapFile': 'true',
- 'MapExports': 'true',
- },
- },
- 'sources': ['mapfile.cc'],
- },
- {
- 'target_name': 'test_mapfile_generate_filename',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'GenerateMapFile': 'true',
- 'MapFileName': '<(PRODUCT_DIR)/custom_file_name.map',
- },
- },
- 'sources': ['mapfile.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-// Reference something in kernel32.dll. This will fail to link, verifying that
-// GYP provides no default import library configuration.
-// Note that we don't include Windows.h, as that will result in generating
-// linker directives in the object file through #pragma comment(lib, ...).
-typedef short BOOL;
-
-extern "C" __declspec(dllimport)
-BOOL CopyFileW(const wchar_t*, const wchar_t*, BOOL);
-
-
-int main() {
- CopyFileW(0, 0, 0); // kernel32
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_default',
- 'type': 'executable',
- 'sources': ['no-default-libs.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-// Include entry point function that's excluded by removing C runtime libraries.
-extern "C" void mainCRTStartup() {
-}
-
-// Still needed because the linker checks for existence of one of main, wmain,
-// WinMain, or wMain to offer informative diagnositics.
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_ok',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'IgnoreDefaultLibraryNames':
- ['libcmtd.lib', 'libcmt.lib', 'msvcrt.lib', 'msvcrtd.lib'],
- }
- },
- 'sources': ['nodefaultlib.cc'],
- },
- {
- 'target_name': 'test_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'IgnoreDefaultLibraryNames':
- ['libcmtd.lib', 'libcmt.lib', 'msvcrt.lib', 'msvcrtd.lib'],
- }
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_nxcompat_default',
- 'type': 'executable',
- 'msvs_settings': {
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_nxcompat_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'DataExecutionPrevention': '1',
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_nxcompat_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'DataExecutionPrevention': '2',
- },
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-void similar_function0(char* x) {
- while (*x) {
- ++x;
- }
-}
-
-void similar_function1(char* p) {
- while (*p) {
- ++p;
- }
-}
-
-void similar_function2(char* q) {
- while (*q) {
- ++q;
- }
-}
-
-int main() {
- char* x = "hello";
- similar_function0(x);
- similar_function1(x);
- similar_function2(x);
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Have to turn on function level linking here to get the function packaged
- # as a COMDAT so that it's eligible for merging. Also turn on debug
- # information so that the symbol names for the code appear in the dump.
- # Finally, specify non-incremental linking so that there's not a bunch of
- # extra "similar_function"s in the output (the ILT jump table).
- {
- 'target_name': 'test_opticf_default',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFunctionLevelLinking': 'true',
- 'DebugInformationFormat': '3',
- 'Optimization': '0',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'LinkIncremental': '1',
- },
- },
- 'sources': ['opt-icf.cc'],
- },
- {
- 'target_name': 'test_opticf_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFunctionLevelLinking': 'true',
- 'DebugInformationFormat': '3',
- 'Optimization': '0',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'EnableCOMDATFolding': '1',
- 'LinkIncremental': '1',
- },
- },
- 'sources': ['opt-icf.cc'],
- },
- {
- 'target_name': 'test_opticf_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFunctionLevelLinking': 'true',
- 'DebugInformationFormat': '3',
- 'Optimization': '0',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'EnableCOMDATFolding': '2',
- 'LinkIncremental': '1',
- },
- },
- 'sources': ['opt-icf.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-int unused_function() {
- return 0;
-}
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Have to turn on function level linking here to get the function packaged
- # as a COMDAT so that it's eligible for optimizing away. Also turn on
- # debug information so that the symbol names for the code appear in the
- # dump (so we can verify if they are included in the final exe).
- {
- 'target_name': 'test_optref_default',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFunctionLevelLinking': 'true',
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- },
- 'sources': ['opt-ref.cc'],
- },
- {
- 'target_name': 'test_optref_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFunctionLevelLinking': 'true',
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'OptimizeReferences': '1',
- },
- },
- 'sources': ['opt-ref.cc'],
- },
- {
- 'target_name': 'test_optref_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'EnableFunctionLevelLinking': 'true',
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'OptimizeReferences': '2',
- },
- },
- 'sources': ['opt-ref.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_output_exe',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(OutDir)\\blorp.exe'
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_output_exe2',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(OutDir)\\subdir\\blorp.exe'
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_output_dll',
- 'type': 'shared_library',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(OutDir)\\blorp.dll'
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_output_lib',
- 'type': 'static_library',
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'OutputFile': '$(OutDir)\\blorp.lib'
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_output_lib2',
- 'type': 'static_library',
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'OutputFile': '$(OutDir)\\subdir\\blorp.lib'
- },
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_pdb_output_exe',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3'
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': 'output_exe.pdb',
- },
- },
- },
- {
- 'target_name': 'test_pdb_output_dll',
- 'type': 'shared_library',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3'
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': 'output_dll.pdb',
- },
- },
- },
- {
- 'target_name': 'test_pdb_output_disabled',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '0'
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'false',
- },
- },
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'variables': {
- 'pgd_basename': 'test_pgo',
- },
- 'targets': [
- # In the PGO (Profile-Guided Optimization) build flow, we need to build the
- # target binary multiple times. To implement this flow with gyp, here we
- # define multiple 'executable' targets, each of which represents one build
- # particular build/profile stage. On tricky part to do this is that these
- # 'executable' targets should share the code itself so that profile data
- # can be reused among these 'executable' files. In other words, the only
- # differences among below 'executable' targets are:
- # 1) PGO (Profile-Guided Optimization) database, and
- # 2) linker options.
- # The following static library contains all the logic including entry point.
- # Basically we don't need to rebuild this target once we enter profiling
- # phase of PGO.
- {
- 'target_name': 'test_pgo_main',
- 'type': 'static_library',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WholeProgramOptimization': 'true', # /GL
- },
- 'VCLibrarianTool': {
- 'LinkTimeCodeGeneration': 'true',
- },
- },
- 'link_settings': {
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'ProfileGuidedDatabase': '$(OutDir)\\<(pgd_basename).pgd',
- 'TargetMachine': '1', # x86 - 32
- 'SubSystem': '1', # /SUBSYSTEM:CONSOLE
- # Tell ninja generator not to pass /ManifestFile:<filename> option
- # to the linker, because it causes LNK1268 error in PGO biuld.
- 'GenerateManifest': 'false',
- # We need to specify 'libcmt.lib' here so that the linker can pick
- # up a valid entry point.
- 'AdditionalDependencies': [
- 'libcmt.lib',
- ],
- },
- },
- },
- 'sources': [
- 'inline_test.h',
- 'inline_test.cc',
- 'inline_test_main.cc',
- ],
- },
- {
- 'target_name': 'test_pgo_instrument',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkTimeCodeGeneration': '2',
- },
- },
- 'dependencies': [
- 'test_pgo_main',
- ],
- },
- {
- 'target_name': 'gen_profile_guided_database',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'actions': [
- {
- 'action_name': 'action_main',
- 'inputs': [],
- 'outputs': [
- '$(OutDir)\\<(pgd_basename).pgd',
- ],
- 'action': [
- 'python', 'update_pgd.py',
- '--vcbindir', '$(VCInstallDir)bin',
- '--exe', '$(OutDir)\\test_pgo_instrument.exe',
- '--pgd', '$(OutDir)\\<(pgd_basename).pgd',
- ],
- },
- ],
- 'dependencies': [
- 'test_pgo_instrument',
- ],
- },
- {
- 'target_name': 'test_pgo_optimize',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkTimeCodeGeneration': '3',
- },
- },
- 'sources': [
- '$(OutDir)\\<(pgd_basename).pgd',
- ],
- 'dependencies': [
- 'test_pgo_main',
- 'gen_profile_guided_database',
- ],
- },
- {
- 'target_name': 'test_pgo_update',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'LinkTimeCodeGeneration': '4',
- },
- },
- 'sources': [
- '$(OutDir)\\<(pgd_basename).pgd',
- ],
- 'dependencies': [
- 'test_pgo_main',
- ],
- },
- # A helper target to dump link.exe's command line options. We can use the
- # output to determine if PGO (Profile-Guided Optimization) is available on
- # the test environment.
- {
- 'target_name': 'gen_linker_option',
- 'type': 'none',
- 'msvs_cygwin_shell': 0,
- 'actions': [
- {
- 'action_name': 'action_main',
- 'inputs': [],
- 'outputs': [
- '$(OutDir)\\linker_options.txt',
- ],
- 'action': [
- 'cmd.exe', '/c link.exe > $(OutDir)\\linker_options.txt & exit 0',
- ],
- },
- ],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Verify that 'Profile' option correctly makes it to LINK steup in Ninja
- {
- 'target_name': 'test_profile_true',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3'
- },
- 'VCLinkerTool': {
- 'Profile': 'true',
- 'GenerateDebugInformation': 'true',
- },
- },
- },
- {
- 'target_name': 'test_profile_false',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3'
- },
- 'VCLinkerTool': {
- 'Profile': 'false',
- 'GenerateDebugInformation': 'true',
- },
- },
- },
- {
- 'target_name': 'test_profile_default',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3'
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- },
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- # Verify that 'ProgramDatabaseFile' option correctly makes it to LINK
- # step in Ninja.
- {
- # Verify that VC macros and windows paths work correctly.
- 'target_name': 'test_pdb_outdir',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3'
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': '$(OutDir)\\name_outdir.pdb',
- },
- },
- },
- {
- # Verify that GYP macros and POSIX paths work correctly.
- 'target_name': 'test_pdb_proddir',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3'
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- 'ProgramDatabaseFile': '<(PRODUCT_DIR)/name_proddir.pdb',
- },
- },
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'target_defaults': {
- 'configurations': {
- 'Default': {
- 'msvs_configuration_platform': 'Win32',
- },
- 'Default_x64': {
- 'inherit_from': ['Default'],
- 'msvs_configuration_platform': 'x64',
- },
- },
- },
- 'targets': [
- {
- 'target_name': 'test_safeseh_default',
- 'type': 'executable',
- 'msvs_settings': {
- # By default, msvs passes /SAFESEH for Link, but not for MASM. In
- # order for test_safeseh_default to link successfully, we need to
- # explicitly specify /SAFESEH for MASM.
- 'MASM': {
- 'UseSafeExceptionHandlers': 'true',
- },
- },
- 'sources': [
- 'safeseh_hello.cc',
- 'safeseh_zero.asm',
- ],
- },
- {
- 'target_name': 'test_safeseh_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'ImageHasSafeExceptionHandlers': 'false',
- },
- },
- 'sources': [
- 'safeseh_hello.cc',
- 'safeseh_zero.asm',
- ],
- },
- {
- 'target_name': 'test_safeseh_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'ImageHasSafeExceptionHandlers': 'true',
- },
- 'MASM': {
- 'UseSafeExceptionHandlers': 'true',
- },
- },
- 'sources': [
- 'safeseh_hello.cc',
- 'safeseh_zero.asm',
- ],
- },
- {
- # x64 targets cannot have ImageHasSafeExceptionHandlers or
- # UseSafeExceptionHandlers set.
- 'target_name': 'test_safeseh_x64',
- 'type': 'executable',
- 'configurations': {
- 'Default': {
- 'msvs_target_platform': 'x64',
- },
- },
- 'sources': [
- 'safeseh_hello.cc',
- 'safeseh_zero64.asm',
- ],
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2014 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.
-
-extern "C" {
-int zero(void);
-}
-
-int main() {
- return zero();
-}
+++ /dev/null
-.MODEL FLAT, C
-.CODE
-
-PUBLIC zero
-zero PROC
- xor eax, eax
- ret 0
-zero ENDP
-
-END
+++ /dev/null
-.CODE
-
-PUBLIC zero
-zero PROC
- xor eax, eax
- ret 0
-zero ENDP
-
-END
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_lib',
- 'type': 'static_library',
- 'sources': ['../library-directories-define.cc'],
- },
- ]
-}
+++ /dev/null
-// 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.
-
-#include <windows.h>
-
-int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_console_ok',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'SubSystem': '1'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_console_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'SubSystem': '1'
- }
- },
- 'sources': ['subsystem-windows.cc'],
- },
- {
- 'target_name': 'test_windows_ok',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'SubSystem': '2'
- }
- },
- 'sources': ['subsystem-windows.cc'],
- },
- {
- 'target_name': 'test_windows_fail',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'SubSystem': '2'
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_console_xp',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'SubSystem': '1',
- 'MinimumRequiredVersion': '5.01', # XP.
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_windows_xp',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'SubSystem': '2',
- 'MinimumRequiredVersion': '5.01', # XP.
- }
- },
- 'sources': ['subsystem-windows.cc'],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_target_link_x86',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'TargetMachine': '1',
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_target_link_x64',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'TargetMachine': '17',
- },
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_target_lib_x86',
- 'type': 'static_library',
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'TargetMachine': '1',
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_target_lib_x64',
- 'type': 'static_library',
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'TargetMachine': '17',
- },
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_tsaware_no',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'TerminalServerAware': '1',
- }
- },
- 'sources': ['hello.cc'],
- },
- {
- 'target_name': 'test_tsaware_yes',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'TerminalServerAware': '2',
- },
- },
- 'sources': ['hello.cc'],
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_unsupported',
- 'type': 'executable',
- 'sources': ['manifest-in-comment.cc'],
- },
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2013 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.
-
-from optparse import OptionParser
-import glob
-import os
-import subprocess
-
-parser = OptionParser()
-parser.add_option('--exe', dest='exe')
-parser.add_option('--vcbindir', dest='vcbindir')
-parser.add_option('--pgd', dest='pgd')
-(options, args) = parser.parse_args()
-
-# Instrumented binaries fail to run unless the Visual C++'s bin dir is included
-# in the PATH environment variable.
-os.environ['PATH'] = os.environ['PATH'] + os.pathsep + options.vcbindir
-
-# Run Instrumented binary. The profile will be recorded into *.pgc file.
-subprocess.call([options.exe])
-
-# Merge *.pgc files into a *.pgd (Profile-Guided Database) file.
-subprocess.call(['pgomgr', '/merge', options.pgd])
-
-# *.pgc files are no longer necessary. Clear all of them.
-pgd_file = os.path.abspath(options.pgd)
-pgd_dir = os.path.dirname(pgd_file)
-(pgd_basename, _) = os.path.splitext(os.path.basename(pgd_file))
-pgc_filepattern = os.path.join(pgd_dir, '%s!*.pgc' % pgd_basename)
-pgc_files= glob.glob(pgc_filepattern)
-for pgc_file in pgc_files:
- os.unlink(pgc_file)
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_on',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'TreatLinkerWarningAsErrors': 'true',
- }
- },
- 'sources': ['link-warning.cc'],
- },
- {
- 'target_name': 'test_off',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'TreatLinkerWarningAsErrors': 'false',
- }
- },
- 'sources': ['link-warning.cc'],
- },
- {
- 'target_name': 'test_default',
- 'type': 'executable',
- 'sources': ['link-warning.cc'],
- },
- ]
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int x() {
- return 1;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int y() {
- return 2;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int z() {
- return 3;
-}
+++ /dev/null
-// 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.
-
-int func() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'longexe',
- 'type': 'executable',
- 'msvs_settings': {
- # Use this as a simple way to get a long command.
- 'VCCLCompilerTool': {
- 'AdditionalOptions': '/nologo ' * 8000,
- },
- 'VCLinkerTool': {
- 'AdditionalOptions': '/nologo ' * 8000,
- },
- },
- 'sources': [
- 'hello.cc',
- ],
- },
- {
- 'target_name': 'longlib',
- 'type': 'static_library',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'AdditionalOptions': '/nologo ' * 8000,
- },
- 'VCLibrarianTool': {
- 'AdditionalOptions': '/nologo ' * 8000,
- },
- },
- 'sources': [
- 'function.cc',
- ],
- },
- {
- 'target_name': 'longdll',
- 'type': 'shared_library',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'AdditionalOptions': '/nologo ' * 8000,
- },
- 'VCLinkerTool': {
- 'AdditionalOptions': '/nologo ' * 8000,
- },
- },
- 'sources': [
- 'hello.cc',
- ],
- },
- ]
-}
+++ /dev/null
-.MODEL FLAT, C
-.CODE
-
-PUBLIC zero
-zero PROC
- xor eax, eax
- ret 0
-zero ENDP
-
-END
+++ /dev/null
-// Copyright (c) 2014 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.
-
-extern "C" {
-int zero(void);
-}
-
-int main() {
- return zero();
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'ml_safeseh',
- 'type': 'executable',
- 'sources': [
- 'hello.cc',
- 'a.asm',
- ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'ImageHasSafeExceptionHandlers': 'true',
- },
- 'MASM': {
- 'UseSafeExceptionHandlers': 'true',
- },
- },
- },
- ]
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2011 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.
-
-"""
-Verifies that precompiled headers can be specified.
-"""
-
-import TestGyp
-
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['msvs', 'ninja'], workdir='workarea_all')
- test.run_gyp('hello.gyp')
- test.build('hello.gyp', 'hello')
- test.run_built_executable('hello', stdout="Hello, world!\nHello, two!\n")
- test.up_to_date('hello.gyp', test.ALL)
- test.pass_test()
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-// Note the abscence of a stdio.h include. This will be inserted because of the
-// precompiled header.
-
-extern int hello2();
-
-int main(void) {
- printf("Hello, world!\n");
- hello2();
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'hello',
- 'type': 'executable',
- 'sources': [
- 'hello.c',
- 'hello2.c',
- 'precomp.c',
- ],
- 'msvs_precompiled_header': 'stdio.h',
- 'msvs_precompiled_source': 'precomp.c',
-
- # Required so that the printf actually causes a build failure
- # if the pch isn't included.
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '3',
- 'WarnAsError': 'true',
- },
- },
- },
- ],
-}
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-// Unlike hello.c, this file specifies the headers.
-
-#include <windows.h>
-#include <stdio.h>
-
-int hello2() {
- printf("Hello, two!\n");
- return 0;
-}
+++ /dev/null
-/* Copyright (c) 2011 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. */
-
-// The precompiled header does not have to be the first one in the file.
-
-#include <windows.h>
-#include <stdio.h>
+++ /dev/null
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by hello.rc
-//
-
-#define IDS_APP_TITLE 103
-
-#define IDR_MAINFRAME 128
-#define IDI_HELLO 107
-#define IDI_SMALL 108
-#define IDC_HELLO 109
-#ifndef IDC_STATIC
-#define IDC_STATIC -1
-#endif
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-
-#define _APS_NO_MFC 130
-#define _APS_NEXT_RESOURCE_VALUE 129
-#define _APS_NEXT_COMMAND_VALUE 32771
-#define _APS_NEXT_CONTROL_VALUE 1000
-#define _APS_NEXT_SYMED_VALUE 110
-#endif
-#endif
+++ /dev/null
-// 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.
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <tchar.h>
-
-#include "resource.h"
-
-#define MAX_LOADSTRING 100
-
-TCHAR szTitle[MAX_LOADSTRING];
-TCHAR szWindowClass[MAX_LOADSTRING];
-
-int APIENTRY _tWinMain(
- HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPTSTR lpCmdLine,
- int nCmdShow) {
- // Make sure we can load some resources.
- int count = 0;
- LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- if (szTitle[0] != 0) ++count;
- LoadString(hInstance, IDC_HELLO, szWindowClass, MAX_LOADSTRING);
- if (szWindowClass[0] != 0) ++count;
- if (LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SMALL)) != NULL) ++count;
- if (LoadIcon(hInstance, MAKEINTRESOURCE(IDI_HELLO)) != NULL) ++count;
- return count;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'with_resources',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- 'VCResourceCompilerTool': {
- 'Culture' : '1033',
- },
- },
- 'sources': [
- 'hello.cpp',
- 'hello.rc',
- ],
- 'libraries': [
- 'kernel32.lib',
- 'user32.lib',
- ],
- },
- {
- 'target_name': 'with_resources_subdir',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- 'VCResourceCompilerTool': {
- 'Culture' : '1033',
- },
- },
- 'sources': [
- 'hello.cpp',
- 'subdir/hello2.rc',
- ],
- 'libraries': [
- 'kernel32.lib',
- 'user32.lib',
- ],
- },
- {
- 'target_name': 'with_include_subdir',
- 'type': 'executable',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'DebugInformationFormat': '3',
- },
- 'VCLinkerTool': {
- 'GenerateDebugInformation': 'true',
- },
- 'VCResourceCompilerTool': {
- 'Culture' : '1033',
- },
- },
- 'resource_include_dirs': [
- '$(ProjectDir)\\subdir',
- ],
- 'sources': [
- 'hello.cpp',
- 'hello3.rc',
- ],
- 'libraries': [
- 'kernel32.lib',
- 'user32.lib',
- ],
- },
- {
- 'target_name': 'resource_only_dll',
- 'type': 'shared_library',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'ResourceOnlyDLL': 'true',
- },
- },
- 'sources': [
- 'hello.rc',
- ],
- },
- ],
-}
+++ /dev/null
-#pragma once
-
-#include "resource.h"
+++ /dev/null
-//Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#ifndef APSTUDIO_INVOKED
-#include "targetver.h"
-#endif
-#define APSTUDIO_HIDDEN_SYMBOLS
-#include "windows.h"
-#undef APSTUDIO_HIDDEN_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-LANGUAGE 9, 1
-#pragma code_page(932)
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-
-IDI_HELLO ICON "hello.ico"
-IDI_SMALL ICON "small.ico"
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#ifndef APSTUDIO_INVOKED\r\n"
- "#include ""targetver.h""\r\n"
- "#endif\r\n"
- "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "#include ""windows.h""\r\n"
- "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE
-BEGIN
- IDC_HELLO "HELLO"
- IDS_APP_TITLE "hello"
-END
-
-#endif
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
+++ /dev/null
-//Microsoft Visual C++ generated resource script.
-//
-#include "include.h"
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#ifndef APSTUDIO_INVOKED
-#include "targetver.h"
-#endif
-#define APSTUDIO_HIDDEN_SYMBOLS
-#include "windows.h"
-#undef APSTUDIO_HIDDEN_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-LANGUAGE 9, 1
-#pragma code_page(932)
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-
-IDI_HELLO ICON "hello.ico"
-IDI_SMALL ICON "small.ico"
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#ifndef APSTUDIO_INVOKED\r\n"
- "#include ""targetver.h""\r\n"
- "#endif\r\n"
- "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "#include ""windows.h""\r\n"
- "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE
-BEGIN
- IDC_HELLO "HELLO"
- IDS_APP_TITLE "hello"
-END
-
-#endif
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
+++ /dev/null
-//Microsoft Visual C++ generated resource script.
-//
-#include "subdir/include.h"
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#ifndef APSTUDIO_INVOKED
-#include "targetver.h"
-#endif
-#define APSTUDIO_HIDDEN_SYMBOLS
-#include "windows.h"
-#undef APSTUDIO_HIDDEN_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-LANGUAGE 9, 1
-#pragma code_page(932)
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-
-IDI_HELLO ICON "hello.ico"
-IDI_SMALL ICON "small.ico"
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#ifndef APSTUDIO_INVOKED\r\n"
- "#include ""targetver.h""\r\n"
- "#endif\r\n"
- "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "#include ""windows.h""\r\n"
- "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE
-BEGIN
- IDC_HELLO "HELLO"
- IDS_APP_TITLE "hello"
-END
-
-#endif
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
+++ /dev/null
-// Just exists to make sure it can be included.
+++ /dev/null
-#pragma once
-
-// The following macros define the minimum required platform. The minimum required platform
-// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
-// your application. The macros work by enabling all features available on platform versions up to and
-// including the version specified.
-
-// Modify the following defines if you have to target a platform prior to the ones specified below.
-// Refer to MSDN for the latest info on corresponding values for different platforms.
-#ifndef WINVER // Specifies that the minimum required platform is Windows Vista.
-#define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista.
-#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98.
-#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
-#endif
-
-#ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0.
-#define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE.
-#endif
+++ /dev/null
-// Copyright 2014 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int f1() {
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int f2() {
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int f3() {
- return 0;
-}
+++ /dev/null
-// Copyright (c) 2013 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.
-
-int f4() {
- return 0;
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'shard',
- 'type': 'static_library',
- 'msvs_shard': 4,
- 'sources': [
- 'hello1.cc',
- 'hello2.cc',
- 'hello3.cc',
- 'hello4.cc',
- ],
- 'product_dir': '<(PRODUCT_DIR)',
- },
- {
- 'target_name': 'refs_to_shard',
- 'type': 'executable',
- 'dependencies': [
- # Make sure references are correctly updated.
- 'shard',
- ],
- 'sources': [
- 'hello.cc',
- ],
- },
- ]
-}
+++ /dev/null
-# Copyright 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'refs_to_shard_external_lib',
- 'type': 'static_library',
- 'dependencies': [
- # Make sure references in other files are updated correctly.
- 'shard.gyp:shard',
- ],
- 'sources': [
- 'hello.cc',
- ],
- },
- {
- 'target_name': 'refs_to_shard_external_exe',
- 'type': 'executable',
- 'dependencies': [
- # Make sure references in other files are updated correctly.
- 'shard.gyp:shard',
- ],
- 'sources': [
- 'hello.cc',
- ],
- },
- {
- 'target_name': 'refs_to_shard_external_dll',
- 'type': 'shared_library',
- 'dependencies': [
- # Make sure references in other files are updated correctly.
- 'shard.gyp:shard',
- ],
- 'sources': [
- 'hello.cc',
- ],
- },
- ]
-}
+++ /dev/null
-#include <commonheader.h>
-#include <header.h>
-
-int main() {}
+++ /dev/null
-{
- 'target_defaults': {
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarningLevel': '4',
- 'WarnAsError': 'true',
- },
- },
- 'msvs_system_include_dirs': [
- '$(ProjectName)', # Different for each target
- 'common', # Same for all targets
- ],
- },
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'executable',
- 'sources': [ 'main.cc', ],
- },
- {
- 'target_name': 'bar',
- 'type': 'executable',
- 'sources': [ 'main.cc', ],
- },
- ],
-}
+++ /dev/null
-// 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.
-
-int some_function() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-int some_function() {
- return 0;
-}
+++ /dev/null
-// 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.
-
-extern int some_function();
-
-int main() {
- some_function();
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'lib1',
- 'type': 'static_library',
- 'sources': ['a.cc'],
- },
- {
- 'target_name': 'final_uldi',
- 'type': 'executable',
- 'dependencies': [
- 'lib1',
- 'lib2',
- ],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'UseLibraryDependencyInputs': 'true'
- },
- },
- 'sources': ['main.cc'],
- },
- {
- 'target_name': 'final_no_uldi',
- 'type': 'executable',
- 'dependencies': [
- 'lib1',
- 'lib2',
- ],
- 'sources': ['main.cc'],
- },
- {
- 'target_name': 'lib2',
- 'type': 'static_library',
- # b.cc has the same named function as a.cc, but don't use the same name
- # so that the .obj will have a different name. If the obj file has the
- # same name, the linker will discard the obj file, invalidating the
- # test.
- 'sources': ['b.cc'],
- },
- ]
-}
+++ /dev/null
-#!/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.
-
-from optparse import OptionParser
-
-parser = OptionParser()
-parser.add_option('-a', dest='platform')
-parser.add_option('-o', dest='output')
-parser.add_option('-p', dest='path')
-(options, args) = parser.parse_args()
-
-f = open(options.output, 'w')
-print >>f, 'options', options
-print >>f, 'args', args
-f.close()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_expansions',
- 'msvs_cygwin_shell': 0,
- 'type': 'none',
- 'rules': [
- {
- 'rule_name': 'assembler (gnu-compatible)',
- 'msvs_cygwin_shell': 0,
- 'msvs_quote_cmd': 0,
- 'extension': 'S',
- 'inputs': [
- 'as.py',
- ],
- 'outputs': [
- '$(IntDir)/$(InputName).obj',
- ],
- 'action':
- ['python',
- 'as.py',
- '-a', '$(PlatformName)',
- '-o', '$(IntDir)/$(InputName).obj',
- '-p', '<(DEPTH)',
- '$(InputPath)'],
- 'message': 'Building assembly language file $(InputPath)',
- 'process_outputs_as_sources': 1,
- },
- ],
- 'sources': [
- 'input.S',
- ],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-import sys
-
-input = open(sys.argv[1], "r").read()
-open(sys.argv[2], "w").write(input + "Modified.")
+++ /dev/null
-// 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.
-
-int main() {
- return 0;
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_expansions',
- 'msvs_cygwin_shell': 0,
- 'type': 'none',
- 'rules': [
- {
- 'rule_name': 'generate_file',
- 'extension': 'blah',
- 'inputs': [
- 'do_stuff.py',
- ],
- 'outputs': [
- '$(OutDir)\\<(RULE_INPUT_NAME).something',
- ],
- 'action': ['python',
- 'do_stuff.py',
- '<(RULE_INPUT_PATH)',
- '$(OutDir)\\<(RULE_INPUT_NAME).something',],
- },
- ],
- 'sources': [
- 'stuff.blah',
- ],
- },
- ]
-}
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_expansions',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(OutDir)\\$(ProjectName)_plus_something.exe',
- },
- },
- },
- {
- 'target_name': 'test_with_product_name',
- 'product_name': 'prod_name',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(OutDir)\\$(ProjectName)_plus_something.exe',
- },
- },
- },
- ]
-}
+++ /dev/null
-Random data file.
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_targetext_executable',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\executable$(TargetExt)',
- },
- },
- },
- {
- 'target_name': 'test_targetext_loadable_module',
- 'type': 'loadable_module',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\loadable_module$(TargetExt)',
- },
- },
- },
- {
- 'target_name': 'test_targetext_shared_library',
- 'type': 'shared_library',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\shared_library$(TargetExt)',
- },
- },
- },
- {
- 'target_name': 'test_targetext_static_library',
- 'type': 'static_library',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'OutputFile': '$(TargetDir)\\static_library$(TargetExt)',
- },
- },
- },
- {
- 'target_name': 'test_targetext_product_extension',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'product_extension': 'library',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\product_extension$(TargetExt)',
- },
- },
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_targetfilename_executable',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetFileName)',
- },
- },
- },
- {
- 'target_name': 'test_targetfilename_loadable_module',
- 'type': 'loadable_module',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetFileName)',
- },
- },
- },
- {
- 'target_name': 'test_targetfilename_shared_library',
- 'type': 'loadable_module',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetFileName)',
- },
- },
- },
- {
- 'target_name': 'test_targetfilename_static_library',
- 'type': 'static_library',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetFileName)',
- },
- },
- },
- {
- 'target_name': 'test_targetfilename_product_extension',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'product_extension': 'foo',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetFileName)',
- },
- },
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2013 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_targetname',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetName)_plus_something1.exe',
- },
- },
- },
- {
- 'target_name': 'test_targetname_with_prefix',
- 'product_prefix': 'prod_prefix',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetName)_plus_something2.exe',
- },
- },
- },
- {
- 'target_name': 'test_targetname_with_prodname',
- 'product_name': 'prod_name',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetName)_plus_something3.exe',
- },
- },
- },
- {
- 'target_name': 'test_targetname_with_prodname_with_prefix',
- 'product_name': 'prod_name',
- 'product_prefix': 'prod_prefix',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetDir)\\$(TargetName)_plus_something4.exe',
- },
- },
- },
- ]
-}
+++ /dev/null
-# Copyright (c) 2014 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_targetpath_executable',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetPath)',
- },
- },
- },
- {
- 'target_name': 'test_targetpath_loadable_module',
- 'type': 'loadable_module',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetPath)',
- },
- },
- },
- {
- 'target_name': 'test_targetpath_shared_library',
- 'type': 'loadable_module',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetPath)',
- },
- },
- },
- {
- 'target_name': 'test_targetpath_static_library',
- 'type': 'static_library',
- 'sources': ['hello.cc'],
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'OutputFile': '$(TargetPath)',
- },
- },
- },
- {
- 'target_name': 'test_targetpath_product_extension',
- 'type': 'executable',
- 'sources': ['hello.cc'],
- 'product_extension': 'foo',
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'OutputFile': '$(TargetPath)',
- },
- },
- },
- ]
-}
+++ /dev/null
-# 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.
-
-import os
-import sys
-
-if not os.path.exists(sys.argv[1]):
- raise
-open(sys.argv[2], 'w').close()
+++ /dev/null
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'test_slash_trailing',
- 'type': 'none',
- 'msvs_cygwin_shell': '0',
- 'actions': [
- {
- 'action_name': 'root',
- 'inputs': [],
- 'outputs': ['out1'],
- 'action': ['python', 'test_exists.py', '$(VCInstallDir)', 'out1']
- },
- ],
- },
- {
- 'target_name': 'test_slash_dir',
- 'type': 'none',
- 'msvs_cygwin_shell': '0',
- 'actions': [
- {
- 'action_name': 'bin',
- 'inputs': [],
- 'outputs': ['out2'],
- 'action': ['python', 'test_exists.py', '$(VCInstallDir)bin', 'out2'],
- },
- {
- 'action_name': 'compiler',
- 'inputs': [],
- 'outputs': ['out3'],
- 'action': [
- 'python', 'test_exists.py', '$(VCInstallDir)bin\\cl.exe', 'out3'],
- },
- ],
- },
- ]
-}
+++ /dev/null
-{
- 'targets': [
- {
- 'target_name': 'foo',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/dest',
- 'files': [
- 'read-only-file',
- ],
- },
- ],
- }, # target: foo
-
- {
- 'target_name': 'bar',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/dest',
- 'files': [
- 'subdir/',
- ],
- },
- ],
- }, # target: bar
- ],
-}
+++ /dev/null
-#!/usr/bin/env python
-
-# Copyright (c) 2014 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 overwriting read-only files works as expected (via win-tool).
-"""
-
-import TestGyp
-
-import filecmp
-import os
-import stat
-import sys
-
-if sys.platform == 'win32':
- test = TestGyp.TestGyp(formats=['ninja'])
-
- # First, create the source files.
- os.makedirs('subdir')
- read_only_files = ['read-only-file', 'subdir/A', 'subdir/B', 'subdir/C']
- for f in read_only_files:
- test.write(f, 'source_contents')
- test.chmod(f, stat.S_IREAD)
- if os.access(f, os.W_OK):
- test.fail_test()
-
- # Second, create the read-only destination files. Note that we are creating
- # them where the ninja and win-tool will try to copy them to, in order to test
- # that copies overwrite the files.
- os.makedirs(test.built_file_path('dest/subdir'))
- for f in read_only_files:
- f = os.path.join('dest', f)
- test.write(test.built_file_path(f), 'SHOULD BE OVERWRITTEN')
- test.chmod(test.built_file_path(f), stat.S_IREAD)
- # Ensure not writable.
- if os.access(test.built_file_path(f), os.W_OK):
- test.fail_test()
-
- test.run_gyp('copies_readonly_files.gyp')
- test.build('copies_readonly_files.gyp')
-
- # Check the destination files were overwritten by ninja.
- for f in read_only_files:
- f = os.path.join('dest', f)
- test.must_contain(test.built_file_path(f), 'source_contents')
-
- # This will fail if the files are not the same mode or contents.
- for f in read_only_files:
- if not filecmp.cmp(f, test.built_file_path(os.path.join('dest', f))):
- test.fail_test()
-
- test.pass_test()