@wolf480pl @sjolsen Yeah see https://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html for POSIX.1-2008 make, and https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html for POSIX.1-2024 make which adds few things like += that ninja doesn't have. (And well ninja doesn't have variable replacement like $(string1[:subst1=[subst2]]) either)
And metaprogramming kind of features aren't portable across different implementations of make, you effectively just make do with .SUFFIXES: targets or generate targets into a file which you can include via a language like shell.