dnl -*- shell-script -*- dnl dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana dnl University Research and Technology dnl Corporation. All rights reserved. dnl Copyright (c) 2004-2005 The University of Tennessee and The University dnl of Tennessee Research Foundation. All rights dnl reserved. dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, dnl University of Stuttgart. All rights reserved. dnl Copyright (c) 2004-2005 The Regents of the University of California. dnl All rights reserved. dnl $COPYRIGHT$ dnl dnl Additional copyrights may follow dnl dnl $HEADER$ dnl # OMPI_F77_GET_ALIGNMENT(type, shell variable to set) # ---------------------------------------------------- AC_DEFUN([OMPI_F77_GET_ALIGNMENT],[ AS_VAR_PUSHDEF([type_var], [ompi_cv_f77_alignment_$1]) AC_CACHE_CHECK([alignment of Fortran $1], type_var, [OMPI_F77_MAKE_C_FUNCTION([ompi_ac_align_fn], [align]) # Fortran module cat > conftestf.f < conftest.c < #include $conftest #ifdef __cplusplus extern "C" { #endif void $ompi_ac_align_fn(char *w, char *x, char *y, char *z) { unsigned long aw, ax, ay, az; FILE *f=fopen("conftestval", "w"); if (!f) exit(1); aw = (unsigned long) w; ax = (unsigned long) x; ay = (unsigned long) y; az = (unsigned long) z; if (! ((aw%16)||(ax%16)||(ay%16)||(az%16))) fprintf(f, "%d\n", 16); else if (! ((aw%12)||(ax%12)||(ay%12)||(az%12))) fprintf(f, "%d\n", 12); else if (! ((aw%8)||(ax%8)||(ay%8)||(az%8))) fprintf(f, "%d\n", 8); else if (! ((aw%4)||(ax%4)||(ay%4)||(az%4))) fprintf(f, "%d\n", 4); else if (! ((aw%2)||(ax%2)||(ay%2)||(az%2))) fprintf(f, "%d\n", 2); else fprintf(f, "%d\n", 1); fclose(f); } #ifdef __cplusplus } #endif EOF OMPI_LOG_COMMAND([$CC $CFLAGS -I. -c conftest.c], [OMPI_LOG_COMMAND([$F77 $FFLAGS conftestf.f conftest.o -o conftest $LDFLAGS $LIBS], [happy="yes"], [happy="no"])], [happy="no"]) if test "$happy" = "no" ; then AC_MSG_ERROR([Could not determine alignment of $1]) fi AS_IF([test "$cross_compiling" = "yes"], [AC_MSG_ERROR([Can not determine alignment of $1 when cross-compiling])], [OMPI_LOG_COMMAND([./conftest], [AS_VAR_SET(type_var, [`cat conftestval`])], [AC_MSG_ERROR([Could not determine alignment of $1])])]) unset happy ompi_conf rm -rf conftest*]) $2=AS_VAR_GET([type_var]) AS_VAR_POPDEF([type_var])dnl ])