Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

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.