|
| 1 | +dnl -*- shell-script -*- |
| 2 | +dnl |
| 3 | +dnl Copyright (c) 2025 Stony Brook University. All rights reserved. |
| 4 | +dnl $COPYRIGHT$ |
| 5 | +dnl |
| 6 | +dnl Additional copyrights may follow |
| 7 | +dnl |
| 8 | +dnl $HEADER$ |
| 9 | +dnl |
| 10 | + |
| 11 | +# Check whether the fortran compiler produces a warning when |
| 12 | +# it encounters a #warning directive |
| 13 | + |
| 14 | +# OMPI_FORTRAN_CHECK_WARNING([action if found], |
| 15 | +# [action if not found]) |
| 16 | +# ---------------------------------------------------- |
| 17 | +AC_DEFUN([OMPI_FORTRAN_CHECK_WARNING],[ |
| 18 | + AS_VAR_PUSHDEF([warning_var], [ompi_cv_fortran_warning]) |
| 19 | + |
| 20 | + AC_CACHE_CHECK([if Fortran compiler supports preprocessor warnings], warning_var, |
| 21 | + [ |
| 22 | + # check if the compiler provides a proper #warning |
| 23 | + # some compilers (gfortran) do not show the warning if the file is found |
| 24 | + # through an include path, so create a temporary directory and include file |
| 25 | + OAC_VAR_SCOPE_PUSH(msg, dir) |
| 26 | + dir="tmp_includedir_$$" |
| 27 | + msg="This is a deprecated file" |
| 28 | + AS_MKDIR_P($dir) |
| 29 | + echo "#warning $msg" > $dir/deprecated.h |
| 30 | + |
| 31 | + echo "! -*- fortran -*- |
| 32 | + program main |
| 33 | + implicit none |
| 34 | + include 'deprecated.h' |
| 35 | + end program main |
| 36 | + " > conftest.f |
| 37 | + AS_IF([${FC} ${FCFLAGS} -c -I$dir conftest.f 2>conftest.err >conftest.out], |
| 38 | + [ # compilation succeeded, check the produced output for the warning |
| 39 | + AS_IF([grep "$msg" conftest.err conftest.out >/dev/null 2>/dev/null], |
| 40 | + [AS_VAR_SET(warning_var, "yes")], |
| 41 | + [AS_VAR_SET(warning_var, "no (missing warning)")],)], |
| 42 | + [AS_VAR_SET(warning_var, "no (compilation failed)")]) |
| 43 | + OPAL_VAR_SCOPE_POP |
| 44 | + rm -rf conftest.f conftest.err conftest.out $dir 2>/dev/null >/dev/null |
| 45 | + ]) |
| 46 | + AS_VAR_IF(warning_var, [yes], [$1], [$2]) |
| 47 | + AS_VAR_POPDEF([warning_var])dnl |
| 48 | +]) |
| 49 | + |
0 commit comments