Add support for pFUnit version 4 (#17683)
Add support for pFUnit version 4 (#17683)

* pFUnit: Added support for version 4

pFUnit v4 uses submodules, so we must fetch from the repo rather
than grabbing the tarball (see #11642).

* pFUnit: Added conflicts

pFUnit 4 causes an internal compiler error with gcc 7.2.0, and
several pFUnit versions are incompatible with shared libraries.

* pFUnit: Added conflicts for version 4

Verson 4 uses Fortran 2008 features and cannot be built with gcc
compilers prior to 8.4.

* pFUnit: Fixed conflicts/dependencies as suggested

* pFUnit: Version 4 no longer fetches from git

Checksummable files are fetched instead.

* pFUnit: Simplify major version check

Co-authored-by: Adam J. Stewart <023e75a89b1f5ca1e59909f8756c185885836ad9@gmail.com>

* pFUnit: Removed unnecessary patch for v4

The patch is still applied to v3.

* pFUnit: Modified MPI flag for v4

pFUnit v3 and v4 use different CMake flags to enable/disable MPI
support. Also added a conflict for v3 with MPI enabled using
gfortran 10, since newer gfortran is more finicky about datatypes.

* pFUnit: Rearranged mpi logic

* pFUnit: changed m4 to a build dependency

Co-authored-by: Adam J. Stewart <023e75a89b1f5ca1e59909f8756c185885836ad9@gmail.com>

* pFUnit: Added URL back

I did not realize it was needed by "spack versions" and
"spack checksum". Thanks @adamjstewart!

Co-authored-by: Adam J. Stewart <023e75a89b1f5ca1e59909f8756c185885836ad9@gmail.com>
LLNL/spack,LLNL/spack,iulian787/spack,iulian787/spack,LLNL/spack,iulian787/spack,iulian787/spack,LLNL/spack,iulian787/spack,LLNL/spack