Pull patch handling into its own file so that patches with
authorSimon Schubert <corecode@dragonflybsd.org>
Mon, 13 Feb 2006 13:27:20 +0000 (13:27 +0000)
committerSimon Schubert <corecode@dragonflybsd.org>
Mon, 13 Feb 2006 13:27:20 +0000 (13:27 +0000)
subdir components work correctly.

Reviewed-by: guys from #dragonflybsd
share/mk/Makefile
share/mk/bsd.dep.mk
share/mk/bsd.lib.mk
share/mk/bsd.patch.mk [new file with mode: 0644]
share/mk/bsd.prog.mk

index 91db3af..21f1bd1 100644 (file)
@@ -1,11 +1,11 @@
 # $FreeBSD: src/share/mk/Makefile,v 1.27.2.8 2002/07/22 14:21:51 ru Exp $
-# $DragonFly: src/share/mk/Makefile,v 1.12 2005/06/05 22:43:19 corecode Exp $
+# $DragonFly: src/share/mk/Makefile,v 1.13 2006/02/13 13:27:20 corecode Exp $
 #      @(#)Makefile    8.1 (Berkeley) 6/8/93
 
 FILES= bsd.README
 FILES+=        bsd.cpu.mk bsd.cpu.gcc2.mk bsd.cpu.gcc3.mk bsd.cpu.gcc34.mk
 FILES+=        bsd.cpu.gcc40.mk
-FILES+=        bsd.dep.mk bsd.doc.mk bsd.files.mk
+FILES+=        bsd.dep.mk bsd.doc.mk bsd.files.mk bsd.patch.mk
 FILES+=        bsd.incs.mk bsd.info.mk bsd.init.mk
 FILES+=        bsd.kmod.mk bsd.hostlib.mk
 FILES+=        bsd.lib.mk bsd.libnames.mk bsd.links.mk bsd.man.mk bsd.nls.mk
index 68691da..dfade46 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/share/mk/bsd.dep.mk,v 1.27.2.3 2002/12/23 16:33:37 ru Exp $
-# $DragonFly: src/share/mk/bsd.dep.mk,v 1.8 2005/09/01 14:17:58 joerg Exp $
+# $DragonFly: src/share/mk/bsd.dep.mk,v 1.9 2006/02/13 13:27:20 corecode Exp $
 #
 # The include file <bsd.dep.mk> handles Makefile dependencies.
 #
@@ -67,32 +67,6 @@ tags: ${SRCS}
 .if defined(SRCS)
 CLEANFILES?=
 
-.for _PSRC in ${SRCS:M*.no_obj.patch}
-.for _PC in ${_PSRC:T:C/(\.no_obj)?\.patch$//:S|,|/|g}
-
-${_PC}: ${CONTRIBDIR}/${_PC} ${_PSRC}
-       mkdir -p ${.TARGET:H}
-       patch -o ${.TARGET} -i ${.ALLSRC:M*.patch} ${CONTRIBDIR}/${.TARGET}
-
-beforedepend: ${PC_}
-
-CLEANFILES:=   ${CLEANFILES} ${_PC}
-.endfor
-.endfor
-
-.for _PSRC in ${SRCS:N*.no_obj.patch:M*.patch}
-.for _PC in ${_PSRC:T:C/(\.no_obj)?\.patch$//:S|,|/|g}
-
-${_PC}: ${CONTRIBDIR}/${_PC} ${_PSRC}
-       mkdir -p ${.TARGET:H}
-       patch -o ${.TARGET} -i ${.ALLSRC:M*.patch} ${CONTRIBDIR}/${.TARGET}
-
-SRCS:= ${SRCS:N${_PC}:S|${_PSRC}|${_PC}|}
-CLEANFILES:=   ${CLEANFILES} ${_PC}
-.endfor
-.endfor
-
 .for _LSRC in ${SRCS:M*.l:N*/*}
 .for _LC in ${_LSRC:S/.l/.c/}
 ${_LC}: ${_LSRC}
index 4988b02..f02c05d 100644 (file)
@@ -1,6 +1,6 @@
 #      from: @(#)bsd.lib.mk    5.26 (Berkeley) 5/2/91
 # $FreeBSD: src/share/mk/bsd.lib.mk,v 1.91.2.15 2002/08/07 16:31:50 ru Exp $
-# $DragonFly: src/share/mk/bsd.lib.mk,v 1.15 2006/01/11 01:15:32 corecode Exp $
+# $DragonFly: src/share/mk/bsd.lib.mk,v 1.16 2006/02/13 13:27:20 corecode Exp $
 #
 
 .include <bsd.init.mk>
@@ -144,13 +144,10 @@ PO_FLAG=-pg
 
 all: objwarn
 
+.include <bsd.patch.mk>
+
 .if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
 OBJS+=  ${SRCS:N*.h:N*.patch:R:S/$/.o/g}
-.for _PATCH in ${SRCS:T:N*.no_obj.patch:N*.h.patch:M*.patch}
-.for _OBJ in ${_PATCH:R:R:S/$/.o/}
-OBJS:= ${OBJS:N${_OBJ}} ${_OBJ}
-.endfor
-.endfor
 .endif
 
 .if defined(LIB) && !empty(LIB)
diff --git a/share/mk/bsd.patch.mk b/share/mk/bsd.patch.mk
new file mode 100644 (file)
index 0000000..93042af
--- /dev/null
@@ -0,0 +1,67 @@
+# $DragonFly: src/share/mk/bsd.patch.mk,v 1.1 2006/02/13 13:27:20 corecode Exp $
+#
+# The include file <bsd.patch.mk> handles patching of files and sources.
+#
+# It is advisable to include this file before a rule which deduces ${OBJS}
+# from ${SRCS}.
+#
+# +++ variables +++
+#
+# SRCS         List of source files, especially patches (*.patch)
+#
+# CONTRIBDIR   Location of source files to which the patch files are relative
+#
+# Patch files are added to ${SRCS} and follow the following patterns:
+#   *.no_obj.patch     The patched source file won't be added to ${SRCS}.
+#   *.h.patch          The patched source file is a header and will be
+#                      added to ${SRCS}.
+#   *.patch            The patched source file will be compiled to an object
+#                      and will be added to ${SRCS}.
+#
+# All commas contained in the patch filename will be replaced to slashes to
+# form a path in a subdir.
+#
+# Example:
+#
+# CONTRIBDIR=  ${.CURDIR}/../../contrib/foo-1.4/src
+# SRCS+=       foomain.c.patch include,fooconf.h.patch
+#
+# This will patch ${CONTRIBDIR}/foomain.c with foomain.c.patch and add
+# the patched foomain.c to ${SRCS}.
+# The file ${CONTRIBDIR}/include/fooconf.h will be patched with
+# include,fooconf.h.patch;  the patched file will be created in
+# ${.OBJDIR}/include/fooconf.h and will be added to ${SRCS}.
+#
+
+.if !target(__<bsd.init.mk>__)
+.error bsd.patch.mk cannot be included directly.
+.endif
+
+.if defined(SRCS)
+CLEANFILES?=
+
+.for _PSRC in ${SRCS:M*.no_obj.patch}
+.for _PC in ${_PSRC:T:C/(\.no_obj)?\.patch$//:S|,|/|g}
+
+${_PC}: ${CONTRIBDIR}/${_PC} ${_PSRC}
+       mkdir -p ${.TARGET:H}
+       patch -o ${.TARGET} -i ${.ALLSRC:M*.patch} ${CONTRIBDIR}/${.TARGET}
+
+beforedepend: ${PC_}
+
+CLEANFILES:=   ${CLEANFILES} ${_PC}
+.endfor
+.endfor
+
+.for _PSRC in ${SRCS:N*.no_obj.patch:M*.patch}
+.for _PC in ${_PSRC:T:C/(\.no_obj)?\.patch$//:S|,|/|g}
+
+${_PC}: ${CONTRIBDIR}/${_PC} ${_PSRC}
+       mkdir -p ${.TARGET:H}
+       patch -o ${.TARGET} -i ${.ALLSRC:M*.patch} ${CONTRIBDIR}/${.TARGET}
+
+SRCS:= ${SRCS:N${_PC}:S|${_PSRC}|${_PC}|}
+CLEANFILES:=   ${CLEANFILES} ${_PC}
+.endfor
+.endfor
+.endif
index 023bbcf..14f149a 100644 (file)
@@ -1,6 +1,6 @@
 #      from: @(#)bsd.prog.mk   5.26 (Berkeley) 6/25/91
 # $FreeBSD: src/share/mk/bsd.prog.mk,v 1.86.2.17 2002/12/23 16:33:37 ru Exp $
-# $DragonFly: src/share/mk/bsd.prog.mk,v 1.11 2005/12/10 00:15:01 swildner Exp $
+# $DragonFly: src/share/mk/bsd.prog.mk,v 1.12 2006/02/13 13:27:20 corecode Exp $
 
 .include <bsd.init.mk>
 
@@ -29,12 +29,9 @@ OBJCLIBS?= -lobjc
 LDADD+=        ${OBJCLIBS}
 .endif
 
+.include <bsd.patch.mk>
+
 OBJS+=  ${SRCS:N*.h:N*.patch:R:S/$/.o/g}
-.for _PATCH in ${SRCS:T:N*.no_obj.patch:N*.h.patch:M*.patch}
-.for _OBJ in ${_PATCH:R:R:S/$/.o/}
-OBJS:= ${OBJS:N${_OBJ}} ${_OBJ}
-.endfor
-.endfor
 
 ${PROG}: ${OBJS}
 .if defined(PROG_CXX)