Makefile revision fbaaef999ba563838ebd00874ed8a1c01fbf286d
1# A Makefile for fusing Google Test and building a sample test against it.
2#
3# SYNOPSIS:
4#
5#   make [all]  - makes everything.
6#   make TARGET - makes the given target.
7#   make check  - makes everything and runs the built sample test.
8#   make clean  - removes all files generated by make.
9
10# Points to the root of fused Google Test, relative to where this file is.
11FUSED_GTEST_DIR = output
12
13# Paths to the fused gtest files.
14FUSED_GTEST_H = $(FUSED_GTEST_DIR)/gtest/gtest.h
15FUSED_GTEST_ALL_CC = $(FUSED_GTEST_DIR)/gtest/gtest-all.cc
16
17# Where to find the sample test.
18SAMPLE_DIR = ../../samples
19
20# Where to find gtest_main.cc.
21GTEST_MAIN_CC = ../../src/gtest_main.cc
22
23# Flags passed to the preprocessor.
24CPPFLAGS += -I$(FUSED_GTEST_DIR)
25
26# Flags passed to the C++ compiler.
27CXXFLAGS += -g
28
29all : sample1_unittest
30
31check : all
32	./sample1_unittest
33
34clean :
35	rm -rf $(FUSED_GTEST_DIR) sample1_unittest *.o
36
37$(FUSED_GTEST_H) :
38	../fuse_gtest_files.py $(FUSED_GTEST_DIR)
39
40$(FUSED_GTEST_ALL_CC) :
41	../fuse_gtest_files.py $(FUSED_GTEST_DIR)
42
43gtest-all.o : $(FUSED_GTEST_H) $(FUSED_GTEST_ALL_CC)
44	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(FUSED_GTEST_DIR)/gtest/gtest-all.cc
45
46gtest_main.o : $(FUSED_GTEST_H) $(GTEST_MAIN_CC)
47	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GTEST_MAIN_CC)
48
49sample1.o : $(SAMPLE_DIR)/sample1.cc $(SAMPLE_DIR)/sample1.h
50	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SAMPLE_DIR)/sample1.cc
51
52sample1_unittest.o : $(SAMPLE_DIR)/sample1_unittest.cc \
53                     $(SAMPLE_DIR)/sample1.h $(FUSED_GTEST_H)
54	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SAMPLE_DIR)/sample1_unittest.cc
55
56sample1_unittest : sample1.o sample1_unittest.o gtest-all.o gtest_main.o
57	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@
58