scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | README | LICENSE

commit 95b1d6c4ae74328c31bc2a3bdc80db53886bedea
parent fddf43508290bc39144364d09e641f3bba7ef095
Author: Roberto E. Vargas Caballero <k0ga@shike2.net>
Date:   Tue, 12 May 2026 09:40:59 +0200

make: Use recursion to find  circular dependencies

Diffstat:
Msrc/cmd/scc-make/rules.c | 13++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/cmd/scc-make/rules.c b/src/cmd/scc-make/rules.c @@ -87,13 +87,20 @@ cleanup(Target *tp) } static int -depends(char *target, char *dep) +depends(char *dep, char *target) { + int i; - Target **p, *tp = lookup(target); + char *dname; + Target **p, *tp; + + if (strcmp(target, dep) == 0) + return 1; + tp = lookup(dep); for (p = tp->deps; p && *p; ++p) { - if (strcmp((*p)->name, target) == 0) + dname = (*p)->name; + if (depends(dname, target)) return 1; }