Author: jonathan
Date: Wed Oct 12 00:42:46 2016
New Revision: 307075
URL: https://svnweb.freebsd.org/changeset/base/307075

Log:
  Extract suffix rules into bsd.suffixes[-posix].mk.
  
  Refactor make suffix rules into separate files (one for POSIX and one not),
  and rationalise the rules so that bsd.lib.mk can contain only those rules
  that are library-specific (.c.po and .c.pico).
  
  This can be accomplished by adding ${STATIC_CFLAGS} to the .c.o rule
  unconditionally. STATIC_CFLAGS are only defined for use by sys.mk rules in
  lib/libpam/Makefile.inc (see r227797), so it should be safe to include
  them unconditionally in sys.mk's .c.o rule (tested by make universe and a
  ports exp-run).
  
  Reviewed by:  bdrewery, sjg
  Approved by:  rwatson (mentor)
  Sponsored by: DARPA, AFRL
  Differential Revision:        https://reviews.freebsd.org/D6805

Added:
  head/share/mk/bsd.suffixes-posix.mk   (contents, props changed)
  head/share/mk/bsd.suffixes.mk   (contents, props changed)
Modified:
  head/share/mk/Makefile
  head/share/mk/bsd.lib.mk
  head/share/mk/sys.mk

Modified: head/share/mk/Makefile
==============================================================================
--- head/share/mk/Makefile      Tue Oct 11 22:54:29 2016        (r307074)
+++ head/share/mk/Makefile      Wed Oct 12 00:42:46 2016        (r307075)
@@ -49,6 +49,8 @@ FILES=        \
        bsd.progs.mk \
        bsd.snmpmod.mk \
        bsd.subdir.mk \
+       bsd.suffixes-posix.mk \
+       bsd.suffixes.mk \
        bsd.symver.mk \
        bsd.sys.mk \
        bsd.test.mk \

Modified: head/share/mk/bsd.lib.mk
==============================================================================
--- head/share/mk/bsd.lib.mk    Tue Oct 11 22:54:29 2016        (r307074)
+++ head/share/mk/bsd.lib.mk    Wed Oct 12 00:42:46 2016        (r307075)
@@ -78,7 +78,6 @@ CTFFLAGS+= -g
 
 # prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
 # .pico used for PIC object files
-.SUFFIXES:
 .SUFFIXES: .out .o .po .pico .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln
 
 .if !defined(PICFLAG)
@@ -91,10 +90,6 @@ PICFLAG=-fpic
 
 PO_FLAG=-pg
 
-.c.o:
-       ${CC} ${STATIC_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
-       ${CTFCONVERT_CMD}
-
 .c.po:
        ${CC} ${PO_FLAG} ${STATIC_CFLAGS} ${PO_CFLAGS} -c ${.IMPSRC} -o 
${.TARGET}
        ${CTFCONVERT_CMD}
@@ -103,9 +98,6 @@ PO_FLAG=-pg
        ${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o 
${.TARGET}
        ${CTFCONVERT_CMD}
 
-.cc.o .C.o .cpp.o .cxx.o:
-       ${CXX} ${STATIC_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
-
 .cc.po .C.po .cpp.po .cxx.po:
        ${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o 
${.TARGET}
 

Added: head/share/mk/bsd.suffixes-posix.mk
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/share/mk/bsd.suffixes-posix.mk Wed Oct 12 00:42:46 2016        
(r307075)
@@ -0,0 +1,56 @@
+# $FreeBSD$
+
+# 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 -f ${.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} ${CFLAGS} -c ${.IMPSRC}
+       ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
+       rm -f ${.PREFIX}.o
+
+.f.a:
+       ${FC} ${FFLAGS} -c ${.IMPSRC}
+       ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
+       rm -f ${.PREFIX}.o

Added: head/share/mk/bsd.suffixes.mk
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/share/mk/bsd.suffixes.mk       Wed Oct 12 00:42:46 2016        
(r307075)
@@ -0,0 +1,99 @@
+# $FreeBSD$
+
+.sh:
+       cp -f ${.IMPSRC} ${.TARGET}
+       chmod a+x ${.TARGET}
+
+.c.ln:
+       ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
+           touch ${.TARGET}
+
+.cc.ln .C.ln .cpp.ln .cxx.ln:
+       ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
+           touch ${.TARGET}
+
+.c:
+       ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
+       ${CTFCONVERT_CMD}
+
+.c.o:
+       ${CC} ${STATIC_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+       ${CTFCONVERT_CMD}
+
+.cc .cpp .cxx .C:
+       ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
+
+.cc.o .cpp.o .cxx.o .C.o:
+       ${CXX} ${STATIC_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+
+.m.o:
+       ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+       ${CTFCONVERT_CMD}
+
+.p.o:
+       ${PC} ${PFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+       ${CTFCONVERT_CMD}
+
+.e .r .F .f:
+       ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
+           -o ${.TARGET}
+
+.e.o .r.o .F.o .f.o:
+       ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+
+.S.o:
+       ${CC:N${CCACHE_BIN}} ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+       ${CTFCONVERT_CMD}
+
+.asm.o:
+       ${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${CFLAGS} ${ACFLAGS} -c 
${.IMPSRC} \
+           -o ${.TARGET}
+       ${CTFCONVERT_CMD}
+
+.s.o:
+       ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
+       ${CTFCONVERT_CMD}
+
+# XXX not -j safe
+.y.o:
+       ${YACC} ${YFLAGS} ${.IMPSRC}
+       ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
+       rm -f y.tab.c
+       ${CTFCONVERT_CMD}
+
+.l.o:
+       ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
+       ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
+       rm -f ${.PREFIX}.tmp.c
+       ${CTFCONVERT_CMD}
+
+# XXX not -j safe
+.y.c:
+       ${YACC} ${YFLAGS} ${.IMPSRC}
+       mv y.tab.c ${.TARGET}
+
+.l.c:
+       ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
+
+.s.out .c.out .o.out:
+       ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
+       ${CTFCONVERT_CMD}
+
+.f.out .F.out .r.out .e.out:
+       ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
+           ${LDLIBS} -o ${.TARGET}
+       rm -f ${.PREFIX}.o
+       ${CTFCONVERT_CMD}
+
+# XXX not -j safe
+.y.out:
+       ${YACC} ${YFLAGS} ${.IMPSRC}
+       ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
+       rm -f y.tab.c
+       ${CTFCONVERT_CMD}
+
+.l.out:
+       ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
+       ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
+       rm -f ${.PREFIX}.tmp.c
+       ${CTFCONVERT_CMD}

Modified: head/share/mk/sys.mk
==============================================================================
--- head/share/mk/sys.mk        Tue Oct 11 22:54:29 2016        (r307074)
+++ head/share/mk/sys.mk        Wed Oct 12 00:42:46 2016        (r307075)
@@ -259,162 +259,12 @@ YFLAGS           ?=      -d
 
 .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 -f ${.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} ${CFLAGS} -c ${.IMPSRC}
-       ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
-       rm -f ${.PREFIX}.o
-
-.f.a:
-       ${FC} ${FFLAGS} -c ${.IMPSRC}
-       ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
-       rm -f ${.PREFIX}.o
+.include "bsd.suffixes-posix.mk"
 
 .else
 
 # non-Posix rule set
-
-.sh:
-       cp -f ${.IMPSRC} ${.TARGET}
-       chmod a+x ${.TARGET}
-
-.c.ln:
-       ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
-           touch ${.TARGET}
-
-.cc.ln .C.ln .cpp.ln .cxx.ln:
-       ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
-           touch ${.TARGET}
-
-.c:
-       ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
-       ${CTFCONVERT_CMD}
-
-.c.o:
-       ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
-       ${CTFCONVERT_CMD}
-
-.cc .cpp .cxx .C:
-       ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
-
-.cc.o .cpp.o .cxx.o .C.o:
-       ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
-
-.m.o:
-       ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
-       ${CTFCONVERT_CMD}
-
-.p.o:
-       ${PC} ${PFLAGS} -c ${.IMPSRC} -o ${.TARGET}
-       ${CTFCONVERT_CMD}
-
-.e .r .F .f:
-       ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
-           -o ${.TARGET}
-
-.e.o .r.o .F.o .f.o:
-       ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} -o ${.TARGET}
-
-.S.o:
-       ${CC:N${CCACHE_BIN}} ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
-       ${CTFCONVERT_CMD}
-
-.asm.o:
-       ${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${CFLAGS} ${ACFLAGS} -c 
${.IMPSRC} \
-           -o ${.TARGET}
-       ${CTFCONVERT_CMD}
-
-.s.o:
-       ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
-       ${CTFCONVERT_CMD}
-
-# XXX not -j safe
-.y.o:
-       ${YACC} ${YFLAGS} ${.IMPSRC}
-       ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
-       rm -f y.tab.c
-       ${CTFCONVERT_CMD}
-
-.l.o:
-       ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
-       ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
-       rm -f ${.PREFIX}.tmp.c
-       ${CTFCONVERT_CMD}
-
-# XXX not -j safe
-.y.c:
-       ${YACC} ${YFLAGS} ${.IMPSRC}
-       mv y.tab.c ${.TARGET}
-
-.l.c:
-       ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
-
-.s.out .c.out .o.out:
-       ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
-       ${CTFCONVERT_CMD}
-
-.f.out .F.out .r.out .e.out:
-       ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
-           ${LDLIBS} -o ${.TARGET}
-       rm -f ${.PREFIX}.o
-       ${CTFCONVERT_CMD}
-
-# XXX not -j safe
-.y.out:
-       ${YACC} ${YFLAGS} ${.IMPSRC}
-       ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
-       rm -f y.tab.c
-       ${CTFCONVERT_CMD}
-
-.l.out:
-       ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
-       ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
-       rm -f ${.PREFIX}.tmp.c
-       ${CTFCONVERT_CMD}
+.include "bsd.suffixes.mk"
 
 # Pull in global settings.
 __MAKE_CONF?=/etc/make.conf
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to