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