Hello,
We are using PETSc as part of a larger project and are switching from compiling
with gcc to using AOCC (clang). However, I am getting an error from my include
statements stating that the data type __complex128 is an "unknown type name".
The full error log is attached.
I found this solution online (FreeFem - PETSc compilation error -
libblas.a/liblapack.a cannot be used - FreeFEM installation -
FreeFEM<https://urldefense.us/v3/__https://community.freefem.org/t/freefem-petsc-compilation-error-libblas-a-liblapack-a-cannot-be-used/2771/8__;!!G_uCfscf7eWS!fqL9KO-Su4o3uzl3iGDcskkh1utILAAeNaaZ25v6yAZ2CEn2axOiqwOCYwJHMlq_jQwt9Oc4FXRaM9tMvfMBVx5mCetoylgskpID89ee$
>), which says to comment out a line in the petscconf.h header file. Is this a
safe fix or is there a more elegant way to go about this?
Best,
Ben
[ 64%] Building CXX object
src/CMakeFiles/rebel_lib.dir/common/coordinate_system.cpp.o
[ 65%] Building CXX object
src/CMakeFiles/rebel_lib.dir/common/FFTW_interface.cpp.o
[ 65%] Building CXX object src/CMakeFiles/rebel_lib.dir/common/fileIO.cpp.o
[ 66%] Building CXX object
src/CMakeFiles/rebel_lib.dir/common/lapacke_interface.cpp.o
[ 66%] Building CXX object
src/CMakeFiles/rebel_lib.dir/common/petsc_extensions.cpp.o
In file included from
/mnt/scratch/bchapman/rebel/src/common/petsc_extensions.cpp:7:
In file included from
/mnt/scratch/bchapman/rebel/src/common/petsc_extensions.h:14:
In file included from
/mnt/scratch/bchapman/rebel/build/external/builds/petsc-3.21.0/include/petscksp.h:6:
In file included from
/mnt/scratch/bchapman/rebel/build/external/builds/petsc-3.21.0/include/petscpc.h:6:
In file included from
/mnt/scratch/bchapman/rebel/build/external/builds/petsc-3.21.0/include/petscmat.h:6:
In file included from
/mnt/scratch/bchapman/rebel/build/external/builds/petsc-3.21.0/include/petscvec.h:8:
In file included from
/mnt/scratch/bchapman/rebel/build/external/builds/petsc-3.21.0/include/petscsys.h:193:
/mnt/scratch/bchapman/rebel/build/external/builds/petsc-3.21.0/include/petscmath.h:429:45:
error: unknown type name '__complex128'
429 | PETSC_EXTERN MPI_Datatype MPIU___COMPLEX128 MPIU___COMPLEX128_ATTR_TAG;
| ^
/mnt/scratch/bchapman/rebel/build/external/builds/petsc-3.21.0/include/petscmath.h:424:71:
note: expanded from macro 'MPIU___COMPLEX128_ATTR_TAG'
424 | #define MPIU___COMPLEX128_ATTR_TAG
PETSC_ATTRIBUTE_MPI_TYPE_TAG(__complex128)
| ^
/mnt/scratch/bchapman/rebel/src/common/petsc_extensions.cpp:2570:13: warning:
decomposition declarations are a C++17 extension [-Wc++17-extensions]
2570 | const auto [min, max] = std::minmax_element(std::begin(s),
std::end(s));
| ^~~~~~~~~~
1 warning and 1 error generated.
make[2]: *** [src/CMakeFiles/rebel_lib.dir/build.make:132:
src/CMakeFiles/rebel_lib.dir/common/petsc_extensions.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:772: src/CMakeFiles/rebel_lib.dir/all] Error
2
make: *** [Makefile:136: all] Error 2