19f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org#!/usr/bin/env python 29f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 39be1d37a9a6561f135412db66806def9f82a29c1steveblock@chromium.org# Copyright (c) 2012 Google Inc. All rights reserved. 49f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org# Use of this source code is governed by a BSD-style license that can be 59f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org# found in the LICENSE file. 69f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 79f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org""" 8d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgVerifies the use of the environment during regeneration when the gyp file 9d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgchanges, specifically via build of an executable with C preprocessor 10d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgdefinition specified by CFLAGS. 11d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.org 12d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgIn this test, gyp and build both run in same local environment. 139f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org""" 149f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 159f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.orgimport TestGyp 169f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 17d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.org# CPPFLAGS works in ninja but not make; CFLAGS works in both 18d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgFORMATS = ('make', 'ninja') 1924cd8fc4e47d2e8c9c6994ce28a0b72ca8314947scottmg@chromium.org 20d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgtest = TestGyp.TestGyp(formats=FORMATS) 219f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 22d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.org# First set CFLAGS to blank in case the platform doesn't support unsetenv. 23d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgwith TestGyp.LocalEnv({'CFLAGS': '', 24d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.org 'GYP_CROSSCOMPILE': '1'}): 259f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org test.run_gyp('cflags.gyp') 263502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org test.build('cflags.gyp') 279f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 287325271dc38bc6c274cb9b7eb0773f7f19b51c07tony@chromium.orgexpect = """FOO not defined\n""" 299f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.orgtest.run_built_executable('cflags', stdout=expect) 303502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.orgtest.run_built_executable('cflags_host', stdout=expect) 319f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 329f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.orgtest.sleep() 339f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 34d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgwith TestGyp.LocalEnv({'CFLAGS': '-DFOO=1', 35d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.org 'GYP_CROSSCOMPILE': '1'}): 369f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org test.run_gyp('cflags.gyp') 373502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org test.build('cflags.gyp') 383502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org 397325271dc38bc6c274cb9b7eb0773f7f19b51c07tony@chromium.orgexpect = """FOO defined\n""" 403502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.orgtest.run_built_executable('cflags', stdout=expect) 413502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org 423502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org# Environment variables shouldn't influence the flags for the host. 437325271dc38bc6c274cb9b7eb0773f7f19b51c07tony@chromium.orgexpect = """FOO not defined\n""" 443502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.orgtest.run_built_executable('cflags_host', stdout=expect) 453502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org 463502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.orgtest.sleep() 473502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org 48d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgwith TestGyp.LocalEnv({'CFLAGS': ''}): 493502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org test.run_gyp('cflags.gyp') 503502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org test.build('cflags.gyp') 513502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org 527325271dc38bc6c274cb9b7eb0773f7f19b51c07tony@chromium.orgexpect = """FOO not defined\n""" 533502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.orgtest.run_built_executable('cflags', stdout=expect) 543502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org 553502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.orgtest.sleep() 563502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org 57d4779eb1916a3d6796f4aec4c4ecccf336cbc2e1thakis@chromium.orgwith TestGyp.LocalEnv({'CFLAGS': '-DFOO=1'}): 583502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org test.run_gyp('cflags.gyp') 593502f19df7c6d1d7be75061bc7e590896c538530tony@chromium.org test.build('cflags.gyp') 609f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 617325271dc38bc6c274cb9b7eb0773f7f19b51c07tony@chromium.orgexpect = """FOO defined\n""" 629f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.orgtest.run_built_executable('cflags', stdout=expect) 639f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.org 649f9d0be98ead83b8b1c5be8302c6fc56e57b285cevan@chromium.orgtest.pass_test() 65