1//===- DIASupport.h - Common header includes for DIA ------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9// Common defines and header includes for all LLVMDebugInfoPDBDIA.  The
10// definitions here configure the necessary #defines and include system headers
11// in the proper order for using DIA.
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_DEBUGINFO_PDB_DIA_DIASUPPORT_H
15#define LLVM_DEBUGINFO_PDB_DIA_DIASUPPORT_H
16
17// Require at least Vista
18#define NTDDI_VERSION NTDDI_VISTA
19#define _WIN32_WINNT _WIN32_WINNT_VISTA
20#define WINVER _WIN32_WINNT_VISTA
21#ifndef NOMINMAX
22#define NOMINMAX
23#endif
24
25// llvm/Support/Debug.h unconditionally #defines DEBUG as a macro.
26// DIA headers #define it if it is not already defined, so we have
27// an order of includes problem.  The real fix is to make LLVM use
28// something less generic than DEBUG, such as LLVM_DEBUG(), but it's
29// fairly prevalent.  So for now, we save the definition state and
30// restore it.
31#pragma push_macro("DEBUG")
32
33// atlbase.h has to come before windows.h
34#include <atlbase.h>
35#include <windows.h>
36
37// DIA headers must come after windows headers.
38#include <cvconst.h>
39#include <dia2.h>
40#include <diacreate.h>
41
42#pragma pop_macro("DEBUG")
43
44#endif // LLVM_DEBUGINFO_PDB_DIA_DIASUPPORT_H
45