Mentions légales du service

Skip to content

REAL and COMPLEX macros in chameleon public header?

COMPLEX and REAL macros are defined here (public header)

(this is substituted in generated headers by this code)

but I cannot find (with grep) any code where they are used, and they actually conflict with some C++ openmpi headers (even if you don't use the MPI c++ interface (which is deprecated), the header get pulled in anyway, as soon as openmpi was installed with the configure option '--enable-mpi-cxx')

To reproduce the following you need to have an openmpi configured with '--enable-mpi-cxx' option.

[tmijieux@tontonbox: ~]$ cat test.cpp 
#include <morse.h>
#include <mpi.h>

int main()
{
    return 0;
}


[tmijieux@tontonbox: ~]$ mpic++ test.cpp -I${CHAMELEON_DIR}/include/  -I${CHAMELEON_DIR}/include/chameleon   -I${CHAMELEON_DIR}/include/libhqr
In file included from /usr/include/openmpi/ompi/mpi/cxx/mpicxx.h:191:0,
                 from /usr/include/mpi.h:2704,
                 from test.cpp:2:
/usr/include/openmpi/ompi/mpi/cxx/constants.h:141:28: error: declaration does not declare anything [-fpermissive]
 OMPI_DECLSPEC extern const Datatype REAL;

This error basically means that REAL was substituted to an empty string, and the declaration is void.

[tmijieux@tontonbox: ~]$ mpic++ --version
g++ (GCC) 7.1.1 20170630
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[tmijieux@tontonbox: ~]$ mpirun --version
mpirun (Open MPI) 2.1.1

Report bugs to http://www.open-mpi.org/community/help/
Edited by MIJIEUX Thomas