Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/gallium/include/pipe/p_config.h
4565 views
1
/**************************************************************************
2
*
3
* Copyright 2008 VMware, Inc.
4
* All Rights Reserved.
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a
7
* copy of this software and associated documentation files (the
8
* "Software"), to deal in the Software without restriction, including
9
* without limitation the rights to use, copy, modify, merge, publish,
10
* distribute, sub license, and/or sell copies of the Software, and to
11
* permit persons to whom the Software is furnished to do so, subject to
12
* the following conditions:
13
*
14
* The above copyright notice and this permission notice (including the
15
* next paragraph) shall be included in all copies or substantial portions
16
* of the Software.
17
*
18
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21
* IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
22
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
*
26
**************************************************************************/
27
28
/**
29
* @file
30
* Gallium configuration defines.
31
*
32
* This header file sets several defines based on the compiler, processor
33
* architecture, and operating system being used. These defines should be used
34
* throughout the code to facilitate porting to new platforms. It is likely that
35
* this file is auto-generated by an autoconf-like tool at some point, as some
36
* things cannot be determined by pre-defined environment alone.
37
*
38
* See also:
39
* - http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
40
* - echo | gcc -dM -E - | sort
41
* - http://msdn.microsoft.com/en-us/library/b0084kay.aspx
42
*
43
* @author José Fonseca <[email protected]>
44
*/
45
46
#ifndef P_CONFIG_H_
47
#define P_CONFIG_H_
48
49
#include <limits.h>
50
/*
51
* Compiler
52
*/
53
54
#if defined(__GNUC__)
55
#define PIPE_CC_GCC
56
#define PIPE_CC_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
57
#endif
58
59
/*
60
* Meaning of _MSC_VER value:
61
* - 1800: Visual Studio 2013
62
* - 1700: Visual Studio 2012
63
* - 1600: Visual Studio 2010
64
* - 1500: Visual Studio 2008
65
* - 1400: Visual C++ 2005
66
* - 1310: Visual C++ .NET 2003
67
* - 1300: Visual C++ .NET 2002
68
*
69
* __MSC__ seems to be an old macro -- it is not pre-defined on recent MSVC
70
* versions.
71
*/
72
#if defined(_MSC_VER) || defined(__MSC__)
73
#define PIPE_CC_MSVC
74
#endif
75
76
#if defined(__ICL)
77
#define PIPE_CC_ICL
78
#endif
79
80
81
/*
82
* Processor architecture
83
*/
84
85
#if defined(__i386__) /* gcc */ || defined(_M_IX86) /* msvc */ || defined(_X86_) || defined(__386__) || defined(i386) || defined(__i386) /* Sun cc */
86
#define PIPE_ARCH_X86
87
#endif
88
89
#if defined(__x86_64__) /* gcc */ || defined(_M_X64) /* msvc */ || defined(_M_AMD64) /* msvc */ || defined(__x86_64) /* Sun cc */
90
#define PIPE_ARCH_X86_64
91
#endif
92
93
#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
94
#if defined(PIPE_CC_GCC) && !defined(__SSE2__)
95
/* #warning SSE2 support requires -msse -msse2 compiler options */
96
#else
97
#define PIPE_ARCH_SSE
98
#endif
99
#if defined(PIPE_CC_GCC) && (__GNUC__ * 100 + __GNUC_MINOR__) < 409 && !defined(__SSSE3__)
100
/* #warning SSE3 support requires -msse3 compiler options before GCC 4.9 */
101
#else
102
#define PIPE_ARCH_SSSE3
103
#endif
104
#endif
105
106
#if defined(__ppc__) || defined(__ppc64__) || defined(__PPC__)
107
#define PIPE_ARCH_PPC
108
#if defined(__ppc64__) || defined(__PPC64__)
109
#define PIPE_ARCH_PPC_64
110
#endif
111
#endif
112
113
#if defined(__s390x__)
114
#define PIPE_ARCH_S390
115
#endif
116
117
#if defined(__arm__)
118
#define PIPE_ARCH_ARM
119
#endif
120
121
#if defined(__aarch64__) || defined(_M_ARM64)
122
#define PIPE_ARCH_AARCH64
123
#endif
124
125
/*
126
* Endian detection.
127
*/
128
129
#include "util/u_endian.h"
130
131
/*
132
* Auto-detect the operating system family.
133
*/
134
#include "util/detect_os.h"
135
136
#if DETECT_OS_LINUX
137
#define PIPE_OS_LINUX
138
#endif
139
140
#if DETECT_OS_UNIX
141
#define PIPE_OS_UNIX
142
#endif
143
144
#if DETECT_OS_ANDROID
145
#define PIPE_OS_ANDROID
146
#endif
147
148
#if DETECT_OS_FREEBSD
149
#define PIPE_OS_FREEBSD
150
#endif
151
152
#if DETECT_OS_BSD
153
#define PIPE_OS_BSD
154
#endif
155
156
#if DETECT_OS_OPENBSD
157
#define PIPE_OS_OPENBSD
158
#endif
159
160
#if DETECT_OS_NETBSD
161
#define PIPE_OS_NETBSD
162
#endif
163
164
#if DETECT_OS_DRAGONFLY
165
#define PIPE_OS_DRAGONFLY
166
#endif
167
168
#if DETECT_OS_HURD
169
#define PIPE_OS_HURD
170
#endif
171
172
#if DETECT_OS_SOLARIS
173
#define PIPE_OS_SOLARIS
174
#endif
175
176
#if DETECT_OS_APPLE
177
#define PIPE_OS_APPLE
178
#endif
179
180
#if DETECT_OS_WINDOWS
181
#define PIPE_OS_WINDOWS
182
#endif
183
184
#if DETECT_OS_HAIKU
185
#define PIPE_OS_HAIKU
186
#endif
187
188
#if DETECT_OS_CYGWIN
189
#define PIPE_OS_CYGWIN
190
#endif
191
192
#endif /* P_CONFIG_H_ */
193
194