# Custom systemd Makefile include that builds/installs keymap tool only for LFS

# vim: tabstop=3

KEYMAPS     = $(shell ls keymaps/*               | sort)
KEYMAPS_FR  = $(shell ls keymaps-force-release/* | sort)

KEYMAP_DEPS = common src/udev/keymap/keys-from-name.h src/udev/keymap/keys-to-name.h

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

src/udev/keymap/keys-from-name.gperf: src/udev/keymap/keys.txt
	@echo GEN $@
	$(VB)awk 'BEGIN                       \
   {                                    \
     print "struct key                  \
     {                                  \
       const char* name;                \
       unsigned short id;               \
     };";                               \
                                        \
     print "%null-strings"; print "%%"; \
   }                                    \
   {                                    \
     print $$1 ", " $$1                 \
   }' $< > $@

src/udev/keymap/keys-from-name.h: src/udev/keymap/keys-from-name.gperf
	@echo GEN $@
	$(VB)gperf -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C $< > $@

src/udev/keymap/keys-to-name.h: src/udev/keymap/keys.txt 
	@echo GEN $@
	$(VB)awk 'BEGIN                                     \
   {                                                   \
     print "const char* const key_names[KEY_CNT] = { " \
   }                                                   \
   {                                                   \
     print "[" $$1 "] = \"" $$1 "\","                  \
   }                                                   \
   END{print "};"                                      \
   }' $< > $@

keymap:
	@echo "keymap is now built into udevadm/udevd"

install-keymap:
	@echo "keymap is now built into udevadm/udevd"
