blob: a3c5193c611f48cb695259016dcb17fe04e44468 [file] [log] [blame]
joi@chromium.org1a66f482012-04-25 04:04:41 +09001// Copyright (c) 2012 The Chromium Authors. All rights reserved.
joi@chromium.org3b4d6d92011-09-07 23:14:54 +09002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Precompiled header for Chromium project on Windows, not used by
6// other build configurations. Using precompiled headers speeds the
7// build up significantly, around 1/4th on VS 2010 on an HP Z600 with 12
8// GB of memory.
9//
10// Numeric comments beside includes are the number of times they were
11// included under src/chrome/browser on 2011/8/20, which was used as a
joi@chromium.org1a66f482012-04-25 04:04:41 +090012// baseline for deciding what to include in the PCH. Includes without
13// a numeric comment are generally included at least 5 times. It may
14// be possible to tweak the speed of the build by commenting out or
joi@chromium.org3b4d6d92011-09-07 23:14:54 +090015// removing some of the less frequently used headers.
16
17#if defined(BUILD_PRECOMPILE_H_)
18#error You shouldn't include the precompiled header file more than once.
19#endif
20
21#define BUILD_PRECOMPILE_H_
22
23// The Windows header needs to come before almost all the other
24// Windows-specific headers.
25#include <Windows.h>
joi@chromium.org225ca5f2011-09-14 19:55:18 +090026#include <dwmapi.h>
27#include <shellapi.h>
28#include <wincrypt.h> // 4
29#include <wtypes.h> // 2
joi@chromium.org3b4d6d92011-09-07 23:14:54 +090030
joi@chromium.org1a66f482012-04-25 04:04:41 +090031// Defines in atlbase.h cause conflicts; if we could figure out how
32// this family of headers can be included in the PCH, it might speed
33// up the build as several of them are used frequently.
joi@chromium.org3b4d6d92011-09-07 23:14:54 +090034/*
35#include <atlbase.h>
36#include <atlapp.h>
37#include <atlcom.h>
38#include <atlcrack.h> // 2
39#include <atlctrls.h> // 2
40#include <atlmisc.h> // 2
41#include <atlsafe.h> // 1
42#include <atltheme.h> // 1
43#include <atlwin.h> // 2
44*/
45
joi@chromium.org1a66f482012-04-25 04:04:41 +090046// Objbase.h and other files that rely on it bring in [ #define
47// interface struct ] which can cause problems in a multi-platform
48// build like Chrome's. #undef-ing it does not work as there are
49// currently 118 targets that break if we do this, so leaving out of
50// the precompiled header for now.
joi@chromium.org225ca5f2011-09-14 19:55:18 +090051//#include <commctrl.h> // 2
52//#include <commdlg.h> // 3
53//#include <cryptuiapi.h> // 2
54//#include <Objbase.h> // 2
55//#include <objidl.h> // 1
56//#include <ole2.h> // 1
57//#include <oleacc.h> // 2
58//#include <oleauto.h> // 1
59//#include <oleidl.h> // 1
60//#include <propkey.h> // 2
61//#include <propvarutil.h> // 2
62//#include <pstore.h> // 2
63//#include <shlguid.h> // 1
64//#include <shlwapi.h> // 1
65//#include <shobjidl.h> // 4
66//#include <urlhist.h> // 2
67
joi@chromium.org1a66f482012-04-25 04:04:41 +090068// Caused other conflicts in addition to the 'interface' issue above.
69// #include <shlobj.h>
joi@chromium.org3b4d6d92011-09-07 23:14:54 +090070
71#include <errno.h>
72#include <fcntl.h>
73#include <limits.h> // 4
74#include <math.h>
75#include <memory.h> // 1
76#include <signal.h>
77#include <stdarg.h> // 1
78#include <stddef.h>
79#include <stdio.h>
80#include <stdlib.h>
81#include <string.h>
82#include <time.h> // 4
83
84#include <algorithm>
85#include <bitset> // 3
86#include <cmath>
87#include <cstddef>
88#include <cstdio> // 3
89#include <cstdlib> // 2
90#include <cstring>
91#include <deque>
92#include <fstream> // 3
93#include <functional>
94#include <iomanip> // 2
95#include <iosfwd> // 2
96#include <iterator>
97#include <limits>
98#include <list>
99#include <map>
100#include <numeric> // 2
101#include <ostream>
102#include <queue>
103#include <set>
104#include <sstream>
105#include <stack>
106#include <string>
107#include <utility>
108#include <vector>