On Dec 3, 2014, at 11:35 PM, Artem Polyakov <[email protected]> wrote:
> Jeff, I must admit that I don't completely understand how your fix work. Can
> you explan me why this veriant was failing:
>
> CPPFLAGS="-I$srcdir/opal/libltdl/"
> AC_EGREP_HEADER([lt_dladvise_init], [$srcdir/opal/libltdl/ltdl.h]
>
> while the new one:
>
> CPPFLAGS="-I$srcdir -I$srcdir/opal/libltdl/"
> AC_EGREP_HEADER([lt_dladvise_init], [opal/libltdl/ltdl.h],
> [OPAL_HAVE_LTDL_ADVISE=1])
>
> works well?
>
> Is there additional header files that are included in conftest.c and has to
> be reached through $srcdir?
No, it was simpler than that: "." (i.e., $srcdir in a non-VPATH build) is not
necessarily in the default include search path for <> files (which is what
AC_EGREP_HEADER uses). For example:
-----
[3:24] savbu-usnic-a:~/g/ompi (topic/master-libfabric●)
$ cat test.c
#include <./opal/libltdl/ltdl.h>
[3:24] savbu-usnic-a:~/g/ompi (topic/master-libfabric●)
$ gcc -E test.c > /dev/null
test.c:1:33: fatal error: ./opal/libltdl/ltdl.h: No such file or directory
#include <./opal/libltdl/ltdl.h>
^
compilation terminated.
-----
Notice that if I don't have -I. (i.e., -I$srcdir), the above compilation fails
because it can't find <./opal/libltdl/ltdl.h>.
But if I add -I., then the file can be found:
-----
[3:24] savbu-usnic-a:~/g/ompi (topic/master-libfabric●)
$ gcc -E test.c -I. > /dev/null
[3:25] savbu-usnic-a:~/g/ompi (topic/master-libfabric●)
$ echo $status
0
-----
And since we're -I$srcdir, there's no need to include $srcdir in the filename.
Indeed, if $srcdir==., then adding it in the filename is harmless. But if
$srcdir=/path/to/somewhere, it's actually a problem. Regardless, $srcdir
should no longer be in the filename.
The part I forgot was that your version of libtool also requires some sub
header files in the $srcdir/opal/libltdl tree, so a -I for that also needs to
be there.
Make sense?
--
Jeff Squyres
[email protected]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/