/usr/include/lam/lam_config_bottom.h is in lam4-dev 7.1.4-3.1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 | /* -*- c -*-
*
* LAM configuation header file.
* See the top-level LICENSE file for license and copyright
* information.
*
* $Id: lam_config_bottom.h,v 1.6 2003/04/09 17:37:12 brbarret Exp $
*
* Function: - Bottom of lam_config.h. Rather than have an enormous
* AH_BOTTOM in configure.in, put all the hardwired values that need
* to be in <lam_config.h> here in this file, and simply #include it
* at the bottom of <lam_config.h>.
*/
#ifndef _LAM_CONFIG_BOTTOM_H
#define _LAM_CONFIG_BOTTOM_H
#define LAM_HAVE_THREADS (LAM_HAVE_SOLARIS_THREADS || LAM_HAVE_POSIX_THREADS)
/*
* Some compilers do not define __STDC__ correctly (e.g., Solaris
* workshop, at least version 4.2). As such, the LAM header files
* will not include full ANSI prototyping, which is a real pain for
* users. We can override that here -- set to 1 if you want full
* ANSI prototypes.
*/
#if __STDC__ || defined(c_plusplus) || defined(__cplusplus) || LAM_CONFIG_FORCE_PROTOS
#define LAM_WANT_PROTOS 1
#else
#define LAM_WANT_PROTOS 0
#endif
/*
* Use to select if definitely want to zero out memory before using it.
* This affects lower layers of message passing API, where purify, bcheck,
* and other memory-checking debuggers will sometimes complain about
* "read from uninitialized" and the like, when the code actually shows
* that it is ok. That is, LAM will function correctly with or without
* this flag -- this flag only affects what purify/bcheck/etc. will report.
* Note that there will be slightly more overhead in message passing if
* this flag is enabled.
*/
#if LAM_DISINFECT
#include <string.h>
#define LAM_ZERO_ME(a) memset(&(a), 0, sizeof((a)));
#else
#define LAM_ZERO_ME(a)
#endif
/*
* This used to be part of mpi2c++/acinclude.h. These things can
* safely be hardwired -- they are not determined by configure
* anymore.
*/
#define _MPIPP_USEEXCEPTIONS_ 1
#define _MPIPP_DEBUG_ 0
#define MPI2CPP_HAVE_BOOL 1
#ifndef MPI2CPP_SIZEOF_INT
#define MPI2CPP_SIZEOF_INT 4
#endif
#ifndef MPI2CPP_SIZEOF_BOOL_T
#define MPI2CPP_SIZEOF_BOOL_T 1
#endif
#if MPI2CPP_SIZEOF_INT != MPI2CPP_SIZEOF_BOOL_T
#define _MPIPP_BOOL_NE_INT_ 1
#else
#define _MPIPP_BOOL_NE_INT_ 0
#endif
/*
* LAM has (the proper) MPI_ERR_PENDING, so set this to 0
*/
#define MPI2CPP_HAVE_PENDING 0
/*
* LAS has MPI_GET_VERSION, so set this to 1
*/
#define MPI2CPP_HAVE_MPI_GET_VERSION 1
/*
* LAM has both of these, so set them to 1
*/
#define MPI2CPP_HAVE_STATUS_IGNORE 1
#define MPI2CPP_HAVE_STATUSES_IGNORE 1
/*
* LAM and the fortran datatypes
*/
#define MPI2CPP_FORTRAN 1
#define MPI2CPP_ALL_OPTIONAL_FORTRAN 1
#define MPI2CPP_SOME_OPTIONAL_FORTRAN 0
#define MPI2CPP_OPTIONAL_C 1
#if LAM_WANT_PROFILE
#define _REAL_MPI_ PMPI
#else
#define _REAL_MPI_ MPI
#endif
/*
* Assuming all compilers have "namespace" these days
*/
#define _MPIPP_USENAMESPACE_ 1
#define _MPIPP_STATIC_
#define _MPIPP_EXTERN_ extern
/*
* Assuming all compilers have "bool" these days
*/
#if defined(c_plusplus) || defined(__cplusplus)
typedef bool MPI2CPP_BOOL_T;
#define MPI2CPP_FALSE false
#define MPI2CPP_TRUE true
#endif
/*
* Architecture/OS's that will need flags in the test suite to ignore
* certain tests. They're largely ignored now, but they have to be
* set or g++ -Wundef will complain loudly.
*/
#define MPI2CPP_LAM63 0
#define MPI2CPP_LAM631 0
#define MPI2CPP_LAM632 0
#define MPI2CPP_LAM633 0
#define MPI2CPP_LAM64 0
#define MPI2CPP_LAMUNKNOWN 0
#define MPI2CPP_LAM 1
#define MPI2CPP_MPICH120 0
#define MPI2CPP_MPICH121 0
#define MPI2CPP_MPICHUNKNOWN 0
#define MPI2CPP_MPICH 0
#define MPI2CPP_IBM21014 0
#define MPI2CPP_IBM21015 0
#define MPI2CPP_IBM21016 0
#define MPI2CPP_IBM21017 0
#define MPI2CPP_IBM21018 0
#define MPI2CPP_IBM2_3_0_0 0
#define MPI2CPP_IBM2_4_0_0 0
#define MPI2CPP_IBMUNKNOWN 0
#define MPI2CPP_IBM_SP 0
#define MPI2CPP_SGI20 0
#define MPI2CPP_SGI30 0
#define MPI2CPP_SGI31 0
#define MPI2CPP_SGI32 0
#define MPI2CPP_SGIUNKNOWN 0
#define MPI2CPP_HPUX0102 0
#define MPI2CPP_HPUX0103 0
#define MPI2CPP_HPUX0105 0
#define MPI2CPP_HPUXUNKNOWN 0
#define MPI2CPP_HPUX_OS 0
#define MPI2CPP_CRAY 0
#define MPI2CPP_CRAY1104 0
#define MPI2CPP_CRAYUNKNOWN 0
#define MPI2CPP_G_PLUS_PLUS 0
/*
* Can virtual functions return derived class instead
* of base class?
*
* We seem to have lost this test somewhere along the line...
*/
#define MPI2CPP_VIRTUAL_FUNC_RET 1
/*
* Some combinations for simplicity
*/
#define LAM_HAVE_PTYS (LAM_HAVE_BSD_PTYS || LAM_HAVE_SYSV_PTYS)
/*
* Grumble. AC_C_BIGENDIAN #defines WORDS_BIGENDIAN to 1 if we're on
* a big endian machine. But it leaves it undefined if we're on a
* little endian machine. This causes "gcc -Wundef" to complain when
* we use "#if WORDS_BIGENDIAN". So #define it here to be 0 if it
* isn't already defined.
*/
#ifndef WORDS_BIGENDIAN
#define LAM_WORDS_BIGENDIAN 0
#else
#define LAM_WORDS_BIGENDIAN 1
#endif
/*
* In some places, we need to swap the endian (particularly in IMPI)
*/
#if LAM_WANT_IMPI
#if LAM_WORDS_BIGENDIAN
#define LAM_SWAP_ENDIAN(x, y)
#else
#define LAM_SWAP_ENDIAN(x, y) lam_swap_endian(x, y)
#endif
#endif
/*
* Some compilers complain when sizeof(long double) == sizeof(double)
* Example: gcc/linux 2.95.2 on alpha (64 bit)
*/
#if LAM_SIZEOF_DOUBLE == LAM_SIZEOF_LONG_DOUBLE
typedef double LAM_LONG_DOUBLE;
#else
typedef long double LAM_LONG_DOUBLE;
#endif
/*
* If we don't have the gethostname proto, make it
*/
#if !LAM_HAVE_PROTO_gethostname
#if defined(c_plusplus) || defined(__cplusplus)
extern "C" {
#endif
int gethostname(char *name, int namelen);
#if defined(c_plusplus) || defined(__cplusplus)
}
#endif
#endif
#if !LAM_HAVE_UNION_SEMUN
union semun {
int val; /* value for SETVAL */
struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
unsigned short *array; /* array for GETALL & SETALL */
};
#endif
/*
* Macro to use when passing the val argument of semun into semctl().
*
* Should be used as:
* union semun semctl_arg;
* semctl_arg.val = 1;
* semctl(semid, 0, SETVAL, LAM_SEMUN_VAL(semctl_arg);
*
* Needed because Darwin 8 misinterprets the POSIX standard about how
* union semun should be used. The standard in question is here:
*
* http://www.opengroup.org/onlinepubs/009695399/functions/semctl.html
*
* Now, everyone else in the world seems to think that the text would
* require you to call semctl (as used above) as:
* semctl(semid, 0, SETVAL, semctl_arg);
*
* ie, you always pass a union semun as definied in the standard to
* semctl, regardless of which field you are actually going to use.
* However, Apple seems to misunderstand the text about variadic
* functions and takes the fourth argument to be of type whatever is
* appropriate for the command called. So for SETVAL, they assume
* that rather than passing in an union semun, you are passing in an
* integer. This all works fine without issue in 32bit land because
* sizeof(int) == sizeof(void*). However, it doesn't work so well in
* 64bit land because sizeof(int) is less than sizeof(void*), so
* Darwin is looking for val in the wrong place. They assume you
* called semctl like this:
* semctl(semid, 0, SETVAL, semctl_arg.val);
*
* The macro below is used to figure out which to use and go with that
* option. It should ONLY be used when the val member of the union
* semun is needed. For other members, do not use this macro.
*
* For the record, on 64 bit big endian machines, we're tested Linux,
* AIX, Solaris, and Irix and they all interpret the standard the
* non-Darwin way.
*/
#if LAM_UNION_SEMUN_VAL_DIRECT
#define LAM_SEMUN_VAL(a) a.val
#else
#define LAM_SEMUN_VAL(a) a
#endif
/*
* Define as 1 if broken.
* Can't find an OS that's broken these days, but let's keep it here
* just to be safe.
*/
#define LAM_BROKEN_SET_INET_SO_BUFSIZES 0
#define LAM_BROKEN_SET_UNIX_SO_BUFSIZES 0
/*
* GER define
*
* per-process-pair minimum envelope slots
*/
#define MPI_GER 8
/*
* See if we can use "const" or not
*/
#define CONST const
/*
* Define as 1 if floating point is IEEE.
*/
#define HAVE_IEEE_FP 1
/*
* Provide a cast to go from an int to a (void*), or empty if
* sizeof(void*) == sizeof(int). This is necessary on arches where we
* need to first promote an int up to an integer type of the same size
* as (void*), and then cast that to (void*), eg., Alpha Linux.
*
* Weird logic here so that we avoid the cast whenever possible -- so
* we end up duplicating the "no cast" case. For example, if we only
* had to no cast case at the end, if we are on a architecture where
* sizeof(int) == sizeof(long) == sizeof(void*) (e.g., Solaris 2.6),
* we'll always end up casting through long. Icky.
*/
#if LAM_SIZEOF_INT == LAM_SIZEOF_VOID_P
#define LAM_INT_TO_VOID_P
#elif LAM_SIZEOF_VOID_P == LAM_SIZEOF_LONG
#define LAM_INT_TO_VOID_P (long)
#elif LAM_SIZEOF_VOID_P == LAM_SIZEOF_LONG_LONG
#define LAM_INT_TO_VOID_P (long long)
#else
#define LAM_INT_TO_VOID_P
#endif
/*
* prototypes
*/
#ifndef __ARGS
#if LAM_WANT_PROTOS
#define __ARGS(a) a
#else
#define __ARGS(a) ()
#endif
#endif
#endif /* _LAM_CONFIG_BOTTOM_H */
|