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.

352 lines
12 KiB

Massdrop keyboard support (#3780) * Massdrop SAMD51 Massdrop SAMD51 keyboards initial project upload * Removing relocated files Removing files that were relocated and not deleted from previous location * LED queue fix and cleaning Cleaned some white space or comments. Fix for LED I2C command queue. Cleaned up interrupts. Added debug function for printing numbers to scope through m15 line. * Factory programmed serial usage Ability to use factory programmed serial in hub and keyboard usb descriptors * USB serial number and bugfix Added support for factory programmed serial and usage. Incorporated bootloader's conditional compiling to align project closer. Fixed issue when USB device attempted to send before enabled. General white space and comment cleanup. * Project cleanup Cleaned up project in terms of white space, commented code, and unecessary files. NKRO keyboard is now using correct setreport although KBD was fine to use. Fixed broken linkage to __xprintf for serial debug statements. * Fix for extra keys Fixed possible USB hang on extra keys report set missing * I2C cleanup I2C cleanup and file renames necessary for master branch merge * Boot tracing and clocks cleanup Added optional boot debug trace mode through debug LED codes. General clock code cleanup. * Relocate ARM/Atmel headers Moved ARM/Atmel header folder from drivers to lib and made necessary makefile changes. * Pull request changes Pull request changes * Keymap and compile flag fix Keymap fix for momentary layer. Potential compile flag fix for Travis CI failure. * va_list include fix Fix for va_list compile failure * Include file case fixes Fixes for include files with incorrect case * ctrl and alt67 keyboard readme Added ctrl and alt67 keyboard readme files
5 years ago
Merge ChibiOS and LUFA descriptor support (#2362) * Move lufa descriptor to protocol/usb_descriptor * Try to compile usb_descriptor on ChibiOS * Add lufa_utils for ChibiOS Lufa USB descriptors for ChibiOS * More lufa_util compatibility fixes * First compiling version of shared USB descriptor * Send the usb descriptors * Fix the CONSOLE output on ChibiOS * Add errors for unsupported interfaces * Enable support for vitual serial port USB descriptors * Implement virtual serial port for ChibiOS * Cleanup the lufa_utils Use the default lufa header files * Add raw hid support for ChibiOS This is completely untested * Enable midi compilation on ChibiOS * Move midi functionality out of lufa.c * Don't register sysex callback when not needed * ChibiOS compilation fixes * Update ChibiOS submodule * Fix the Midi USB descriptor It didn't work properly when both Midi and Virtual serial port was enabled. * Add MIDI support for ChibiOS * Fix USB descriptor strings on ChibiOS * Use serial usb driver for raw hid * Generalize the ChibiOS stream like drivers This makes the initialization much more simple and eliminates a lot of the code duplication. * Convert console output to chibios stream driver * Fixes for ChibiOS update * Update the ChibiOS contrib submodule To include the usb data toggle synchronization fixes * Fix duplicate reset enumeration on ChibiOS * Add missing include * Add number of endpoints check for ChibiOS * Enable serial USB driver on all keyboards * Add missing includes when API is enabled withot midi * Add another missing inlcude
6 years ago
Massdrop keyboard support (#3780) * Massdrop SAMD51 Massdrop SAMD51 keyboards initial project upload * Removing relocated files Removing files that were relocated and not deleted from previous location * LED queue fix and cleaning Cleaned some white space or comments. Fix for LED I2C command queue. Cleaned up interrupts. Added debug function for printing numbers to scope through m15 line. * Factory programmed serial usage Ability to use factory programmed serial in hub and keyboard usb descriptors * USB serial number and bugfix Added support for factory programmed serial and usage. Incorporated bootloader's conditional compiling to align project closer. Fixed issue when USB device attempted to send before enabled. General white space and comment cleanup. * Project cleanup Cleaned up project in terms of white space, commented code, and unecessary files. NKRO keyboard is now using correct setreport although KBD was fine to use. Fixed broken linkage to __xprintf for serial debug statements. * Fix for extra keys Fixed possible USB hang on extra keys report set missing * I2C cleanup I2C cleanup and file renames necessary for master branch merge * Boot tracing and clocks cleanup Added optional boot debug trace mode through debug LED codes. General clock code cleanup. * Relocate ARM/Atmel headers Moved ARM/Atmel header folder from drivers to lib and made necessary makefile changes. * Pull request changes Pull request changes * Keymap and compile flag fix Keymap fix for momentary layer. Potential compile flag fix for Travis CI failure. * va_list include fix Fix for va_list compile failure * Include file case fixes Fixes for include files with incorrect case * ctrl and alt67 keyboard readme Added ctrl and alt67 keyboard readme files
5 years ago
Merge ChibiOS and LUFA descriptor support (#2362) * Move lufa descriptor to protocol/usb_descriptor * Try to compile usb_descriptor on ChibiOS * Add lufa_utils for ChibiOS Lufa USB descriptors for ChibiOS * More lufa_util compatibility fixes * First compiling version of shared USB descriptor * Send the usb descriptors * Fix the CONSOLE output on ChibiOS * Add errors for unsupported interfaces * Enable support for vitual serial port USB descriptors * Implement virtual serial port for ChibiOS * Cleanup the lufa_utils Use the default lufa header files * Add raw hid support for ChibiOS This is completely untested * Enable midi compilation on ChibiOS * Move midi functionality out of lufa.c * Don't register sysex callback when not needed * ChibiOS compilation fixes * Update ChibiOS submodule * Fix the Midi USB descriptor It didn't work properly when both Midi and Virtual serial port was enabled. * Add MIDI support for ChibiOS * Fix USB descriptor strings on ChibiOS * Use serial usb driver for raw hid * Generalize the ChibiOS stream like drivers This makes the initialization much more simple and eliminates a lot of the code duplication. * Convert console output to chibios stream driver * Fixes for ChibiOS update * Update the ChibiOS contrib submodule To include the usb data toggle synchronization fixes * Fix duplicate reset enumeration on ChibiOS * Add missing include * Add number of endpoints check for ChibiOS * Enable serial USB driver on all keyboards * Add missing includes when API is enabled withot midi * Add another missing inlcude
6 years ago
  1. # Determine what keyboard we are building and setup the build environment.
  2. #
  3. # We support folders up to 5 levels deep below `keyboards/`. This file is
  4. # responsible for determining which folder is being used and doing the
  5. # corresponding environment setup.
  6. ifndef VERBOSE
  7. .SILENT:
  8. endif
  9. .DEFAULT_GOAL := all
  10. include common.mk
  11. # Set the filename for the final firmware binary
  12. KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
  13. TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
  14. KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
  15. # Force expansion
  16. TARGET := $(TARGET)
  17. # For split boards we need to set a master half.
  18. MASTER ?= left
  19. ifdef master
  20. MASTER = $(master)
  21. endif
  22. ifeq ($(MASTER),right)
  23. OPT_DEFS += -DMASTER_IS_ON_RIGHT
  24. else
  25. ifneq ($(MASTER),left)
  26. $(error MASTER does not have a valid value(left/right))
  27. endif
  28. endif
  29. ifdef SKIP_VERSION
  30. OPT_DEFS += -DSKIP_VERSION
  31. endif
  32. # Determine which subfolders exist.
  33. KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
  34. KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
  35. KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2)))
  36. KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3)))
  37. KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4)))
  38. KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1))
  39. KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2))
  40. KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3))
  41. KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4))
  42. KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5))
  43. KEYBOARD_PATHS :=
  44. KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1)
  45. KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2)
  46. KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3)
  47. KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4)
  48. KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5)
  49. ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
  50. KEYBOARD_PATHS += $(KEYBOARD_PATH_5)
  51. endif
  52. ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
  53. KEYBOARD_PATHS += $(KEYBOARD_PATH_4)
  54. endif
  55. ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
  56. KEYBOARD_PATHS += $(KEYBOARD_PATH_3)
  57. endif
  58. ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
  59. KEYBOARD_PATHS += $(KEYBOARD_PATH_2)
  60. endif
  61. ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
  62. KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
  63. endif
  64. # Pull in rules.mk files from all our subfolders
  65. ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
  66. include $(KEYBOARD_PATH_5)/rules.mk
  67. endif
  68. ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
  69. include $(KEYBOARD_PATH_4)/rules.mk
  70. endif
  71. ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
  72. include $(KEYBOARD_PATH_3)/rules.mk
  73. endif
  74. ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","")
  75. include $(KEYBOARD_PATH_2)/rules.mk
  76. endif
  77. ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
  78. include $(KEYBOARD_PATH_1)/rules.mk
  79. endif
  80. # Find all the C source files to be compiled in subfolders.
  81. KEYBOARD_SRC :=
  82. KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c
  83. KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c
  84. KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c
  85. KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c
  86. KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c
  87. ifneq ("$(wildcard $(KEYBOARD_C_5))","")
  88. KEYBOARD_SRC += $(KEYBOARD_C_5)
  89. endif
  90. ifneq ("$(wildcard $(KEYBOARD_C_4))","")
  91. KEYBOARD_SRC += $(KEYBOARD_C_4)
  92. endif
  93. ifneq ("$(wildcard $(KEYBOARD_C_3))","")
  94. KEYBOARD_SRC += $(KEYBOARD_C_3)
  95. endif
  96. ifneq ("$(wildcard $(KEYBOARD_C_2))","")
  97. KEYBOARD_SRC += $(KEYBOARD_C_2)
  98. endif
  99. ifneq ("$(wildcard $(KEYBOARD_C_1))","")
  100. KEYBOARD_SRC += $(KEYBOARD_C_1)
  101. endif
  102. # Generate KEYBOARD_name_subname for all levels of the keyboard folder
  103. KEYBOARD_FILESAFE_1 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_1)))
  104. KEYBOARD_FILESAFE_2 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_2)))
  105. KEYBOARD_FILESAFE_3 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_3)))
  106. KEYBOARD_FILESAFE_4 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_4)))
  107. KEYBOARD_FILESAFE_5 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_5)))
  108. ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
  109. OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_5)
  110. endif
  111. ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
  112. OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_4)
  113. endif
  114. ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
  115. OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_3)
  116. endif
  117. ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
  118. OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_2)
  119. endif
  120. ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
  121. OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_1)
  122. endif
  123. # Setup the define for QMK_KEYBOARD_H. This is used inside of keymaps so
  124. # that the same keymap may be used on multiple keyboards.
  125. #
  126. # We grab the most top-level include file that we can. That file should
  127. # use #ifdef statements to include all the neccesary subfolder includes,
  128. # as described here:
  129. #
  130. # https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
  131. #
  132. ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
  133. QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
  134. endif
  135. ifneq ("$(wildcard $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).h)","")
  136. QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_2).h
  137. endif
  138. ifneq ("$(wildcard $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).h)","")
  139. QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_3).h
  140. endif
  141. ifneq ("$(wildcard $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).h)","")
  142. QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_4).h
  143. endif
  144. ifneq ("$(wildcard $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).h)","")
  145. QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h
  146. endif
  147. # Determine and set parameters based on the keyboard's processor family.
  148. # We can assume a ChibiOS target When MCU_FAMILY is defined since it's
  149. # not used for LUFA
  150. ifdef MCU_FAMILY
  151. FIRMWARE_FORMAT?=bin
  152. PLATFORM=CHIBIOS
  153. else ifdef ARM_ATSAM
  154. PLATFORM=ARM_ATSAM
  155. FIRMWARE_FORMAT=bin
  156. else
  157. PLATFORM=AVR
  158. FIRMWARE_FORMAT?=hex
  159. endif
  160. ifeq ($(PLATFORM),CHIBIOS)
  161. include $(TMK_PATH)/chibios.mk
  162. OPT_OS = chibios
  163. ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","")
  164. OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h
  165. else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","")
  166. OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h
  167. else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","")
  168. OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h
  169. else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","")
  170. OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h
  171. else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","")
  172. OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h
  173. else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","")
  174. OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h
  175. else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","")
  176. OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h
  177. else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","")
  178. OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h
  179. else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","")
  180. OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h
  181. else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","")
  182. OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h
  183. else ifneq ("$(wildcard $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h)","")
  184. OPT_DEFS += -include $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h
  185. endif
  186. endif
  187. # Find all of the config.h files and add them to our CONFIG_H define.
  188. CONFIG_H :=
  189. ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
  190. CONFIG_H += $(KEYBOARD_PATH_5)/config.h
  191. endif
  192. ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","")
  193. CONFIG_H += $(KEYBOARD_PATH_4)/config.h
  194. endif
  195. ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","")
  196. CONFIG_H += $(KEYBOARD_PATH_3)/config.h
  197. endif
  198. ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","")
  199. CONFIG_H += $(KEYBOARD_PATH_2)/config.h
  200. endif
  201. ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","")
  202. CONFIG_H += $(KEYBOARD_PATH_1)/config.h
  203. endif
  204. # Save the defines and includes here, so we don't include any keymap specific ones
  205. PROJECT_DEFS := $(OPT_DEFS)
  206. PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
  207. PROJECT_CONFIG := $(CONFIG_H)
  208. MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
  209. MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
  210. MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
  211. MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
  212. MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
  213. ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
  214. -include $(MAIN_KEYMAP_PATH_5)/rules.mk
  215. KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
  216. KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
  217. else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
  218. -include $(MAIN_KEYMAP_PATH_4)/rules.mk
  219. KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
  220. KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
  221. else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
  222. -include $(MAIN_KEYMAP_PATH_3)/rules.mk
  223. KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
  224. KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
  225. else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
  226. -include $(MAIN_KEYMAP_PATH_2)/rules.mk
  227. KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
  228. KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
  229. else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
  230. -include $(MAIN_KEYMAP_PATH_1)/rules.mk
  231. KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
  232. KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
  233. else ifneq ($(LAYOUTS),)
  234. include build_layout.mk
  235. else
  236. $(error Could not find keymap)
  237. # this state should never be reached
  238. endif
  239. # Userspace setup and definitions
  240. ifeq ("$(USER_NAME)","")
  241. USER_NAME := $(KEYMAP)
  242. endif
  243. USER_PATH := users/$(USER_NAME)
  244. -include $(USER_PATH)/rules.mk
  245. ifneq ("$(wildcard $(USER_PATH)/config.h)","")
  246. CONFIG_H += $(USER_PATH)/config.h
  247. endif
  248. # Object files directory
  249. # To put object files in current directory, use a dot (.), do NOT make
  250. # this an empty or blank macro!
  251. KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
  252. ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
  253. CONFIG_H += $(KEYMAP_PATH)/config.h
  254. endif
  255. # # project specific files
  256. SRC += $(patsubst %.c,%.clib,$(LIB_SRC))
  257. SRC += $(KEYBOARD_SRC) \
  258. $(KEYMAP_C) \
  259. $(QUANTUM_SRC)
  260. # Optimize size but this may cause error "relocation truncated to fit"
  261. #EXTRALDFLAGS = -Wl,--relax
  262. # Search Path
  263. VPATH += $(KEYMAP_PATH)
  264. VPATH += $(KEYBOARD_PATHS)
  265. VPATH += $(COMMON_VPATH)
  266. VPATH += $(USER_PATH)
  267. include common_features.mk
  268. include $(TMK_PATH)/protocol.mk
  269. include $(TMK_PATH)/common.mk
  270. include bootloader.mk
  271. SRC += $(patsubst %.c,%.clib,$(QUANTUM_LIB_SRC))
  272. SRC += $(TMK_COMMON_SRC)
  273. OPT_DEFS += $(TMK_COMMON_DEFS)
  274. EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
  275. ifeq ($(PLATFORM),AVR)
  276. ifeq ($(strip $(PROTOCOL)), VUSB)
  277. include $(TMK_PATH)/protocol/vusb.mk
  278. else
  279. include $(TMK_PATH)/protocol/lufa.mk
  280. endif
  281. include $(TMK_PATH)/avr.mk
  282. endif
  283. ifeq ($(PLATFORM),ARM_ATSAM)
  284. include $(TMK_PATH)/arm_atsam.mk
  285. include $(TMK_PATH)/protocol/arm_atsam.mk
  286. endif
  287. ifeq ($(PLATFORM),CHIBIOS)
  288. include $(TMK_PATH)/protocol/chibios.mk
  289. endif
  290. ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
  291. VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
  292. VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
  293. include $(VISUALIZER_PATH)/visualizer.mk
  294. endif
  295. ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H)
  296. OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
  297. $(KEYMAP_OUTPUT)_SRC := $(SRC)
  298. $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
  299. -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \
  300. -DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
  301. -DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
  302. $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
  303. $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
  304. $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
  305. $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
  306. $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
  307. $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
  308. # Default target.
  309. all: build check-size
  310. build: elf cpfirmware
  311. include $(TMK_PATH)/rules.mk