Guard DECLARE_DEPRECATED against multiple includes of opensslconf.h
[openssl.git] / include / openssl / opensslconf.h.in
1 /*
2  * {- join("\n * ", @autowarntext) -}
3  *
4  * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
5  *
6  * Licensed under the OpenSSL license (the "License").  You may not use
7  * this file except in compliance with the License.  You can obtain a copy
8  * in the file LICENSE in the source distribution or at
9  * https://www.openssl.org/source/license.html
10  */
11
12 #ifdef  __cplusplus
13 extern "C" {
14 #endif
15
16 #ifdef OPENSSL_ALGORITHM_DEFINES
17 # error OPENSSL_ALGORITHM_DEFINES no longer supported
18 #endif
19
20 /*
21  * OpenSSL was configured with the following options:
22  */
23
24 {- if (@{$config{openssl_sys_defines}}) {
25       foreach (@{$config{openssl_sys_defines}}) {
26         $OUT .= "#ifndef $_\n";
27         $OUT .= "# define $_ 1\n";
28         $OUT .= "#endif\n";
29       }
30     }
31     foreach (@{$config{openssl_api_defines}}) {
32         (my $macro, my $value) = $_ =~ /^(.*?)=(.*?)$/;
33         $OUT .= "#define $macro $value\n";
34     }
35     if (@{$config{openssl_algorithm_defines}}) {
36       foreach (@{$config{openssl_algorithm_defines}}) {
37         $OUT .= "#ifndef $_\n";
38         $OUT .= "# define $_\n";
39         $OUT .= "#endif\n";
40       }
41     }
42     if (@{$config{openssl_thread_defines}}) {
43       foreach (@{$config{openssl_thread_defines}}) {
44         $OUT .= "#ifndef $_\n";
45         $OUT .= "# define $_\n";
46         $OUT .= "#endif\n";
47       }
48     }
49     if (@{$config{openssl_other_defines}}) {
50       foreach (@{$config{openssl_other_defines}}) {
51         $OUT .= "#ifndef $_\n";
52         $OUT .= "# define $_\n";
53         $OUT .= "#endif\n";
54       }
55     }
56     "";
57 -}
58
59 /*
60  * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers
61  * don't like that.  This will hopefully silence them.
62  */
63 #define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy;
64
65 /*
66  * Applications should use -DOPENSSL_API_COMPAT=<version> to suppress the
67  * declarations of functions deprecated in or before <version>. Otherwise, they
68  * still won't see them if the library has been built to disable deprecated
69  * functions.
70  */
71 #ifndef DECLARE_DEPRECATED
72 # define DECLARE_DEPRECATED(f)   f;
73 # ifdef __GNUC__
74 #  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)
75 #   undef DECLARE_DEPRECATED
76 #   define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
77 #  endif
78 # endif
79 #endif
80
81 #ifndef OPENSSL_FILE
82 # ifdef OPENSSL_NO_FILENAMES
83 #  define OPENSSL_FILE ""
84 #  define OPENSSL_LINE 0
85 # else
86 #  define OPENSSL_FILE __FILE__
87 #  define OPENSSL_LINE __LINE__
88 # endif
89 #endif
90
91 #ifndef OPENSSL_MIN_API
92 # define OPENSSL_MIN_API 0
93 #endif
94
95 #if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API
96 # undef OPENSSL_API_COMPAT
97 # define OPENSSL_API_COMPAT OPENSSL_MIN_API
98 #endif
99
100 #if OPENSSL_API_COMPAT < 0x10200000L
101 # define DEPRECATEDIN_1_2_0(f)   DECLARE_DEPRECATED(f)
102 #else
103 # define DEPRECATEDIN_1_2_0(f)
104 #endif
105
106 #if OPENSSL_API_COMPAT < 0x10100000L
107 # define DEPRECATEDIN_1_1_0(f)   DECLARE_DEPRECATED(f)
108 #else
109 # define DEPRECATEDIN_1_1_0(f)
110 #endif
111
112 #if OPENSSL_API_COMPAT < 0x10000000L
113 # define DEPRECATEDIN_1_0_0(f)   DECLARE_DEPRECATED(f)
114 #else
115 # define DEPRECATEDIN_1_0_0(f)
116 #endif
117
118 #if OPENSSL_API_COMPAT < 0x00908000L
119 # define DEPRECATEDIN_0_9_8(f)   DECLARE_DEPRECATED(f)
120 #else
121 # define DEPRECATEDIN_0_9_8(f)
122 #endif
123
124 /* Generate 80386 code? */
125 {- $config{processor} eq "386" ? "#define" : "#undef" -} I386_ONLY
126
127 #undef OPENSSL_UNISTD
128 #define OPENSSL_UNISTD {- $target{unistd} -}
129
130 {- $config{export_var_as_fn} ? "#define" : "#undef" -} OPENSSL_EXPORT_VAR_AS_FUNCTION
131
132 /*
133  * The following are cipher-specific, but are part of the public API.
134  */
135 #if !defined(OPENSSL_SYS_UEFI)
136 {- $config{bn_ll} ? "# define" : "# undef" -} BN_LLONG
137 /* Only one for the following should be defined */
138 {- $config{b64l} ? "# define" : "# undef" -} SIXTY_FOUR_BIT_LONG
139 {- $config{b64}  ? "# define" : "# undef" -} SIXTY_FOUR_BIT
140 {- $config{b32}  ? "# define" : "# undef" -} THIRTY_TWO_BIT
141 #endif
142
143 #define RC4_INT {- $config{rc4_int} -}
144
145 #ifdef  __cplusplus
146 }
147 #endif