Build failure on macOS Big Sur arm64
Hi, As far as I understand, the Big Sur arm64 port of gcc/gfortran 10.2 doesn’t know about float128 hence real128 and complex128 yet. This leads to the following failure when trying to build mpich-3.4.1 compiled with ./configure --prefix=$MPICH_HOME \ --enable-fast=all,O3 \ --enable-g=dbg \ --enable-romio \ --enable-shared \ --enable-sharedlibs=gcc-osx \ --with-pm=hydra \ CC=gcc-10 CXX=g++-10 FC=gfortran-10 F77=gfortran-10 \ CFLAGS="-fgnu89-inline -Wno-deprecated" \ CXXFLAGS="-Wno-deprecated" \ FFLAGS=-fallow-argument-mismatch SiMini:mpich-3.4.1 $ make if test ! -h ./src/include/mpio.h ; then \ rm -f ./src/include/mpio.h ; \ ( cd ./src/include && \ ln -s ../mpi/romio/include/mpio.h ) ; \ fi MOD src/binding/fortran/use_mpi_f08/mpi_c_interface_types.stamp MOD src/binding/fortran/use_mpi_f08/mpi_f08_types.stamp src/binding/fortran/use_mpi_f08/mpi_f08_types.f90:355:17: 355 | real(real128),dimension(..) :: x | 1 Error: Kind -1 not supported for type REAL at (1) src/binding/fortran/use_mpi_f08/mpi_f08_types.f90:385:20: 385 | complex(real128),dimension(..) :: x | 1 Error: Kind -1 not supported for type COMPLEX at (1) src/binding/fortran/use_mpi_f08/mpi_f08_types.f90:383:36: 383 | subroutine MPI_Sizeof_xcomplex128 (x, size, ierror) | 1 Error: Symbol 'x' at (1) has no IMPLICIT type src/binding/fortran/use_mpi_f08/mpi_f08_types.f90:353:33: 353 | subroutine MPI_Sizeof_xreal128 (x, size, ierror) | 1 Error: Symbol 'x' at (1) has no IMPLICIT type src/binding/fortran/use_mpi_f08/mpi_f08_types.f90:353:30: 353 | subroutine MPI_Sizeof_xreal128 (x, size, ierror) | 1 ...... 383 | subroutine MPI_Sizeof_xcomplex128 (x, size, ierror) | 2 Error: Ambiguous interfaces in generic interface 'mpi_sizeof' for 'mpi_sizeof_xreal128' at (1) and 'mpi_sizeof_xcomplex128' at (2) make: *** [src/binding/fortran/use_mpi_f08/mpi_f08_types.stamp] Error 1 After communicating with him, I got the following reply rom FX Coudert who was involved in the port of gcc-10 to arm64: 1. The Fortran 2008 standard states: ---- 13.8.2.21 REAL32, REAL64, and REAL128 The values of these default integer scalar named constants shall be those of the kind type parameters that specify a REAL type whose storage size expressed in bits is 32, 64, and 128 respectively. If, for any of these constants, the processor supports more than one kind of that size, it is processor dependent which kind value is provided. If the processor supports no kind of a particular size, that constant shall be equal to -2 if the processor supports kinds of a larger size and -1 otherwise. ---- From your error message it is clear that REAL128 is correctly defined as -1. 2. Your configure output shows "checking size of __float128: 0” and "checking whether real*16 is supported: no”, so it seems the build has all the information it needs to avoid using REAL128 unconditionally. So it looks like in this case, the f08 bindings for real128 and complex128 are created even though they shouldn’t. I was not able to figure out how to disable their creation during the configure stage. Can somebody help? My config.log is attached. Regards, Blaise -- A.K. & Shirley Barton Professor of Mathematics Adjunct Professor of Mechanical Engineering Adjunct of the Center for Computation & Technology Louisiana State University, Lockett Hall Room 344, Baton Rouge, LA 70803, USA<x-apple-data-detectors://0/1> Tel. +1 (225) 578 1612<tel:+1%20(225)%20578%201612>, Fax +1 (225) 578 4276<tel:+1%20(225)%20578%204276> Web http://www.math.lsu.edu/~bourdin
participants (1)
-
Blaise A Bourdin