<u>Problem</u><div><br></div><div>If one tries to build tools at tools/perf by invoking make in this directory, the build barfs with the error:</div><div><br></div><div><div><font face="'courier new', monospace" size="1">In file included from util/../../../arch/x86/include/asm/unistd.h:11:0,</font></div>

<div><font face="'courier new', monospace" size="1">                 from util/../perf.h:15,</font></div><div><font face="'courier new', monospace" size="1">                 from util/cache.h:7,</font></div>

<div><font face="'courier new', monospace" size="1">                 from perf.c:12:</font></div><div><font face="'courier new', monospace" size="1">util/../../../arch/x86/include/asm/unistd_64.h:687:30: fatal error: litmus/unistd_64.h: No such file or directory</font></div>

<div><font face="'courier new', monospace" size="1">compilation terminated.</font></div><div><font face="'courier new', monospace" size="1">make: *** [perf.o] Error 1</font></div></div><div><br></div><div>

<u>Explanation</u></div><div><br></div><div>The problem is because we have #include "litmus/unistd_64.h" inside of the asm/unistd_64.h. When building the kernel, (I assume) the location of litmus/unistd_64.h is resolved because gcc is invoked with <font face="'courier new', monospace">-Iinclude/litmus</font>; however, invoking make for tools/perf causes the error because it doesn't know anything about our LITMUS unistd_64.h.</div>

<div><br></div><div><u>Ways to Fix</u></div><div><br></div><div>If I simply paste litmus/unistd_64.h in asm/unistd_64.h, then the build works. Also, if I change the #include "litmus/unistd_64.h" to a much uglier #include "../../../../include/litmus/unistd_64.h", then both the kernel and the tools/perf tools will build. </div>

<div><br></div><div><u>Alternatives</u></div><div><br></div><div>I'd like to permanently fix this because I am using performance monitoring for work on caching. Do you think the ugly relative include is a good fix, or would you a modification to the tools/perf Makefile be more appropriate? My rationale for not touching tools/perf/Makefile is that I don't want to change a utility that is "external" to LITMUS and the kernel. That would just be one more Makefile to worry about in the future.</div>

<div><br></div><div> -- Chris</div>