X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=build_keyboard.mk;h=03a69b14646f8dec37ebe3b0932a3302f80edd0a;hb=b2ecd296ae0dc366717fae8a6abb25c0639d6a43;hp=b0cb22e6ac605fbb01b2d6e2f942e2513df5ce91;hpb=67b294ca66fd9da341ab93019a380d91ac589c96;p=qmk_firmware.git diff --git a/build_keyboard.mk b/build_keyboard.mk index b0cb22e6a..03a69b146 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -4,15 +4,18 @@ endif .DEFAULT_GOAL := all +include common.mk -# Directory common source filess exist -TOP_DIR = . -TMK_DIR = tmk_core -TMK_PATH = $(TOP_DIR)/$(TMK_DIR) -LIB_PATH = $(TOP_DIR)/lib +ifneq ($(SUBPROJECT),) + TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) + KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT) +else + TARGET ?= $(KEYBOARD)_$(KEYMAP) + KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD) +endif -QUANTUM_DIR = quantum -QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) +# Force expansion +TARGET := $(TARGET) MASTER ?= left @@ -20,6 +23,16 @@ ifdef master MASTER = $(master) endif +ifeq ($(MASTER),right) + OPT_DEFS += -DMASTER_IS_ON_RIGHT +else + ifneq ($(MASTER),left) +$(error MASTER does not have a valid value(left/right)) + endif +endif + + + KEYBOARD_PATH := keyboards/$(KEYBOARD) KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c @@ -41,6 +54,40 @@ ifneq ($(SUBPROJECT),) endif endif +# 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 + +ifeq ($(PLATFORM),CHIBIOS) + include $(TMK_PATH)/protocol/chibios.mk + include $(TMK_PATH)/chibios.mk + OPT_OS = chibios + ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","") + OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h + else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h + else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h + else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h + endif +endif + +CONFIG_H = $(KEYBOARD_PATH)/config.h +ifneq ($(SUBPROJECT),) + ifneq ("$(wildcard $(SUBPROJECT_C))","") + CONFIG_H = $(SUBPROJECT_PATH)/config.h + endif +endif + +# Save the defines and includes here, so we don't include any keymap specific ones +PROJECT_DEFS := $(OPT_DEFS) +PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH) +PROJECT_CONFIG := $(CONFIG_H) + MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) @@ -57,29 +104,15 @@ else $(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist) endif -ifneq ($(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) +KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") CONFIG_H = $(KEYMAP_PATH)/config.h -else - CONFIG_H = $(KEYBOARD_PATH)/config.h - ifneq ($(SUBPROJECT),) - ifneq ("$(wildcard $(SUBPROJECT_C))","") - CONFIG_H = $(SUBPROJECT_PATH)/config.h - endif - endif endif # # project specific files @@ -103,6 +136,10 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c endif +ifeq ($(strip $(VIRTSER_ENABLE)), yes) + OPT_DEFS += -DVIRTSER_ENABLE +endif + ifeq ($(strip $(AUDIO_ENABLE)), yes) OPT_DEFS += -DAUDIO_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_music.c @@ -111,6 +148,11 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes) 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 @@ -128,12 +170,8 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) 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 + OPT_DEFS += $(SERIAL_DEFS) VAPTH += $(SERIAL_PATH) endif @@ -146,31 +184,17 @@ ifneq ($(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 +VPATH += $(COMMON_VPATH) -# 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 +SRC += $(TMK_COMMON_SRC) +OPT_DEFS += $(TMK_COMMON_DEFS) +EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS) + 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) @@ -179,11 +203,24 @@ ifeq ($(strip $(VISUALIZER_ENABLE)), yes) include $(VISUALIZER_PATH)/visualizer.mk endif -include $(TMK_PATH)/rules.mk +OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) +$(KEYMAP_OUTPUT)_SRC := $(SRC) +$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" +$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) +$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) +$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) +$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) +$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) +$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) + +# Default target. +all: build sizeafter -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)\" +# Change the build target to build a HEX file or a library. +build: elf hex +#build: elf hex eep lss sym +#build: lib + + +include $(TMK_PATH)/rules.mk -$(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