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.properties 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 SOCKET_DIR := ../ocsocket
26 RANDOM_DIR := ../ocrandom
27 LIBCOAP_DIR := ../libcoap-4.1.1
28 UTIL_DIR := ../../../../ccf-utilities/tb
29 JSON_DIR := $(UTIL_DIR)/cJSON
31 CC_FLAGS.debug := -O0 -g3 -Wall -c -fmessage-length=0 -pedantic -std=c99 -fpic -Wno-write-strings -ffunction-sections -fdata-sections -fno-exceptions -DTB_LOG -DWITH_POSIX -D__USE_MISC
32 #CC_FLAGS.debug := -O0 -g3 -Wall -c -fmessage-length=0 -pedantic -std=c99 -fpic -D TB_LOG -D WITH_POSIX -D __USE_MISC
33 CC_FLAGS.release := -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -fpic
34 CC_FLAGS := $(CC_FLAGS.$(BUILD))
36 CXX_FLAGS.debug := -O0 -g3 -Wall -c -fmessage-length=0 -pedantic -std=c++0x -fpic -DTB_LOG
37 CXX_FLAGS.release := -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -fpic
38 CXX_FLAGS := $(CXX_FLAGS.$(BUILD))
41 INC += -I$(SOCKET_DIR)/include
44 INC += -I$(INC_DIR)/internal
45 INC += -I$(LOG_DIR)/include
46 INC += -I$(COAP_DIR)/include
47 INC += -I$(RANDOM_DIR)/include
49 INC += -I$(LIBCOAP_DIR)
50 INC += -I$(GTEST_DIR)/include
53 # using make's computed variables to select object and bin folders
54 # depending on the build type
55 OBJ_DIR.debug := ./obj/debug
56 OBJ_DIR.release := ./obj/release
57 OBJ_DIR := $(OBJ_DIR.$(BUILD))
59 BIN_DIR.debug := ./bin/debug
60 BIN_DIR.release := ./bin/release
61 BIN_DIR := $(BIN_DIR.$(BUILD))
63 C_FILES := $(wildcard $(SRC_DIR)/*.c)
64 C_FILES += $(wildcard $(COAP_DIR)/src/*.c)
65 C_FILES += $(wildcard $(JSON_DIR)/*.c)
67 CPP_FILES := $(wildcard $(TEST_DIR)/*.cpp)
69 OBJ_FILES := $(addprefix $(OBJ_DIR)/,$(notdir $(CPP_FILES:.cpp=.o) $(C_FILES:.c=.o)))
71 H_FILES := $(wildcard $(TEST_DIR)/*.h)
72 H_FILES += $(wildcard $(SOCKET_DIR)/include/*.h)
73 H_FILES += $(wildcard $(INC_DIR)/*.h)
74 H_FILES += $(wildcard $(INC_DIR)/internal/*.h)
75 H_FILES += $(wildcard $(LOG_DIR)/include/*.h)
76 H_FILES += $(wildcard $(COAP_DIR)/include/*.h)
78 #H_FILES += $(wildcard $(LIBCOAP_DIR)/*.h)
79 LD_FLAGS := -L/usr/lib
80 LD_FLAGS += -L$(GTEST_DIR)/lib/.libs
87 DEP_LIBS := $(LIBCOAP_DIR)/libcoap.a
94 $(CXX) -o $@ $^ $(LD_FLAGS) $(LIBS) $(DEP_LIBS)
96 mv ./$(PROG) ./$(BIN_DIR)
98 #$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h $(H_FILES)
99 # $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<
101 #$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(INC_DIR)/%.h $(H_FILES)
102 # $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<
105 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(INC_DIR)/%.h $(H_FILES)
106 echo "** Building ocstack"
107 mkdir -p ./$(OBJ_DIR)
108 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
111 $(OBJ_DIR)/occlientcb.o: $(SRC_DIR)/occlientcb.c $(H_FILES)
112 echo "** Building ocstack"
113 mkdir -p ./$(OBJ_DIR)
114 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
116 $(OBJ_DIR)/ocserverrequest.o: $(SRC_DIR)/ocserverrequest.c $(H_FILES)
117 echo "** Building ocstack"
118 mkdir -p ./$(OBJ_DIR)
119 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
122 $(OBJ_DIR)/%.o: $(LOG_DIR)/src/%.c $(LOG_DIR)/include/%.h $(H_FILES)
123 echo "** Building logger"
124 mkdir -p ./$(OBJ_DIR)
125 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
128 $(OBJ_DIR)/%.o: $(COAP_DIR)/src/%.c $(COAP_DIR)/include/%.h $(H_FILES)
129 echo "** Building occoap"
130 mkdir -p ./$(OBJ_DIR)
131 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
134 $(OBJ_DIR)/%.o: $(SOCKET_DIR)/src/%.c $(SOCKET_DIR)/include/%.h $(H_FILES)
135 echo "** Building ocsocket"
136 mkdir -p ./$(OBJ_DIR)
137 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
140 $(OBJ_DIR)/%.o: $(JSON_DIR)/%.c $(JSON_DIR)/%.h $(H_FILES)
141 echo "** Building util/json"
142 mkdir -p ./$(OBJ_DIR)
143 $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
146 #$(OBJ_DIR)/%.o: $(LIBCOAP_DIR)/%.c $(LIBCOAP_DIR)/%.h $(H_FILES)
147 # echo "** Building libcoap"
148 # mkdir -p ./$(OBJ_DIR)
149 # $(CC) $(CC_FLAGS) $(INC) -c -o $@ $<
151 $(OBJ_DIR)/%.o: $(TEST_DIR)/%.cpp $(H_FILES)
152 mkdir -p ./$(OBJ_DIR)
153 $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<
158 rm -rf ./obj/release/*
161 rm -rf ./bin/release/*
168 @echo 'BUILD = '$(value BUILD)
169 @echo 'INC = '$(value INC)
170 @echo 'CPP_FILES = '$(value CPP_FILES)
171 @echo 'C_FILES = '$(value C_FILES)
172 @echo 'LIBS = '$(value LIBS)
173 @echo 'OBJ_FILES = '$(value OBJ_FILES)
174 @echo 'SRC_DIR = '$(value SRC_DIR)
175 @echo 'H_FILES = '$(value H_FILES)