diff --git a/configure.ac b/configure.ac index 9d08b05cef..f228619b47 100644 --- a/configure.ac +++ b/configure.ac @@ -180,7 +180,7 @@ LAM_C_GET_ALIGNMENT(void *, LAM_ALIGNMENT_VOID_P) AC_C_INLINE AC_C_RESTRICT -AC_CHECK_HEADERS(stdbool.h) +AC_CHECK_HEADERS([stdbool.h alloca.h]) LAM_C_WEAK_SYMBOLS # If we want the profiling layer: diff --git a/src/datatype/dt_optimize.c b/src/datatype/dt_optimize.c index d950f902c1..bbfcac1625 100644 --- a/src/datatype/dt_optimize.c +++ b/src/datatype/dt_optimize.c @@ -1,7 +1,13 @@ /* -*- Mode: C; c-basic-offset:4 ; -*- */ +#include "lam_config.h" + #include "datatype.h" #include "datatype_internal.h" +#ifdef HAVE_ALLOCA_H +#include +#endif +#include /* printf( "save in %s:%d at %p DT_BYTE disp %ld count %d\n", __FILE__, __LINE__, (PELEM), (DISP), (COUNT) ); \ */ #define SAVE_DESC( PELEM, DISP, COUNT ) \ diff --git a/src/datatype/dt_pack.c b/src/datatype/dt_pack.c index 8084801c06..e42277b266 100644 --- a/src/datatype/dt_pack.c +++ b/src/datatype/dt_pack.c @@ -1,8 +1,15 @@ /* -*- Mode: C; c-basic-offset:4 ; -*- */ +#include "lam_config.h" + #include "datatype.h" #include "datatype_internal.h" +#ifdef HAVE_ALLOCA_H +#include +#endif +#include + static int convertor_pack_general( lam_convertor_t* pConvertor, struct iovec* out, unsigned int outCount ) { dt_stack_t* pStack; /* pointer to the position on the stack */ diff --git a/src/datatype/dt_unpack.c b/src/datatype/dt_unpack.c index 4c84ee59d6..a809749821 100644 --- a/src/datatype/dt_unpack.c +++ b/src/datatype/dt_unpack.c @@ -1,8 +1,14 @@ /* -*- Mode: C; c-basic-offset:4 ; -*- */ +#include "lam_config.h" + #include "datatype.h" #include "datatype_internal.h" +#ifdef HAVE_ALLOCA_H +#include +#endif +#include static int convertor_unpack_homogeneous( lam_convertor_t* pConv, struct iovec* iov, unsigned int out_size ); static int convertor_unpack_general( lam_convertor_t* pConvertor, diff --git a/src/datatype/fake_stack.c b/src/datatype/fake_stack.c index ceda205aca..b87377d4e1 100644 --- a/src/datatype/fake_stack.c +++ b/src/datatype/fake_stack.c @@ -1,8 +1,15 @@ /* -*- Mode: C; c-basic-offset:4 ; -*- */ +#include "lam_config.h" + #include "datatype.h" #include "datatype_internal.h" +#ifdef HAVE_ALLOCA_H +#include +#endif +#include + static inline long GET_LOOP_DISP( dt_elem_desc_t* _pElem ) { while( _pElem->type == DT_LOOP ) ++_pElem; diff --git a/src/include/types.h b/src/include/types.h index 291428fe68..22c8edd8de 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -7,7 +7,7 @@ #include #include - +#include #include "lam_config.h" /* @@ -18,6 +18,13 @@ #define LAM_FD_SETSIZE 4096 #endif +#if !defined(NFDBITS) && defined(__NFDBITS) +/* Linux doesn't expose NFDBITS if -ansi unless there is another #define + * so use the internal version + */ +#define NFDBITS __NFDBITS +#endif + struct lam_fd_set_t { int i; uint32_t fds_bits[LAM_FD_SETSIZE / NFDBITS];