locate_keymap.mk 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
  2. MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
  3. MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
  4. MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
  5. MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
  6. POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_1)
  7. POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_2)
  8. POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_3)
  9. POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_4)
  10. POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_5)
  11. ifneq ($(QMK_USERSPACE),)
  12. POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)
  13. POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)
  14. POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)
  15. POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)
  16. POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)
  17. endif
  18. define SEARCH_POTENTIAL_LOCATION
  19. POTENTIAL_DIR := $1
  20. ifeq ("$$(wildcard $$(KEYMAP_PATH))", "")
  21. POTENTIAL_KEYMAP_JSON := $$(POTENTIAL_DIR)/keymap.json
  22. POTENTIAL_KEYMAP_C := $$(POTENTIAL_DIR)/keymap.c
  23. ifneq ("$$(wildcard $$(POTENTIAL_KEYMAP_JSON))","")
  24. KEYMAP_JSON := $$(POTENTIAL_KEYMAP_JSON)
  25. KEYMAP_PATH := $$(POTENTIAL_DIR)
  26. endif
  27. ifneq ("$$(wildcard $$(POTENTIAL_KEYMAP_C))","")
  28. KEYMAP_C := $$(POTENTIAL_KEYMAP_C)
  29. KEYMAP_PATH := $$(POTENTIAL_DIR)
  30. endif
  31. endif
  32. endef
  33. $(foreach KM_DIR,$(POTENTIAL_KEYMAP_PATHS),$(eval $(call SEARCH_POTENTIAL_LOCATION, $(KM_DIR))))
  34. LAYOUTS_PATH := layouts
  35. LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
  36. ifneq ($(QMK_USERSPACE),)
  37. LAYOUTS_REPOS += $(patsubst %/,%,$(QMK_USERSPACE)/$(LAYOUTS_PATH))
  38. endif
  39. define SEARCH_LAYOUTS
  40. $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_POTENTIAL_LOCATION,$$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP))))
  41. endef
  42. ifneq ($(FORCE_LAYOUT),)
  43. ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
  44. $(info Forcing layout: $(FORCE_LAYOUT))
  45. LAYOUTS := $(FORCE_LAYOUT)
  46. else
  47. $(call CATASTROPHIC_ERROR,Invalid layout,Forced layout does not exist)
  48. endif
  49. endif
  50. $(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
  51. ifeq ("$$(wildcard $$(KEYMAP_PATH))", "")
  52. $(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap)
  53. # this state should never be reached
  54. endif