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
later.
* 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
#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.

Brice

Reply via email to