not an answer to what you are looking for , but a reason that might explain why such level of generic code might not yield good results. ....
static patterns rely on the presence of a stem to match and build a dependency chain.
pretty much in the same manner as the implicit rules (which are used for targets that dont have any recipie.)
i see what you were trying to achive , making a generic rule that will satisfy all the target checks for object and link in your code.
something like this ::
% : % : $(rule1)
echo / generic code ;
so that it gets invoked for all apps in differnt scenarios
since you dont want to add a extension (this becomes the root of some issues )
the issue with this is that the target will get reflected in the dependency as well since there will be no way of differentiating the dependencies form the targets.
hence if you did try that i think you will get here ...
$ make -nf mk.t
mk.t:18: *** mixed implicit and static pattern rules. Stop.
:) , i will give this a try again tomorrow to see if i can get this working in a real generic way. Nice question though.