dnl -*- shell-script -*- dnl dnl Copyright (c) 2004-2005 The Trustees of Indiana University. dnl All rights reserved. dnl Copyright (c) 2004-2005 The Trustees of the University of Tennessee. dnl All rights 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 AC_DEFUN([OMPI_F77_GET_VALUE_TRUE],[ # Determine the value of .TRUE. of this FORTRAN compiler. AC_MSG_CHECKING([FORTRAN value for .TRUE. logical type]) if test "$1" = "none" -o "$OMPI_WANT_F77_BINDINGS" = "0"; then OMPI_FORTRAN_VALUE_TRUE=0 AC_MSG_RESULT([no Fortran 77 bindings -- skipped]) else if test "x$ompi_ac_doubleunder" = xy || test "x$ompi_ac_singleunder" = xy; then ompi_ac_print_logical_fn=print_ else if test "x$ompi_ac_nounder" = xy; then ompi_ac_print_logical_fn=print else if test "x$ompi_ac_caps" = xy; then ompi_ac_print_logical_fn=PRINT else AC_MSG_WARN([*** FORTRAN external naming convention undefined]) AC_MSG_ERROR([*** Cannot continue.]) fi fi fi # # C module # We really need the confdefs.h Header file for # the ompi_fortran_logical_t definition # if test \! -f confdefs.h ; then AC_MSG_WARN([*** Problem running configure test!]) AC_MSG_WARN([*** Cannot find confdefs.h file for config test]) AC_MSG_WARN([*** See config.log for details.]) AC_MSG_ERROR([*** Cannot continue.]) fi cat > conftest.c <<EOF #include <stdio.h> #include <stdlib.h> #include "confdefs.h" #ifdef __cplusplus extern "C" { #endif void $ompi_ac_print_logical_fn(ompi_fortran_logical_t * logical); void $ompi_ac_print_logical_fn(ompi_fortran_logical_t * logical) { int result = 0; FILE *f=fopen("conftestval", "w"); if (!f) exit(1); if( SIZEOF_INT >= sizeof(ompi_fortran_logical_t) ) { fprintf(f, "%d\n", (int)*logical); } else { exit(1); } } #ifdef __cplusplus } #endif EOF cat > conftestf.f <<EOF program main logical value value=.TRUE. CALL PRINT(value) end EOF # # Try the compilation and run. # OMPI_LOG_COMMAND( [$CC $CFLAGS -I. -c conftest.c], OMPI_LOG_COMMAND([$F77 $FFLAGS -o conftest conftest.o conftestf.f $LDFLAGS $LIBS], OMPI_LOG_COMMAND([./conftest], [HAPPY=1], [HAPPY=0]), [HAPPY=0]), [HAPPY=0]) if test "$HAPPY" = "1" -a -f conftestval; then # get rid of leading spaces for eval assignment ompi_ac_value_true=`sed 's/ *//' conftestval` OMPI_FORTRAN_VALUE_TRUE=$ompi_ac_value_true AC_MSG_RESULT([$ompi_ac_value_true]) else AC_MSG_RESULT([unknown]) OMPI_LOG_MSG([here is the C program:], 1) OMPI_LOG_FILE([conftest.c]) OMPI_LOG_MSG([here is the fortran program:], 1) OMPI_LOG_FILE([conftestf.f]) AC_MSG_WARN([*** Problem running configure test!]) AC_MSG_WARN([*** See config.log for details.]) AC_MSG_ERROR([*** Cannot continue.]) fi unset HAPPY /bin/rm -f conftest* fi AC_DEFINE_UNQUOTED(OMPI_FORTRAN_VALUE_TRUE, $OMPI_FORTRAN_VALUE_TRUE, [Fortran value for LOGICAL .TRUE. value]) ])dnl