]> git.donarmstrong.com Git - qmk_firmware.git/blob - build_keyboard.mk
Remove unneded code from tmk_core/rules.mk
[qmk_firmware.git] / build_keyboard.mk
1 ifndef VERBOSE
2 .SILENT:
3 endif
4
5 .DEFAULT_GOAL := all
6
7 include message.mk
8
9
10 # Directory common source filess exist
11 TOP_DIR = .
12 TMK_DIR = tmk_core
13 TMK_PATH = $(TOP_DIR)/$(TMK_DIR)
14 LIB_PATH = $(TOP_DIR)/lib
15
16 QUANTUM_DIR = quantum
17 QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR)
18
19
20 MASTER ?= left
21 ifdef master
22         MASTER = $(master)
23 endif
24
25 KEYBOARD_PATH := keyboards/$(KEYBOARD)
26 KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
27
28 ifneq ("$(wildcard $(KEYBOARD_C))","")
29     include $(KEYBOARD_PATH)/rules.mk
30 else 
31     $(error "$(KEYBOARD_C)" does not exist)
32 endif
33
34
35 ifneq ($(SUBPROJECT),)
36     SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
37     SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c
38     ifneq ("$(wildcard $(SUBPROJECT_C))","")
39         OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
40         include $(SUBPROJECT_PATH)/rules.mk
41     else 
42         $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
43     endif
44 endif
45
46 MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
47 MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c
48 SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)
49 SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c
50 ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","")
51     -include $(SUBPROJ_KEYMAP_PATH)/Makefile
52     KEYMAP_C := $(SUBPROJ_KEYMAP_C)
53     KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH)
54 else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","")
55     -include $(MAIN_KEYMAP_PATH)/Makefile
56     KEYMAP_C := $(MAIN_KEYMAP_C)
57     KEYMAP_PATH := $(MAIN_KEYMAP_PATH)
58 else
59     $(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist)
60 endif
61
62 ifneq ($(SUBPROJECT),)
63         TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP)
64 else
65         TARGET ?= $(KEYBOARD)_$(KEYMAP)
66 endif
67
68 BUILD_DIR = $(TOP_DIR)/.build
69
70 # Object files directory
71 #     To put object files in current directory, use a dot (.), do NOT make
72 #     this an empty or blank macro!
73 OBJDIR := $(BUILD_DIR)/obj_$(TARGET)
74
75
76 ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
77         CONFIG_H = $(KEYMAP_PATH)/config.h
78 else
79         CONFIG_H = $(KEYBOARD_PATH)/config.h
80         ifneq ($(SUBPROJECT),)
81                 ifneq ("$(wildcard $(SUBPROJECT_C))","")
82                         CONFIG_H = $(SUBPROJECT_PATH)/config.h
83                 endif
84         endif
85 endif
86
87 # # project specific files
88 SRC += $(KEYBOARD_C) \
89         $(KEYMAP_C) \
90         $(QUANTUM_DIR)/quantum.c \
91         $(QUANTUM_DIR)/keymap_common.c \
92         $(QUANTUM_DIR)/keycode_config.c \
93         $(QUANTUM_DIR)/process_keycode/process_leader.c
94
95 ifneq ($(SUBPROJECT),)
96         SRC += $(SUBPROJECT_C)
97 endif
98
99 ifndef CUSTOM_MATRIX
100         SRC += $(QUANTUM_DIR)/matrix.c
101 endif
102
103 ifeq ($(strip $(MIDI_ENABLE)), yes)
104     OPT_DEFS += -DMIDI_ENABLE
105         SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
106 endif
107
108 ifeq ($(strip $(AUDIO_ENABLE)), yes)
109     OPT_DEFS += -DAUDIO_ENABLE
110         SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
111         SRC += $(QUANTUM_DIR)/audio/audio.c
112         SRC += $(QUANTUM_DIR)/audio/voices.c
113         SRC += $(QUANTUM_DIR)/audio/luts.c
114 endif
115
116 ifeq ($(strip $(UNICODE_ENABLE)), yes)
117     OPT_DEFS += -DUNICODE_ENABLE
118         SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
119 endif
120
121 ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
122         OPT_DEFS += -DRGBLIGHT_ENABLE
123         SRC += $(QUANTUM_DIR)/light_ws2812.c
124         SRC += $(QUANTUM_DIR)/rgblight.c
125 endif
126
127 ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
128         OPT_DEFS += -DTAP_DANCE_ENABLE
129         SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
130 endif
131
132 ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
133         SERIAL_DIR = $(QUANTUM_DIR)/serial_link
134         SERIAL_PATH = $(QUANTUM_PATH)/serial_link
135         SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c)
136         SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
137         SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
138         OPT_DEFS += -DSERIAL_LINK_ENABLE
139         VAPTH += $(SERIAL_PATH)
140 endif
141
142 # Optimize size but this may cause error "relocation truncated to fit"
143 #EXTRALDFLAGS = -Wl,--relax
144
145 # Search Path
146 VPATH += $(KEYMAP_PATH)
147 ifneq ($(SUBPROJECT),)
148         VPATH += $(SUBPROJECT_PATH)
149 endif
150 VPATH += $(KEYBOARD_PATH)
151 VPATH += $(TOP_DIR)
152 VPATH += $(TMK_PATH)
153 VPATH += $(QUANTUM_PATH)
154 VPATH += $(QUANTUM_PATH)/keymap_extras
155 VPATH += $(QUANTUM_PATH)/audio
156 VPATH += $(QUANTUM_PATH)/process_keycode
157
158
159 # We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA
160 ifdef MCU_FAMILY
161         PLATFORM=CHIBIOS
162 else
163         PLATFORM=AVR
164 endif
165
166 include $(TMK_PATH)/common.mk
167 ifeq ($(PLATFORM),AVR)
168         include $(TMK_PATH)/protocol/lufa.mk
169         include $(TMK_PATH)/avr.mk
170 else ifeq ($(PLATFORM),CHIBIOS)
171         include $(TMK_PATH)/protocol/chibios.mk
172         include $(TMK_PATH)/chibios.mk
173         OPT_OS = chibios
174 else
175         $(error Unknown platform)
176 endif
177
178 ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
179         VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
180         VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
181         include $(VISUALIZER_PATH)/visualizer.mk
182 endif
183
184 include $(TMK_PATH)/rules.mk
185
186 GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
187 BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
188 OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
189
190 $(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h)
191 $(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h)