Makefile 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
  2. ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
  3. ABS_STARTING_MAKEFILE := $(abspath $(STARTING_MAKEFILE))
  4. ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE))
  5. ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE))
  6. ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))
  7. STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR))
  8. PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
  9. define NEXT_PATH_ELEMENT
  10. $$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS)))
  11. $$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS)))
  12. endef
  13. $(eval $(call NEXT_PATH_ELEMENT))
  14. ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
  15. $(eval $(call NEXT_PATH_ELEMENT))
  16. KEYBOARD := $(CURRENT_PATH_ELEMENT)
  17. $(eval $(call NEXT_PATH_ELEMENT))
  18. ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
  19. $(eval $(call NEXT_PATH_ELEMENT))
  20. KEYMAP := $(CURRENT_PATH_ELEMENT)
  21. else ifneq ($(CURRENT_PATH_ELEMENT),)
  22. SUBPROJECT := $(CURRENT_PATH_ELEMENT)
  23. $(eval $(call NEXT_PATH_ELEMENT))
  24. ifeq ($(CURRENT_PATH_ELEMENT),keymaps)
  25. $(eval $(call NEXT_PATH_ELEMENT))
  26. KEYMAP := $(CURRENT_PATH_ELEMENT)
  27. endif
  28. endif
  29. endif
  30. $(info Keyboard: $(KEYBOARD))
  31. $(info Keymap: $(KEYMAP))
  32. $(info Subproject: $(SUBPROJECT))
  33. all:
  34. echo "Compiling"