Makefile 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. ifndef VERBOSE
  2. .SILENT:
  3. endif
  4. starting_makefile := $(abspath $(firstword $(MAKEFILE_LIST)))
  5. mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
  6. abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path)))
  7. ifneq (,$(findstring /keyboard/,$(starting_makefile)))
  8. possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(abs_tmk_root)/keyboard/%,%,$(starting_makefile))))
  9. ifneq (,$(findstring /keymaps/,$(possible_keyboard)))
  10. KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard)))
  11. KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard)))
  12. tmk_root = ../../../..
  13. else
  14. KEYBOARD_DIR:=$(possible_keyboard)
  15. KEYMAP_DIR:=default
  16. tmk_root = ../..
  17. endif
  18. else
  19. tmk_root = .
  20. endif
  21. # $(info $(KEYBOARD_DIR))
  22. # $(info $(KEYMAP_DIR))
  23. # Directory common source filess exist
  24. TOP_DIR = $(tmk_root)
  25. TMK_DIR = tmk_core
  26. TMK_PATH = $(TOP_DIR)/$(TMK_DIR)
  27. QUANTUM_DIR = quantum
  28. QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR)
  29. ifdef keyboard
  30. KEYBOARD ?= $(keyboard)
  31. endif
  32. ifdef KEYBOARD_DIR
  33. KEYBOARD ?= $(KEYBOARD_DIR)
  34. endif
  35. ifndef KEYBOARD
  36. KEYBOARD=planck
  37. endif
  38. KEYBOARD_PATH = $(TOP_DIR)/keyboard/$(KEYBOARD)
  39. ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","")
  40. KEYBOARD_FILE = keyboard/$(KEYBOARD)/$(KEYBOARD).c
  41. ifndef ARCH
  42. include $(KEYBOARD_PATH)/Makefile
  43. endif
  44. else
  45. $(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist)
  46. endif
  47. ifdef keymap
  48. KEYMAP ?= $(keymap)
  49. endif
  50. ifdef KEYMAP_DIR
  51. KEYMAP ?= $(KEYMAP_DIR)
  52. endif
  53. ifndef KEYMAP
  54. KEYMAP = default
  55. endif
  56. KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
  57. ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","")
  58. KEYMAP_FILE = keyboard/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c
  59. -include $(KEYMAP_PATH)/Makefile
  60. else
  61. $(error "$(KEYMAP_PATH)/keymap.c" does not exist)
  62. endif
  63. TARGET = $(KEYBOARD)_$(KEYMAP)
  64. ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
  65. CONFIG_H = $(KEYMAP_PATH)/config.h
  66. else
  67. CONFIG_H = $(KEYBOARD_PATH)/config.h
  68. endif
  69. # # project specific files
  70. SRC += $(KEYBOARD_FILE) \
  71. $(KEYMAP_FILE) \
  72. $(QUANTUM_DIR)/quantum.c \
  73. $(QUANTUM_DIR)/keymap_common.c \
  74. $(QUANTUM_DIR)/led.c
  75. ifndef CUSTOM_MATRIX
  76. SRC += $(QUANTUM_DIR)/matrix.c
  77. endif
  78. ifeq ($(strip $(AUDIO_ENABLE)), yes)
  79. SRC += $(QUANTUM_DIR)/audio/audio.c
  80. SRC += $(QUANTUM_DIR)/audio/voices.c
  81. SRC += $(QUANTUM_DIR)/audio/luts.c
  82. endif
  83. ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
  84. SRC += $(QUANTUM_DIR)/light_ws2812.c
  85. SRC += $(QUANTUM_DIR)/rgblight.c
  86. OPT_DEFS += -DRGBLIGHT_ENABLE
  87. endif
  88. # Optimize size but this may cause error "relocation truncated to fit"
  89. #EXTRALDFLAGS = -Wl,--relax
  90. # Search Path
  91. VPATH += $(KEYMAP_PATH)
  92. VPATH += $(KEYBOARD_PATH)
  93. VPATH += $(TOP_DIR)
  94. VPATH += $(TMK_PATH)
  95. VPATH += $(QUANTUM_PATH)
  96. VPATH += $(QUANTUM_PATH)/keymap_extras
  97. VPATH += $(QUANTUM_PATH)/audio
  98. include $(TMK_PATH)/protocol/lufa.mk
  99. include $(TMK_PATH)/common.mk
  100. include $(TMK_PATH)/rules.mk