15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Precompiled header for Chromium project on Windows, not used by 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// other build configurations. Using precompiled headers speeds the 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// build up significantly, around 1/4th on VS 2010 on an HP Z600 with 12 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// GB of memory. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Numeric comments beside includes are the number of times they were 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// included under src/chrome/browser on 2011/8/20, which was used as a 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// baseline for deciding what to include in the PCH. Includes without 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// a numeric comment are generally included at least 5 times. It may 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// be possible to tweak the speed of the build by commenting out or 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// removing some of the less frequently used headers. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(BUILD_PRECOMPILE_H_) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#error You shouldn't include the precompiled header file more than once. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BUILD_PRECOMPILE_H_ 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define _USE_MATH_DEFINES 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The Windows header needs to come before almost all the other 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Windows-specific headers. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <Windows.h> 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <dwmapi.h> 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <shellapi.h> 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <wincrypt.h> // 4 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <wtypes.h> // 2 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Defines in atlbase.h cause conflicts; if we could figure out how 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// this family of headers can be included in the PCH, it might speed 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// up the build as several of them are used frequently. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlbase.h> 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlapp.h> 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlcom.h> 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlcrack.h> // 2 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlctrls.h> // 2 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlmisc.h> // 2 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlsafe.h> // 1 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atltheme.h> // 1 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlwin.h> // 2 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Objbase.h and other files that rely on it bring in [ #define 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// interface struct ] which can cause problems in a multi-platform 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// build like Chrome's. #undef-ing it does not work as there are 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// currently 118 targets that break if we do this, so leaving out of 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the precompiled header for now. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <commctrl.h> // 2 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <commdlg.h> // 3 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <cryptuiapi.h> // 2 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <Objbase.h> // 2 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <objidl.h> // 1 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <ole2.h> // 1 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <oleacc.h> // 2 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <oleauto.h> // 1 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <oleidl.h> // 1 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <propkey.h> // 2 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <propvarutil.h> // 2 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <pstore.h> // 2 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <shlguid.h> // 1 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <shlwapi.h> // 1 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <shobjidl.h> // 4 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#include <urlhist.h> // 2 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Caused other conflicts in addition to the 'interface' issue above. 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #include <shlobj.h> 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h> 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <fcntl.h> 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <limits.h> // 4 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <math.h> 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <memory.h> // 1 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <signal.h> 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdarg.h> // 1 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stddef.h> 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdio.h> 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdlib.h> 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h> 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <time.h> // 4 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <algorithm> 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <bitset> // 3 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cmath> 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cstddef> 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cstdio> // 3 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cstdlib> // 2 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cstring> 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <deque> 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <fstream> // 3 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <functional> 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <iomanip> // 2 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <iosfwd> // 2 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <iterator> 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <limits> 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <list> 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map> 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <numeric> // 2 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <ostream> 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <queue> 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set> 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sstream> 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stack> 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <utility> 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 111