MAJOR=4
MINOR=14
DEVNAME=tty14
  	   #ˆÈÌ0ÂÊ     %ˆÍÌƒN¿ÂÊ 	¯    %# SPDX-License-Identifier: GPL-2.0
include ../scripts/Makefile.include

bindir ?= /usr/bin

# This will work when gpio is built in tools env. where srctree
# isn't set and when invoked from selftests build, where srctree
# is set to ".". building_out_of_srctree is undefined for in srctree
# builds
ifndef building_out_of_srctree
srctree := $(patsubst %/,%,$(dir $(CURDIR)))
srctree := $(patsubst %/,%,$(dir $(srctree)))
endif

# Do not use make's built-in rules
# (this improves performance and avoids hard-to-debug behaviour);
MAKEFLAGS += -r

override CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include

ALL_TARGETS := lsgpio gpio-hammer gpio-event-mon gpio-watch
ALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS))

all: $(ALL_PROGRAMS)

export srctree OUTPUT CC LD CFLAGS
include $(srctree)/tools/build/Makefile.include

#
# We need the following to be outside of kernel tree
#
$(OUTPUT)include/linux/gpio.h: ../../include/uapi/linux/gpio.h
	mkdir -p $(OUTPUT)include/linux 2>&1 || true
	ln -sf $(CURDIR)/../../include/uapi/linux/gpio.h $@

prepare: $(OUTPUT)include/linux/gpio.h

GPIO_UTILS_IN := $(OUTPUT)gpio-utils-in.o
$(GPIO_UTILS_IN): prepare FORCE
	$(Q)$(MAKE) $(build)=gpio-utils

#
# lsgpio
#
LSGPIO_IN := $(OUTPUT)lsgpio-in.o
$(LSGPIO_IN): prepare FORCE $(OUTPUT)gpio-utils-in.o
	$(Q)$(MAKE) $(build)=lsgpio
$(OUTPUT)lsgpio: $(LSGPIO_IN)
	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@

#
# gpio-hammer
#
GPIO_HAMMER_IN := $(OUTPUT)gpio-hammer-in.o
$(GPIO_HAMMER_IN): prepare FORCE $(OUTPUT)gpio-utils-in.o
	$(Q)$(MAKE) $(build)=gpio-hammer
$(OUTPUT)gpio-hammer: $(GPIO_HAMMER_IN)
	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@

#
# gpio-event-mon
#
GPIO_EVENT_MON_IN := $(OUTPUT)gpio-event-mon-in.o
$(GPIO_EVENT_MON_IN): prepare FORCE $(OUTPUT)gpio-utils-in.o
	$(Q)$(MAKE) $(build)=gpio-event-mon
$(OUTPUT)gpio-event-mon: $(GPIO_EVENT_MON_IN)
	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@

#
# gpio-watch
#
GPIO_WATCH_IN := $(OUTPUT)gpio-watch-in.o
$(GPIO_WATCH_IN): prepare FORCE
	$(Q)$(MAKE) $(build)=gpio-watch
$(OUTPUT)gpio-watch: $(GPIO_WATCH_IN)
	$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@

clean:
	rm -f $(ALL_PROGRAMS)
	rm -f $(OUTPUT)include/linux/gpio.h
	find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete

install: $(ALL_PROGRAMS)
	install -d -m 755 $(DESTDIR)$(bindir);		\
	for program in $(ALL_PROGRAMS); do		\
		install $$program $(DESTDIR)$(bindir);	\
	done

FORCE:

.PHONY: all install clean FORCE prepare
  "   'ˆl–Ðz¾””ÔD¨ 	ÅÕÁ?q·Å£Íƒh¹ÃË      'PRODUCT=11/2/13/6
NAME="VirtualPS/2 VMware VMMouse"
PHYS="isa0060/serio1/input1"
PROP=0
EV=b
KEY=70000 0 0 0 0
ABS=3
MODALIAS=input:b0011v0002p0013e0006-e0,1,3,k110,111,112,ra0,1,mlsfw
  1   )ˆl–Ãa¾”ja,j
€nãb¸TÅ£Îƒ�s_�uÐb&=LyZof¯ÅÍ ü    )‹     �VoÛ6ý_Ÿâ �\Äª“ÈÐ.œTm¤¶a«Ý0h‰²¸Ò¤@RIÓO¿#õÃ’­„<Ýß=¾#Æ·p7»¾™.á-ø“‹Éxr>ž\úàãïåwX*¹Sd¿§êWŸ‰(	÷½p}óéçÈKH±I8%êÚá&ãdWÏå¾ Š6“âiC¿›ÎŒ	œÝ»,™¢µ_¦ä~#È¾;5mÜŽšM–vÆŒÓ&‡›·‹ÛYÁ:®…’I5Ó�$ú(‰î%Ñý8ö£Fed"N*€íÂiYÀýØÉ–qfž %†€ÜþG{"XQrb˜ŽÕõ¿óÅr=[{¡È¼ð~a"áeJáý¤ß²„ùŸ^¨t™��4è"ð�¥€Ñûgü\‘GÎ~M9~qV; ôÞÈQmm/i4†íQ°¶nLOÁƒd)¼öÇ=LM˜vÐ+©òí
*H¤ÐúY‡X°ŠkÇýØ¤Ï¸Õr¬'9Q6Âš´„—àë!Ö[)¥Ú–Ù³1•Þ‹÷#}ÉE|”¸ &¦ú¦W†ÐäÌpV…ÂñÏ€V:ê�R‹®Ž”mž
ª�¨OÃ^
ðÏ­‚ÿåœ8b£ºT¬>b²¯4=È’~‘×­6)Óül»�AQ¼H}…çD{zpê¨ù?Fæh{þÔè6­¾àZñÓ9ƒS1=ë_5FwG:­�Õq*v'rþI¥ô<ñH®o¼oðÈL÷Ùì~Ìñã}¶½0cîpþ­oV³e<[Ì½8§šBVŠÄžÝ¥úR éõÚC!§<Å=u.LìÐ*ÙÑÐ›zá¬R�—KžjtÊ¤Ú»Û ÈV–LN	µ.@I’ƒÌÜ7“ã)¸‹úÌ[RµgÆP¼yf"§Š²µ÷)DY†÷{ÀU#ÞÉ,hÌ€—Ñlq9{;@�2mÃ1ÙdR9�€ŠÚv>BZ–Ëa…]&9—�¶fwé¹&ç…ñÎoj¯Õá±”
Ã2[c—C”@‰x‰Æ]\>U67·‹¿çÚ4MŽªƒº)¤ }Š¬fÖZ&7%­@vWòÒ»ÏÀK‰ºÛ‹´#_	G­¹:4–¬Ð‘iW,àÙâŽ>~ŒnâÙ×È5µ3Íæ·ÑjO¯ï"OªÖs­>Ïâ8ú0På ]B1–g„JðxR†%ø¬P]´6ÜÕxæ"ªÁùˆáçËº¹‹¦+&£në(†ÀiÛÆ_Eñ—Õ¾Nï¾D¾•(jJ%j˜uGU„sä´ 	–•€‘&){`)>;[•!^Ž"½…€Œ0^âÓrD•ÒÃlVª¤Àc­Pv¯ùS�ãf1ÿ¸@jçŸ ^ø'ÚÅªP PPåV¶Iy°\¬gÿ„çpš™¢ëÓÐÕsz?]õ†Æƒ�
m�ïCý7£³ÖÜ¾6zÖú4u6ìæC’ê†ö–éåbÛ¯¿|ZûÞWÑ–îB*ƒïl�F\z¹1…~÷æZ0ÎIø�*Ay(ÕÎÚ8Ó&Lvì/»v�0WœmqÕWöË†¥Wç“ß.//Þ¾B¢Ó21W±”\¿RTK^Z
®ÆãqkE0½[/ü~ù¼íÙ<ûÖöÍÔ7