1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# A sample Makefile for building Google Test and using it in user
2fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# tests.  Please tweak it to suit your environment and project.  You
3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# may want to move it to your project's root directory.
4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
5fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# SYNOPSIS:
6fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#   make [all]  - makes everything.
8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#   make TARGET - makes the given target.
9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#   make clean  - removes all files generated by make.
10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Please tweak the following variable definitions as needed by your
12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# project, except GTEST_HEADERS, which you can use in your own targets
13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# but shouldn't modify.
14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Points to the root of Google Test, relative to where this file is.
16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Remember to tweak this if you move this file.
17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleGTEST_DIR = ..
18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Where to find user code.
20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleUSER_DIR = ../samples
21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Flags passed to the preprocessor.
230ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff DavidsonCPPFLAGS += -I$(GTEST_DIR)/include
24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Flags passed to the C++ compiler.
26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleCXXFLAGS += -g -Wall -Wextra
27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# All tests produced by this Makefile.  Remember to add new tests you
29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# created to the list.
30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTESTS = sample1_unittest
31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# All Google Test headers.  Usually you shouldn't change this
33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# definition.
34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleGTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
35fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                $(GTEST_DIR)/include/gtest/internal/*.h
36fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
37fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# House-keeping build targets.
38fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
39fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleall : $(TESTS)
40fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
41fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclean :
42fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	rm -f $(TESTS) gtest.a gtest_main.a *.o
43fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
44fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Builds gtest.a and gtest_main.a.
45fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
46fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Usually you shouldn't tweak such internal variables, indicated by a
47fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# trailing _.
48fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleGTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
49fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# For simplicity and to avoid depending on Google Test's
51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# implementation details, the dependencies specified below are
52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# conservative and not optimized.  This is fine as Google Test
53fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# compiles fast and for ordinary users its source rarely changes.
54fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillegtest-all.o : $(GTEST_SRCS_)
550ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson	$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
560ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson            $(GTEST_DIR)/src/gtest-all.cc
57fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
58fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillegtest_main.o : $(GTEST_SRCS_)
590ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson	$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
600ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson            $(GTEST_DIR)/src/gtest_main.cc
61fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
62fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillegtest.a : gtest-all.o
63fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$(AR) $(ARFLAGS) $@ $^
64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillegtest_main.a : gtest-all.o gtest_main.o
66fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$(AR) $(ARFLAGS) $@ $^
67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
68fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Builds a sample test.  A test should link with either gtest.a or
69fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# gtest_main.a, depending on whether it defines its own main()
70fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# function.
71fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
72fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesample1.o : $(USER_DIR)/sample1.cc $(USER_DIR)/sample1.h $(GTEST_HEADERS)
73fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1.cc
74fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
75fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesample1_unittest.o : $(USER_DIR)/sample1_unittest.cc \
76fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                     $(USER_DIR)/sample1.h $(GTEST_HEADERS)
77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1_unittest.cc
78fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
79fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesample1_unittest : sample1.o sample1_unittest.o gtest_main.a
800ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
81