better dependency management
authorMichael Wallner <mike@php.net>
Wed, 1 Feb 2017 08:52:16 +0000 (09:52 +0100)
committerMichael Wallner <mike@php.net>
Wed, 1 Feb 2017 08:52:16 +0000 (09:52 +0100)
.gitignore
Makefile.frag
config.m4
m4/psi/psi.m4
src/call.h

index b8e7d88967507efde7cbe4df1b58e74ca6797e99..d81b8167d3731fba7f26ce38a4d8eb0831edee0a 100644 (file)
@@ -76,4 +76,4 @@ php_psi_unions.h
 /token.h
 /types.h
 /types/
-*.d
+*.dep
index 65e5ed7751993fdbe4d12d2ad660e5350d57dfc0..d192749f055844e19afee4154f5af134d02b504f 100644 (file)
@@ -63,22 +63,23 @@ $(PHP_PSI_SRCDIR)/src/context.c: $(PHP_PSI_SRCDIR)/php_psi_consts.h $(PHP_PSI_SR
 
 # -- deps
 
-PHP_PSI_DEPEND = $(PHP_PSI_SOURCES:.c=.d)
+PHP_PSI_DEPEND = $(patsubst $(PHP_PSI_SRCDIR)/%,$(PHP_PSI_BUILDDIR)/%,$(PHP_PSI_SOURCES:.c=.dep))
 
 .PHONY: psi-clean-depend
 psi-clean-depend:
-       -rm -f $(PHP_PSI_DEPEND)
+       -rm -f $(PHP_PSI_DEPEND) $(PHP_PSI_BUILDDIR)/php_psi.dep
 
 psi-clean: psi-clean-depend
 
-%.d: %.c
-       $(CC) -MM -MG -MF $@ -MT $(patsubst $(PHP_PSI_SRCDIR)/%,$(PHP_PSI_BUILDDIR)/%,$(@:.d=.lo)) \
+$(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_BUILDDIR)/php_psi.dep
 endif
 
 
index db96d5f885c316965bf202483f0aa8792c53d46b..fa209641b1acb375ce910bdaac7153cc13df8541 100644 (file)
--- a/config.m4
+++ b/config.m4
@@ -133,6 +133,7 @@ if test "$PHP_PSI" != no; then
        AC_DEFINE_UNQUOTED([PSI_DECLS], ["$PSI_DECLS"], [Predefined functions])
        AC_DEFINE_UNQUOTED([PSI_VA_DECLS], ["$PSI_VA_DECLS"], [Predefined vararg functions])
 
+       PHP_ADD_INCLUDE($PHP_PSI_SRCDIR)
        PHP_ADD_INCLUDE($PHP_PSI_SRCDIR/src)
        PHP_ADD_INCLUDE($PHP_PSI_SRCDIR/src/types)
        PHP_ADD_BUILD_DIR($PHP_PSI_BUILDDIR/src)
index 63ed1942ed7cced3ee09dd9d0f5945a7208d8ad3..c8eec1850d9f546efeef16b550e39bbf1be9c38a 100644 (file)
@@ -16,7 +16,17 @@ dnl Creates stubs of the headers with pre-defined types etc.
 dnl These headers are included by src/context.c.
 dnl This macro must be called prior any checks for a type, struct, decl etc.
 AC_DEFUN(PSI_CONFIG_INIT, [
+       cat >$PHP_PSI_BUILDDIR/php_psi.dep <<EOF
+\$(PHP_PSI_SRCDIR)/php_psi.h:
+php_psi.h:
+\$(PHP_PSI_SRCDIR)/php_psi_stdinc.h:
+php_psi_stdinc.h:
+EOF
        for i in $PSI_STDTYPES $PSI_TYPES $PSI_STRUCTS $PSI_UNIONS $PSI_CONSTS $PSI_REDIRS $PSI_MACROS $PSI_DECLS $PSI_VA_DECLS $PSI_FN_DECLS; do
+               cat >>$PHP_PSI_BUILDDIR/php_psi.dep <<EOF
+$i:
+$(basename $i):
+EOF
                cat >$i <<EOF
 /* generated by configure */
 #include "php_psi_stdinc.h"
index 01e6eaddd18e42bd8b91d9f50f4adc9cb04aa4e7..895fa96ced16d6d32c6311545f0fed2ebf5c9ebb 100644 (file)
@@ -100,5 +100,4 @@ void **psi_call_frame_push_auto(struct psi_call_frame *frame, void *auto_free);
 
 void psi_call_frame_free(struct psi_call_frame *frame);
 
-
 #endif