1
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
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
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
12
// 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
15
// removing some of the less frequently used headers.
17
#if defined(BUILD_PRECOMPILE_H_)
18
#error You shouldn't include the precompiled header file more than once.
21
#define BUILD_PRECOMPILE_H_
23
// The Windows header needs to come before almost all the other
24
// Windows-specific headers.
28
#include <wincrypt.h> // 4
29
#include <wtypes.h> // 2
31
// 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.
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
46
// 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.
51
//#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
68
// Caused other conflicts in addition to the 'interface' issue above.
69
// #include <shlobj.h>
73
#include <limits.h> // 4
75
#include <memory.h> // 1
77
#include <stdarg.h> // 1
82
#include <time.h> // 4
85
#include <bitset> // 3
88
#include <cstdio> // 3
89
#include <cstdlib> // 2
92
#include <fstream> // 3
94
#include <iomanip> // 2
95
#include <iosfwd> // 2
100
#include <numeric> // 2
110
#include "intsafe_workaround.h"