Fonctions dans le Makefile

Je suis en train d'écrire un Makefile avec beaucoup de trucs répétitifs, par exemple

debug_ifort_Linux:
        if [ $(UNAME) = Linux ]; then                           \
          $(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS="..."  \
                  TARGET=$@ LEXT="ifort_$(UNAME)" -e syst;      \
        else                                                    \
          echo $(err_arch);                                     \
          exit 1;                                               \
        fi

où la cible 'syst' est défini, la variable 'UNAME' est défini (et est généralement de Linux, mais aussi par Cygwin ou OSF1) et les variables 'difort" et "err_arch" sont également définis. Ce bloc de code est utilisé plusieurs fois pour différents compilateur cibles (à l'aide d'un nom de convention de"'). Puisque c'est une énorme quantité de code redondant, j'aimerais être capable d'écrire de la plus simple manière. E. g., Je voudrais faire quelque chose comme ceci:

debug_ifort_Linux:
        compile(uname,compiler,flags,petsc_flags,target,lext)

où compiler pourrait être une fonction de code ci-dessus en fonction sur les arguments. Quelqu'un aurait-il une idée de comment je pourrais y arriver?