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