1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 28674cea8SAndy Shevchenkoinclude ../scripts/Makefile.include 38674cea8SAndy Shevchenko 453499109SAndy Shevchenkobindir ?= /usr/bin 553499109SAndy Shevchenko 64a6a6f5cSShuah Khan# This will work when gpio is built in tools env. where srctree 74a6a6f5cSShuah Khan# isn't set and when invoked from selftests build, where srctree 84a6a6f5cSShuah Khan# is set to ".". building_out_of_srctree is undefined for in srctree 94a6a6f5cSShuah Khan# builds 10*52336337SSasha Levinifeq ($(srctree),) 11*52336337SSasha Levinupdate_srctree := 1 12*52336337SSasha Levinendif 134a6a6f5cSShuah Khanifndef building_out_of_srctree 14*52336337SSasha Levinupdate_srctree := 1 15*52336337SSasha Levinendif 16*52336337SSasha Levinifeq ($(update_srctree),1) 17e19b7ceeSUwe Kleine-Königsrctree := $(patsubst %/,%,$(dir $(CURDIR))) 188674cea8SAndy Shevchenkosrctree := $(patsubst %/,%,$(dir $(srctree))) 198674cea8SAndy Shevchenkoendif 208674cea8SAndy Shevchenko 218674cea8SAndy Shevchenko# Do not use make's built-in rules 228674cea8SAndy Shevchenko# (this improves performance and avoids hard-to-debug behaviour); 238674cea8SAndy ShevchenkoMAKEFLAGS += -r 248674cea8SAndy Shevchenko 254ccc98a4SJiri Olsaoverride CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include 266d591c46SLinus Walleij 2733f0c47bSBartosz GolaszewskiALL_TARGETS := lsgpio gpio-hammer gpio-event-mon gpio-watch 288674cea8SAndy ShevchenkoALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS)) 296d591c46SLinus Walleij 308674cea8SAndy Shevchenkoall: $(ALL_PROGRAMS) 316d591c46SLinus Walleij 328674cea8SAndy Shevchenkoexport srctree OUTPUT CC LD CFLAGS 338674cea8SAndy Shevchenkoinclude $(srctree)/tools/build/Makefile.include 346d591c46SLinus Walleij 358674cea8SAndy Shevchenko# 368674cea8SAndy Shevchenko# We need the following to be outside of kernel tree 378674cea8SAndy Shevchenko# 388674cea8SAndy Shevchenko$(OUTPUT)include/linux/gpio.h: ../../include/uapi/linux/gpio.h 398674cea8SAndy Shevchenko mkdir -p $(OUTPUT)include/linux 2>&1 || true 408674cea8SAndy Shevchenko ln -sf $(CURDIR)/../../include/uapi/linux/gpio.h $@ 418674cea8SAndy Shevchenko 428674cea8SAndy Shevchenkoprepare: $(OUTPUT)include/linux/gpio.h 438674cea8SAndy Shevchenko 4482f04bfeSAnssi HannulaGPIO_UTILS_IN := $(OUTPUT)gpio-utils-in.o 450161a94eSLaura Abbott$(GPIO_UTILS_IN): prepare FORCE 460161a94eSLaura Abbott $(Q)$(MAKE) $(build)=gpio-utils 470161a94eSLaura Abbott 488674cea8SAndy Shevchenko# 498674cea8SAndy Shevchenko# lsgpio 508674cea8SAndy Shevchenko# 518674cea8SAndy ShevchenkoLSGPIO_IN := $(OUTPUT)lsgpio-in.o 520161a94eSLaura Abbott$(LSGPIO_IN): prepare FORCE $(OUTPUT)gpio-utils-in.o 538674cea8SAndy Shevchenko $(Q)$(MAKE) $(build)=lsgpio 548674cea8SAndy Shevchenko$(OUTPUT)lsgpio: $(LSGPIO_IN) 558674cea8SAndy Shevchenko $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@ 568674cea8SAndy Shevchenko 578674cea8SAndy Shevchenko# 588674cea8SAndy Shevchenko# gpio-hammer 598674cea8SAndy Shevchenko# 608674cea8SAndy ShevchenkoGPIO_HAMMER_IN := $(OUTPUT)gpio-hammer-in.o 610161a94eSLaura Abbott$(GPIO_HAMMER_IN): prepare FORCE $(OUTPUT)gpio-utils-in.o 628674cea8SAndy Shevchenko $(Q)$(MAKE) $(build)=gpio-hammer 638674cea8SAndy Shevchenko$(OUTPUT)gpio-hammer: $(GPIO_HAMMER_IN) 648674cea8SAndy Shevchenko $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@ 658674cea8SAndy Shevchenko 668674cea8SAndy Shevchenko# 678674cea8SAndy Shevchenko# gpio-event-mon 688674cea8SAndy Shevchenko# 698674cea8SAndy ShevchenkoGPIO_EVENT_MON_IN := $(OUTPUT)gpio-event-mon-in.o 700161a94eSLaura Abbott$(GPIO_EVENT_MON_IN): prepare FORCE $(OUTPUT)gpio-utils-in.o 718674cea8SAndy Shevchenko $(Q)$(MAKE) $(build)=gpio-event-mon 728674cea8SAndy Shevchenko$(OUTPUT)gpio-event-mon: $(GPIO_EVENT_MON_IN) 738674cea8SAndy Shevchenko $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@ 748674cea8SAndy Shevchenko 7533f0c47bSBartosz Golaszewski# 7633f0c47bSBartosz Golaszewski# gpio-watch 7733f0c47bSBartosz Golaszewski# 7833f0c47bSBartosz GolaszewskiGPIO_WATCH_IN := $(OUTPUT)gpio-watch-in.o 7933f0c47bSBartosz Golaszewski$(GPIO_WATCH_IN): prepare FORCE 8033f0c47bSBartosz Golaszewski $(Q)$(MAKE) $(build)=gpio-watch 8133f0c47bSBartosz Golaszewski$(OUTPUT)gpio-watch: $(GPIO_WATCH_IN) 8233f0c47bSBartosz Golaszewski $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@ 8333f0c47bSBartosz Golaszewski 846d591c46SLinus Walleijclean: 858674cea8SAndy Shevchenko rm -f $(ALL_PROGRAMS) 86ed42d80fSzhang jiao rm -rf $(OUTPUT)include 87931a36c4Szhangjiao find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete -o -name '\.*.cmd' -delete 888674cea8SAndy Shevchenko 8953499109SAndy Shevchenkoinstall: $(ALL_PROGRAMS) 9053499109SAndy Shevchenko install -d -m 755 $(DESTDIR)$(bindir); \ 9153499109SAndy Shevchenko for program in $(ALL_PROGRAMS); do \ 9253499109SAndy Shevchenko install $$program $(DESTDIR)$(bindir); \ 9353499109SAndy Shevchenko done 9453499109SAndy Shevchenko 958674cea8SAndy ShevchenkoFORCE: 968674cea8SAndy Shevchenko 9753499109SAndy Shevchenko.PHONY: all install clean FORCE prepare 98