better dependency management
[m6w6/ext-psi] / Makefile.frag
index e904edfccb1ef8b631a5a2c7883d4f0e2deb6887..d192749f055844e19afee4154f5af134d02b504f 100644 (file)
@@ -61,15 +61,26 @@ $(PHP_PSI_SRCDIR)/src/parser.c: $(PHP_PSI_SRCDIR)/src/parser.re
 $(PHP_PSI_SRCDIR)/src/types/decl.c: $(PHP_PSI_SRCDIR)/php_psi_macros.h $(PHP_PSI_SRCDIR)/php_psi_redirs.h
 $(PHP_PSI_SRCDIR)/src/context.c: $(PHP_PSI_SRCDIR)/php_psi_consts.h $(PHP_PSI_SRCDIR)/php_psi_decls.h $(PHP_PSI_SRCDIR)/php_psi_fn_decls.h $(PHP_PSI_SRCDIR)/php_psi_structs.h $(PHP_PSI_SRCDIR)/php_psi_types.h $(PHP_PSI_SRCDIR)/php_psi_unions.h $(PHP_PSI_SRCDIR)/php_psi_va_decls.h
 
 $(PHP_PSI_SRCDIR)/src/types/decl.c: $(PHP_PSI_SRCDIR)/php_psi_macros.h $(PHP_PSI_SRCDIR)/php_psi_redirs.h
 $(PHP_PSI_SRCDIR)/src/context.c: $(PHP_PSI_SRCDIR)/php_psi_consts.h $(PHP_PSI_SRCDIR)/php_psi_decls.h $(PHP_PSI_SRCDIR)/php_psi_fn_decls.h $(PHP_PSI_SRCDIR)/php_psi_structs.h $(PHP_PSI_SRCDIR)/php_psi_types.h $(PHP_PSI_SRCDIR)/php_psi_unions.h $(PHP_PSI_SRCDIR)/php_psi_va_decls.h
 
-PHP_PSI_DEPEND = $(PHP_PSI_BUILDDIR)/Makefile.deps
+# -- deps
 
 
-depend: psi-depend
-.PHONY: psi-depend
-psi-depend: $(PHP_PSI_DEPEND)
+PHP_PSI_DEPEND = $(patsubst $(PHP_PSI_SRCDIR)/%,$(PHP_PSI_BUILDDIR)/%,$(PHP_PSI_SOURCES:.c=.dep))
 
 
-$(PHP_PSI_DEPEND): $(PHP_PSI_SOURCES)
-       $(CC) -MM -MG $(CPPFLAGS) $(DEFS) $(INCLUDES) $^ \
-               | $(SED) -e 's/^\(.*\).o: /\1.lo: /' \
-               > $@
+.PHONY: psi-clean-depend
+psi-clean-depend:
+       -rm -f $(PHP_PSI_DEPEND) $(PHP_PSI_BUILDDIR)/php_psi.dep
 
 
+psi-clean: psi-clean-depend
+
+$(PHP_PSI_BUILDDIR)/%.dep: $(PHP_PSI_SRCDIR)/%.c
+       $(CC) -MM -MG -MF $@ -MT $(patsubst $(PHP_PSI_SRCDIR)/%,$(PHP_PSI_BUILDDIR)/%,$(@:.dep=.lo)) \
+               $(CPPFLAGS) $(DEFS) $(INCLUDES) $< \
+                       || touch $@
+
+DEPS = 
+ifneq  ($(DEPS),)
 -include $(PHP_PSI_DEPEND)
 -include $(PHP_PSI_DEPEND)
+-include $(PHP_PSI_BUILDDIR)/php_psi.dep
+endif
+
+
+# -- deps