2
0
Просмотр исходного кода

adds autocomplete for keyboard, subproject, keymap for make

Jack Humbert 8 лет назад
Родитель
Сommit
0bb049b926
1 измененных файлов с 46 добавлено и 0 удалено
  1. 46 0
      Makefile

+ 46 - 0
Makefile

@@ -21,8 +21,10 @@ override SILENT := false
 
 QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null)
 ifneq ($(QMK_VERSION),)
+ifeq ($(NO_VERSION),)
 $(info QMK Firmware v$(QMK_VERSION))
 endif
+endif
 
 ON_ERROR := error_occurred=1
 
@@ -564,6 +566,50 @@ git-submodule:
 	git submodule sync --recursive
 	git submodule update --init --recursive
 
+define PRINT_OPTION
+    ifeq ($$(SUBPROJECT_OPTION),)
+        ALL_OPTIONS += $$(KEYBOARD_OPTION)-$$(KEYMAP_OPTION)
+    else
+        ALL_OPTIONS += $$(KEYBOARD_OPTION)-$$(SUBPROJECT_OPTION)-$$(KEYMAP_OPTION)
+    endif
+endef
+
+define ALL_KEYMAPS
+    KEYMAPS_OPTION := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_OPTION)/keymaps/*/.)))
+    LAYOUTS :=
+    $$(eval -include $(ROOT_DIR)/keyboards/$$(KEYBOARD_OPTION)/rules.mk)
+    KEYBOARD_LAYOUTS := $$(LAYOUTS)
+    ifneq ($$(SUBPROJECT_OPTION),)
+        SP_KEYMAPS_OPTION := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_OPTION)/$$(SUBPROJECT_OPTION)/keymaps/*/.)))
+        KEYMAPS_OPTION := $$(sort $$(KEYMAPS_OPTION) $$(SP_KEYMAPS_OPTION))
+    endif
+
+    LAYOUT_KEYMAPS_OPTION :=
+    $$(foreach LAYOUT_OPTION,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS_OPTION += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT_OPTION)/*/.)))))
+    
+    KEYMAPS_OPTION := $$(sort $$(KEYMAPS_OPTION) $$(LAYOUT_KEYMAPS_OPTION))
+
+    $$(foreach KEYMAP_OPTION, $$(KEYMAPS_OPTION), $$(eval $$(call PRINT_OPTION)))
+endef
+
+define ALL_SUBPROJECTS
+    SUBPROJECTS_OPTION := $$(notdir $$(patsubst %/rules.mk,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_OPTION)/*/rules.mk)))
+    $$(eval $$(call ALL_KEYMAPS))
+    ifneq ($$(SUBPROJECT_OPTION),)
+        $$(foreach SUBPROJECT_OPTION, $$(SUBPROJECTS_OPTION), $$(eval $$(call ALL_KEYMAPS)))
+    endif
+endef
+
+define ALL_KEYBOARDS
+    $$(foreach KEYBOARD_OPTION,$$(KEYBOARDS), $$(eval $$(call ALL_SUBPROJECTS)))
+endef
+
+ALL_OPTIONS :=
+$(eval $(call ALL_KEYBOARDS))
+
+autocomplete:   
+	echo $(ALL_OPTIONS)
+
 ifdef SKIP_VERSION
 SKIP_GIT := yes
 endif