1/*
2 * Copyright (c) 2017 Thomas Pornin <pornin@bolet.org>
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining
5 * a copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sublicense, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be
13 * included in all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 */
24
25#include "inner.h"
26
27static const br_config_option config[] = {
28	{ "BR_64",
29#if BR_64
30	 1
31#else
32	 0
33#endif
34	},
35	{ "BR_AES_X86NI",
36#if BR_AES_X86NI
37	 1
38#else
39	 0
40#endif
41	},
42	{ "BR_amd64",
43#if BR_amd64
44	 1
45#else
46	 0
47#endif
48	},
49	{ "BR_ARMEL_CORTEXM_GCC",
50#if BR_ARMEL_CORTEXM_GCC
51	 1
52#else
53	 0
54#endif
55	},
56	{ "BR_BE_UNALIGNED",
57#if BR_BE_UNALIGNED
58	 1
59#else
60	 0
61#endif
62	},
63	{ "BR_CLANG",
64#if BR_CLANG
65	 1
66#else
67	 0
68#endif
69	},
70	{ "BR_CLANG_3_7",
71#if BR_CLANG_3_7
72	 1
73#else
74	 0
75#endif
76	},
77	{ "BR_CLANG_3_8",
78#if BR_CLANG_3_8
79	 1
80#else
81	 0
82#endif
83	},
84	{ "BR_CT_MUL15",
85#if BR_CT_MUL15
86	 1
87#else
88	 0
89#endif
90	},
91	{ "BR_CT_MUL31",
92#if BR_CT_MUL31
93	 1
94#else
95	 0
96#endif
97	},
98	{ "BR_GCC",
99#if BR_GCC
100	 1
101#else
102	 0
103#endif
104	},
105	{ "BR_GCC_4_4",
106#if BR_GCC_4_4
107	 1
108#else
109	 0
110#endif
111	},
112	{ "BR_GCC_4_5",
113#if BR_GCC_4_5
114	 1
115#else
116	 0
117#endif
118	},
119	{ "BR_GCC_4_6",
120#if BR_GCC_4_6
121	 1
122#else
123	 0
124#endif
125	},
126	{ "BR_GCC_4_7",
127#if BR_GCC_4_7
128	 1
129#else
130	 0
131#endif
132	},
133	{ "BR_GCC_4_8",
134#if BR_GCC_4_8
135	 1
136#else
137	 0
138#endif
139	},
140	{ "BR_GCC_4_9",
141#if BR_GCC_4_9
142	 1
143#else
144	 0
145#endif
146	},
147	{ "BR_GCC_5_0",
148#if BR_GCC_5_0
149	 1
150#else
151	 0
152#endif
153	},
154	{ "BR_i386",
155#if BR_i386
156	 1
157#else
158	 0
159#endif
160	},
161	{ "BR_INT128",
162#if BR_INT128
163	 1
164#else
165	 0
166#endif
167	},
168	{ "BR_LE_UNALIGNED",
169#if BR_LE_UNALIGNED
170	 1
171#else
172	 0
173#endif
174	},
175	{ "BR_LOMUL",
176#if BR_LOMUL
177	 1
178#else
179	 0
180#endif
181	},
182	{ "BR_MAX_EC_SIZE", BR_MAX_EC_SIZE },
183	{ "BR_MAX_RSA_SIZE", BR_MAX_RSA_SIZE },
184	{ "BR_MAX_RSA_FACTOR", BR_MAX_RSA_FACTOR },
185	{ "BR_MSC",
186#if BR_MSC
187	 1
188#else
189	 0
190#endif
191	},
192	{ "BR_MSC_2005",
193#if BR_MSC_2005
194	 1
195#else
196	 0
197#endif
198	},
199	{ "BR_MSC_2008",
200#if BR_MSC_2008
201	 1
202#else
203	 0
204#endif
205	},
206	{ "BR_MSC_2010",
207#if BR_MSC_2010
208	 1
209#else
210	 0
211#endif
212	},
213	{ "BR_MSC_2012",
214#if BR_MSC_2012
215	 1
216#else
217	 0
218#endif
219	},
220	{ "BR_MSC_2013",
221#if BR_MSC_2013
222	 1
223#else
224	 0
225#endif
226	},
227	{ "BR_MSC_2015",
228#if BR_MSC_2015
229	 1
230#else
231	 0
232#endif
233	},
234	{ "BR_POWER8",
235#if BR_POWER8
236	 1
237#else
238	 0
239#endif
240	},
241	{ "BR_RDRAND",
242#if BR_RDRAND
243	 1
244#else
245	 0
246#endif
247	},
248	{ "BR_SLOW_MUL",
249#if BR_SLOW_MUL
250	 1
251#else
252	 0
253#endif
254	},
255	{ "BR_SLOW_MUL15",
256#if BR_SLOW_MUL15
257	 1
258#else
259	 0
260#endif
261	},
262	{ "BR_SSE2",
263#if BR_SSE2
264	 1
265#else
266	 0
267#endif
268	},
269	{ "BR_UMUL128",
270#if BR_UMUL128
271	 1
272#else
273	 0
274#endif
275	},
276	{ "BR_USE_UNIX_TIME",
277#if BR_USE_UNIX_TIME
278	 1
279#else
280	 0
281#endif
282	},
283	{ "BR_USE_WIN32_RAND",
284#if BR_USE_WIN32_RAND
285	 1
286#else
287	 0
288#endif
289	},
290	{ "BR_USE_WIN32_TIME",
291#if BR_USE_WIN32_TIME
292	 1
293#else
294	 0
295#endif
296	},
297
298	{ NULL, 0 }
299};
300
301/* see bearssl.h */
302const br_config_option *
303br_get_config(void)
304{
305	return config;
306}
307