On Feb 3, 2013, at 9:36 PM, Alexandre Rostovtsev wrote:

> On Sun, 2013-02-03 at 20:27 -0700, Charles Davis wrote:
>> If the user doesn't set CCAS--which she doesn't the majority of the 
>> time--configure will pick up the first of {clang, gas, as} in the PATH. Are 
>> you sure that's what you want?
> 
> I had attempted to preserve the behavior that exists in wine-1.5.23 by
> default because I assumed there was some good reason for it (even though
> I could not see it). But if you agree that behavior was undesirable,
> then of course it would be better to change the order depending on the
> platform, and check for {clang, gas, as} on OSX, and {gas, as, clang} on
> other platforms.
I considered doing that, but I figured it would make the code more complicated.
> 
>> Perhaps we should just not define CCAS if the user didn't specify it. Then 
>> below, you can wrap the block you added in an #ifdef.
> 
> My patch skips the CCAS block if strlen( CCAS ) == 0, which is basically
> equivalent to what you propose.
I don't think you understand exactly what AC_CHECK_TOOLS() does. If one of 
{clang, gas, as} exists in the path at *configure* time (prefixed with a CHOST 
triple or otherwise), strlen( CCAS ) *won't* be 0, because AC_CHECK_TOOLS() 
will pick one up. In fact, it will *never* be zero in this instance, because 
even if it doesn't find one of them, it'll just use the C compiler like you 
told it to.

And so I ask you again, are you sure you actually want to do this? Because I 
think you really don't. Otherwise, I wouldn't be asking :).

I'm sorry if I wasn't perfectly clear before.
> 
>> You may recall that one of the earlier versions (later than the one that 
>> detected Clang in configure) used strstr(3) to detect Clang; I was then told 
>> not to use it. I suspect this is because some systems' strstr(3) exhibits 
>> quadratic-time behavior. I don't know if you can avoid that in this case, 
>> though. Maybe you can just grab the basename and strip off the CTARGET 
>> prefix; then you should just be able to do a strcmp(3). Or am I missing 
>> something?
> 
> Even if strstr(x,y) is quadratic in strlen(x) and strlen(y), here it is
> being called on two *constant* strings: CCAS and "clang". So the runtime
> penalty is in fact constant :)
Only if the compiler knows how to optimize strstr(3) :).
> 
> But it's probably better to avoid this penalty altogether. For example,
> by checking in configure whether CCAS is Clang or GAS, and defining an
> appropriate flag.
Go for it. Can't speak for AJ though; he has the final word on anything that 
goes in.

Chip

> 
> -Alexandre.
> 



Reply via email to