summaryrefslogtreecommitdiff
path: root/digital/avr/make/Makefile.host
blob: 99f1cfc3161a67b67fe591296b24b6825283a1f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Makefile.host - Host Makefile.
#
# Flags.

HOST_CFLAGS := $(CFLAGS)
HOST_CPPFLAGS := $(CPPFLAGS) $(HOST_DEFS) -DHOST=1
HOST_LDFLAGS := $(LDFLAGS)
HOST_LDLIBS := $(LDLIBS) $(HOST_LIBS)

HOST_COMPILE.c := $(CC) $(HOST_CFLAGS) $(HOST_CPPFLAGS) -c
HOST_LINK.o := $(CC) $(HOST_CFLAGS) $(HOST_LDFLAGS)

# Main rules.

host: exe

.PHONY: host clean.host exe

# General rules.

HOST_PROGS += $(PROGS)
HOST_EXES := $(HOST_PROGS:%=%.host)
HOST_SOURCES := $(filter-out %.avr.c %.avr.S,$(ALL_SOURCES))
HOST_OBJECTS := $(HOST_SOURCES:%.c=$(OBJDIR)/%.host.o)

exe: $(HOST_EXES)

define HOST_PROG_template
$(1).host: $$(patsubst %.c,$(OBJDIR)/%.host.o,\
	$$(filter-out %.avr.c %.avr.S,$$($(1)_SOURCES)))
endef

$(foreach prog,$(HOST_PROGS),$(eval $(call HOST_PROG_template,$(prog))))

$(HOST_EXES):
	$(HOST_LINK.o) $^ $(HOST_LDLIBS) -o $@

$(OBJDIR)/%.host.o: %.c | $(OBJDIR)
	$(HOST_COMPILE.c) -o $@ $<

# Dependency checking.
-include $(HOST_OBJECTS:%.host.o=%.host.d)

# Cleaning.

clean.host:
	rm -f $(OBJDIR)/*.host.o $(OBJDIR)/*.host.d $(HOST_EXES)