xref: /linux/tools/gpio/Makefile (revision 52336337f1a01ad803c7f3ddb23f40222e9ad58d)
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