summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorArseny Kapoulkine <arseny.kapoulkine@gmail.com>2014-02-09 21:56:30 +0000
committerArseny Kapoulkine <arseny.kapoulkine@gmail.com>2014-02-09 21:56:30 +0000
commit543fa8268d20c10d7208f62dc0be16a6dec487c9 (patch)
treea52210fbf933067498f9ba457f54e96f1c7e7152 /Makefile
parent7b41dce85e8f8788027672845fd2867dd9e2b27a (diff)
Add Makefile for building and running tests.
This expands and replaces the Travis-specific makefile by adding more options and correctly tracking header dependencies. Also add wchar_t mode test to Travis configuration. git-svn-id: http://pugixml.googlecode.com/svn/trunk@971 99668b35-9821-0410-8761-19e4c4f06640
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile40
1 files changed, 40 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..eddd4f2
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,40 @@
+config=debug
+defines=standard
+
+BUILD=build/make-$(CXX)-$(config)-$(defines)
+
+SOURCES=src/pugixml.cpp $(wildcard tests/*.cpp)
+EXECUTABLE=$(BUILD)/test
+
+CXXFLAGS=-c -g -Wall -Wextra -Werror -pedantic
+LDFLAGS=
+
+ifeq ($(config),release)
+ CXXFLAGS+=-O3 -DNDEBUG
+endif
+
+ifneq ($(defines),standard)
+ COMMA=,
+ CXXFLAGS+=-D $(subst $(COMMA), -D ,$(defines))
+endif
+
+OBJECTS=$(SOURCES:%=$(BUILD)/%.o)
+
+all: $(EXECUTABLE)
+
+test: $(EXECUTABLE)
+ ./$(EXECUTABLE)
+
+clean:
+ rm -rf $(BUILD)
+
+$(EXECUTABLE): $(OBJECTS)
+ $(CXX) $(OBJECTS) $(LDFLAGS) -o $@
+
+$(BUILD)/%.o: %
+ @mkdir -p $(dir $@)
+ $(CXX) $< $(CXXFLAGS) -MMD -MP -o $@
+
+-include $(OBJECTS:.o=.d)
+
+.PHONY: all test clean \ No newline at end of file