Si les conditions dans un Makefile, à l'intérieur d'une cible

Je suis en train de configurer un Makefile qui va de la recherche et de copier certains fichiers (si-de la condition else) et je ne peux pas déterminer exactement quel est le problème avec elle? (tu, je suis sûr que c'est à cause d'une combinaison d'espaces/tabulations écrit dans le mauvais endroit).
Puis-je obtenir de l'aide, s'il vous plaît?

Voici ce que j'ai actuellement:

obj-m = linuxmon.o

KDIR = /lib/modules/$(shell uname -r)/build
UNAME := $(shell uname -m)

all:

    $(info Checking if custom header is needed)
    ifeq ($(UNAME), x86_64)
        $(info Yes)
        F1_EXISTS=$(shell [ -e /usr/include/asm/unistd_32.h ] && echo 1 || echo 0 )
        ifeq ($(F1_EXISTS), 1)
            $(info Copying custom header)
            $(shell sed -e 's/__NR_/__NR32_/g' /usr/include/asm/unistd_32.h > unistd_32.h)
        else    
            F2_EXISTS=$(shell [[ -e /usr/include/asm-i386/unistd.h ]] && echo 1 || echo 0 )
            ifeq ($(F2_EXISTS), 1)
                $(info Copying custom header)
                $(shell sed -e 's/__NR_/__NR32_/g' /usr/include/asm-i386/unistd.h > unistd_32.h)
            else
                $(error asm/unistd_32.h and asm-386/unistd.h does not exist)
            endif
        endif
        $(info No)
    endif

    @make -C $(KDIR) M=$(PWD) modules

clean:
    make -C $(KDIR) M=$(PWD) clean
    rm unistd_32.h

De toute façon, que vais imprimer "Oui", "la Copie de l'en-tête" deux fois et puis il va arrêter de dire que le sed ne peut pas lire /usr/include/asm-i386/unistd.h (qui, bien sûr, il ne peut pas lire que je suis sur un système x64).
Je pourrais dire que make n'est tout simplement pas comprendre le if/else et, au contraire, est en cours d'exécution tout ligne par ligne.

source d'informationauteur alexandernst | 2013-04-12