xref: /linux/tools/gpio/Makefile (revision 8674cea84dc6c0b98d8f45d6f2cf348864aabf1b)
1*8674cea8SAndy Shevchenkoinclude ../scripts/Makefile.include
2*8674cea8SAndy Shevchenko
3*8674cea8SAndy Shevchenkoifeq ($(srctree),)
4*8674cea8SAndy Shevchenkosrctree := $(patsubst %/,%,$(dir $(shell pwd)))
5*8674cea8SAndy Shevchenkosrctree := $(patsubst %/,%,$(dir $(srctree)))
6*8674cea8SAndy Shevchenkoendif
7*8674cea8SAndy Shevchenko
8*8674cea8SAndy Shevchenko# Do not use make's built-in rules
9*8674cea8SAndy Shevchenko# (this improves performance and avoids hard-to-debug behaviour);
10*8674cea8SAndy ShevchenkoMAKEFLAGS += -r
11*8674cea8SAndy Shevchenko
126d591c46SLinus WalleijCC = $(CROSS_COMPILE)gcc
13*8674cea8SAndy ShevchenkoLD = $(CROSS_COMPILE)ld
14*8674cea8SAndy ShevchenkoCFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include
156d591c46SLinus Walleij
16*8674cea8SAndy ShevchenkoALL_TARGETS := lsgpio gpio-hammer gpio-event-mon
17*8674cea8SAndy ShevchenkoALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS))
186d591c46SLinus Walleij
19*8674cea8SAndy Shevchenkoall: $(ALL_PROGRAMS)
206d591c46SLinus Walleij
21*8674cea8SAndy Shevchenkoexport srctree OUTPUT CC LD CFLAGS
22*8674cea8SAndy Shevchenkoinclude $(srctree)/tools/build/Makefile.include
236d591c46SLinus Walleij
24*8674cea8SAndy Shevchenko#
25*8674cea8SAndy Shevchenko# We need the following to be outside of kernel tree
26*8674cea8SAndy Shevchenko#
27*8674cea8SAndy Shevchenko$(OUTPUT)include/linux/gpio.h: ../../include/uapi/linux/gpio.h
28*8674cea8SAndy Shevchenko	mkdir -p $(OUTPUT)include/linux 2>&1 || true
29*8674cea8SAndy Shevchenko	ln -sf $(CURDIR)/../../include/uapi/linux/gpio.h $@
30*8674cea8SAndy Shevchenko
31*8674cea8SAndy Shevchenkoprepare: $(OUTPUT)include/linux/gpio.h
32*8674cea8SAndy Shevchenko
33*8674cea8SAndy Shevchenko#
34*8674cea8SAndy Shevchenko# lsgpio
35*8674cea8SAndy Shevchenko#
36*8674cea8SAndy ShevchenkoLSGPIO_IN := $(OUTPUT)lsgpio-in.o
37*8674cea8SAndy Shevchenko$(LSGPIO_IN): prepare FORCE
38*8674cea8SAndy Shevchenko	$(Q)$(MAKE) $(build)=lsgpio
39*8674cea8SAndy Shevchenko$(OUTPUT)lsgpio: $(LSGPIO_IN)
40*8674cea8SAndy Shevchenko	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
41*8674cea8SAndy Shevchenko
42*8674cea8SAndy Shevchenko#
43*8674cea8SAndy Shevchenko# gpio-hammer
44*8674cea8SAndy Shevchenko#
45*8674cea8SAndy ShevchenkoGPIO_HAMMER_IN := $(OUTPUT)gpio-hammer-in.o
46*8674cea8SAndy Shevchenko$(GPIO_HAMMER_IN): prepare FORCE
47*8674cea8SAndy Shevchenko	$(Q)$(MAKE) $(build)=gpio-hammer
48*8674cea8SAndy Shevchenko$(OUTPUT)gpio-hammer: $(GPIO_HAMMER_IN)
49*8674cea8SAndy Shevchenko	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
50*8674cea8SAndy Shevchenko
51*8674cea8SAndy Shevchenko#
52*8674cea8SAndy Shevchenko# gpio-event-mon
53*8674cea8SAndy Shevchenko#
54*8674cea8SAndy ShevchenkoGPIO_EVENT_MON_IN := $(OUTPUT)gpio-event-mon-in.o
55*8674cea8SAndy Shevchenko$(GPIO_EVENT_MON_IN): prepare FORCE
56*8674cea8SAndy Shevchenko	$(Q)$(MAKE) $(build)=gpio-event-mon
57*8674cea8SAndy Shevchenko$(OUTPUT)gpio-event-mon: $(GPIO_EVENT_MON_IN)
58*8674cea8SAndy Shevchenko	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
59*8674cea8SAndy Shevchenko
606d591c46SLinus Walleijclean:
61*8674cea8SAndy Shevchenko	rm -f $(ALL_PROGRAMS)
62*8674cea8SAndy Shevchenko	rm -f $(OUTPUT)include/linux/gpio.h
63*8674cea8SAndy Shevchenko	find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete
64*8674cea8SAndy Shevchenko
65*8674cea8SAndy ShevchenkoFORCE:
66*8674cea8SAndy Shevchenko
67*8674cea8SAndy Shevchenko.PHONY: all clean FORCE prepare
68