You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.3 KiB

  1. LAYOUTS_PATH := layouts
  2. LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
  3. define SEARCH_LAYOUTS_REPO
  4. LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)
  5. LAYOUT_KEYMAP_JSON := $$(LAYOUT_KEYMAP_PATH)/keymap.json
  6. LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
  7. ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_JSON))","")
  8. -include $$(LAYOUT_KEYMAP_PATH)/rules.mk
  9. KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
  10. KEYMAP_JSON := $$(LAYOUT_KEYMAP_JSON)
  11. KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
  12. else ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
  13. -include $$(LAYOUT_KEYMAP_PATH)/rules.mk
  14. KEYMAP_C := $$(LAYOUT_KEYMAP_C)
  15. KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
  16. endif
  17. endef
  18. define SEARCH_LAYOUTS
  19. $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
  20. endef
  21. ifneq ($(FORCE_LAYOUT),)
  22. ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
  23. $(info Forcing layout: $(FORCE_LAYOUT))
  24. LAYOUTS := $(FORCE_LAYOUT)
  25. else
  26. $(error Forced layout does not exist)
  27. endif
  28. endif
  29. $(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
  30. # Use rule from build_json.mk, but update prerequisite in case KEYMAP_JSON was updated
  31. $(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)