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