1 # override with `make BUILD=release`
2 # default to debug build
5 # You must create the file "local.properties" on your local machine which contains any local paths, etc
6 # local_settings.mk should NOT be committed to repo
7 include ./local.properties
8 # GTEST_DIR contains the path to Google Test libs and must be defined in local.properties
10 # GTEST_DIR := /home/johndoe/utils/gtest-1.7.0
12 # NOTE: to run app, make sure that LD_LIBRARY_PATH env variable
13 # contains $(GTEST_DIR)/lib/.libs
24 #STACK_DIR := ../stack
26 CC_FLAGS.debug := -O0 -g3 -Wall -c -fmessage-length=0 -pedantic -std=c99 -fpic -D TB_LOG
27 CC_FLAGS.release := -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -fpic
28 CC_FLAGS := $(CC_FLAGS.$(BUILD))
30 CXX_FLAGS.debug := -O0 -g3 -Wall -c -fmessage-length=0 -pedantic -std=c++0x -fpic -D TB_LOG
31 CXX_FLAGS.release := -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -fpic
32 CXX_FLAGS := $(CXX_FLAGS.$(BUILD))
37 #INC += -I$(LOG_DIR)/include
38 #INC += -I$(STACK_DIR)/include
39 INC += -I$(GTEST_DIR)/include
42 # using make's computed variables to select object and bin folders
43 # depending on the build type
44 OBJ_DIR.debug := ./obj/debug
45 OBJ_DIR.release := ./obj/release
46 OBJ_DIR := $(OBJ_DIR.$(BUILD))
48 BIN_DIR.debug := ./bin/debug
49 BIN_DIR.release := ./bin/release
50 BIN_DIR := $(BIN_DIR.$(BUILD))
52 #C_FILES := $(wildcard $(LOG_DIR)/src/*.c)
53 #C_FILES += $(wildcard $(SRC_DIR)/*.c)
54 #CPP_FILES := $(wildcard $(SRC_DIR)/*.cpp)
55 CPP_FILES := $(wildcard $(TEST_DIR)/*.cpp)
56 #CPP_FILES += $(wildcard $(LOG_DIR)/src/*.c)
57 OBJ_FILES := $(addprefix $(OBJ_DIR)/,$(notdir $(CPP_FILES:.cpp=.o) $(C_FILES:.c=.o)))
58 H_FILES := $(wildcard $(TEST_DIR)/*.h)
59 #H_FILES += $(wildcard $(INC_DIR)/*.h)
60 #H_FILES += $(wildcard $(LOG_DIR)/include/*.h)
61 LD_FLAGS := -L/usr/lib
62 LD_FLAGS += -L$(GTEST_DIR)/lib/.libs
75 $(CXX) -o $@ $^ $(LD_FLAGS) $(LIBS)
77 mv ./$(PROG) ./$(BIN_DIR)
79 #$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h $(H_FILES)
80 # $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<
82 #$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(INC_DIR)/%.h $(H_FILES)
83 # $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<
85 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(INC_DIR)/%.h $(H_FILES)
87 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
89 $(OBJ_DIR)/%.o: $(LOG_DIR)/src/%.c $(LOG_DIR)/include/%.h $(H_FILES)
91 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
93 $(OBJ_DIR)/%.o: $(TEST_DIR)/%.cpp $(H_FILES)
95 $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<
100 rm -rf ./obj/release/*
103 rm -rf ./bin/release/*
110 @echo 'BUILD = '$(value BUILD)
111 @echo 'INC = '$(value INC)
112 @echo 'CPP_FILES = '$(value CPP_FILES)
113 @echo 'C_FILES = '$(value C_FILES)
114 @echo 'LIBS = '$(value LIBS)
115 @echo 'OBJ_FILES = '$(value OBJ_FILES)
116 @echo 'SRC_DIR = '$(value SRC_DIR)