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. 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 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. 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 #define _USE_MATH_DEFINES 24 25 // The Windows header needs to come before almost all the other 26 // Windows-specific headers. 27 #include <Windows.h> 28 #include <dwmapi.h> 29 #include <shellapi.h> 30 #include <wincrypt.h> // 4 31 #include <wtypes.h> // 2 32 33 // Defines in atlbase.h cause conflicts; if we could figure out how 34 // this family of headers can be included in the PCH, it might speed 35 // up the build as several of them are used frequently. 36 /* 37 #include <atlbase.h> 38 #include <atlapp.h> 39 #include <atlcom.h> 40 #include <atlcrack.h> // 2 41 #include <atlctrls.h> // 2 42 #include <atlmisc.h> // 2 43 #include <atlsafe.h> // 1 44 #include <atltheme.h> // 1 45 #include <atlwin.h> // 2 46 */ 47 48 // Objbase.h and other files that rely on it bring in [ #define 49 // interface struct ] which can cause problems in a multi-platform 50 // build like Chrome's. #undef-ing it does not work as there are 51 // currently 118 targets that break if we do this, so leaving out of 52 // the precompiled header for now. 53 //#include <commctrl.h> // 2 54 //#include <commdlg.h> // 3 55 //#include <cryptuiapi.h> // 2 56 //#include <Objbase.h> // 2 57 //#include <objidl.h> // 1 58 //#include <ole2.h> // 1 59 //#include <oleacc.h> // 2 60 //#include <oleauto.h> // 1 61 //#include <oleidl.h> // 1 62 //#include <propkey.h> // 2 63 //#include <propvarutil.h> // 2 64 //#include <pstore.h> // 2 65 //#include <shlguid.h> // 1 66 //#include <shlwapi.h> // 1 67 //#include <shobjidl.h> // 4 68 //#include <urlhist.h> // 2 69 70 // Caused other conflicts in addition to the 'interface' issue above. 71 // #include <shlobj.h> 72 73 #include <errno.h> 74 #include <fcntl.h> 75 #include <limits.h> // 4 76 #include <math.h> 77 #include <memory.h> // 1 78 #include <signal.h> 79 #include <stdarg.h> // 1 80 #include <stddef.h> 81 #include <stdio.h> 82 #include <stdlib.h> 83 #include <string.h> 84 #include <time.h> // 4 85 86 #include <algorithm> 87 #include <bitset> // 3 88 #include <cmath> 89 #include <cstddef> 90 #include <cstdio> // 3 91 #include <cstdlib> // 2 92 #include <cstring> 93 #include <deque> 94 #include <fstream> // 3 95 #include <functional> 96 #include <iomanip> // 2 97 #include <iosfwd> // 2 98 #include <iterator> 99 #include <limits> 100 #include <list> 101 #include <map> 102 #include <numeric> // 2 103 #include <ostream> 104 #include <queue> 105 #include <set> 106 #include <sstream> 107 #include <stack> 108 #include <string> 109 #include <utility> 110 #include <vector> 111