aboutsummaryrefslogtreecommitdiffstats
path: root/json/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'json/makefile')
-rw-r--r--json/makefile71
1 files changed, 71 insertions, 0 deletions
diff --git a/json/makefile b/json/makefile
new file mode 100644
index 0000000..3e114ca
--- /dev/null
+++ b/json/makefile
@@ -0,0 +1,71 @@
+
+#############################################################VARS#############################################################
+CXX?=clang++
+LLVM_CONF?=llvm-config
+BUILD_MODE?=COV_NO_CLANG
+CXX_FLAGS=$(shell $(LLVM_CONF) --cxxflags)
+
+ifeq ($(BUILD_MODE), COV_USE)
+ifneq ($(CXX), clang++)
+$(error This build mode is only useable with clang++.)
+endif
+EXTRA_CXX_FALGS=-I$(shell $(LLVM_CONF) --src-root)/tools/clang/include -I$(shell $(LLVM_CONF) --obj-root)/tools/clang/include\
+ -std=c++11 -stdlib=libstdc++ -UNDEBUG -fprofile-instr-use=code.profdata -fexceptions
+EXTRA_LD_FLAGS=-v tinyxml2/tinyxml2.o -fprofile-instr-use=code.profdata
+endif
+
+ifeq ($(BUILD_MODE), COV_GEN)
+ifneq ($(CXX), clang++)
+$(error This build mode is only useable with clang++.)
+endif
+EXTRA_CXX_FALGS=-I$(shell $(LLVM_CONF) --src-root)/tools/clang/include -I$(shell $(LLVM_CONF) --obj-root)/tools/clang/include\
+ -std=c++11 -stdlib=libstdc++ -UNDEBUG -fprofile-instr-generate -fexceptions
+EXTRA_LD_FLAGS=-v tinyxml2/tinyxml2.o -fprofile-instr-generate
+endif
+
+#for gcov compatibility
+ifeq ($(BUILD_MODE), COV_GNU)
+ifneq ($(CXX), clang++)
+$(error This build mode is only useable with clang++.)
+endif
+EXTRA_CXX_FALGS=-I$(shell $(LLVM_CONF) --src-root)/tools/clang/include -I$(shell $(LLVM_CONF) --obj-root)/tools/clang/include\
+ -std=c++11 -stdlib=libstdc++ -UNDEBUG -fprofile-arcs -ftest-coverage -fexceptions
+EXTRA_LD_FLAGS=-v tinyxml2/tinyxml2.o -fprofile-arcs -ftest-coverage
+endif
+
+ifeq ($(BUILD_MODE), COV_NO_CLANG)
+EXTRA_CXX_FALGS=-I$(shell $(LLVM_CONF) --src-root)/tools/clang/include -I$(shell $(LLVM_CONF) --obj-root)/tools/clang/include\
+ -std=c++11 -stdlib=libstdc++ -UNDEBUG -fexceptions
+EXTRA_LD_FLAGS=-v tinyxml2/tinyxml2.o
+endif
+
+ifeq ($(BUILD_MODE), COV_NO_CLANG_1Z)
+ifeq ($(CXX), g++)
+$(error This build mode is only useable with clang++.)
+endif
+EXTRA_CXX_FALGS=-I$(shell $(LLVM_CONF) --src-root)/tools/clang/include -I$(shell $(LLVM_CONF) --obj-root)/tools/clang/include\
+ -std=c++1z -stdlib=libstdc++ -UNDEBUG -fexceptions
+EXTRA_LD_FLAGS=-v tinyxml2/tinyxml2.o
+endif
+
+ifeq ($(BUILD_MODE), GNU_MODE)
+ifneq ($(CXX), g++)
+$(error This build mode is only useable with g++.)
+endif
+EXTRA_CXX_FALGS=-I$(shell $(LLVM_CONF) --src-root)/tools/clang/include -I$(shell $(LLVM_CONF) --obj-root)/tools/clang/include\
+ -std=c++11 -stdlib=libstdc++ -UNDEBUG -fexceptions
+EXTRA_LD_FLAGS=-v tinyxml2/tinyxml2.o
+endif
+
+CXX_FLAGS+=$(EXTRA_CXX_FALGS)
+
+###########################################################RULES##############################################################
+.DEFAULT: json
+
+.PHONY: json
+
+json.o: json.hpp
+ $(CXX) $(CXX_FLAGS) -c $< -o $@
+
+clean:
+ rm -f *.o \ No newline at end of file