1# Copyright (c) 2012 Google Inc. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4{
5  'targets': [
6    {
7      'target_name': 'test_app',
8      'product_name': 'Test',
9      'type': 'executable',
10      'mac_bundle': 1,
11      'sources': [
12        'main.c',
13        'file.ext1',
14        'file.ext2',
15        'file.ext3',
16      ],
17      # Env vars in copies.
18      'copies': [
19        {
20          'destination': '<(PRODUCT_DIR)/${PRODUCT_NAME}-copy-brace',
21          'files': [ 'main.c', ],  # ${SOURCE_ROOT} doesn't work with xcode
22        },
23        {
24          'destination': '<(PRODUCT_DIR)/$(PRODUCT_NAME)-copy-paren',
25          'files': [ '$(SOURCE_ROOT)/main.c', ],
26        },
27        {
28          'destination': '<(PRODUCT_DIR)/$PRODUCT_NAME-copy-bare',
29          'files': [ 'main.c', ],  # $SOURCE_ROOT doesn't work with xcode
30        },
31      ],
32      # Env vars in actions. The $FOO's are here to test that env vars that
33      # aren't defined are handled in some way that doesn't break the build.
34      'actions': [
35        {
36          'action_name': 'Action copy braces ${PRODUCT_NAME} ${FOO}',
37          'description': 'Action copy braces ${PRODUCT_NAME} ${FOO}',
38          'inputs': [ '${SOURCE_ROOT}/main.c' ],
39          # Referencing ${PRODUCT_NAME} in action outputs doesn't work with
40          # the Xcode generator (PRODUCT_NAME expands to "Test Support").
41          'outputs': [ '<(PRODUCT_DIR)/action-copy-brace.txt' ],
42          'action': [ 'cp', '${SOURCE_ROOT}/main.c',
43                      '<(PRODUCT_DIR)/action-copy-brace.txt' ],
44        },
45        {
46          'action_name': 'Action copy parens $(PRODUCT_NAME) $(FOO)',
47          'description': 'Action copy parens $(PRODUCT_NAME) $(FOO)',
48          'inputs': [ '$(SOURCE_ROOT)/main.c' ],
49          # Referencing $(PRODUCT_NAME) in action outputs doesn't work with
50          # the Xcode generator (PRODUCT_NAME expands to "Test Support").
51          'outputs': [ '<(PRODUCT_DIR)/action-copy-paren.txt' ],
52          'action': [ 'cp', '$(SOURCE_ROOT)/main.c',
53                      '<(PRODUCT_DIR)/action-copy-paren.txt' ],
54        },
55        {
56          'action_name': 'Action copy bare $PRODUCT_NAME $FOO',
57          'description': 'Action copy bare $PRODUCT_NAME $FOO',
58          'inputs': [ '$SOURCE_ROOT/main.c' ],
59          # Referencing $PRODUCT_NAME in action outputs doesn't work with
60          # the Xcode generator (PRODUCT_NAME expands to "Test Support").
61          'outputs': [ '<(PRODUCT_DIR)/action-copy-bare.txt' ],
62          'action': [ 'cp', '$SOURCE_ROOT/main.c',
63                      '<(PRODUCT_DIR)/action-copy-bare.txt' ],
64        },
65      ],
66      # Env vars in xcode_settings.
67      'xcode_settings': {
68        'INFOPLIST_FILE': 'Info.plist',
69        'STRING_KEY': '/Source/Project',
70
71        'BRACE_DEPENDENT_KEY2': '${STRING_KEY}/${PRODUCT_NAME}',
72        'BRACE_DEPENDENT_KEY1': 'D:${BRACE_DEPENDENT_KEY2}',
73        'BRACE_DEPENDENT_KEY3': '${PRODUCT_TYPE}:${BRACE_DEPENDENT_KEY1}',
74
75        'PAREN_DEPENDENT_KEY2': '$(STRING_KEY)/$(PRODUCT_NAME)',
76        'PAREN_DEPENDENT_KEY1': 'D:$(PAREN_DEPENDENT_KEY2)',
77        'PAREN_DEPENDENT_KEY3': '$(PRODUCT_TYPE):$(PAREN_DEPENDENT_KEY1)',
78
79        'BARE_DEPENDENT_KEY2': '$STRING_KEY/$PRODUCT_NAME',
80        'BARE_DEPENDENT_KEY1': 'D:$BARE_DEPENDENT_KEY2',
81        'BARE_DEPENDENT_KEY3': '$PRODUCT_TYPE:$BARE_DEPENDENT_KEY1',
82
83        'MIXED_DEPENDENT_KEY': '${STRING_KEY}:$(PRODUCT_NAME):$MACH_O_TYPE',
84      },
85      # Env vars in rules. The $FOO's are here to test that env vars that
86      # aren't defined are handled in some way that doesn't break the build.
87      'rules': [
88        {
89          'rule_name': 'brace_rule',
90          'message': 'Rule braces ${PRODUCT_NAME} ${FOO} <(RULE_INPUT_NAME)',
91          'extension': 'ext1',
92          'inputs': [ '${SOURCE_ROOT}/main.c' ],
93          'outputs': [ '<(PRODUCT_DIR)/rule-copy-brace.txt' ],
94          'action': [ 'cp', '${SOURCE_ROOT}/main.c',
95                      '<(PRODUCT_DIR)/rule-copy-brace.txt' ],
96        },
97        {
98          'rule_name': 'paren_rule',
99          'message': 'Rule parens $(PRODUCT_NAME) $(FOO) <(RULE_INPUT_NAME)',
100          'extension': 'ext2',
101          'inputs': [ '$(SOURCE_ROOT)/main.c' ],
102          'outputs': [ '<(PRODUCT_DIR)/rule-copy-paren.txt' ],
103          'action': [ 'cp', '$(SOURCE_ROOT)/main.c',
104                      '<(PRODUCT_DIR)/rule-copy-paren.txt' ],
105        },
106        # TODO: Fails in xcode. Looks like a bug in the xcode generator though
107        #       (which uses makefiles for rules, and thinks $PRODUCT_NAME is
108        #       $(P)RODUCT_NAME).
109        #{
110        #  'rule_name': 'bare_rule',
111        #  'message': 'Rule copy bare $PRODUCT_NAME $FOO',
112        #  'extension': 'ext3',
113        #  'inputs': [ '$SOURCE_ROOT/main.c' ],
114        #  'outputs': [ '<(PRODUCT_DIR)/rule-copy-bare.txt' ],
115        #  'action': [ 'cp', '$SOURCE_ROOT/main.c',
116        #              '<(PRODUCT_DIR)/rule-copy-bare.txt' ],
117        #},
118      ],
119    },
120  ],
121}
122