Branch data Line data Source code
1 : : /* 2 : : * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 : : * 4 : : * Licensed under the Apache License, Version 2.0 (the "License"). 5 : : * You may not use this file except in compliance with the License. 6 : : * A copy of the License is located at 7 : : * 8 : : * http://aws.amazon.com/apache2.0 9 : : * 10 : : * or in the "license" file accompanying this file. This file is distributed 11 : : * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 : : * express or implied. See the License for the specific language governing 13 : : * permissions and limitations under the License. 14 : : */ 15 : : 16 : : #pragma once 17 : : 18 : : /* Let modules know that the prelude was included */ 19 : : #define _S2N_PRELUDE_INCLUDED 20 : : 21 : : /* Define the POSIX API we are targeting */ 22 : : #ifndef _POSIX_C_SOURCE 23 : : #define _POSIX_C_SOURCE 200809L 24 : : #endif 25 : : 26 : : /** 27 : : * If we're building in release mode make sure _FORTIFY_SOURCE is set 28 : : * See: https://www.gnu.org/software/libc/manual/html_node/Source-Fortification.html 29 : : * https://man7.org/linux/man-pages/man7/feature_test_macros.7.html 30 : : * 31 : : * NOTE: _FORTIFY_SOURCE can only be set when optimizations are enabled. 32 : : * https://sourceware.org/git/?p=glibc.git;a=commit;f=include/features.h;h=05c2c9618f583ea4acd69b3fe5ae2a2922dd2ddc 33 : : */ 34 : : #if !defined(_FORTIFY_SOURCE) && defined(S2N_BUILD_RELEASE) 35 : : #define _FORTIFY_SOURCE 2 36 : : #endif 37 : : 38 : : #if ((__GNUC__ >= 4) || defined(__clang__)) && defined(S2N_EXPORTS) 39 : : /** 40 : : * Marks a function as belonging to the public s2n API. 41 : : * 42 : : * See: https://gcc.gnu.org/wiki/Visibility 43 : : */ 44 : : #define S2N_API __attribute__((visibility("default"))) 45 : : #endif 46 : : 47 : : /* These replace the use of MIN/MAX from <sys/param.h>, which is not available on Windows. */ 48 : 18613901 : #define S2N_MIN(a, b) (((a) < (b)) ? (a) : (b)) 49 : 68026742 : #define S2N_MAX(a, b) (((a) > (b)) ? (a) : (b))