summaryrefslogtreecommitdiffstats
path: root/share/mk/sys.mk
diff options
context:
space:
mode:
authorsteve <steve@FreeBSD.org>1996-11-03 03:25:50 +0000
committersteve <steve@FreeBSD.org>1996-11-03 03:25:50 +0000
commite0a6a5fe8fc502a5a27a7053e90ad85077118669 (patch)
tree9db0bc25a307b3f6416c62b11181063a3d1e567f /share/mk/sys.mk
parentf83c06749f2b68dcac53df93cb0454d649fe3a90 (diff)
downloadFreeBSD-src-e0a6a5fe8fc502a5a27a7053e90ad85077118669.zip
FreeBSD-src-e0a6a5fe8fc502a5a27a7053e90ad85077118669.tar.gz
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 <joerg@freebsd.org>
Diffstat (limited to 'share/mk/sys.mk')
-rw-r--r--share/mk/sys.mk94
1 files changed, 93 insertions, 1 deletions
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 <bsd.own.mk>
.if exists(/etc/make.conf)
OpenPOWER on IntegriCloud