suppress polluting EMPTY macro defined by SuperLU
diff --git a/unsupported/Eigen/SuperLUSupport b/unsupported/Eigen/SuperLUSupport
index a0248df..532cec8 100644
--- a/unsupported/Eigen/SuperLUSupport
+++ b/unsupported/Eigen/SuperLUSupport
@@ -5,11 +5,27 @@
#include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
+#ifdef EMPTY
+#define EIGEN_EMPTY_WAS_ALREADY_DEFINED
+#endif
+
typedef int int_t;
#include <slu_Cnames.h>
#include <supermatrix.h>
#include <slu_util.h>
+// slu_util.h defines a preprocessor token named EMPTY which is really polluting,
+// so we remove it in favor of a SUPERLU_EMPTY token.
+// If EMPTY was already, defined then we don't undef it.
+
+#if defined(EIGEN_EMPTY_WAS_ALREADY_DEFINED)
+# undef EIGEN_EMPTY_WAS_ALREADY_DEFINED
+#elif defined(EMPTY)
+# undef EMPTY
+#endif
+
+#define SUPERLU_EMPTY (-1)
+
namespace Eigen { struct SluMatrix; }
namespace Eigen {
@@ -17,7 +33,7 @@
/** \ingroup Unsupported_modules
* \defgroup SuperLUSupport_Module Super LU support
*
- *
+ * \warning When including this module, you have to use SUPERLU_EMPTY instead of EMPTY which is no longer defined because it is too polluting.
*
* \code
* #include <Eigen/SuperLUSupport>