aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2016-08-22 09:16:08 +0300
committerFred Sundvik <fsundvik@gmail.com>2016-08-27 21:57:49 +0300
commit8a9aac6e3237a505682cc7249a8dfff6cb964343 (patch)
treeae1882bcf8e8f9a9f81e792d3ffcb9bd4dfb49f3
parent27a673f5cf75747fe73641059aae60e9b53a1c78 (diff)
downloadqmk_firmware-8a9aac6e3237a505682cc7249a8dfff6cb964343.tar.gz
qmk_firmware-8a9aac6e3237a505682cc7249a8dfff6cb964343.zip
Rules for compiling and linking google test
-rw-r--r--build_keyboard.mk8
-rw-r--r--build_test.mk42
-rw-r--r--tmk_core/native.mk24
-rw-r--r--tmk_core/rules.mk19
4 files changed, 81 insertions, 12 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk
index bbe571845..869d672b0 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -204,6 +204,14 @@ $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS)
204$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) 204$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC)
205$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) 205$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
206 206
207# Default target.
208all: build sizeafter
209
210# Change the build target to build a HEX file or a library.
211build: elf hex
212#build: elf hex eep lss sym
213#build: lib
214
207 215
208include $(TMK_PATH)/rules.mk 216include $(TMK_PATH)/rules.mk
209 217
diff --git a/build_test.mk b/build_test.mk
index 37ed8b568..dac59a8f4 100644
--- a/build_test.mk
+++ b/build_test.mk
@@ -1,5 +1,43 @@
1ifndef VERBOSE
2.SILENT:
3endif
4
5.DEFAULT_GOAL := all
6
1include common.mk 7include common.mk
2 8
9TARGET=test/$(TEST)
10
11GTEST_OUTPUT = $(BUILD_DIR)/gtest
12
13OUTPUTS := $(GTEST_OUTPUT)
14
15GTEST_INC := \
16 $(LIB_PATH)/googletest/googletest/include\
17 $(LIB_PATH)/googletest/googlemock/include\
18
19GTEST_INTERNAL_INC :=\
20 $(LIB_PATH)/googletest/googletest\
21 $(LIB_PATH)/googletest/googlemock
22
23$(GTEST_OUTPUT)_SRC :=\
24 googletest/src/gtest-all.cc\
25 googletest/src/gtest_main.cc\
26 googlemock/src/gmock-all.cc
27
28$(GTEST_OUTPUT)_DEFS :=
29$(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC)
30
31LDFLAGS += -lstdc++ -lpthread -shared-libgcc
32
33VPATH +=\
34 $(LIB_PATH)/googletest\
35 $(LIB_PATH)/googlemock
36
37all: elf
38
39include $(TMK_PATH)/native.mk
40include $(TMK_PATH)/rules.mk
41
42$(shell mkdir $(BUILD_DIR)/test 2>/dev/null)
3 43
4all:
5 echo Done $(TEST) \ No newline at end of file
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 @@
1CC = gcc
2OBJCOPY =
3OBJDUMP =
4SIZE =
5AR =
6NM =
7HEX =
8EEP =
9BIN =
10
11
12COMPILEFLAGS += -funsigned-char
13COMPILEFLAGS += -funsigned-bitfields
14COMPILEFLAGS += -ffunction-sections
15COMPILEFLAGS += -fdata-sections
16COMPILEFLAGS += -fshort-enums
17
18CFLAGS += $(COMPILEFLAGS)
19CFLAGS += -fno-inline-small-functions
20CFLAGS += -fno-strict-aliasing
21
22CPPFLAGS += $(COMPILEFLAGS)
23CPPFLAGS += -fno-exceptions
24CPPFLAGS += -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)
21vpath %.c $(VPATH_SRC) 21vpath %.c $(VPATH_SRC)
22vpath %.h $(VPATH_SRC) 22vpath %.h $(VPATH_SRC)
23vpath %.cpp $(VPATH_SRC) 23vpath %.cpp $(VPATH_SRC)
24vpath %.cc $(VPATH_SRC)
24vpath %.hpp $(VPATH_SRC) 25vpath %.hpp $(VPATH_SRC)
25vpath %.S $(VPATH_SRC) 26vpath %.S $(VPATH_SRC)
26VPATH := 27VPATH :=
27 28
28# Convert all SRC to OBJ 29# Convert all SRC to OBJ
29define OBJ_FROM_SRC 30define OBJ_FROM_SRC
30$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC)))) 31$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC)))))
31endef 32endef
32$(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT)))) 33$(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT))))
33 34
@@ -202,14 +203,6 @@ ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS)
202 203
203MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@) 204MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@)
204 205
205# Default target.
206all: build sizeafter
207
208# Change the build target to build a HEX file or a library.
209build: elf hex
210#build: elf hex eep lss sym
211#build: lib
212
213 206
214elf: $(BUILD_DIR)/$(TARGET).elf 207elf: $(BUILD_DIR)/$(TARGET).elf
215hex: $(BUILD_DIR)/$(TARGET).hex 208hex: $(BUILD_DIR)/$(TARGET).hex
@@ -305,7 +298,13 @@ $1/%.o : %.cpp $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN)
305 @mkdir -p $$(@D) 298 @mkdir -p $$(@D)
306 @$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) 299 @$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD)
307 $$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) 300 $$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
308 @$(BUILD_CMD) 301 @$$(BUILD_CMD)
302
303$1/%.o : %.cc $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN)
304 @mkdir -p $$(@D)
305 @$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD)
306 $$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
307 @$$(BUILD_CMD)
309 308
310# Assemble: create object files from assembler source files. 309# Assemble: create object files from assembler source files.
311$1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN) 310$1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN)