diff options
| -rw-r--r-- | Makefile | 322 | ||||
| -rw-r--r-- | build_keyboard.mk | 276 | 
2 files changed, 317 insertions, 281 deletions
| @@ -1,281 +1,41 @@ -ifndef VERBOSE -.SILENT: -endif - -.DEFAULT_GOAL := all - -space := $(subst ,, ) -ESCAPED_ABS_PATH = $(subst $(space),_SPACE_,$(abspath $1)) -starting_makefile := $(call ESCAPED_ABS_PATH,$(firstword $(MAKEFILE_LIST))) -mkfile_path := $(call ESCAPED_ABS_PATH,$(lastword $(MAKEFILE_LIST)))) -abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path))) - -ifneq (,$(findstring /keyboards/,$(starting_makefile))) -	possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(abs_tmk_root)/keyboards/%,%,$(starting_makefile)))) -	ifneq (,$(findstring /keymaps/,$(possible_keyboard))) -		KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard))) -		KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard))) -		ifneq (,$(findstring /,$(KEYBOARD_DIR))) -			# SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) -			# KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) -			tmk_root = ../../.. -		else -			tmk_root = ../../../.. -		endif -	else -		KEYMAP_DIR:=default -		KEYBOARD_DIR:=$(possible_keyboard) -		ifneq (,$(findstring /,$(KEYBOARD_DIR))) -			# SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) -			# KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) -			tmk_root = ../../.. -		else -			tmk_root = ../.. -		endif -	endif -else -	tmk_root = . -endif -# $(info $(KEYBOARD_DIR)) -# $(info $(KEYMAP_DIR)) -# $(info $(SUBPROJECT_DIR)) - -# Directory common source filess exist -TOP_DIR = $(tmk_root) -TMK_DIR = tmk_core -TMK_PATH = $(TOP_DIR)/$(TMK_DIR) -LIB_PATH = $(TOP_DIR)/lib - -QUANTUM_DIR = quantum -QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) - - -ifdef keyboard -	KEYBOARD ?= $(keyboard) -endif -ifdef KEYBOARD_DIR -	KEYBOARD ?= $(KEYBOARD_DIR) -endif -ifndef KEYBOARD -	KEYBOARD=planck -endif - -MASTER ?= left -ifdef master -	MASTER = $(master) -endif - - -# converts things to keyboards/subproject -ifneq (,$(findstring /,$(KEYBOARD))) -	TEMP:=$(KEYBOARD) -	KEYBOARD:=$(firstword $(subst /, ,$(TEMP))) -	SUBPROJECT:=$(lastword $(subst /, ,$(TEMP))) -endif - -KEYBOARD_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD) - -ifdef sub -	SUBPROJECT=$(sub) -endif -ifdef subproject -	SUBPROJECT=$(subproject) -endif - -ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","") -	KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c -	ifneq ($(call ESCAPED_ABS_PATH,$(KEYBOARD_PATH)/Makefile),$(starting_makefile)) -		-include $(KEYBOARD_PATH)/Makefile -	endif -else  -$(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist) -endif - -ifdef SUBPROJECT_DEFAULT -	SUBPROJECT?=$(SUBPROJECT_DEFAULT) -endif - -ifdef SUBPROJECT -	SUBPROJECT_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT) -	ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") -		OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) -		SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c -		ifneq ($(call ESCAPED_ABS_PATH,$(SUBPROJECT_PATH)/Makefile),$(starting_makefile)) -			-include $(SUBPROJECT_PATH)/Makefile -		endif -	else  -$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) -	endif -endif - -ifdef keymap -	KEYMAP ?= $(keymap) -endif -ifdef KEYMAP_DIR -	KEYMAP ?= $(KEYMAP_DIR) -endif -ifndef KEYMAP -	KEYMAP = default -endif -KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP) -ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","") -	KEYMAP_FILE = keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c -	ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) -		-include $(KEYMAP_PATH)/Makefile -	endif -else  -	ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/keymap.c)","") -$(error "$(KEYMAP_PATH)/keymap.c" does not exist) -	else -		KEYMAP_PATH = $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) -		KEYMAP_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/keymap.c -		ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) -			-include $(KEYMAP_PATH)/Makefile -		endif -	endif -endif - -ifdef SUBPROJECT -	TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) -else -	TARGET ?= $(KEYBOARD)_$(KEYMAP) -endif - -BUILD_DIR = $(TOP_DIR)/.build - -# Object files directory -#     To put object files in current directory, use a dot (.), do NOT make -#     this an empty or blank macro! -OBJDIR = $(BUILD_DIR)/obj_$(TARGET) - - - -ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") -	CONFIG_H = $(KEYMAP_PATH)/config.h -else -	CONFIG_H = $(KEYBOARD_PATH)/config.h -	ifdef SUBPROJECT -		ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") -			CONFIG_H = $(SUBPROJECT_PATH)/config.h -		endif -	endif -endif - -# # project specific files -SRC += $(KEYBOARD_FILE) \ -	$(KEYMAP_FILE) \ -	$(QUANTUM_DIR)/quantum.c \ -	$(QUANTUM_DIR)/keymap_common.c \ -	$(QUANTUM_DIR)/keycode_config.c \ -	$(QUANTUM_DIR)/process_keycode/process_leader.c - -ifdef SUBPROJECT -	SRC += $(SUBPROJECT_FILE) -endif - -ifdef SUBPROJECT -	SRC += $(SUBPROJECT_FILE) -endif - -ifdef SUBPROJECT -	SRC += $(SUBPROJECT_FILE) -endif - -ifndef CUSTOM_MATRIX -	SRC += $(QUANTUM_DIR)/matrix.c -endif - -ifeq ($(strip $(MIDI_ENABLE)), yes) -    OPT_DEFS += -DMIDI_ENABLE -	SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c -endif - -ifeq ($(strip $(AUDIO_ENABLE)), yes) -    OPT_DEFS += -DAUDIO_ENABLE -	SRC += $(QUANTUM_DIR)/process_keycode/process_music.c -	SRC += $(QUANTUM_DIR)/audio/audio.c -	SRC += $(QUANTUM_DIR)/audio/voices.c -	SRC += $(QUANTUM_DIR)/audio/luts.c -endif - -ifeq ($(strip $(UCIS_ENABLE)), yes) -	OPT_DEFS += -DUCIS_ENABLE -	UNICODE_ENABLE = yes -endif - -ifeq ($(strip $(UNICODE_ENABLE)), yes) -    OPT_DEFS += -DUNICODE_ENABLE -	SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c -endif - -ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) -	OPT_DEFS += -DRGBLIGHT_ENABLE -	SRC += $(QUANTUM_DIR)/light_ws2812.c -	SRC += $(QUANTUM_DIR)/rgblight.c -endif - -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) -	OPT_DEFS += -DTAP_DANCE_ENABLE -	SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c -endif - -ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) -	SERIAL_DIR = $(QUANTUM_DIR)/serial_link -	SERIAL_PATH = $(QUANTUM_PATH)/serial_link -	SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c) -	SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) -	SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) -	OPT_DEFS += -DSERIAL_LINK_ENABLE -	VAPTH += $(SERIAL_PATH) -endif - -# Optimize size but this may cause error "relocation truncated to fit" -#EXTRALDFLAGS = -Wl,--relax - -# Search Path -VPATH += $(KEYMAP_PATH) -ifdef SUBPROJECT -	VPATH += $(SUBPROJECT_PATH) -endif -VPATH += $(KEYBOARD_PATH) -VPATH += $(TOP_DIR) -VPATH += $(TMK_PATH) -VPATH += $(QUANTUM_PATH) -VPATH += $(QUANTUM_PATH)/keymap_extras -VPATH += $(QUANTUM_PATH)/audio -VPATH += $(QUANTUM_PATH)/process_keycode - - -# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA -ifdef MCU_FAMILY -	PLATFORM=CHIBIOS -else -	PLATFORM=AVR -endif - -include $(TMK_PATH)/common.mk -ifeq ($(PLATFORM),AVR) -	include $(TMK_PATH)/protocol/lufa.mk -	include $(TMK_PATH)/avr.mk -else ifeq ($(PLATFORM),CHIBIOS) -	include $(TMK_PATH)/protocol/chibios.mk -	include $(TMK_PATH)/chibios.mk -	OPT_OS = chibios -else -	$(error Unknown platform) -endif - -ifeq ($(strip $(VISUALIZER_ENABLE)), yes) -	VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer -	VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer -	include $(VISUALIZER_PATH)/visualizer.mk -endif - -include $(TMK_PATH)/rules.mk - -GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") -BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") -OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" - -$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h) -$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h) +STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) +ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) +ABS_STARTING_MAKEFILE := $(abspath $(STARTING_MAKEFILE)) +ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE)) +ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE)) +ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE)) +STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) + +PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) + +define NEXT_PATH_ELEMENT +    $$(eval CURRENT_PATH_ELEMENT := $$(firstword  $$(PATH_ELEMENTS))) +    $$(eval PATH_ELEMENTS := $$(wordlist  2,9999,$$(PATH_ELEMENTS))) +endef + +$(eval $(call NEXT_PATH_ELEMENT)) + +ifeq ($(CURRENT_PATH_ELEMENT),keyboards) +    $(eval $(call NEXT_PATH_ELEMENT)) +    KEYBOARD := $(CURRENT_PATH_ELEMENT) +    $(eval $(call NEXT_PATH_ELEMENT)) +    ifeq ($(CURRENT_PATH_ELEMENT),keymaps) +        $(eval $(call NEXT_PATH_ELEMENT)) +        KEYMAP := $(CURRENT_PATH_ELEMENT) +    else ifneq ($(CURRENT_PATH_ELEMENT),) +        SUBPROJECT := $(CURRENT_PATH_ELEMENT) +        $(eval $(call NEXT_PATH_ELEMENT)) +        ifeq ($(CURRENT_PATH_ELEMENT),keymaps) +            $(eval $(call NEXT_PATH_ELEMENT)) +            KEYMAP := $(CURRENT_PATH_ELEMENT) +        endif +    endif +endif + +$(info Keyboard: $(KEYBOARD)) +$(info Keymap: $(KEYMAP)) +$(info Subproject: $(SUBPROJECT)) + + +all:  +	echo "Compiling"
\ No newline at end of file diff --git a/build_keyboard.mk b/build_keyboard.mk new file mode 100644 index 0000000000..053c8532af --- /dev/null +++ b/build_keyboard.mk @@ -0,0 +1,276 @@ +ifndef VERBOSE +.SILENT: +endif + +.DEFAULT_GOAL := all + +space := $(subst ,, ) +ESCAPED_ABS_PATH = $(subst $(space),_SPACE_,$(abspath $1)) +starting_makefile := $(call ESCAPED_ABS_PATH,$(firstword $(MAKEFILE_LIST))) +mkfile_path := $(call ESCAPED_ABS_PATH,$(lastword $(MAKEFILE_LIST)))) +abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path))) + +ifneq (,$(findstring /keyboards/,$(starting_makefile))) +	possible_keyboard:=$(patsubst %/,%,$(dir $(patsubst $(abs_tmk_root)/keyboards/%,%,$(starting_makefile)))) +	ifneq (,$(findstring /keymaps/,$(possible_keyboard))) +		KEYMAP_DIR:=$(lastword $(subst /keymaps/, ,$(possible_keyboard))) +		KEYBOARD_DIR:=$(firstword $(subst /keymaps/, ,$(possible_keyboard))) +		ifneq (,$(findstring /,$(KEYBOARD_DIR))) +			# SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) +			# KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) +			tmk_root = ../../.. +		else +			tmk_root = ../../../.. +		endif +	else +		KEYMAP_DIR:=default +		KEYBOARD_DIR:=$(possible_keyboard) +		ifneq (,$(findstring /,$(KEYBOARD_DIR))) +			# SUBPROJECT_DIR:=$(lastword $(subst /, ,$(KEYBOARD_DIR))) +			# KEYBOARD_DIR:=$(firstword $(subst /, ,$(KEYBOARD_DIR))) +			tmk_root = ../../.. +		else +			tmk_root = ../.. +		endif +	endif +else +	tmk_root = . +endif +# $(info $(KEYBOARD_DIR)) +# $(info $(KEYMAP_DIR)) +# $(info $(SUBPROJECT_DIR)) + +# Directory common source filess exist +TOP_DIR = $(tmk_root) +TMK_DIR = tmk_core +TMK_PATH = $(TOP_DIR)/$(TMK_DIR) +LIB_PATH = $(TOP_DIR)/lib + +QUANTUM_DIR = quantum +QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) + + +ifdef keyboard +	KEYBOARD ?= $(keyboard) +endif +ifdef KEYBOARD_DIR +	KEYBOARD ?= $(KEYBOARD_DIR) +endif +ifndef KEYBOARD +	KEYBOARD=planck +endif + +MASTER ?= left +ifdef master +	MASTER = $(master) +endif + + +# converts things to keyboards/subproject +ifneq (,$(findstring /,$(KEYBOARD))) +	TEMP:=$(KEYBOARD) +	KEYBOARD:=$(firstword $(subst /, ,$(TEMP))) +	SUBPROJECT:=$(lastword $(subst /, ,$(TEMP))) +endif + +KEYBOARD_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD) + +ifdef sub +	SUBPROJECT=$(sub) +endif +ifdef subproject +	SUBPROJECT=$(subproject) +endif + +ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","") +	KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c +	ifneq ($(call ESCAPED_ABS_PATH,$(KEYBOARD_PATH)/Makefile),$(starting_makefile)) +		-include $(KEYBOARD_PATH)/Makefile +	endif +else  +$(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist) +endif + +ifdef SUBPROJECT_DEFAULT +	SUBPROJECT?=$(SUBPROJECT_DEFAULT) +endif + +ifdef SUBPROJECT +	SUBPROJECT_PATH = $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT) +	ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") +		OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) +		SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c +		ifneq ($(call ESCAPED_ABS_PATH,$(SUBPROJECT_PATH)/Makefile),$(starting_makefile)) +			-include $(SUBPROJECT_PATH)/Makefile +		endif +	else  +$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) +	endif +endif + +ifdef keymap +	KEYMAP ?= $(keymap) +endif +ifdef KEYMAP_DIR +	KEYMAP ?= $(KEYMAP_DIR) +endif +ifndef KEYMAP +	KEYMAP = default +endif +KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP) +ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","") +	KEYMAP_FILE = keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c +	ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) +		-include $(KEYMAP_PATH)/Makefile +	endif +else  +	ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/keymap.c)","") +$(error "$(KEYMAP_PATH)/keymap.c" does not exist) +	else +		KEYMAP_PATH = $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) +		KEYMAP_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/keymap.c +		ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile)) +			-include $(KEYMAP_PATH)/Makefile +		endif +	endif +endif + +ifdef SUBPROJECT +	TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) +else +	TARGET ?= $(KEYBOARD)_$(KEYMAP) +endif + +BUILD_DIR = $(TOP_DIR)/.build + +# Object files directory +#     To put object files in current directory, use a dot (.), do NOT make +#     this an empty or blank macro! +OBJDIR = $(BUILD_DIR)/obj_$(TARGET) + + + +ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") +	CONFIG_H = $(KEYMAP_PATH)/config.h +else +	CONFIG_H = $(KEYBOARD_PATH)/config.h +	ifdef SUBPROJECT +		ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","") +			CONFIG_H = $(SUBPROJECT_PATH)/config.h +		endif +	endif +endif + +# # project specific files +SRC += $(KEYBOARD_FILE) \ +	$(KEYMAP_FILE) \ +	$(QUANTUM_DIR)/quantum.c \ +	$(QUANTUM_DIR)/keymap_common.c \ +	$(QUANTUM_DIR)/keycode_config.c \ +	$(QUANTUM_DIR)/process_keycode/process_leader.c + +ifdef SUBPROJECT +	SRC += $(SUBPROJECT_FILE) +endif + +ifdef SUBPROJECT +	SRC += $(SUBPROJECT_FILE) +endif + +ifdef SUBPROJECT +	SRC += $(SUBPROJECT_FILE) +endif + +ifndef CUSTOM_MATRIX +	SRC += $(QUANTUM_DIR)/matrix.c +endif + +ifeq ($(strip $(MIDI_ENABLE)), yes) +    OPT_DEFS += -DMIDI_ENABLE +	SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c +endif + +ifeq ($(strip $(AUDIO_ENABLE)), yes) +    OPT_DEFS += -DAUDIO_ENABLE +	SRC += $(QUANTUM_DIR)/process_keycode/process_music.c +	SRC += $(QUANTUM_DIR)/audio/audio.c +	SRC += $(QUANTUM_DIR)/audio/voices.c +	SRC += $(QUANTUM_DIR)/audio/luts.c +endif + +ifeq ($(strip $(UNICODE_ENABLE)), yes) +    OPT_DEFS += -DUNICODE_ENABLE +	SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c +endif + +ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) +	OPT_DEFS += -DRGBLIGHT_ENABLE +	SRC += $(QUANTUM_DIR)/light_ws2812.c +	SRC += $(QUANTUM_DIR)/rgblight.c +endif + +ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) +	OPT_DEFS += -DTAP_DANCE_ENABLE +	SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c +endif + +ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) +	SERIAL_DIR = $(QUANTUM_DIR)/serial_link +	SERIAL_PATH = $(QUANTUM_PATH)/serial_link +	SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c) +	SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) +	SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) +	OPT_DEFS += -DSERIAL_LINK_ENABLE +	VAPTH += $(SERIAL_PATH) +endif + +# Optimize size but this may cause error "relocation truncated to fit" +#EXTRALDFLAGS = -Wl,--relax + +# Search Path +VPATH += $(KEYMAP_PATH) +ifdef SUBPROJECT +	VPATH += $(SUBPROJECT_PATH) +endif +VPATH += $(KEYBOARD_PATH) +VPATH += $(TOP_DIR) +VPATH += $(TMK_PATH) +VPATH += $(QUANTUM_PATH) +VPATH += $(QUANTUM_PATH)/keymap_extras +VPATH += $(QUANTUM_PATH)/audio +VPATH += $(QUANTUM_PATH)/process_keycode + + +# We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA +ifdef MCU_FAMILY +	PLATFORM=CHIBIOS +else +	PLATFORM=AVR +endif + +include $(TMK_PATH)/common.mk +ifeq ($(PLATFORM),AVR) +	include $(TMK_PATH)/protocol/lufa.mk +	include $(TMK_PATH)/avr.mk +else ifeq ($(PLATFORM),CHIBIOS) +	include $(TMK_PATH)/protocol/chibios.mk +	include $(TMK_PATH)/chibios.mk +	OPT_OS = chibios +else +	$(error Unknown platform) +endif + +ifeq ($(strip $(VISUALIZER_ENABLE)), yes) +	VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer +	VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer +	include $(VISUALIZER_PATH)/visualizer.mk +endif + +include $(TMK_PATH)/rules.mk + +GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") +BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") +OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" + +$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h) +$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h)
\ No newline at end of file | 
