[LLVMdev] Private headers and testing

Dan Gohman gohman at apple.com
Sat Jan 3 11:08:12 PST 2009


On Jan 2, 2009, at 12:21 PM, Misha Brukman wrote:

> Hi all,
>
> Reading this doc: http://llvm.org/docs/CodingStandards.html#hl_privateheaders 
> , 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.

Conceptually, this kind of test should have the same include path view
of the source tree as the source it's testing.  Would it be possible  
to create
a parallel directory structure under the unittests directory? That  
way, a test
in unittests/lib/Transform/... could
be given -I$(LLVM_SRC_ROOT)/lib/Transform/... .

>
>
> However, unittests need to also #include these headers to be able to  
> test the internal implementations, so here are potential ways to do  
> this:
> 1) Leave headers where they are now; pass in -I$(LLVM_SRC_ROOT) and  
> #include "lib/Transform/..." for the unittests
> 2) Same as above, except with -I$(LLVM_SRC_ROOT)/lib and #include  
> "Transform/..."
> 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.

Otherwise, if we're voting, I vote for #2, because it keeps the tree a  
little
tidier.  Also, LLVM is used in diverse settings with a variety of  
install scripts,
so it's preferable to keep things simple.

Dan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090103/09db458b/attachment.html>


More information about the llvm-dev mailing list