diff options
author | Fred Sundvik <fsundvik@gmail.com> | 2016-08-08 10:26:23 +0300 |
---|---|---|
committer | Fred Sundvik <fsundvik@gmail.com> | 2016-08-20 03:56:30 +0300 |
commit | 67b294ca66fd9da341ab93019a380d91ac589c96 (patch) | |
tree | 43ce564d34fc93154476ef777202b2e245fb7805 | |
parent | db5c3b74fb6541879bfad9930d2a659b1d89cd83 (diff) | |
download | qmk_firmware-67b294ca66fd9da341ab93019a380d91ac589c96.tar.gz qmk_firmware-67b294ca66fd9da341ab93019a380d91ac589c96.zip |
Actual compilation
-rw-r--r-- | Makefile | 26 | ||||
-rw-r--r-- | build_keyboard.mk | 171 | ||||
-rw-r--r-- | message.mk | 3 |
3 files changed, 59 insertions, 141 deletions
@@ -228,17 +228,19 @@ define PARSE_KEYMAP | |||
228 | KB_SP := $(CURRENT_KB)/$$(CURRENT_SP) | 228 | KB_SP := $(CURRENT_KB)/$$(CURRENT_SP) |
229 | endif | 229 | endif |
230 | KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) | 230 | KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) |
231 | MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) | ||
232 | MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=false | ||
231 | COMMAND_$$(COMMAND) := \ | 233 | COMMAND_$$(COMMAND) := \ |
232 | printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ | 234 | printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ |
233 | $(AWK) '{ printf "%-118s", $$$$0;}'; \ | 235 | $(AWK) '{ printf "%-118s", $$$$0;}'; \ |
234 | LOG=$$$$(echo "$$(MAKE) -c $(ROOT_DIR) -f build_keyboard.mk VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true" 2>&1) ; \ | 236 | LOG=$$$$($$(MAKE) -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_VARS) 2>&1) ; \ |
235 | if [ $$$$? -gt 0 ]; \ | 237 | if [ $$$$? -gt 0 ]; \ |
236 | then $$(PRINT_ERROR_PLAIN); \ | 238 | then $$(PRINT_ERROR_PLAIN); \ |
237 | elif [ "$$$$LOG" != "" ] ; \ | 239 | elif [ "$$$$LOG" != "" ] ; \ |
238 | then $$(PRINT_WARNING_PLAIN); \ | 240 | then $$(PRINT_WARNING_PLAIN); \ |
239 | else \ | 241 | else \ |
240 | $$(PRINT_OK); \ | 242 | $$(PRINT_OK); \ |
241 | fi; | 243 | fi; |
242 | endef | 244 | endef |
243 | 245 | ||
244 | define PARSE_ALL_KEYMAPS | 246 | define PARSE_ALL_KEYMAPS |
@@ -258,9 +260,11 @@ SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) | |||
258 | $(SUBPROJECTS): %: %-allkm | 260 | $(SUBPROJECTS): %: %-allkm |
259 | 261 | ||
260 | .PHONY: % | 262 | .PHONY: % |
261 | %: | 263 | %: |
264 | cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; | ||
262 | $(eval $(call PARSE_RULE,$@)) | 265 | $(eval $(call PARSE_RULE,$@)) |
263 | $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) | 266 | $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) |
267 | |||
264 | 268 | ||
265 | .PHONY: all | 269 | .PHONY: all |
266 | all: all-keyboards | 270 | all: all-keyboards |
diff --git a/build_keyboard.mk b/build_keyboard.mk index 053c8532a..b0cb22e6a 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk | |||
@@ -4,44 +4,9 @@ endif | |||
4 | 4 | ||
5 | .DEFAULT_GOAL := all | 5 | .DEFAULT_GOAL := all |
6 | 6 | ||
7 | space := $(subst ,, ) | ||
8 | ESCAPED_ABS_PATH = $(subst $(space),_SPACE_,$(abspath $1)) | ||
9 | starting_makefile := $(call ESCAPED_ABS_PATH,$(firstword $(MAKEFILE_LIST))) | ||
10 | mkfile_path := $(call ESCAPED_ABS_PATH,$(lastword $(MAKEFILE_LIST)))) | ||
11 | abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path))) | ||
12 | |||
13 | ifneq (,$(findstring /keyboards/,$(starting_makefile))) | ||
14 | possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(abs_tmk_root)/keyboards/%,%,$(starting_makefile)))) | ||
15 | ifneq (,$(findstring /keymaps/,$(possible_keyboard))) | ||
16 | KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard))) | ||
17 | KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard))) | ||
18 | ifneq (,$(findstring /,$(KEYBOARD_DIR))) | ||
19 | # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) | ||
20 | # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) | ||
21 | tmk_root = ../../.. | ||
22 | else | ||
23 | tmk_root = ../../../.. | ||
24 | endif | ||
25 | else | ||
26 | KEYMAP_DIR:=default | ||
27 | KEYBOARD_DIR:=$(possible_keyboard) | ||
28 | ifneq (,$(findstring /,$(KEYBOARD_DIR))) | ||
29 | # SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) | ||
30 | # KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) | ||
31 | tmk_root = ../../.. | ||
32 | else | ||
33 | tmk_root = ../.. | ||
34 | endif | ||
35 | endif | ||
36 | else | ||
37 | tmk_root = . | ||
38 | endif | ||
39 | # $(info $(KEYBOARD_DIR)) | ||
40 | # $(info $(KEYMAP_DIR)) | ||
41 | # $(info $(SUBPROJECT_DIR)) | ||
42 | 7 | ||
43 | # Directory common source filess exist | 8 | # Directory common source filess exist |
44 | TOP_DIR = $(tmk_root) | 9 | TOP_DIR = . |
45 | TMK_DIR = tmk_core | 10 | TMK_DIR = tmk_core |
46 | TMK_PATH = $(TOP_DIR)/$(TMK_DIR) | 11 | TMK_PATH = $(TOP_DIR)/$(TMK_DIR) |
47 | LIB_PATH = $(TOP_DIR)/lib | 12 | LIB_PATH = $(TOP_DIR)/lib |
@@ -50,92 +15,49 @@ QUANTUM_DIR = quantum | |||
50 | QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) | 15 | QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) |
51 | 16 | ||
52 | 17 | ||
53 | ifdef keyboard | ||
54 | KEYBOARD ?= $(keyboard) | ||
55 | endif | ||
56 | ifdef KEYBOARD_DIR | ||
57 | KEYBOARD ?= $(KEYBOARD_DIR) | ||
58 | endif | ||
59 | ifndef KEYBOARD | ||
60 | KEYBOARD=planck | ||
61 | endif | ||
62 | |||
63 | MASTER ?= left | 18 | MASTER ?= left |
64 | ifdef master | 19 | ifdef master |
65 | MASTER = $(master) | 20 | MASTER = $(master) |
66 | endif | 21 | endif |
67 | 22 | ||
23 | KEYBOARD_PATH := keyboards/$(KEYBOARD) | ||
24 | KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c | ||
68 | 25 | ||
69 | # converts things to keyboards/subproject | 26 | ifneq ("$(wildcard $(KEYBOARD_C))","") |
70 | ifneq (,$(findstring /,$(KEYBOARD))) | 27 | include $(KEYBOARD_PATH)/rules.mk |
71 | TEMP:=$(KEYBOARD) | ||
72 | KEYBOARD:=$(firstword $(subst /, ,$(TEMP))) | ||
73 | SUBPROJECT:=$(lastword $(subst /, ,$(TEMP))) | ||
74 | endif | ||
75 | |||
76 | KEYBOARD_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD) | ||
77 | |||
78 | ifdef sub | ||
79 | SUBPROJECT=$(sub) | ||
80 | endif | ||
81 | ifdef subproject | ||
82 | SUBPROJECT=$(subproject) | ||
83 | endif | ||
84 | |||
85 | ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","") | ||
86 | KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c | ||
87 | ifneq ($(call ESCAPED_ABS_PATH,$(KEYBOARD_PATH)/Makefile),$(starting_makefile)) | ||
88 | -include $(KEYBOARD_PATH)/Makefile | ||
89 | endif | ||
90 | else | 28 | else |
91 | $(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist) | 29 | $(error "$(KEYBOARD_C)" does not exist) |
92 | endif | 30 | endif |
93 | 31 | ||
94 | ifdef SUBPROJECT_DEFAULT | 32 | |
95 | SUBPROJECT?=$(SUBPROJECT_DEFAULT) | 33 | ifneq ($(SUBPROJECT),) |
96 | endif | 34 | SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT) |
97 | 35 | SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c | |
98 | ifdef SUBPROJECT | 36 | ifneq ("$(wildcard $(SUBPROJECT_C))","") |
99 | SUBPROJECT_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT) | 37 | OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) |
100 | ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") | 38 | include $(SUBPROJECT_PATH)/rules.mk |
101 | OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) | 39 | else |
102 | SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c | 40 | $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) |
103 | ifneq ($(call ESCAPED_ABS_PATH,$(SUBPROJECT_PATH)/Makefile),$(starting_makefile)) | 41 | endif |
104 | -include $(SUBPROJECT_PATH)/Makefile | 42 | endif |
105 | endif | 43 | |
106 | else | 44 | MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) |
107 | $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) | 45 | MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c |
108 | endif | 46 | SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) |
109 | endif | 47 | SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c |
110 | 48 | ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","") | |
111 | ifdef keymap | 49 | -include $(SUBPROJ_KEYMAP_PATH)/Makefile |
112 | KEYMAP ?= $(keymap) | 50 | KEYMAP_C := $(SUBPROJ_KEYMAP_C) |
113 | endif | 51 | KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH) |
114 | ifdef KEYMAP_DIR | 52 | else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","") |
115 | KEYMAP ?= $(KEYMAP_DIR) | 53 | -include $(MAIN_KEYMAP_PATH)/Makefile |
116 | endif | 54 | KEYMAP_C := $(MAIN_KEYMAP_C) |
117 | ifndef KEYMAP | 55 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH) |
118 | KEYMAP = default | 56 | else |
119 | endif | 57 | $(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist) |
120 | KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP) | ||
121 | ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","") | ||
122 | KEYMAP_FILE = keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c | ||
123 | ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) | ||
124 | -include $(KEYMAP_PATH)/Makefile | ||
125 | endif | ||
126 | else | ||
127 | ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/keymap.c)","") | ||
128 | $(error "$(KEYMAP_PATH)/keymap.c" does not exist) | ||
129 | else | ||
130 | KEYMAP_PATH = $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) | ||
131 | KEYMAP_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/keymap.c | ||
132 | ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) | ||
133 | -include $(KEYMAP_PATH)/Makefile | ||
134 | endif | ||
135 | endif | ||
136 | endif | 58 | endif |
137 | 59 | ||
138 | ifdef SUBPROJECT | 60 | ifneq ($(SUBPROJECT),) |
139 | TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) | 61 | TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) |
140 | else | 62 | else |
141 | TARGET ?= $(KEYBOARD)_$(KEYMAP) | 63 | TARGET ?= $(KEYBOARD)_$(KEYMAP) |
@@ -149,36 +71,27 @@ BUILD_DIR = $(TOP_DIR)/.build | |||
149 | OBJDIR = $(BUILD_DIR)/obj_$(TARGET) | 71 | OBJDIR = $(BUILD_DIR)/obj_$(TARGET) |
150 | 72 | ||
151 | 73 | ||
152 | |||
153 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") | 74 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") |
154 | CONFIG_H = $(KEYMAP_PATH)/config.h | 75 | CONFIG_H = $(KEYMAP_PATH)/config.h |
155 | else | 76 | else |
156 | CONFIG_H = $(KEYBOARD_PATH)/config.h | 77 | CONFIG_H = $(KEYBOARD_PATH)/config.h |
157 | ifdef SUBPROJECT | 78 | ifneq ($(SUBPROJECT),) |
158 | ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") | 79 | ifneq ("$(wildcard $(SUBPROJECT_C))","") |
159 | CONFIG_H = $(SUBPROJECT_PATH)/config.h | 80 | CONFIG_H = $(SUBPROJECT_PATH)/config.h |
160 | endif | 81 | endif |
161 | endif | 82 | endif |
162 | endif | 83 | endif |
163 | 84 | ||
164 | # # project specific files | 85 | # # project specific files |
165 | SRC += $(KEYBOARD_FILE) \ | 86 | SRC += $(KEYBOARD_C) \ |
166 | $(KEYMAP_FILE) \ | 87 | $(KEYMAP_C) \ |
167 | $(QUANTUM_DIR)/quantum.c \ | 88 | $(QUANTUM_DIR)/quantum.c \ |
168 | $(QUANTUM_DIR)/keymap_common.c \ | 89 | $(QUANTUM_DIR)/keymap_common.c \ |
169 | $(QUANTUM_DIR)/keycode_config.c \ | 90 | $(QUANTUM_DIR)/keycode_config.c \ |
170 | $(QUANTUM_DIR)/process_keycode/process_leader.c | 91 | $(QUANTUM_DIR)/process_keycode/process_leader.c |
171 | 92 | ||
172 | ifdef SUBPROJECT | 93 | ifneq ($(SUBPROJECT),) |
173 | SRC += $(SUBPROJECT_FILE) | 94 | SRC += $(SUBPROJECT_C) |
174 | endif | ||
175 | |||
176 | ifdef SUBPROJECT | ||
177 | SRC += $(SUBPROJECT_FILE) | ||
178 | endif | ||
179 | |||
180 | ifdef SUBPROJECT | ||
181 | SRC += $(SUBPROJECT_FILE) | ||
182 | endif | 95 | endif |
183 | 96 | ||
184 | ifndef CUSTOM_MATRIX | 97 | ifndef CUSTOM_MATRIX |
@@ -229,7 +142,7 @@ endif | |||
229 | 142 | ||
230 | # Search Path | 143 | # Search Path |
231 | VPATH += $(KEYMAP_PATH) | 144 | VPATH += $(KEYMAP_PATH) |
232 | ifdef SUBPROJECT | 145 | ifneq ($(SUBPROJECT),) |
233 | VPATH += $(SUBPROJECT_PATH) | 146 | VPATH += $(SUBPROJECT_PATH) |
234 | endif | 147 | endif |
235 | VPATH += $(KEYBOARD_PATH) | 148 | VPATH += $(KEYBOARD_PATH) |
diff --git a/message.mk b/message.mk index 2ebf76a58..08a4e02ab 100644 --- a/message.mk +++ b/message.mk | |||
@@ -32,4 +32,5 @@ PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB | |||
32 | PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && exit 1 | 32 | PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && exit 1 |
33 | PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) | 33 | PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) |
34 | PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) | 34 | PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) |
35 | BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; \ No newline at end of file | 35 | BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; |
36 | MSG_NO_CMP = $(ERROR_COLOR)Error:$(NO_COLOR)$(BOLD) cmp command not found, please install diffutils\n$(NO_COLOR) \ No newline at end of file | ||