I'm assuming that you configured and built PETSc with gcc, and now are building a package that depends on PETSc using AOCC? Is it possible to configure PETSc with the same compiler, or to use -std=gnu++17 (any dialect that supports GNU extensions)?
Benjamin Chapman via petsc-users <[email protected]> writes: > 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
