Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Apr 1999 20:03:19 +0200 (MET DST)
From:      Jens Schweikhardt <schweikh@noc.dfn.de>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   bin/11114: make(1) does not work as documented with .POSIX: target
Message-ID:  <199904131803.UAA20827@obsidian.noc.dfn.de>

next in thread | raw e-mail | index | archive | help

>Number:         11114
>Category:       bin
>Synopsis:       make(1) does not work as documented with .POSIX: target
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Apr 13 11:10:00 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator:     Jens Schweikhardt
>Release:        FreeBSD 3.1-STABLE i386
>Organization:
DFN Network Operation Center
>Environment:

	
FreeBSD hal9000 3.1-STABLE FreeBSD 3.1-STABLE #0: Sat Apr  3 15:24:10 CEST 1999     toor@hal9000.details.de:/usr/src/sys/compile/HAL9000  i386

unmodified /etc/make.conf
no /etc/make.conf.local

>Description:

Condider the following Makefile (where prog.c is hello-world):

.POSIX:
prog: prog.o
        echo $(%POSIX)
        $(CC) -o prog prog.o
clean:
        rm -f prog prog.o

When I run 'make' this is what is done:
$ make
cc -O -pipe -c prog.c
echo 1003.2
1003.2
cc -o prog prog.o

However, /usr/share/mk/sys.mk says:

#   from: @(#)sys.mk    8.2 (Berkeley) 3/21/94
#   $Id: sys.mk,v 1.43 1998/09/15 05:24:01 obrien Exp $

unix        ?=  We run FreeBSD, not UNIX.

# If the special target .POSIX appears (without prerequisites or
# commands) before the first noncomment line in the makefile, make shall
# process the makefile as specified by the Posix 1003.2 specification.
# make(1) sets the special macro %POSIX in this case (to the actual
# value "1003.2", for what it's worth).
#
# The rules below use this macro to distinguish between Posix-compliant
# and default behaviour.
...
.if defined(%POSIX)
CC      ?=  c89
.else
CC      ?=  cc
.endif
CFLAGS      ?=  -O -pipe
...

Thus, I expect CC to be c89 (I can't see where CC is set from actually).
What's more, as soon as c89 is used, CFLAGS must not contain non-POSIX
compiler options like -pipe, because otherwise c89 rightfully barfs:


$ make CC=c89            
c89 -O -pipe -c prog.c
Illegal option -p
usage: c89 [-c] [-D name[=value]] [...] [-E] [-g] [-I directory ...]
       [-L directory ...] [-o outfile] [-O] [-s] [-U name ...] operand ...
*** Error code 64

Stop.

I tried 'make -d A' for debugging, but CC=cc seems to be set in some
global place:
$ make -d A
Global:.MAKEFLAGS =  -d
Global:.MAKEFLAGS =  -d A
Global:.TARGETS = 
Caching /usr/share/mk...done
expanding "sys.mk".../usr/share/mk/sys.mk 
Global:MAKEFILE = /usr/share/mk/sys.mk
Global:unix = We run FreeBSD, not UNIX.
Global:X11BASE = /usr/X11R6
Global:AR = ar
Global:ARFLAGS = rl
Global:RANLIB = ranlib
Global:AS = as
Global:AFLAGS = 
Global:CC = cc            <----- why is this not c89?
...etc

It seems the .if defined(%POSIX) doesn't work properly. Or I have
overlooked something. Or something funny is going on.

Regards,

	Jens
-- 
Jens Schweikhardt  http://www.shuttle.de/schweikh/
SIGSIG -- signature too long (core dumped)

>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
 To: FreeBSD-gnats-submit@freebsd.org
 Subject: make(1) does not work as documented with .POSIX: target
 From: schweikh@noc.dfn.de
 Reply-To: schweikh@noc.dfn.de
 X-send-pr-version: 3.2
 
 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199904131803.UAA20827>