makefile-incl.keymap 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # Custom systemd Makefile include that builds/installs keymap tool only for LFS
  2. # vim: tabstop=3
  3. KEYMAPS = $(shell ls keymaps/* | sort)
  4. KEYMAPS_FR = $(shell ls keymaps-force-release/* | sort)
  5. KEYMAP_DEPS = common src/udev/keymap/keys-from-name.h src/udev/keymap/keys-to-name.h
  6. src/udev/keymap/keys.txt:
  7. @echo GEN $@
  8. $(VB)awk '/^#define.*KEY_[^ ]+[ \t]+[0-9]/ \
  9. { \
  10. if ($$2 != "KEY_MAX") { print $$2 } \
  11. }' \
  12. /usr/include/linux/input.h | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@
  13. src/udev/keymap/keys-from-name.gperf: src/udev/keymap/keys.txt
  14. @echo GEN $@
  15. $(VB)awk 'BEGIN \
  16. { \
  17. print "struct key \
  18. { \
  19. const char* name; \
  20. unsigned short id; \
  21. };"; \
  22. \
  23. print "%null-strings"; print "%%"; \
  24. } \
  25. { \
  26. print $$1 ", " $$1 \
  27. }' $< > $@
  28. src/udev/keymap/keys-from-name.h: src/udev/keymap/keys-from-name.gperf
  29. @echo GEN $@
  30. $(VB)gperf -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C $< > $@
  31. src/udev/keymap/keys-to-name.h: src/udev/keymap/keys.txt
  32. @echo GEN $@
  33. $(VB)awk 'BEGIN \
  34. { \
  35. print "const char* const key_names[KEY_CNT] = { " \
  36. } \
  37. { \
  38. print "[" $$1 "] = \"" $$1 "\"," \
  39. } \
  40. END{print "};" \
  41. }' $< > $@
  42. build/keymap: src/udev/keymap/keymap.c build/$(COMMON_LIB) $(KEYMAP_DEPS)
  43. @echo LINK $@
  44. $(VB)gcc $< -o $@ -I src/udev/keymap $(WARN) $(OPTIONS2) $(INCLUDE) $(DEF) \
  45. build/$(COMMON_LIB) $(LDFLAGS)
  46. $(VB)strip --strip-unneeded $@
  47. keymap: build/keymap
  48. install-keymap: keymap
  49. @mkdir -pv $(DESTDIR)/lib/udev/keymaps/force-release \
  50. $(DESTDIR)/lib/udev/rules.d \
  51. $(DESTDIR)/usr/share/doc/udev
  52. @cp -v build/keymap $(DESTDIR)/lib/udev
  53. @cp -v $(KEYMAPS) $(DESTDIR)/lib/udev/keymaps
  54. @cp -v $(KEYMAPS_FR) $(DESTDIR)/lib/udev/keymaps/force-release
  55. @cp -v src/udev/keymap/*.rules $(DESTDIR)/lib/udev/rules.d
  56. @cp -v src/udev/keymap/findkeyboards $(DESTDIR)/lib/udev
  57. @cp -v src/udev/keymap/*.txt $(DESTDIR)/usr/share/doc/udev
  58. @sed -e 's|@udevlibexecdir@|/lib/udev|g' \
  59. src/udev/keymap/keyboard-force-release.sh.in \
  60. > $(DESTDIR)/lib/udev/keyboard-force-release.sh
  61. @chmod 0755 $(DESTDIR)/lib/udev/keyboard-force-release.sh
  62. clean-keymap:
  63. rm -f src/udev/keymap/keys.txt
  64. rm -f src/udev/keymap/keys-from-name.gperf
  65. rm -f src/udev/keymap/keys-from-name.h
  66. rm -f src/udev/keymap/keys-to-name.h
  67. rm -f build/keymap
  68. .PHONY: clean-keymap