svn commit: r251404 - in head/lib/msun: . src

Bruce Evans brde at optusnet.com.au
Wed Jun 5 10:59:53 UTC 2013


On Wed, 5 Jun 2013, Chris Rees wrote:

> On 5 Jun 2013 10:46, "Bruce Evans" <brde at optusnet.com.au> wrote:
>>
>> On Wed, 5 Jun 2013, Chris Rees wrote:
>>
>>> On 5 Jun 2013 06:33, "David Schultz" <das at freebsd.org> wrote:
>>>>
>>>> ...
>>>>
>>>> Log:
>>>>   Style fixes.
>>>>
>>>>   Submitted by: bde
>>>> ...
>>>
>>>
> ==============================================================================
>>>>
>>>> --- head/lib/msun/Makefile      Wed Jun  5 01:22:59 2013
> (r251403)
>>>> +++ head/lib/msun/Makefile      Wed Jun  5 05:33:01 2013
> (r251404)
>>>> @@ -21,6 +21,10 @@ ARCH_SUBDIR= ${MACHINE_CPUARCH}
>>>>  .include "${ARCH_SUBDIR}/Makefile.inc"
>>>>
>>>>  .PATH: ${.CURDIR}/${ARCH_SUBDIR}
>>>> +.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
>>>> +.PATH: ${.CURDIR}/x86
>>>> +CFLAGS+=       -I${.CURDIR}/x86
>>>> +.endif
>>>
>>>
>>> Since you're doing style fixes, it is worth noting that quoting strings
> in
>>> Makefiles is nearly always incorrect, and only works in our make because
> of
>>> an extension.
>>
>>
>> Ugh.  make's tutorial even says that strings are required in both of the
>> above contexts (for .include "file" and for strings in comparison
>> operations).  From /usr/share/doc/psd/12.make:
>>
>> @    added ability to use variables in the filenames.  An include
>> @    directive in a makefile looks either like this:
>> @ @         #include <file>
>> @ @    or this
>> @ @         #include "file"
>> @ @    The  difference  between the two is where PMake searches for
>> @    the file: the first way, PMake will look for the  file  only
>> @ ...
>> @    The arithmetic and string operators may only be used to test
>> @    the  value of a variable. The lefthand side must contain the
>> @    variable expansion, while the righthand side contains either
>> @    a  string, enclosed in double-quotes, or a number. The stan-
>> @    dard C numeric conventions (except for specifying  an  octal
>> @    number) apply to both sides. E.g.
>> @ @         #if $(OS) == 4.3
>> @ @         #if $(MACHINE) == "sun3"
>> @ @         #if $(LOAD_ADDR) < 0xc000
>> @ @    are  all  valid conditionals. In addition, the numeric value
>> @    of a variable can be tested as a boolean as follows:
>>
>> The tutorial doesn't seem to have been updated for the new make (or
>> the old make).  bmake duplicates the ~20-year old source file except
>> for about 20 lines of trivial changes, but doesn't seem to build or
>> install its version.
>>
>> I tried building a target named "foo bar".  It failed completely.
>
> Very little in that guide is at all relevant or correct.  Perhaps when it
> was first written.... It shows some interesting historical notes on the
> difference between ${} and $(), which is also now wrong.
>
> Following quoting rules because of an out of date tutorial and thus
> diverging from the rest of the world seems a little odd.
>
> I can't work out whether you agree or disagree with me from your comment :)

Quoted strings are necessary for file names with spaces, and good for
documenting the type of other things, and BSD make had them in 1993
(1983?).  Perhaps it is time the rest of the world supported them?
The result of the world needs them more than BSD, since it has mores
spaces in file names.

But quoting single identifiers like i386 don't seems to be just a style
thing.  The style in the tutorial seems to be almost always followed
for machine names.

I reminded someone to fix the other style bug(s) in the line moved but
not changed above.  The machine names are unsorted.  I thought that
this was the only one.

Bruce


More information about the svn-src-all mailing list