A while back I wrote about some problems I was having with native OpenEmbedded recipes that were building packages with raw Makefiles (no autotools). I wrote up the problem and the work around I was using here. I got some feedback pointing out what I was doing wrong but I guess my brain just didn’t process it. I was using uppercase variables while the GNU Make docs specifically call for lowercase! These variables get magically passed to Make likely through the environment and then everything just works.
So here’s my retraction: I was wrong 🙂 The ‘hello world’ Makefile should look like this:
.PHONY : clean uninstall prefix ?= /usr exec_prefix ?= $(prefix) bindir ?= $(exec_prefix)/bin HELLO_src = hello.c HELLO_bin = hello HELLO_tgt = $(DESTDIR)$(bindir)/$(HELLO_bin) all : $(HELLO_bin) $(HELLO_bin) : $(HELLO_src) $(HELLO_tgt) : $(HELLO_bin) install -d $(DESTDIR)$(bindir) install -m 0755 $^ $@ clean : rm $(HELLO_bin) install : $(HELLO_tgt) uninstall : rm $(HELLO_TGT)
You can download the recipe here: hello_1.1.bb.