1 | // Copyright 2019 The SwiftShader Authors. All Rights Reserved. |
2 | // |
3 | // Licensed under the Apache License, Version 2.0 (the "License"); |
4 | // you may not use this file except in compliance with the License. |
5 | // You may obtain a copy of the License at |
6 | // |
7 | // http://www.apache.org/licenses/LICENSE-2.0 |
8 | // |
9 | // Unless required by applicable law or agreed to in writing, software |
10 | // distributed under the License is distributed on an "AS IS" BASIS, |
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 | // See the License for the specific language governing permissions and |
13 | // limitations under the License. |
14 | |
15 | #ifndef Build_hpp |
16 | #define Build_hpp |
17 | |
18 | // Define MEMORY_SANITIZER_ENABLED to 1 if the project was build with the memory |
19 | // sanitizer enabled (-fsanitize=memory). |
20 | #if defined(__SANITIZE_MEMORY__) |
21 | #define MEMORY_SANITIZER_ENABLED 1 |
22 | #else // defined(__SANITIZE_MEMORY__) |
23 | #if defined(__clang__) |
24 | #if __has_feature(memory_sanitizer) |
25 | #define MEMORY_SANITIZER_ENABLED 1 |
26 | #endif // __has_feature(memory_sanitizer) |
27 | #endif // defined(__clang__) |
28 | #endif // defined(__SANITIZE_MEMORY__) |
29 | |
30 | // MEMORY_SANITIZER_ONLY(X) resolves to X if MEMORY_SANITIZER_ENABLED is defined |
31 | // to a non-zero value, otherwise MEMORY_SANITIZER_ONLY() is stripped by the |
32 | // preprocessor. |
33 | #if MEMORY_SANITIZER_ENABLED |
34 | #define MEMORY_SANITIZER_ONLY(x) x |
35 | #else |
36 | #define MEMORY_SANITIZER_ONLY(x) |
37 | #endif // MEMORY_SANITIZER_ENABLED |
38 | |
39 | #endif // Build_hpp |
40 | |