summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorjoi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-07 14:14:54 +0000
committerjoi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-07 14:14:54 +0000
commit99ff9934eb0e343160b79f63d314f70012ac877f (patch)
tree17c2cab695a9f9ec96dcd587ec6b88a93f96dd65 /build
parent0c31a504177bf6434d191feed964c6ce7b3a700f (diff)
downloadchromium_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.cc7
-rw-r--r--build/precompile.h100
-rw-r--r--build/win_precompile.gypi20
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'],
+ },
+ }],
+ ],
+}