From 8a9aac6e3237a505682cc7249a8dfff6cb964343 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Mon, 22 Aug 2016 09:16:08 +0300 Subject: Rules for compiling and linking google test --- tmk_core/native.mk | 24 ++++++++++++++++++++++++ tmk_core/rules.mk | 19 +++++++++---------- 2 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 tmk_core/native.mk (limited to 'tmk_core') diff --git a/tmk_core/native.mk b/tmk_core/native.mk new file mode 100644 index 000000000..50232ee9b --- /dev/null +++ b/tmk_core/native.mk @@ -0,0 +1,24 @@ +CC = gcc +OBJCOPY = +OBJDUMP = +SIZE = +AR = +NM = +HEX = +EEP = +BIN = + + +COMPILEFLAGS += -funsigned-char +COMPILEFLAGS += -funsigned-bitfields +COMPILEFLAGS += -ffunction-sections +COMPILEFLAGS += -fdata-sections +COMPILEFLAGS += -fshort-enums + +CFLAGS += $(COMPILEFLAGS) +CFLAGS += -fno-inline-small-functions +CFLAGS += -fno-strict-aliasing + +CPPFLAGS += $(COMPILEFLAGS) +CPPFLAGS += -fno-exceptions +CPPFLAGS += -std=gnu++11 \ No newline at end of file diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 21011c280..317f55e08 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -21,13 +21,14 @@ VPATH_SRC := $(VPATH) vpath %.c $(VPATH_SRC) vpath %.h $(VPATH_SRC) vpath %.cpp $(VPATH_SRC) +vpath %.cc $(VPATH_SRC) vpath %.hpp $(VPATH_SRC) vpath %.S $(VPATH_SRC) VPATH := # Convert all SRC to OBJ define OBJ_FROM_SRC -$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC)))) +$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC))))) endef $(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT)))) @@ -202,14 +203,6 @@ ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS) MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@) -# Default target. -all: build sizeafter - -# Change the build target to build a HEX file or a library. -build: elf hex -#build: elf hex eep lss sym -#build: lib - elf: $(BUILD_DIR)/$(TARGET).elf hex: $(BUILD_DIR)/$(TARGET).hex @@ -305,7 +298,13 @@ $1/%.o : %.cpp $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN) @mkdir -p $$(@D) @$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) $$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) - @$(BUILD_CMD) + @$$(BUILD_CMD) + +$1/%.o : %.cc $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN) + @mkdir -p $$(@D) + @$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) + $$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) + @$$(BUILD_CMD) # Assemble: create object files from assembler source files. $1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN) -- cgit v1.2.3-70-g09d2 From c692fd1d55cb2103e9f7c40c8953ec92b5178c52 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 13:43:12 +0300 Subject: More common settings for unit tests and keyboards --- build_keyboard.mk | 25 +++++++++++++------ build_test.mk | 3 +++ common.mk | 14 +++++------ tmk_core/common.mk | 71 ++++++++++++++++++++++++------------------------------ 4 files changed, 59 insertions(+), 54 deletions(-) (limited to 'tmk_core') diff --git a/build_keyboard.mk b/build_keyboard.mk index 164794c63..5bec4ecf6 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -23,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 @@ -169,15 +179,14 @@ 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) 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 @@ -189,11 +198,13 @@ ifeq ($(strip $(VISUALIZER_ENABLE)), yes) include $(VISUALIZER_PATH)/visualizer.mk endif +$(info $(VPATH)) + OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) $(KEYMAP_OUTPUT)_SRC := $(SRC) $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" -$(KEYMAP_OUTPUT)_INC := $(EXTRAINCDIRS) $(VPATH) +$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) diff --git a/build_test.mk b/build_test.mk index 1d8cb08b1..9f5d6e0af 100644 --- a/build_test.mk +++ b/build_test.mk @@ -38,6 +38,9 @@ VPATH +=\ all: elf +VPATH += $(COMMON_VPATH) + +include $(TMK_PATH)/common.mk include $(QUANTUM_PATH)/serial_link/tests/rules.mk $(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC) diff --git a/common.mk b/common.mk index f9b0773a8..18751cd5a 100644 --- a/common.mk +++ b/common.mk @@ -17,10 +17,10 @@ SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c) SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) SERIAL_DEFS += -DSERIAL_LINK_ENABLE -VPATH += $(TOP_DIR) -VPATH += $(TMK_PATH) -VPATH += $(QUANTUM_PATH) -VPATH += $(QUANTUM_PATH)/keymap_extras -VPATH += $(QUANTUM_PATH)/audio -VPATH += $(QUANTUM_PATH)/process_keycode -VPATH += $(SERIAL_PATH) \ No newline at end of file +COMMON_VPATH := $(TOP_DIR) +COMMON_VPATH += $(TMK_PATH) +COMMON_VPATH += $(QUANTUM_PATH) +COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras +COMMON_VPATH += $(QUANTUM_PATH)/audio +COMMON_VPATH += $(QUANTUM_PATH)/process_keycode +COMMON_VPATH += $(SERIAL_PATH) \ No newline at end of file diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 0b767eb04..f826a7b54 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -5,7 +5,7 @@ else ifeq ($(PLATFORM),CHIBIOS) PLATFORM_COMMON_DIR = $(COMMON_DIR)/chibios endif -SRC += $(COMMON_DIR)/host.c \ +TMK_COMMON_SRC += $(COMMON_DIR)/host.c \ $(COMMON_DIR)/keyboard.c \ $(COMMON_DIR)/action.c \ $(COMMON_DIR)/action_tapping.c \ @@ -21,98 +21,89 @@ SRC += $(COMMON_DIR)/host.c \ $(PLATFORM_COMMON_DIR)/bootloader.c \ ifeq ($(PLATFORM),AVR) - SRC += $(PLATFORM_COMMON_DIR)/xprintf.S + TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/xprintf.S endif ifeq ($(PLATFORM),CHIBIOS) - SRC += $(PLATFORM_COMMON_DIR)/printf.c - SRC += $(PLATFORM_COMMON_DIR)/eeprom.c + TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/printf.c + TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/eeprom.c endif # Option modules ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) - OPT_DEFS += -DBOOTMAGIC_ENABLE - SRC += $(COMMON_DIR)/bootmagic.c + TMK_COMMON_DEFS += -DBOOTMAGIC_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/bootmagic.c else - OPT_DEFS += -DMAGIC_ENABLE - SRC += $(COMMON_DIR)/magic.c + TMK_COMMON_DEFS += -DMAGIC_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/magic.c endif ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) - SRC += $(COMMON_DIR)/mousekey.c - OPT_DEFS += -DMOUSEKEY_ENABLE - OPT_DEFS += -DMOUSE_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/mousekey.c + TMK_COMMON_DEFS += -DMOUSEKEY_ENABLE + TMK_COMMON_DEFS += -DMOUSE_ENABLE endif ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) - OPT_DEFS += -DEXTRAKEY_ENABLE + TMK_COMMON_DEFS += -DEXTRAKEY_ENABLE endif ifeq ($(strip $(CONSOLE_ENABLE)), yes) - OPT_DEFS += -DCONSOLE_ENABLE + TMK_COMMON_DEFS += -DCONSOLE_ENABLE else - OPT_DEFS += -DNO_PRINT - OPT_DEFS += -DNO_DEBUG + TMK_COMMON_DEFS += -DNO_PRINT + TMK_COMMON_DEFS += -DNO_DEBUG endif ifeq ($(strip $(COMMAND_ENABLE)), yes) - SRC += $(COMMON_DIR)/command.c - OPT_DEFS += -DCOMMAND_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/command.c + TMK_COMMON_DEFS += -DCOMMAND_ENABLE endif ifeq ($(strip $(NKRO_ENABLE)), yes) - OPT_DEFS += -DNKRO_ENABLE + TMK_COMMON_DEFS += -DNKRO_ENABLE endif ifeq ($(strip $(USB_6KRO_ENABLE)), yes) - OPT_DEFS += -DUSB_6KRO_ENABLE + TMK_COMMON_DEFS += -DUSB_6KRO_ENABLE endif ifeq ($(strip $(SLEEP_LED_ENABLE)), yes) - SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c - OPT_DEFS += -DSLEEP_LED_ENABLE - OPT_DEFS += -DNO_SUSPEND_POWER_DOWN + TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c + TMK_COMMON_DEFS += -DSLEEP_LED_ENABLE + TMK_COMMON_DEFS += -DNO_SUSPEND_POWER_DOWN endif ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) - SRC += $(COMMON_DIR)/backlight.c - OPT_DEFS += -DBACKLIGHT_ENABLE + TMK_COMMON_SRC += $(COMMON_DIR)/backlight.c + TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE endif ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) - OPT_DEFS += -DBLUETOOTH_ENABLE + TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE endif ifeq ($(strip $(ONEHAND_ENABLE)), yes) - OPT_DEFS += -DONEHAND_ENABLE + TMK_COMMON_DEFS += -DONEHAND_ENABLE endif ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes) - OPT_DEFS += -DKEYMAP_SECTION_ENABLE + TMK_COMMON_DEFS += -DKEYMAP_SECTION_ENABLE ifeq ($(strip $(MCU)),atmega32u2) - EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr35.x + TMK_COMMON_LDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr35.x else ifeq ($(strip $(MCU)),atmega32u4) - EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr5.x + TMK_COMMON_LDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr5.x else - EXTRALDFLAGS = $(error no ldscript for keymap section) + TMK_COMMON_LDFLAGS = $(error no ldscript for keymap section) endif 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 - - # Bootloader address ifdef STM32_BOOTLOADER_ADDRESS - OPT_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) + TMK_COMMON_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) endif # Search Path -- cgit v1.2.3-70-g09d2 From 42baa6cf43ab1da79887e74b9ad71379c13094f9 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 17:43:35 +0300 Subject: Disable map file creation when building tests It causes strange linker warnings on cygwin. --- build_test.mk | 1 + tmk_core/rules.mk | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'tmk_core') diff --git a/build_test.mk b/build_test.mk index 9f5d6e0af..ee15a4572 100644 --- a/build_test.mk +++ b/build_test.mk @@ -31,6 +31,7 @@ $(GTEST_OUTPUT)_DEFS := $(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC) LDFLAGS += -lstdc++ -lpthread -shared-libgcc +CREATE_MAP := no VPATH +=\ $(LIB_PATH)/googletest\ diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 317f55e08..695fe0bad 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -161,6 +161,7 @@ SCANF_LIB = MATH_LIB = -lm +CREATE_MAP ?= yes #---------------- Linker Options ---------------- @@ -171,7 +172,10 @@ MATH_LIB = -lm # Comennt out "--relax" option to avoid a error such: # (.vectors+0x30): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_12' # -LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref + +ifeq ($(CREATE_MAP),yes) + LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref +endif #LDFLAGS += -Wl,--relax LDFLAGS += $(EXTMEMOPTS) LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) -- cgit v1.2.3-70-g09d2 From 03b1d142f2df39a98fd8013f364580c8534d044c Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 27 Aug 2016 18:59:22 +0300 Subject: Add -p parameter to mkdir So that it's created even when there's a deeper structure --- tmk_core/rules.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tmk_core') diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 695fe0bad..79fc7119a 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -364,10 +364,10 @@ show_path: @echo OBJ=$(OBJ) # Create build directory -$(shell mkdir $(BUILD_DIR) 2>/dev/null) +$(shell mkdir -p $(BUILD_DIR) 2>/dev/null) # Create object files directory -$(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir $(OUTPUT) 2>/dev/null))) +$(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir -p $(OUTPUT) 2>/dev/null))) # Include the dependency files. -include $(patsubst %.o,%.d,$(OBJ)) -- cgit v1.2.3-70-g09d2