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