1880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org#!/usr/bin/env python 2880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 3df8224662e615bd36cf8bebae8e58c017201f998sgk@chromium.org# Copyright (c) 2009 Google Inc. All rights reserved. 4df8224662e615bd36cf8bebae8e58c017201f998sgk@chromium.org# Use of this source code is governed by a BSD-style license that can be 5df8224662e615bd36cf8bebae8e58c017201f998sgk@chromium.org# found in the LICENSE file. 6df8224662e615bd36cf8bebae8e58c017201f998sgk@chromium.org 7880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org""" 8880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgVerifies building a target and a subsidiary dependent target from a 9880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org.gyp file in a subdirectory, without specifying an explicit output build 10880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgdirectory, and using the generated solution or project file at the top 11880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgof the tree as the entry point. 12880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 13880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgThere is a difference here in the default behavior of the underlying 14880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgbuild tools. Specifically, when building the entire "solution", Xcode 15880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgputs the output of each project relative to the .xcodeproj directory, 1646b4f67e79748c751cb2ec7e769bc2cfbcfb9f79bradnelson@google.comwhile Visual Studio (and our implementation of Make) put it 17880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgin a build directory relative to the "solution"--that is, the entry-point 18880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgfrom which you built the entire tree. 19880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org""" 20880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 21880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgimport TestGyp 22880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 23880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgtest = TestGyp.TestGyp() 24880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 25d11b9aee6479cfb7d6499995bd6a8ccb834567f0sgk@chromium.orgtest.run_gyp('prog1.gyp', chdir='src') 26880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 27fa5b46b96b21ff75d8b6b3dacc4693b69c43654csgk@chromium.orgtest.relocate('src', 'relocate/src') 28d550593518022aba6c0a52203c1fd98922ac08ffsgk@chromium.org 29040d50e7277c41a0b9641dc42c76be8605055637sgk@chromium.orgtest.build('prog1.gyp', test.ALL, chdir='relocate/src') 30880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 31d550593518022aba6c0a52203c1fd98922ac08ffsgk@chromium.orgtest.run_built_executable('prog1', 32d550593518022aba6c0a52203c1fd98922ac08ffsgk@chromium.org stdout="Hello from prog1.c\n", 33d550593518022aba6c0a52203c1fd98922ac08ffsgk@chromium.org chdir='relocate/src') 34880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 3565f1cdd22ad8f73f507077d3baab38c6314f13c8mmoss@chromium.orgif test.format == 'xcode': 36d550593518022aba6c0a52203c1fd98922ac08ffsgk@chromium.org chdir = 'relocate/src/subdir' 37880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgelse: 38d550593518022aba6c0a52203c1fd98922ac08ffsgk@chromium.org chdir = 'relocate/src' 39880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgtest.run_built_executable('prog2', 40880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org chdir=chdir, 41880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org stdout="Hello from prog2.c\n") 42880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.org 43880ec408d9c22ed4fd0bab3e5f311f1189b5ff90sgk@chromium.orgtest.pass_test() 44