Code: Select all
/usr/local/lib/X11/config/Imake.tmpl:2144:10: fatal error: ' X11 .rules' file
not found
#include ProjectRulesFile
^
/usr/local/lib/X11/config/Imake.tmpl:2142:35: note: expanded from macro
'ProjectRulesFile'
# define ProjectRulesFile Concat3(<,TopLevelProject,.rules>)
I copied the code above from one of your previous post:
1)
ProjectRulesFile is a macro that get expanded to
Concat3(<,TopLevelProject,.rules>)
2)
TopLevelProject is another macro and get expanded to
X11
3)
Concat3 is also a macro, defined in
/usr/local/lib/X11/config/Imake.rules, approx line 250, as follow:
Code: Select all
/*
* Concat3 - concatenates three strings.
*/
#ifndef Concat3
#if (defined(__STDC__) && !defined(UnixCpp)) || defined(AnsiCpp)
#define Concat3(a,b,c)a##b##c
#else
#define Concat3(a,b,c)a/**/b/**/c
#endif
#endif
Now it appear that the comment
/**/ get substituted with a space character instead of an empty string,
the result is: ' X11 .rules' note that there
one space before the X of "X11" and
one space before the dot in ".rules".
That result in
instead of
Why ?
I can guess because the default compiler LLVM/CLANG, and specifically its preprocessor behave differently from gcc-cpp.
As I see it, there is a chain of events that make things go wrong ... but I cannot say where the error is at this stage:
It could be that CLANG preprocessor is not compliant, it could be that the replacement of comments is undefined (I think it is the case), etc...
I think that the issue might be solved by forcing the use of GCC ...
A quick and dirty workaround could be substitute:
with
but probably the macro Concat3 is used also in other places ... so you will get other errors ...