Define visualizer thread priority by default
[jackhill/qmk/firmware.git] / build_keyboard.mk
CommitLineData
86706de0
FS
1ifndef VERBOSE
2.SILENT:
3endif
4
5.DEFAULT_GOAL := all
6
27a673f5 7include common.mk
8f164031
FS
8
9ifneq ($(SUBPROJECT),)
1d5567a3
FS
10 TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP)
11 KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT)
8f164031 12else
1d5567a3
FS
13 TARGET ?= $(KEYBOARD)_$(KEYMAP)
14 KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)
8f164031
FS
15endif
16
17# Force expansion
18TARGET := $(TARGET)
19
86706de0 20
86706de0
FS
21MASTER ?= left
22ifdef master
1d5567a3 23 MASTER = $(master)
86706de0
FS
24endif
25
b911e196 26ifeq ($(MASTER),right)
1d5567a3 27 OPT_DEFS += -DMASTER_IS_ON_RIGHT
b911e196 28else
1d5567a3 29 ifneq ($(MASTER),left)
c692fd1d 30$(error MASTER does not have a valid value(left/right))
1d5567a3 31 endif
c692fd1d
FS
32endif
33
67b294ca
FS
34KEYBOARD_PATH := keyboards/$(KEYBOARD)
35KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
86706de0 36
67b294ca
FS
37ifneq ("$(wildcard $(KEYBOARD_C))","")
38 include $(KEYBOARD_PATH)/rules.mk
b911e196 39else
67b294ca
FS
40 $(error "$(KEYBOARD_C)" does not exist)
41endif
42
67b294ca
FS
43ifneq ($(SUBPROJECT),)
44 SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
45 SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c
46 ifneq ("$(wildcard $(SUBPROJECT_C))","")
47 OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
48 include $(SUBPROJECT_PATH)/rules.mk
b911e196 49 else
67b294ca
FS
50 $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
51 endif
52endif
53
33fbd3be
FS
54# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA
55ifdef MCU_FAMILY
1d5567a3 56 PLATFORM=CHIBIOS
33fbd3be 57else
1d5567a3 58 PLATFORM=AVR
33fbd3be
FS
59endif
60
61ifeq ($(PLATFORM),CHIBIOS)
1d5567a3
FS
62 include $(TMK_PATH)/protocol/chibios.mk
63 include $(TMK_PATH)/chibios.mk
64 OPT_OS = chibios
65 ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","")
66 OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h
67 else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
68 OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h
69 else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","")
70 OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h
71 else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
72 OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h
73 endif
33fbd3be
FS
74endif
75
9028a412
FS
76CONFIG_H = $(KEYBOARD_PATH)/config.h
77ifneq ($(SUBPROJECT),)
1d5567a3
FS
78 ifneq ("$(wildcard $(SUBPROJECT_C))","")
79 CONFIG_H = $(SUBPROJECT_PATH)/config.h
80 endif
9028a412
FS
81endif
82
b911e196 83# Save the defines and includes here, so we don't include any keymap specific ones
3aac4e95 84PROJECT_DEFS := $(OPT_DEFS)
33fbd3be 85PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
9028a412 86PROJECT_CONFIG := $(CONFIG_H)
3aac4e95 87
67b294ca
FS
88MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
89MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c
90SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)
91SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c
92ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","")
93 -include $(SUBPROJ_KEYMAP_PATH)/Makefile
94 KEYMAP_C := $(SUBPROJ_KEYMAP_C)
95 KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH)
96else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","")
97 -include $(MAIN_KEYMAP_PATH)/Makefile
98 KEYMAP_C := $(MAIN_KEYMAP_C)
99 KEYMAP_PATH := $(MAIN_KEYMAP_PATH)
100else
101 $(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist)
86706de0
FS
102endif
103
86706de0 104
86706de0
FS
105# Object files directory
106# To put object files in current directory, use a dot (.), do NOT make
107# this an empty or blank macro!
3aac4e95 108KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
86706de0
FS
109
110
86706de0 111ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
1d5567a3 112 CONFIG_H = $(KEYMAP_PATH)/config.h
86706de0
FS
113endif
114
115# # project specific files
67b294ca 116SRC += $(KEYBOARD_C) \
1d5567a3 117 $(KEYMAP_C) \
1c0fe956 118 $(QUANTUM_SRC)
86706de0 119
67b294ca 120ifneq ($(SUBPROJECT),)
1d5567a3 121 SRC += $(SUBPROJECT_C)
86706de0
FS
122endif
123
86706de0
FS
124# Optimize size but this may cause error "relocation truncated to fit"
125#EXTRALDFLAGS = -Wl,--relax
126
127# Search Path
128VPATH += $(KEYMAP_PATH)
67b294ca 129ifneq ($(SUBPROJECT),)
1d5567a3 130 VPATH += $(SUBPROJECT_PATH)
86706de0
FS
131endif
132VPATH += $(KEYBOARD_PATH)
c692fd1d 133VPATH += $(COMMON_VPATH)
86706de0 134
1c0fe956 135include common_features.mk
3be13d1f 136include $(TMK_PATH)/protocol.mk
86706de0 137include $(TMK_PATH)/common.mk
1c0fe956 138
c692fd1d
FS
139SRC += $(TMK_COMMON_SRC)
140OPT_DEFS += $(TMK_COMMON_DEFS)
141EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
142
86706de0 143ifeq ($(PLATFORM),AVR)
f7462aaa 144ifeq ($(strip $(PROTOCOL)), VUSB)
1d5567a3 145 include $(TMK_PATH)/protocol/vusb.mk
f7462aaa 146else
1d5567a3 147 include $(TMK_PATH)/protocol/lufa.mk
f7462aaa 148endif
1d5567a3 149 include $(TMK_PATH)/avr.mk
86706de0
FS
150endif
151
152ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
1d5567a3
FS
153 VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
154 VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
155 include $(VISUALIZER_PATH)/visualizer.mk
86706de0
FS
156endif
157
3aac4e95
FS
158OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
159$(KEYMAP_OUTPUT)_SRC := $(SRC)
f5c89416 160$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
c692fd1d 161$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
9028a412 162$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
f5c89416
FS
163$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
164$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
165$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
9028a412 166$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
3aac4e95 167
8a9aac6e
FS
168# Default target.
169all: build sizeafter
170
171# Change the build target to build a HEX file or a library.
172build: elf hex
173#build: elf hex eep lss sym
174#build: lib
175
3aac4e95 176
86706de0
FS
177include $(TMK_PATH)/rules.mk
178