[Omake] "Strict" case sensitivity.

Jason Hickey jyh at cs.caltech.edu
Mon May 14 12:41:20 PDT 2007


On May 14, 2007, at 12:15 PM, Aleksey Nogin wrote:

> (the real file name is RpcDceP.h, but the C scanner prints all the  
> header files in lowercase).

Oh, bleh:(

>
>> I think I prefer strict.  For the mixed style, there are two  
>> approaches,
>>    1. Case-sensitive nodes, but canonical comparison (the style  
>> you had before).
>
> This is probably the way to go. Except, we might want to try adding  
> some code to "inherit" the real case through the implicit rules.
>
>>    2. Nodes are canonized, but they display using their realpath
>>       osh> X = $(file aBc)
>>       Abc : File
>>       osh> rm abc
>>       osh> touch abC
>>       osh> value $X
>>       abC : File
>
> The issue is that we'd also have to have the notion of a "realpath"  
> for any "future" targets that we are planning to build in order for  
> this to do what we want.

I'm not arguing the choice, but note that the "future realpath" is  
not an issue I believe.  We assume that if a file doesn't exist, then  
the way it gets created is because we build it.  So the correct thing  
to do is preserve the case of the part that doesn't exist (this is  
how it is already implemented).

If I understand, what you mean is that the value of % is determined  
by the realpath case of the (first) dependency with a %, not the  
target.  This seems like a good idea.

    sh> touch bAr.c
    sh> omake Bar.o
    # Builds bAr.o

In any case, I'm arguing for the following implementation.

    - Remove the realpath check from Omake_cache_stat
    - Omake_cache_stat nodes always use canonical names
    - Actual nodes are layered on top, as Omake_cache.Node

In other words, the case-preserving nodes are layered on top of  
canonical nodes, the implementations are not interleaved.

Jason

--
Jason Hickey                  http://www.cs.caltech.edu/~jyh
Caltech Computer Science      Tel: 626-395-6568 FAX: 626-792-4257





More information about the OMake-Devel mailing list