SYSCONFDIR = /etc
LIBEXECDIR = /lib/udev
SYSINCLUDE = /usr/include

.PHONY: all clean

all: keymap

keys.txt: $(SYSINCLUDE)/linux/input.h
	awk '/^#define.*KEY_[^ ]+[ \t]+[0-9]/ { if ($$2 != "KEY_MAX") { print $$2 } }' < $< | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@

keys-from-name.gperf: keys.txt
	awk 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print $$1 ", " $$1 }' < $< > $@

keys-from-name.h: keys-from-name.gperf
	gperf -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C < $< > $@

keys-to-name.h: keys.txt
	awk 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@

keymap: keys-to-name.h keys-from-name.h keymap.c
	gcc -o keymap keymap.c -DSYSCONFDIR=\"$(SYSCONFDIR)\" -DPKGLIBEXECDIR=\"$(LIBEXECDIR)\"
	sed 's|@udevlibexecdir@|$(LIBEXECDIR)|'  keyboard-force-release.sh.in >  keyboard-force-release.sh

clean:
	rm -f keys* keymap keyboard-force-release.sh