1# GA_F77_COMPUTE_SIZEOF(TYPE, VARIABLE) 2# ------------------------------------- 3AC_DEFUN([GA_F77_COMPUTE_SIZEOF], [ 4AS_TR_SH([$2])=no 5AC_F77_FUNC([size]) 6AC_F77_FUNC([fsub]) 7AC_LANG_PUSH([Fortran 77]) 8AC_COMPILE_IFELSE([AC_LANG_SOURCE( 9[[ subroutine fsub 10 external size 11 $1 x(2) 12 call size(x(1),x(2)) 13 end]])], [mv conftest.$ac_objext cfortran_test.$ac_objext 14 ga_save_LIBS=$LIBS 15 LIBS="cfortran_test.$ac_objext $LIBS $[]_AC_LANG_PREFIX[]LIBS" 16 AC_LANG_PUSH([C]) 17 AC_RUN_IFELSE([AC_LANG_SOURCE( 18[[#include <stdio.h> 19#include <stdlib.h> 20#ifdef __cplusplus 21extern "C" { 22#endif 23void $size(char *a, char *b) 24{ 25 long diff = (long) (b - a); 26 FILE *f=fopen("conftestval", "w"); 27 if (!f) exit(1); 28 fprintf(f, "%ld\n", diff); 29 fclose(f); 30} 31#ifdef __cplusplus 32} 33#endif 34#ifdef __cplusplus 35extern "C" 36#else 37extern 38#endif 39void $fsub(void); 40int main(int argc, char **argv) 41{ 42 $fsub(); 43 return 0; 44} 45]])], [AS_TR_SH([$2])=`cat conftestval`]) 46 LIBS=$ga_save_LIBS 47 rm -f conftest* cfortran_test* 48 AC_LANG_POP([C])]) 49AC_LANG_POP([Fortran 77]) 50]) # GA_F77_COMPUTE_SIZEOF 51 52# GA_F77_CHECK_SIZEOF(TYPE, CROSS-SIZE) 53# ------------------------------------- 54AC_DEFUN([GA_F77_CHECK_SIZEOF], 55[AS_VAR_PUSHDEF([type_var], [ga_cv_f77_sizeof_$1]) 56AC_CACHE_CHECK([size of Fortran $1], type_var, 57 [AS_IF([test x$cross_compiling = xyes], 58 [AS_VAR_SET(type_var, [$2])], 59 [GA_F77_COMPUTE_SIZEOF([$1], type_var)])]) 60AS_IF([test x$cross_compiling = xyes], 61 [AC_MSG_WARN([Cannot determine size of $1 when cross-compiling.]) 62 AC_MSG_WARN([Defaulting to $2])]) 63AC_DEFINE_UNQUOTED(AS_TR_CPP(sizeof_f77_$1), $type_var, 64 [The size of '$1' as computed by C's sizeof.]) 65AS_VAR_POPDEF([type_var]) 66])# GA_F77_SIZEOF 67