diff options
author | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-07 14:14:54 +0000 |
---|---|---|
committer | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-07 14:14:54 +0000 |
commit | 99ff9934eb0e343160b79f63d314f70012ac877f (patch) | |
tree | 17c2cab695a9f9ec96dcd587ec6b88a93f96dd65 /build | |
parent | 0c31a504177bf6434d191feed964c6ce7b3a700f (diff) | |
download | chromium_src-99ff9934eb0e343160b79f63d314f70012ac877f.zip chromium_src-99ff9934eb0e343160b79f63d314f70012ac877f.tar.gz chromium_src-99ff9934eb0e343160b79f63d314f70012ac877f.tar.bz2 |
Use precompiled headers for most large projects where the .gyp file
is not a third party file.
On my machine, this speeds up a full recompile of the 'chrome' target
in Debug mode by about 18%.
BUG=none
TEST=it builds, existing tests pass
Review URL: http://codereview.chromium.org/7706011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99949 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build')
-rw-r--r-- | build/precompile.cc | 7 | ||||
-rw-r--r-- | build/precompile.h | 100 | ||||
-rw-r--r-- | build/win_precompile.gypi | 20 |
3 files changed, 127 insertions, 0 deletions
diff --git a/build/precompile.cc b/build/precompile.cc new file mode 100644 index 0000000..db1ef6d --- /dev/null +++ b/build/precompile.cc @@ -0,0 +1,7 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Precompiled header generator for Windows builds. No include is needed +// in this file as the PCH include is forced via the "Forced Include File" +// flag in the projects generated by GYP. diff --git a/build/precompile.h b/build/precompile.h new file mode 100644 index 0000000..940d7302 --- /dev/null +++ b/build/precompile.h @@ -0,0 +1,100 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Precompiled header for Chromium project on Windows, not used by +// other build configurations. Using precompiled headers speeds the +// build up significantly, around 1/4th on VS 2010 on an HP Z600 with 12 +// GB of memory. +// +// Numeric comments beside includes are the number of times they were +// included under src/chrome/browser on 2011/8/20, which was used as a +// baseline for deciding what to include in the PCH. It may be +// possible to tweak the speed of the build by commenting out or +// removing some of the less frequently used headers. + +#if defined(BUILD_PRECOMPILE_H_) +#error You shouldn't include the precompiled header file more than once. +#endif + +#define BUILD_PRECOMPILE_H_ + +// The Windows header needs to come before almost all the other +// Windows-specific headers. +#include <Windows.h> + +// TODO(joi): Defines in atlbase.h cause conflicts; need to figure out +// if/how this family of headers can be included in the PCH; several +// of them are used quite frequently. +/* +#include <atlbase.h> +#include <atlapp.h> +#include <atlcom.h> +#include <atlcrack.h> // 2 +#include <atlctrls.h> // 2 +#include <atlmisc.h> // 2 +#include <atlsafe.h> // 1 +#include <atltheme.h> // 1 +#include <atlwin.h> // 2 +*/ + +#include <commctrl.h> // 2 +#include <commdlg.h> // 3 +#include <cryptuiapi.h> // 2 +#include <dwmapi.h> +#include <Objbase.h> // 2 +#include <objidl.h> // 1 +#include <ole2.h> // 1 +#include <oleacc.h> // 2 +#include <oleauto.h> // 1 +#include <oleidl.h> // 1 +#include <propkey.h> // 2 +#include <propvarutil.h> // 2 +#include <pstore.h> // 2 +#include <shellapi.h> +#include <shlguid.h> // 1 +//#include <shlobj.h> TODO(joi): Caused conflicts, see if they can be resolved. +#include <shlwapi.h> // 1 +#include <shobjidl.h> // 4 +#include <urlhist.h> // 2 +#include <wincrypt.h> // 4 +#include <wtypes.h> // 2 + +#include <errno.h> +#include <fcntl.h> +#include <limits.h> // 4 +#include <math.h> +#include <memory.h> // 1 +#include <signal.h> +#include <stdarg.h> // 1 +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> // 4 + +#include <algorithm> +#include <bitset> // 3 +#include <cmath> +#include <cstddef> +#include <cstdio> // 3 +#include <cstdlib> // 2 +#include <cstring> +#include <deque> +#include <fstream> // 3 +#include <functional> +#include <iomanip> // 2 +#include <iosfwd> // 2 +#include <iterator> +#include <limits> +#include <list> +#include <map> +#include <numeric> // 2 +#include <ostream> +#include <queue> +#include <set> +#include <sstream> +#include <stack> +#include <string> +#include <utility> +#include <vector> diff --git a/build/win_precompile.gypi b/build/win_precompile.gypi new file mode 100644 index 0000000..90bcdff --- /dev/null +++ b/build/win_precompile.gypi @@ -0,0 +1,20 @@ +# Copyright (c) 2011 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Include this file to make targets in your .gyp use the default +# precompiled header on Windows. + +{ + 'conditions': [ + # Restricted to VS 2010 until GYP also supports suppressing + # precompiled headers on .c files in VS 2008. + ['OS=="win" and (MSVS_VERSION=="2010" or MSVS_VERSION=="2010e")', { + 'target_defaults': { + 'msvs_precompiled_header': '<(DEPTH)/build/precompile.h', + 'msvs_precompiled_source': '<(DEPTH)/build/precompile.cc', + 'sources': ['<(DEPTH)/build/precompile.cc'], + }, + }], + ], +} |