Hrvoje Niksic <hniksic(a)iskon.hr> writes:
 Didier Verna <didier(a)xemacs.org> writes:
 
 > | /* For use in #include statements.
 > |    You can't use macros directly within the <> of a #include statement.
 > |    The multiply nested macros are necessary to make old gcc's happy.
 > |    However, those nested macros are too much for AIX xlc to deal with. */
 > | #if defined(_AIX) && !defined(__GNUC__)
 > | #define ATHENA_INCLUDE(header_file) <ATHENA_H_PATH/header_file>
 > | #else
 ...
 > * Each time a new inclusion macro needs to be written, you have to
 >   redo the AIX test. I concede that this is not very satisfactory.
 
 That kills it IMO.  AIX /per se/ is of course not the issue.  The
 issue is that only God knows how many more compilers have exactly the
 same problem.  These #ifdef's scattered through code might only
 increase.
 
 Idea: maybe we should design a configure test to test which kind of
 configure glue the user's preprocessor likes.  Then our config.h.in
 could say something like:
 
 #define ATHENA_INCLUDE @INCLUDE_GLUE@(...) 
Or why not just put it in one place as SMART_INCLUDE, and then
#if defined(_AIX) && !defined(__GNUC__)
#define SMART_INCLUDE(path,header_file) <path/header_file>
#else
#define INCLUDE_GLUE_2(dirname,basename) <##dirname##/##basename##>
#define INCLUDE_GLUE_1(dirname,basename) INCLUDE_GLUE_2(dirname,basename)
#define SMART_INCLUDE(path,header_file) INCLUDE_GLUE_1(path,header_file)
#endif
#define ATHENA_INCLUDE(x) SMART_INCLUDE(ATHENA_H_PATH,x)
#define SOUND_INCLUDE(x) SMART_INCLUDE(SOUND_H_PATH,x)
#define FOO_INCLUDE SMART_INCLUDE(FOO_H_PATH,x)
etc, etc?  That way whenever you find that some compiler has problems you
just smarten up SMART_INCLUDE in one place, voila.
-bp