Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: [hwloc-devel] plugins status
From: Brice Goglin (Brice.Goglin_at_[hidden])
Date: 2012-09-04 09:52:03

FYI, the components branch seems (almost) in good shape.

OS support status:
* Linux OK
* Solaris OK
* AIX: configure aborts if you --enable-plugins because libltdl is known
to be broken. One guy is working at fixing libltdl. We may reenable this
* Windows fails to link because hwloc symbols disappear when linking
with libltdl. The reason is that ltdl symbols are marked with LT_SCOPE:

/* DLL building support on win32 hosts; mostly to workaround their
   ridiculous implementation of data symbol exporting. */
#if !defined(LT_SCOPE)
# if defined(__WINDOWS__) || defined(__CYGWIN__)
# if defined(DLL_EXPORT) /* defined by libtool (if required) */
# define LT_SCOPE extern __declspec(dllexport)
# endif
# if defined(LIBLTDL_DLL_IMPORT) /* define if linking with this dll */
       /* note: cygwin/mingw compilers can rely instead on auto-import */
# define LT_SCOPE extern __declspec(dllimport)
# endif
# endif
# if !defined(LT_SCOPE) /* static linking or !__WINDOWS__ */
# define LT_SCOPE extern
# endif

Changing HWLOC_DECLSPEC into "extern __declspec(dllexport)" solves the
problem. Visibility is currently totally disabled on mingw/cygwin in
hwloc, so it looks like we could add a cygwin/mingw case that use
dllexport. We didn't need dllexport until now because we generate a
".def" file. I hope having both won't break things. I am far from having
a patch yet, I hope we're not going to break unrelated things.

The "dllimport" thing above looks like an optimization from what I read
in google, so we may ignore this. We'll see.

I haven't tested on Win64 (don't have such a machine).

Plugins are disabled by default, so all the above is not too bad anyway.

I am thinking of adding a fake plugin that does nothing. This will
guarantee that we'd always have at least one plugin to build/load for
testing (you need libxml2 or libpci if you want at least one plugin to
be built). I need to find a good way to add this to make check.