File: ompi_fortran_find_module_include_flag.m4

package info (click to toggle)
openmpi 5.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 202,312 kB
  • sloc: ansic: 612,441; makefile: 42,495; sh: 11,230; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,154; python: 1,856; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (90 lines) | stat: -rw-r--r-- 3,212 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2004-2006 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 (c) 2010-2012 Cisco Systems, Inc.  All rights reserved.
dnl Copyright (c) 2019      Triad National Security, LLC. All rights
dnl                         reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
dnl
dnl $HEADER$
dnl

#
# Sets and AC_SUBST's OMPI_FC_MODULE_FLAG.
#
# OMPI_FORTRAN_FIND_MODULE_INCLUDE_FLAG([action if found], [action if not found]
AC_DEFUN([OMPI_FORTRAN_FIND_MODULE_INCLUDE_FLAG],[
    AS_VAR_PUSHDEF([fortran_inc_var], [ompi_cv_fortran_module_include_flag])

    OMPI_FC_MODULE_FLAG=
    AC_CACHE_CHECK([for Fortran compiler module include flag],
       fortran_inc_var,
       [ofi_possible_flags="-I -p -M"
        mkdir conftest.$$
        cd conftest.$$

        # Try to compile a Fortran module
        mkdir subdir
        cd subdir
         cat > conftest-module.f90 <<EOF
module OMPI_MOD_FLAG
  type OMPI_MOD_FLAG_TYPE
    integer :: i
  end type OMPI_MOD_FLAG_TYPE
end module OMPI_MOD_FLAG
EOF

        OPAL_LOG_COMMAND([$FC $FCFLAGS $FCFLAGS_f90 -c conftest-module.f90 $LDFLAGS $LIBS], ,
            [cd  ..
             rm -rf conftest.$$
             AC_MSG_RESULT([Whoops!])
             AC_MSG_WARN([*** Cannot seem to compile a Fortran module])
             AC_MSG_ERROR([Cannot continue])])
        cd ..

        #
        # Now try to compile a simple program using that module, iterating
        # through the possible flags that the compiler might use
        #

        cat > conftest.f90 <<EOF
program fortranusemodule
  use OMPI_MOD_FLAG
end program fortranusemodule
EOF

        ofi_module_flag=
        for flag in $ofi_possible_flags; do
            if test "$ofi_module_flag" = ""; then
                OPAL_LOG_COMMAND([$FC $FCFLAGS $FCFLAGS_f90 conftest.f90 ${flag}subdir $LDFLAGS $LIBS],
                        [ofi_module_flag=$flag],
dnl try and see if we need to link in a possible object file
                        [OPAL_LOG_COMMAND([$FC $FCFLAGS $FCFLAGS_f90 conftest.f90 subdir/conftest-module.o \
                                          ${flag}subdir $LDFLAGS $LIBS],
                                          [ofi_module_flag=$flag])])
            fi
        done
        AS_IF([test -n "$ofi_module_flag"],
              [AS_VAR_SET(fortran_inc_var, [$ofi_module_flag])])
        cd ..
        rm -rf conftest.$$
    ])

    AS_VAR_COPY([OMPI_FC_MODULE_FLAG], [fortran_inc_var])
    AC_SUBST(OMPI_FC_MODULE_FLAG)
    AS_VAR_POPDEF([fortran_inc_var])

    AS_IF([test "$OMPI_FC_MODULE_FLAG" != ""],
          [$1], [$2])
])dnl