Como definir funções globais do shell em um Makefile?

Eu quero definir uma função de shell

#!/bin/sh

test ()
{
  do_some_complicated_tests $1 $2;
  if something; then
    build_thisway $1 $2;
  else
    build_otherway $1 $2;
  fi
}

de tal forma que eu possa usá-lo em todas as regras do meu Makefile, tais como:

foo: bar
  test foo baz

Para ser claro, eu quero que a função shell faça parte do Makefile. Qual é a maneira mais elegante de fazer isso? Pontos de bônus se você puder fazer isso sem fazer uma chamada recursiva.

Background: Meu problema real é quemake -n produz uma saída muito longa e ilegível. Cada regra usa quase a mesma sequência de comandos shell ilegíveis, e existem muitas regras. A solução acima faria a saída demake -n mais útil.