Hi all,<br><br>Reading this doc: <a href="http://llvm.org/docs/CodingStandards.html#hl_privateheaders">http://llvm.org/docs/CodingStandards.html#hl_privateheaders</a>, it suggests putting private implementation details outside of llvm/include/* to avoid polluting the public header space. This makes sense, and it works fine, because make enters every directory and hence doesn't need a -I path to include them.<br>
<br>However, unittests need to also #include these headers to be able to test the internal implementations, so here are potential ways to do this:<br>1) Leave headers where they are now; pass in -I$(LLVM_SRC_ROOT) and #include "lib/Transform/..." for the unittests<br>
2) Same as above, except with -I$(LLVM_SRC_ROOT)/lib and #include "Transform/..."<br>3) Create a new header directory for internal headers, e.g. llvm/include/llvm/internal/ and put private headers there; no one needs any new -I switches, implementation libraries and unittests all say #include "llvm/internal/*" and all is well. If there's a concern that we are distributing/installing private headers, we can amend the install script to "rm -rf llvm/include/internal" to avoid the issue.<br>
<br>Thoughts/comments?<br><br>Misha<br>(I'm voting #3)<br>