xref: /llvm-project/clang/lib/Basic/TargetDefines.h (revision acc32667b051d84b1660460344dabdc64b9244c1)
1 //===------- TargetDefines.h - Target define helpers ------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file declares a series of helper functions for defining target-specific
10 // macros.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_CLANG_LIB_BASIC_TARGETDEFINES_H
15 #define LLVM_CLANG_LIB_BASIC_TARGETDEFINES_H
16 
17 #include "clang/Basic/LangOptions.h"
18 #include "clang/Basic/MacroBuilder.h"
19 #include "llvm/ADT/StringRef.h"
20 
21 namespace clang {
22 namespace targets {
23 /// Define a macro name and standard variants.  For example if MacroName is
24 /// "unix", then this will define "__unix", "__unix__", and "unix" when in GNU
25 /// mode.
26 LLVM_LIBRARY_VISIBILITY
27 void DefineStd(clang::MacroBuilder &Builder, llvm::StringRef MacroName,
28                const clang::LangOptions &Opts);
29 
30 LLVM_LIBRARY_VISIBILITY
31 void defineCPUMacros(clang::MacroBuilder &Builder, llvm::StringRef CPUName,
32                      bool Tuning = true);
33 
34 LLVM_LIBRARY_VISIBILITY
35 void addCygMingDefines(const clang::LangOptions &Opts,
36                        clang::MacroBuilder &Builder);
37 } // namespace targets
38 } // namespace clang
39 #endif // LLVM_CLANG_LIB_BASIC_TARGETDEFINES_H
40