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 > > -- Lisandro Dalc?n --------------- Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC) Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC) Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET) PTLC - G?emes 3450, (3000) Santa Fe, Argentina Tel/Fax: +54-(0)342-451.1594
