Rework the make rule for patched *.c files.
authorYONETANI Tomokazu <y0netan1@dragonflybsd.org>
Fri, 19 Jan 2007 19:18:09 +0000 (19:18 +0000)
committerYONETANI Tomokazu <y0netan1@dragonflybsd.org>
Fri, 19 Jan 2007 19:18:09 +0000 (19:18 +0000)
Previously ${SRCS} contained the file name with and without
the directory part(hardware/hwsleep.c vs hwsleep.c), and
the object files from the latter are trimmed off of ${OBJS}.
This resulted in compiling both patched and unpatched version
and the object files get created under ${.OBJDIR}.
Also make a patched *.c file depend on the patch, so as the
*.c file is re-generated when the patch is updated.

sys/dev/acpica5/Makefile

index 33be70f..63d4d00 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/sys/modules/acpi/acpi/Makefile,v 1.3 2004/01/08 16:38:32 njl Exp $
-# $DragonFly: src/sys/dev/acpica5/Makefile,v 1.17 2007/01/19 16:41:28 y0netan1 Exp $
+# $DragonFly: src/sys/dev/acpica5/Makefile,v 1.18 2007/01/19 19:18:09 y0netan1 Exp $
 
 CONTRIBDIR=    ${SYSDIR}/${ACPICA_DIR}
 PATCHES=       hardware,hwsleep.c.patch include,acglobal.h.patch \
@@ -113,8 +113,12 @@ acpi_wakecode.h: acpi_wakecode.S
 SUBDIR=        acpi_toshiba
 all: ${PROG} ${SUBDIR}
 
-.include <bsd.kmod.mk>
+# *.o file for each patched *.c file is created under the same directory,
+# rather than right below ${.OBJDIR}.
+.for _p in ${PATCHES:M*.c.patch}
+SRCS:= ${SRCS:N${_p:C/^.*,//:R}}
+${_p:S|,|/|g:R:R}.o: ${_p}
+       ${CC} ${CFLAGS} -o ${.TARGET} -c ${.IMPSRC}
+.endfor
 
-# *.o files compiled from the patched C sources in the subdirectories of
-# ${OBJDIR} are placed right under ${OBJDIR}, not under each subdirectory
-OBJS:=         ${OBJS:N*/*}
+.include <bsd.kmod.mk>