I think our usage of ML is broken. We use "#include "ml_config.h"" in ml.c. However looks like ml requires HAVE_CONFIG_H defined for other things aswell.
So the correct fix is to change the above line to: #define HAVE_CONFIG_H Satish On Tue, 25 Mar 2008, Lisandro Dalcin wrote: > OK. Now all is clear to me. Sorry about my confusion. So I have to > conclude that ML machinery for including headers is a bit broken, I > think. Many thanks for your explanation. > > > On 3/25/08, Jed Brown <jed at 59a2.org> wrote: > > No, ML was built correctly. The build output has -DHAVE_CONFIG_H on every > > build > > line. What *is* happening is that the headers included by > > ksp/pc/impls/ml/ml.c > > were essentially for a non-MPI build because HAVE_CONFIG_H was not defined. > > That is, including ml_config.h defines the autoconf'd macros (like > > HAVE_MPI) and > > ml_common.h uses them to set ML-local macros (like ML_MPI) *only* if > > HAVE_CONFIG_H is defined. So when we include ml_include.h without defining > > HAVE_CONFIG_H, we see the interface for a default (non-MPI) build. This > > interface is (apparently) the same as an MPI build with MPICH2, but not > > with > > OpenMPI. Since the library was built with MPI, there was no dangerous type > > casting, and you were using it with MPI, there was no problem. When using > > OpenMPI, it sees a conflict between the ML's dummy MPI interface and > > OpenMPI's > > because ML and MPICH2 use MPI_Comm = int while OpenMPI uses an opaque > > pointer > > value. > > > > > > > Looking at ML configure script and generated makefiles, in them there > > > is a line saying> > > > > > > DEFS = -DHAVE_CONFIG_H > > > > > > Do you have that line? Next, this $(DEFS) is included in compiler > > > command definition. > > > > > > Additionally, I did > > > > > > $ nm -C libml.a | grep MPI > > > > > > and undefined references to the MPI functions appered as expected. > > > > > > > > > Sorry about my insinstence, but I believe we need to figure out what's > > > exactly going on. > > > > > > No problem. I agree it is important. Does my explanation above make sense > > to > > you? > > > > > > Jed > > > > > > >