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

Bruce Evans brde at optusnet.com.au
Wed Jun 5 09:46:57 UTC 2013


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.

>>  # long double format
>>  .if ${LDBL_PREC} == 64
>> @@ -35,10 +39,6 @@ CFLAGS+=     -I${.CURDIR}/ld128
>>  .PATH: ${.CURDIR}/src
>>  .PATH: ${.CURDIR}/man
>>
>> -.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
>> -.PATH: ${.CURDIR}/x86
>> -.endif
>> -
>>  LIB=   m
>>  SHLIBDIR?= /lib
>>  SHLIB_MAJOR= 5

It is also worth noting that this part is not (primarily) a style fix.
It is to add a -I path to unbreak the use of the uninstalled fenv.h.

There are still many old and new style bugs in the choice of <fenv.h>
vs "fenv.h" in include directives.

>> [800+ quoted lines deleted]

Please don't quote the whole thing.

> ==============================================================================
>> --- head/lib/msun/src/e_log2.c  Wed Jun  5 01:22:59 2013        (r251403)
>> +++ head/lib/msun/src/e_log2.c  Wed Jun  5 05:33:01 2013        (r251404)
>> @@ -24,6 +24,8 @@ __FBSDID("$FreeBSD$");
>>   * in not-quite-routine extra precision.
>>   */
>>
>> +#include <float.h>
>> +
>>  #include "math.h"
>>  #include "math_private.h"
>>  #include "k_log.h"

Since you quoted so much, it is worth noting that this isn't a style fix.
It fixes (implements) log2l() on arches where long double is the same as
double.

Bruce


More information about the svn-src-all mailing list