+/* Use SMART_INCLUDE to generate #include statements with variable paths.
+
+ #### WARNING: NEVER EVER PUT A SPACE BETWEEN THE ARGUMENTS OF THE
+ `SMART_INCLUDE' MACRO: when the simple (direct version) is defined, you
+ would end up with a space in your header filename.
+
+ Since the effect of macro expansion in #include statements is underspecified
+ in the C standard, and rarely used in source code, different compilers need
+ different implementations of SMART_INCLUDE (e.g. gcc 2.5.8 and AIX xlc).
+*/
+#undef SMART_INCLUDE_INDIRECTIONS
+
+#if SMART_INCLUDE_INDIRECTIONS == 0
+# define SMART_INCLUDE(path,file) <path/file>
+#elif SMART_INCLUDE_INDIRECTIONS == 1
+# define GLUE_INCLUDE(path,file) <##path##/##file##>
+# define SMART_INCLUDE(path,file) GLUE_INCLUDE(path,file)
+#elif SMART_INCLUDE_INDIRECTIONS == 2
+# define GLUE_INCLUDE_2(path,file) <##path##/##file##>
+# define GLUE_INCLUDE_1(path,file) GLUE_INCLUDE_2(path,file)
+# define SMART_INCLUDE(path,file) GLUE_INCLUDE_1(path,file)
+#else
+# error SMART_INCLUDE_INDIRECTIONS was not properly defined by configure
+#endif
+
+