From 6c148b27989d10558f6e6e593218b83bbe7f8f02 Mon Sep 17 00:00:00 2001 From: stevenknight Date: Mon, 9 Feb 2009 21:11:28 +0000 Subject: [PATCH] Add the $CCFLAGS variable to the $PCHCOM command line, and rearrange the arguments so the /Fo is towards the beginning of the line (like it is for $CCCOM, $CXXCOM, etc.). git-svn-id: http://scons.tigris.org/svn/scons/trunk@3990 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- src/CHANGES.txt | 2 ++ src/RELEASE.txt | 13 +++++++++++++ src/engine/SCons/Tool/msvc.py | 2 +- test/MSVC/msvc.py | 11 ++++++++++- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 51982190..19e7cc4f 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -25,6 +25,8 @@ RELEASE X.X.X - XXX - Fix finding #include files when the string contains escaped backslashes like "C:\\some\\include.h". + - Pass $CCFLAGS to Visual C/C++ precompiled header compilation. + From Robert P. J. Day: - User's Guide updates. diff --git a/src/RELEASE.txt b/src/RELEASE.txt index 3bcf9989..31aaec4e 100644 --- a/src/RELEASE.txt +++ b/src/RELEASE.txt @@ -56,6 +56,19 @@ RELEASE 1.2.0.d20090113 - Tue, 13 Jan 2009 02:50:30 -0800 will no longer work at all, and will instead generate specific fatal errors when anyone tries to use them. + Please note the following important changes since release 1.2.0: + + -- VISUAL C/C++ PRECOMPILED HEADERS WILL BE REBUILT + + Precompiled header files built with Visual C/C++ will be + rebuilt after upgrading from 1.2.0. + + This rebuild is normal will occur because the command line + defined by the $PCHCOM construction variable has had the + $CCFLAGS variable added, and has been rearranged to put the + "/Fo" output flag towards the beginning of the line, consistent + with the related command lines for $CCCOM, $CXXCOM, etc. + Please note the following important changes since release 1.1.0: -- THE $CHANGED_SOURCES, $CHANGED_TARGETS, $UNCHANGED_SOURCES diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py index 19ebd9f1..443e8b02 100644 --- a/src/engine/SCons/Tool/msvc.py +++ b/src/engine/SCons/Tool/msvc.py @@ -812,7 +812,7 @@ def generate(env): env['CXXFILESUFFIX'] = '.cc' env['PCHPDBFLAGS'] = SCons.Util.CLVar(['${(PDB and "/Yd") or ""}']) - env['PCHCOM'] = '$CXX $CXXFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo${TARGETS[1]} /Yc$PCHSTOP /Fp${TARGETS[0]} $CCPDBFLAGS $PCHPDBFLAGS' + env['PCHCOM'] = '$CXX /Fo${TARGETS[1]} $CXXFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Yc$PCHSTOP /Fp${TARGETS[0]} $CCPDBFLAGS $PCHPDBFLAGS' env['BUILDERS']['PCH'] = pch_builder if not env.has_key('ENV'): diff --git a/test/MSVC/msvc.py b/test/MSVC/msvc.py index 4ad562c5..21e88d0f 100644 --- a/test/MSVC/msvc.py +++ b/test/MSVC/msvc.py @@ -24,6 +24,11 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" +""" +Verify basic invocation of Microsoft Visual C/C++, including use +of a precompiled header with the $CCFLAGS variable. +""" + import os import sys import time @@ -43,7 +48,8 @@ test.write('SConstruct',""" import os env = Environment() env.Append(CPPPATH=os.environ.get('INCLUDE', ''), - LIBPATH=os.environ.get('LIB', '')) + LIBPATH=os.environ.get('LIB', ''), + CCFLAGS='/DPCHDEF') env['PDB'] = File('test.pdb') env['PCHSTOP'] = 'StdAfx.h' env['PCH'] = env.PCH('StdAfx.cpp')[0] @@ -92,6 +98,9 @@ test.write('StdAfx.h', ''' test.write('StdAfx.cpp', ''' #include "StdAfx.h" +#ifndef PCHDEF +this line generates an error if PCHDEF is not defined! +#endif ''') # Visual Studio 8 has deprecated the /Yd option and prints warnings -- 2.26.2