From e0a6a5fe8fc502a5a27a7053e90ad85077118669 Mon Sep 17 00:00:00 2001 From: steve Date: Sun, 3 Nov 1996 03:25:50 +0000 Subject: Add in POSIX 1003.2 mandated rules. NOTE: these will only be enabled when the first non-comment line of the Makefile contains the .POSIX directive. Submitted by: Joerg Wunsch --- share/mk/sys.mk | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) (limited to 'share/mk') diff --git a/share/mk/sys.mk b/share/mk/sys.mk index 4493de0..e8b75a8 100644 --- a/share/mk/sys.mk +++ b/share/mk/sys.mk @@ -1,22 +1,43 @@ # from: @(#)sys.mk 8.2 (Berkeley) 3/21/94 -# $Id: sys.mk,v 1.14 1996/05/28 16:20:13 phk Exp $ +# $Id: sys.mk,v 1.16 1996/06/02 17:04:08 phk 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) +.SUFFIXES: .o .c .y .l .a .sh .f +.else .SUFFIXES: .out .a .ln .o .c .cc .cxx .C .F .f .e .r .y .l .S .s .cl .p .h .sh +.endif .LIBS: .a X11BASE ?= /usr/X11R6 AR ?= ar +.if defined(%POSIX) +ARFLAGS ?= -rv +.else ARFLAGS ?= rl +.endif RANLIB ?= ranlib AS ?= as AFLAGS ?= +.if defined(%POSIX) +CC ?= c89 +.else CC ?= cc +.endif CFLAGS ?= -O CXX ?= c++ @@ -36,8 +57,13 @@ ECHODIR ?= true .endif .endif +.if defined(%POSIX) +FC ?= fort77 +FFLAGS ?= -O 1 +.else FC ?= f77 FFLAGS ?= -O +.endif EFLAGS ?= INSTALL ?= install @@ -62,7 +88,71 @@ RFLAGS ?= SHELL ?= sh YACC ?= yacc +.if defined(%POSIX) +YFLAGS ?= +.else YFLAGS ?= -d +.endif + +.if defined(%POSIX) +# Posix 1003.2 mandated rules +# +# Quoted directly from the Posix 1003.2 draft, only the macros +# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and +# ${.PREFIX}, resp. + +# SINGLE SUFFIX RULES +.c: + $(CC) $(CFLAGS) $(LDFLAGS) -o ${.TARGET} ${.IMPSRC} + +.f: + $(FC) $(FFLAGS) $(LDFLAGS) -o ${.TARGET} ${.IMPSRC} + +.sh: + cp ${.IMPSRC} ${.TARGET} + chmod a+x ${.TARGET} + +# DOUBLE SUFFIX RULES + +.c.o: + $(CC) $(CFLAGS) -c ${.IMPSRC} + +.f.o: + $(FC) $(FFLAGS) -c ${.IMPSRC} + +.y.o: + $(YACC) $(YFLAGS) ${.IMPSRC} + $(CC) $(CFLAGS) -c y.tab.c + rm -f y.tab.c + mv y.tab.o ${.TARGET} + +.l.o: + $(LEX) $(LFLAGS) ${.IMPSRC} + $(CC) $(CFLAGS) -c lex.yy.c + rm -f lex.yy.c + mv lex.yy.o ${.TARGET} + +.y.c: + $(YACC) $(YFLAGS) ${.IMPSRC} + mv y.tab.c ${.TARGET} + +.l.c: + $(LEX) $(LFLAGS) ${.IMPSRC} + mv lex.yy.c ${.TARGET} + +.c.a: + $(CC) -c $(CFLAGS) ${.IMPSRC} + $(AR) $(ARFLAGS) ${.TARGET} ${.PREFIX}.o + rm -f ${.PREFIX}.o + +.f.a: + $(FC) -c $(FFLAGS) ${.IMPSRC} + $(AR) $(ARFLAGS) ${.TARGET} ${.PREFIX}.o + rm -f ${.PREFIX}.o + +.else + +# non-Posix rule set .c: ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} @@ -127,6 +217,8 @@ YFLAGS ?= -d ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET} rm -f ${.PREFIX}.tmp.c +.endif + .include .if exists(/etc/make.conf) -- cgit v1.1