URL: <https://savannah.gnu.org/bugs/?63039>
Summary: implicit rule recursion is forbidden Project: make Submitter: et7f3 Submitted: ven. 09 sept. 2022 02:02:53 UTC Severity: 3 - Normal Item Group: Bug Status: None Privacy: Public Assigned to: None Open/Closed: Open Discussion Lock: Any Component Version: 4.3 Operating System: POSIX-Based Fixed Release: None Triage Status: None _______________________________________________________ Follow-up Comments: ------------------------------------------------------- Date: ven. 09 sept. 2022 02:02:53 UTC By: Brami <et7f3> Hello, I know `mkdir -p` but wanted to take advantage of make to concurrently produce folder. I builded this snippet: ```mak build/: mkdir "$@" .SECONDARY: build/DEV/a/b/c/d/e/f/g/h/k/ build/DEV/a/b/c/d/e/f/g/h/ build/DEV/a/b/c/d/e/f/g/ .SECONDEXPANSION: build/%/: | $$(dir build/%) mkdir "$@" ``` (I didn't listed all in .SECONDARY but it shouldn't matter for the issue.) I tried to build `build/DEV/a/b/c/d/e/f/g/h/k/l/` here the implicit rule will try to build `build/DEV/a/b/c/d/e/f/g/h/k/` but it didn't find any rule to this target because they are explicitly disabled. src/implicit.c ```C if (rule->in_use) { DBS (DB_IMPLICIT, (_("Avoiding implicit rule recursion.\n"))); continue; } ``` The workaround is to myself enumerate different level so it is considered as another rule. I tried to blame this but it appear in "Initial revision" implicit.c of b9c983dee3c6aff460532d9b4fd7aaea079c672b What is added only to prevent `%: %` ? or maybe weird loop: `a%: b%` and `b%: aa%`. I think my case is fine because length only reduce so it will always finish. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?63039> _______________________________________________ Message posté via Savannah https://savannah.gnu.org/