fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
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 (c) 2010-2015 Cisco Systems, Inc. All rights reserved.
|
2015-12-15 03:23:27 +03:00
|
|
|
dnl Copyright (c) 2015 Research Organization for Information Science
|
|
|
|
dnl and Technology (RIST). All rights reserved.
|
fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
dnl $COPYRIGHT$
|
|
|
|
dnl
|
|
|
|
dnl Additional copyrights may follow
|
|
|
|
dnl
|
|
|
|
dnl $HEADER$
|
|
|
|
dnl
|
|
|
|
|
|
|
|
dnl
|
|
|
|
dnl Check whether Fortran compiler supports the "only" clause properly
|
|
|
|
dnl when using modules. Specifically, if we "use a :: only foo" and "use
|
|
|
|
dnl b :: only bar", and modules a and b have a conflicting "yow"
|
|
|
|
dnl definition, it *should* be ignored because of the "only" clauses. PGI
|
|
|
|
dnl 15.7 (and probably prior versions) does not -- but only when
|
|
|
|
dnl compiling with -g (!).
|
|
|
|
dnl
|
|
|
|
|
|
|
|
dnl OMPI_FORTRAN_CHECK_USE_ONLY([action if supported],
|
|
|
|
dnl [action if not supported])
|
|
|
|
dnl ----------------------------------------------------
|
|
|
|
AC_DEFUN([OMPI_FORTRAN_CHECK_USE_ONLY],[
|
|
|
|
AS_VAR_PUSHDEF([use_only_var], [ompi_cv_fortran_use_only])
|
2015-12-15 03:23:27 +03:00
|
|
|
OPAL_VAR_SCOPE_PUSH([FCFLAGS_save])
|
2015-12-21 03:56:35 +03:00
|
|
|
FCFLAGS_save=$FCFLAGS
|
2015-12-15 03:23:27 +03:00
|
|
|
FCFLAGS="-I. $FCFLAGS"
|
fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
|
|
|
|
AC_CACHE_CHECK([if Fortran compiler supports USE...ONLY], use_only_var,
|
|
|
|
[AC_LANG_PUSH([Fortran])
|
2015-12-15 03:23:27 +03:00
|
|
|
cat > aaa.f90 << EOF
|
|
|
|
MODULE aaa
|
|
|
|
INTEGER :: CMON(1)
|
|
|
|
COMMON/CMMON/CMON
|
|
|
|
INTEGER :: global_aaa
|
fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
END MODULE aaa
|
2015-12-15 03:23:27 +03:00
|
|
|
EOF
|
|
|
|
cat > bbb.f90 << EOF
|
fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
MODULE bbb
|
2015-12-15 03:23:27 +03:00
|
|
|
integer, bind(C, name="cmmon_") :: CMON
|
|
|
|
INTEGER :: global_bbb
|
fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
END MODULE bbb
|
2015-12-15 03:23:27 +03:00
|
|
|
EOF
|
|
|
|
OPAL_LOG_COMMAND([$FC $FCFLAGS -c aaa.f90],
|
|
|
|
[OPAL_LOG_COMMAND([$FC $FCFLAGS -c bbb.f90],
|
|
|
|
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[PROGRAM test
|
|
|
|
USE aaa, ONLY : global_aaa
|
|
|
|
USE bbb, ONLY : global_bbb
|
|
|
|
implicit none
|
fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
END PROGRAM]])],
|
2015-12-15 03:23:27 +03:00
|
|
|
[AS_VAR_SET(use_only_var, yes)],
|
|
|
|
[AS_VAR_SET(use_only_var, no)])],
|
|
|
|
[AS_VAR_SET(use_only_var, no)])],
|
|
|
|
[AS_VAR_SET(use_only_var, no)])
|
|
|
|
rm -rf aaa.f90 aaa.o bbb.f90 bbb.o *.mod 2>/dev/null
|
fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
AC_LANG_POP([Fortran])
|
|
|
|
])
|
|
|
|
|
|
|
|
AS_VAR_IF(use_only_var, [yes], [$1], [$2])
|
2015-12-15 03:23:27 +03:00
|
|
|
FCFLAGS=$FCFLAGS_save
|
|
|
|
OPAL_VAR_SCOPE_POP
|
fortran configiry: test for USE...ONLY support
As of v15.7, the PGI Fortran compiler does not properly support how
Open MPI uses the "USE ... ONLY" Fortran syntax to include modules
with conflicting symbol definitions (interestingly, pgfortran only has
a problem with this when compiling with -g).
In short, OMPI uses "USE :: module_aaa, ONLY: foo" and "USE ::
module_bbb, ONLY: bar" to use modules aaa and bbb, even though they
contain conflicting definitions for some symbols. However, the use of
the ONLY clause should preclude the inclusion of the conflicting
symbols -- as the word implies, it should direct the compiler to
*only* use the symbols identified by the clause (i.e., foo and bar, in
this example).
This commit adds a configure test for this capability. If the
compiler fails to build a simple test that mimics this behavior, then
disable the mpi_f08 bindings.
Fixes open-mpi/ompi#857
2015-09-03 00:03:28 +03:00
|
|
|
AS_VAR_POPDEF([use_only_var])dnl
|
|
|
|
])
|