title: If conditions in a Makefile, inside a target
body: <p>I'm trying to setup a Makefile that will search and copy some files (if-else condition) and I can't figure out what exactly is wrong with it? (thou I'm pretty sure it's because a combination of spaces/tabs written in the wrong place).
  Can I get some help with it, please?</p>
  
  <p>Here's what I have currently:</p>
  
  <pre><code>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 ] &amp;&amp; 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 &gt; unistd_32.h)
          else    
              F2_EXISTS=$(shell [[ -e /usr/include/asm-i386/unistd.h ]] &amp;&amp; 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 &gt; 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
  </code></pre>
  
  <p>Anyways, that'll print "Yes", "Copying header" twice and then it will quit saying that sed can't read <code>/usr/include/asm-i386/unistd.h</code> (which of course it can't read as I'm on a x64 system).
  I could say that <code>make</code> just isn't understanding the if/else and instead is running everything line by line.</p>