| # Copyright (c) 2012 Google Inc. All rights 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' ], |
| #}, |
| ], |
| }, |
| ], |
| } |