Index: build/precompile.h |
diff --git a/build/precompile.h b/build/precompile.h |
index 50a9b87e2fb2326c08ebd94b53d81bd380597d96..32c2f11059a5cb77e6549f63aeba0ba59c6bef25 100644 |
--- a/build/precompile.h |
+++ b/build/precompile.h |
@@ -2,8 +2,17 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-// This file is used as a precompiled header for both C and C++ files. So |
-// any C++ headers must go in the __cplusplus block below. |
+// 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. Includes without |
+// a numeric comment are generally included at least 5 times. 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. |
@@ -13,38 +22,83 @@ |
#define _USE_MATH_DEFINES |
+// The Windows header needs to come before almost all the other |
+// Windows-specific headers. |
+#include <Windows.h> |
+#include <dwmapi.h> |
+#include <shellapi.h> |
+#include <wtypes.h> // 2 |
+ |
+// Defines in atlbase.h cause conflicts; if we could figure out how |
+// this family of headers can be included in the PCH, it might speed |
+// up the build as several of them are used 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 |
+*/ |
+ |
+// Objbase.h and other files that rely on it bring in [ #define |
+// interface struct ] which can cause problems in a multi-platform |
+// build like Chrome's. #undef-ing it does not work as there are |
+// currently 118 targets that break if we do this, so leaving out of |
+// the precompiled header for now. |
+//#include <commctrl.h> // 2 |
+//#include <commdlg.h> // 3 |
+//#include <cryptuiapi.h> // 2 |
+//#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 <shlguid.h> // 1 |
+//#include <shlwapi.h> // 1 |
+//#include <shobjidl.h> // 4 |
+//#include <urlhist.h> // 2 |
+ |
+// Caused other conflicts in addition to the 'interface' issue above. |
+// #include <shlobj.h> |
+ |
#include <errno.h> |
#include <fcntl.h> |
-#include <limits.h> |
+#include <limits.h> // 4 |
#include <math.h> |
-#include <memory.h> |
+#include <memory.h> // 1 |
#include <signal.h> |
-#include <stdarg.h> |
+#include <stdarg.h> // 1 |
#include <stddef.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
-#include <time.h> |
- |
-#if defined(__cplusplus) |
+#include <time.h> // 4 |
#include <algorithm> |
-#include <bitset> |
+#include <bitset> // 3 |
#include <cmath> |
#include <cstddef> |
-#include <cstdio> |
-#include <cstdlib> |
+#include <cstdio> // 3 |
+#include <cstdlib> // 2 |
#include <cstring> |
#include <deque> |
-#include <fstream> |
+#include <fstream> // 3 |
#include <functional> |
-#include <iomanip> |
-#include <iosfwd> |
+#include <iomanip> // 2 |
+#include <iosfwd> // 2 |
#include <iterator> |
#include <limits> |
#include <list> |
#include <map> |
-#include <numeric> |
+#include <numeric> // 2 |
#include <ostream> |
#include <queue> |
#include <set> |
@@ -53,5 +107,3 @@ |
#include <string> |
#include <utility> |
#include <vector> |
- |
-#endif // __cplusplus |