1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #ifndef PMIX_CONFIG_BOTTOM_H
27 #define PMIX_CONFIG_BOTTOM_H
28
29
30
31
32
33
34 #ifndef PMIX_BUILDING
35 #define PMIX_BUILDING 1
36 #endif
37
38
39
40
41
42
43
44 #ifndef HAVE_UNISTD_H
45 #define YY_NO_UNISTD_H
46 #endif
47
48
49
50
51
52
53
54
55
56 #define PMIX_HAVE_THREADS (PMIX_HAVE_POSIX_THREADS || PMIX_HAVE_SOLARIS_THREADS)
57
58
59
60
61
62
63 #undef BEGIN_C_DECLS
64 #undef END_C_DECLS
65 #if defined(c_plusplus) || defined(__cplusplus)
66 # define BEGIN_C_DECLS extern "C" {
67 # define END_C_DECLS }
68 #else
69 #define BEGIN_C_DECLS
70 #define END_C_DECLS
71 #endif
72
73
74 #undef PMIX_LINUX_SYS
75
76
77 #undef PMIX_HAVE_CPU_SET
78
79
80 #undef PMIX_HAVE_WINDOWS_H
81 #undef pmix_pid_t
82 #undef pmix_thread_t
83
84
85
86
87
88
89
90
91
92 #if defined(__cplusplus) && \
93 (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR >= 4))
94 #define GXX_ABOVE_3_4 1
95 #else
96 #define GXX_ABOVE_3_4 0
97 #endif
98
99 #if !defined(__cplusplus) && \
100 (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
101 #define GCC_ABOVE_2_95 1
102 #else
103 #define GCC_ABOVE_2_95 0
104 #endif
105
106 #if !defined(__cplusplus) && \
107 (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
108 #define GCC_ABOVE_2_96 1
109 #else
110 #define GCC_ABOVE_2_96 0
111 #endif
112
113 #if !defined(__cplusplus) && \
114 (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
115 #define GCC_ABOVE_3_3 1
116 #else
117 #define GCC_ABOVE_3_3 0
118 #endif
119
120
121
122
123
124
125 #if PMIX_HAVE_ATTRIBUTE_ALIGNED
126 # define __pmix_attribute_aligned__(a) __attribute__((__aligned__(a)))
127 # define __pmix_attribute_aligned_max__ __attribute__((__aligned__))
128 #else
129 # define __pmix_attribute_aligned__(a)
130 # define __pmix_attribute_aligned_max__
131 #endif
132
133
134
135 #if defined(c_plusplus) || defined(__cplusplus)
136 # define __pmix_inline inline
137 #elif defined(_MSC_VER) || defined(__HP_cc)
138 # define __pmix_inline __inline
139 #else
140 # define __pmix_inline __inline__
141 #endif
142
143 #if PMIX_HAVE_ATTRIBUTE_ALWAYS_INLINE
144 # define __pmix_attribute_always_inline__ __attribute__((__always_inline__))
145 #else
146 # define __pmix_attribute_always_inline__
147 #endif
148
149 #if PMIX_HAVE_ATTRIBUTE_COLD
150 # define __pmix_attribute_cold__ __attribute__((__cold__))
151 #else
152 # define __pmix_attribute_cold__
153 #endif
154
155 #ifdef PMIX_HAVE_ATTRIBUTE_CONST
156 #define __PMIX_HAVE_ATTRIBUTE_CONST PMIX_HAVE_ATTRIBUTE_CONST
157 #elif defined(__GNUC__)
158 # define __PMIX_HAVE_ATTRIBUTE_CONST (GXX_ABOVE_3_4 || GCC_ABOVE_2_95)
159 #else
160 # define __PMIX_HAVE_ATTRIBUTE_CONST 0
161 #endif
162 #if __PMIX_HAVE_ATTRIBUTE_CONST
163 # define __pmix_attribute_const __attribute__((__const__))
164 #else
165 # define __pmix_attribute_const
166 #endif
167
168 #if PMIX_HAVE_ATTRIBUTE_CONST
169 # define __pmix_attribute_const__ __attribute__((__const__))
170 #else
171 # define __pmix_attribute_const__
172 #endif
173
174 #ifdef PMIX_HAVE_ATTRIBUTE_DEPRECATED
175 #define __PMIX_HAVE_ATTRIBUTE_DEPRECATED PMIX_HAVE_ATTRIBUTE_DEPRECATED
176 #elif defined(__GNUC__)
177 # define __PMIX_HAVE_ATTRIBUTE_DEPRECATED (GXX_ABOVE_3_4 || GCC_ABOVE_3_3)
178 #else
179 # define __PMIX_HAVE_ATTRIBUTE_DEPRECATED 0
180 #endif
181 #if __PMIX_HAVE_ATTRIBUTE_DEPRECATED
182 # define __pmix_attribute_deprecated __attribute__((__deprecated__))
183 #else
184 # define __pmix_attribute_deprecated
185 #endif
186
187 #if PMIX_HAVE_ATTRIBUTE_DEPRECATED
188 # define __pmix_attribute_deprecated__ __attribute__((__deprecated__))
189 #else
190 # define __pmix_attribute_deprecated__
191 #endif
192
193 #if PMIX_HAVE_ATTRIBUTE_FORMAT
194 # define __pmix_attribute_format__(a,b,c) __attribute__((__format__(a, b, c)))
195 #else
196 # define __pmix_attribute_format__(a,b,c)
197 #endif
198
199
200 #if PMIX_HAVE_ATTRIBUTE_FORMAT_FUNCPTR
201 # define __pmix_attribute_format_funcptr__(a,b,c) __attribute__((__format__(a, b, c)))
202 #else
203 # define __pmix_attribute_format_funcptr__(a,b,c)
204 #endif
205
206 #if PMIX_HAVE_ATTRIBUTE_HOT
207 # define __pmix_attribute_hot__ __attribute__((__hot__))
208 #else
209 # define __pmix_attribute_hot__
210 #endif
211
212 #ifdef PMIX_HAVE_ATTRIBUTE_MALLOC
213 #define __PMIX_HAVE_ATTRIBUTE_MALLOC PMIX_HAVE_ATTRIBUTE_MALLOC
214 #elif defined(__GNUC__)
215 # define __PMIX_HAVE_ATTRIBUTE_MALLOC (GXX_ABOVE_3_4 || GCC_ABOVE_2_96)
216 #else
217 # define __PMIX_HAVE_ATTRIBUTE_MALLOC 0
218 #endif
219 #if __PMIX_HAVE_ATTRIBUTE_MALLOC
220 # define __pmix_attribute_malloc __attribute__((__malloc__))
221 #else
222 # define __pmix_attribute_malloc
223 #endif
224
225 #if PMIX_HAVE_ATTRIBUTE_MALLOC
226 # define __pmix_attribute_malloc__ __attribute__((__malloc__))
227 #else
228 # define __pmix_attribute_malloc__
229 #endif
230
231 #ifdef PMIX_HAVE_ATTRIBUTE_MAY_ALIAS
232 #define __PMIX_HAVE_ATTRIBUTE_MAY_ALIAS PMIX_HAVE_ATTRIBUTE_MAY_ALIAS
233 #elif defined(__GNUC__)
234 # define __PMIX_HAVE_ATTRIBUTE_MAY_ALIAS (GXX_ABOVE_3_4 || GCC_ABOVE_3_3)
235 #else
236 # define __PMIX_HAVE_ATTRIBUTE_MAY_ALIAS 0
237 #endif
238 #if __PMIX_HAVE_ATTRIBUTE_MAY_ALIAS
239 # define __pmix_attribute_may_alias __attribute__((__may_alias__))
240 #else
241 # define __pmix_attribute_may_alias
242 #endif
243
244 #if PMIX_HAVE_ATTRIBUTE_MAY_ALIAS
245 # define __pmix_attribute_may_alias__ __attribute__((__may_alias__))
246 #else
247 # define __pmix_attribute_may_alias__
248 #endif
249
250 #if PMIX_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION
251 # define __pmix_attribute_no_instrument_function__ __attribute__((__no_instrument_function__))
252 #else
253 # define __pmix_attribute_no_instrument_function__
254 #endif
255
256 #if PMIX_HAVE_ATTRIBUTE_NONNULL
257 # define __pmix_attribute_nonnull__(a) __attribute__((__nonnull__(a)))
258 # define __pmix_attribute_nonnull_all__ __attribute__((__nonnull__))
259 #else
260 # define __pmix_attribute_nonnull__(a)
261 # define __pmix_attribute_nonnull_all__
262 #endif
263
264 #if PMIX_HAVE_ATTRIBUTE_NORETURN
265 # define __pmix_attribute_noreturn__ __attribute__((__noreturn__))
266 #else
267 # define __pmix_attribute_noreturn__
268 #endif
269
270
271 #if PMIX_HAVE_ATTRIBUTE_NORETURN_FUNCPTR
272 # define __pmix_attribute_noreturn_funcptr__ __attribute__((__noreturn__))
273 #else
274 # define __pmix_attribute_noreturn_funcptr__
275 #endif
276
277 #if PMIX_HAVE_ATTRIBUTE_PACKED
278 # define __pmix_attribute_packed__ __attribute__((__packed__))
279 #else
280 # define __pmix_attribute_packed__
281 #endif
282
283 #ifdef PMIX_HAVE_ATTRIBUTE_PURE
284 #define __PMIX_HAVE_ATTRIBUTE_PURE PMIX_HAVE_ATTRIBUTE_PURE
285 #elif defined(__GNUC__)
286 # define __PMIX_HAVE_ATTRIBUTE_PURE (GXX_ABOVE_3_4 || GCC_ABOVE_2_96)
287 #else
288 # define __PMIX_HAVE_ATTRIBUTE_PURE 0
289 #endif
290 #if __PMIX_HAVE_ATTRIBUTE_PURE
291 # define __pmix_attribute_pure __attribute__((__pure__))
292 #else
293 # define __pmix_attribute_pure
294 #endif
295
296 #if PMIX_HAVE_ATTRIBUTE_PURE
297 # define __pmix_attribute_pure__ __attribute__((__pure__))
298 #else
299 # define __pmix_attribute_pure__
300 #endif
301
302 #if PMIX_HAVE_ATTRIBUTE_SENTINEL
303 # define __pmix_attribute_sentinel__ __attribute__((__sentinel__))
304 #else
305 # define __pmix_attribute_sentinel__
306 #endif
307
308
309 #ifdef PMIX_HAVE_ATTRIBUTE_UNUSED
310 #define __PMIX_HAVE_ATTRIBUTE_UNUSED PMIX_HAVE_ATTRIBUTE_UNUSED
311 #elif defined(__GNUC__)
312 # define __PMIX_HAVE_ATTRIBUTE_UNUSED (GXX_ABOVE_3_4 || GCC_ABOVE_2_95)
313 #else
314 # define __PMIX_HAVE_ATTRIBUTE_UNUSED 0
315 #endif
316 #if __PMIX_HAVE_ATTRIBUTE_UNUSED
317 # define __pmix_attribute_unused __attribute__((__unused__))
318 #else
319 # define __pmix_attribute_unused
320 #endif
321
322 #if PMIX_HAVE_ATTRIBUTE_UNUSED
323 # define __pmix_attribute_unused__ __attribute__((__unused__))
324 #else
325 # define __pmix_attribute_unused__
326 #endif
327
328 #if PMIX_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT
329 # define __pmix_attribute_warn_unused_result__ __attribute__((__warn_unused_result__))
330 #else
331 # define __pmix_attribute_warn_unused_result__
332 #endif
333
334 #if PMIX_HAVE_ATTRIBUTE_DESTRUCTOR
335 # define __pmix_attribute_destructor__ __attribute__((__destructor__))
336 #else
337 # define __pmix_attribute_destructor__
338 #endif
339
340 #if PMIX_HAVE_ATTRIBUTE_OPTNONE
341 # define __pmix_attribute_optnone__ __attribute__((__optnone__))
342 #else
343 # define __pmix_attribute_optnone__
344 #endif
345
346 #if PMIX_HAVE_ATTRIBUTE_EXTENSION
347 # define __pmix_attribute_extension__ __extension__
348 #else
349 # define __pmix_attribute_extension__
350 #endif
351
352
353
354
355 #ifdef HAVE_STDINT_H
356 #if !defined(__STDC_LIMIT_MACROS) && (defined(c_plusplus) || defined (__cplusplus))
357
358
359
360 #define __STDC_LIMIT_MACROS
361 #endif
362 #include <src/include/pmix_config.h>
363 #include <stdint.h>
364 #else
365 #include <src/include/pmix_stdint.h>
366 #endif
367
368
369
370
371
372
373
374
375 #if PMIX_BUILDING
376
377 #ifndef HAVE_PTRDIFF_T
378 typedef PMIX_PTRDIFF_TYPE ptrdiff_t;
379 #endif
380
381
382
383
384 #include <limits.h>
385 #ifdef HAVE_SYS_PARAM_H
386 #include <sys/param.h>
387 #endif
388 #if defined(PATH_MAX)
389 #define PMIX_PATH_MAX (PATH_MAX + 1)
390 #elif defined(_POSIX_PATH_MAX)
391 #define PMIX_PATH_MAX (_POSIX_PATH_MAX + 1)
392 #else
393 #define PMIX_PATH_MAX 256
394 #endif
395
396 #if defined(MAXHOSTNAMELEN)
397 #define PMIX_MAXHOSTNAMELEN (MAXHOSTNAMELEN + 1)
398 #elif defined(HOST_NAME_MAX)
399 #define PMIX_MAXHOSTNAMELEN (HOST_NAME_MAX + 1)
400 #else
401
402 #define PMIX_MAXHOSTNAMELEN (255 + 1)
403 #endif
404
405
406
407
408 #define PMIX_PATH_SEP "/"
409 #define PMIX_ENV_SEP ':'
410
411
412
413
414 #if !defined(HAVE_VASPRINTF) || !defined(HAVE_VSNPRINTF)
415 #include <stdarg.h>
416 #include <stdlib.h>
417 #endif
418
419 #if !defined(HAVE_ASPRINTF) || !defined(HAVE_SNPRINTF) || !defined(HAVE_VASPRINTF) || !defined(HAVE_VSNPRINTF)
420 #include "util/printf.h"
421 #endif
422
423 #ifndef HAVE_ASPRINTF
424 # define asprintf pmix_asprintf
425 #endif
426
427 #ifndef HAVE_SNPRINTF
428 # define snprintf pmix_snprintf
429 #endif
430
431 #ifndef HAVE_VASPRINTF
432 # define vasprintf pmix_vasprintf
433 #endif
434
435 #ifndef HAVE_VSNPRINTF
436 # define vsnprintf pmix_vsnprintf
437 #endif
438
439
440
441
442
443 #if PMIX_HAVE_BROKEN_QSORT
444 #ifdef qsort
445 #undef qsort
446 #endif
447
448 #include "util/qsort.h"
449 #define qsort pmix_qsort
450 #endif
451
452
453
454
455
456
457
458
459 #if defined(HAVE_DECL___FUNC__) && !HAVE_DECL___FUNC__
460 #define __func__ __FILE__
461 #endif
462
463 #define IOVBASE_TYPE void
464
465 #include <stdbool.h>
466
467
468
469
470 # define PMIX_INT_TO_BOOL(VALUE) (bool)(VALUE)
471
472 #if !defined(HAVE_STRUCT_SOCKADDR_STORAGE) && defined(HAVE_STRUCT_SOCKADDR_IN)
473 #define sockaddr_storage sockaddr
474 #define ss_family sa_family
475 #endif
476
477
478
479 #if !defined(HAVE_STRUCT_SOCKADDR_IN6) && defined(HAVE_STRUCT_SOCKADDR_IN)
480 #define sockaddr_in6 sockaddr_in
481 #define sin6_len sin_len
482 #define sin6_family sin_family
483 #define sin6_port sin_port
484 #define sin6_addr sin_addr
485 #endif
486
487 #if !HAVE_DECL_AF_UNSPEC
488 #define AF_UNSPEC 0
489 #endif
490 #if !HAVE_DECL_PF_UNSPEC
491 #define PF_UNSPEC 0
492 #endif
493 #if !HAVE_DECL_AF_INET6
494 #define AF_INET6 AF_UNSPEC
495 #endif
496 #if !HAVE_DECL_PF_INET6
497 #define PF_INET6 PF_UNSPEC
498 #endif
499
500 #if defined(__APPLE__) && defined(HAVE_INTTYPES_H)
501
502
503
504
505
506
507
508 #include <inttypes.h>
509 #if defined(__PRI_64_LENGTH_MODIFIER__)
510 #undef __PRI_64_LENGTH_MODIFIER__
511 #define __PRI_64_LENGTH_MODIFIER__ "ll"
512 #endif
513 #if defined(__SCN_64_LENGTH_MODIFIER__)
514 #undef __SCN_64_LENGTH_MODIFIER__
515 #define __SCN_64_LENGTH_MODIFIER__ "ll"
516 #endif
517 #endif
518
519 #ifdef MCS_VXWORKS
520
521
522
523 #ifdef HAVE_IOLIB_H
524
525 #include <ioLib.h>
526 #endif
527 #ifdef HAVE_SOCKLIB_H
528
529 #include <sockLib.h>
530 #endif
531 #ifdef HAVE_HOSTLIB_H
532
533 #include <hostLib.h>
534 #endif
535 #endif
536
537
538
539
540
541 #if defined(c_plusplus) || defined(__cplusplus)
542 #undef restrict
543 #define restrict
544 #endif
545
546 #if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
547 # define __pmix_restrict __restrict
548 #else
549 # if __STDC_VERSION__ >= 199901L
550 # define __pmix_restrict restrict
551 # else
552 # define __pmix_restrict
553 # endif
554 #endif
555
556 #else
557
558
559
560
561
562
563
564
565
566
567 #undef PACKAGE_BUGREPORT
568 #undef PACKAGE_NAME
569 #undef PACKAGE_STRING
570 #undef PACKAGE_TARNAME
571 #undef PACKAGE_VERSION
572 #undef PACKAGE_URL
573 #undef HAVE_CONFIG_H
574
575 #endif
576
577 #endif