<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>I still don't like this. I think modifying (or copying) source files is bad, not least because of interaction with the debugger, compilation errors, and other builds with different configurations.</div>


</blockquote><div><br></div><div>From what Barry and I talked about earlier today, he doesn't mean copying or modify source files, but rather, having a tool that builds a (partial?) AST that would parse / gather / (clang?) this kind of information automatically.</div>


<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>I wouldn't mind something like</div><div><br></div><div>#include <parmetis.h>  /*R CFLAGS:PETSC_PARMETIS_FLAGS INCLUDES:PETSC_PARMETIS_INCLUDES LIBS:PETSC_PARMETIS_LIBS R*/</div>
<div><br></div><div>that would inform the build system that PETSC_PARMETIS_INCLUDES and flags are required to build that file and that the libs are required to link. The "normal" user can read the file and add that to their build system manually.</div>



</blockquote></div><br><div>So, this is basically what I think Barry meant ... except the whole /*R <flags> R*/ part. Modern compilers ("compilers not designed 40 years ago" - Barry Smith) should be able to give access to things like BuildSystem to build this structure automatically without human interaction.</div>


<div><br></div><div>I, for one, welcome our new Compiler Overlords.</div>