Initial merge-commit of the OIC code. Should successfully do discovery for single...
[platform/upstream/iotivity.git] / csdk / stack / makefile
1 # override with `make BUILD=release`
2 # default to debug build
3 BUILD := debug
4
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
9 #  Example:
10 #  GTEST_DIR := /home/johndoe/utils/gtest-1.7.0
11
12 # NOTE:  to run app, make sure that LD_LIBRARY_PATH env variable
13 #        contains $(GTEST_DIR)/lib/.libs
14                                 
15 CC := gcc
16 CXX     := g++
17
18 PROG := stacktest
19
20 SRC_DIR := ./src
21 TEST_DIR:= ./test
22 INC_DIR := ./include
23 LOG_DIR := ../logger
24 SOCKET_DIR := ../ocsocket
25 COAP_DIR := ../occoap
26 RANDOM_DIR := ../ocrandom
27 LIBCOAP_DIR := ../libcoap-4.1.1
28 UTIL_DIR := ../../../../ccf-utilities/tb
29 JSON_DIR := $(UTIL_DIR)/cJSON
30
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))
35
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))
39
40 INC     := -I$(SRC_DIR)  
41 INC += -I$(SOCKET_DIR)/include
42 INC += -I$(TEST_DIR)
43 INC += -I$(INC_DIR)
44 INC += -I$(INC_DIR)/internal
45 INC += -I$(LOG_DIR)/include
46 INC += -I$(COAP_DIR)/include
47 INC += -I$(RANDOM_DIR)/include
48 INC += -I$(JSON_DIR)
49 INC += -I$(LIBCOAP_DIR)
50 INC += -I$(GTEST_DIR)/include
51
52
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))
58
59 BIN_DIR.debug := ./bin/debug
60 BIN_DIR.release := ./bin/release
61 BIN_DIR := $(BIN_DIR.$(BUILD))
62
63 C_FILES := $(wildcard $(SRC_DIR)/*.c)
64 C_FILES += $(wildcard $(COAP_DIR)/src/*.c)
65 C_FILES += $(wildcard $(JSON_DIR)/*.c)
66
67 CPP_FILES := $(wildcard $(TEST_DIR)/*.cpp)
68
69 OBJ_FILES := $(addprefix $(OBJ_DIR)/,$(notdir $(CPP_FILES:.cpp=.o) $(C_FILES:.c=.o)))
70
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)
77
78 #H_FILES += $(wildcard $(LIBCOAP_DIR)/*.h)
79 LD_FLAGS := -L/usr/lib
80 LD_FLAGS += -L$(GTEST_DIR)/lib/.libs
81
82
83 LIBS := -lpthread
84 LIBS += -lgtest
85 LIBS += -lgtest_main
86
87 DEP_LIBS := $(LIBCOAP_DIR)/libcoap.a
88
89 all: $(PROG)
90         mkdir -p ./$(OBJ_DIR)
91         mkdir -p ./$(BIN_DIR)
92         
93 $(PROG): $(OBJ_FILES)
94         $(CXX) -o $@ $^ $(LD_FLAGS) $(LIBS) $(DEP_LIBS)
95         mkdir -p ./$(BIN_DIR)
96         mv ./$(PROG) ./$(BIN_DIR)
97
98 #$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h $(H_FILES)
99 #       $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<
100
101 #$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(INC_DIR)/%.h $(H_FILES)
102 #       $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<
103
104 # ocstack
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 $@ $<    
109
110 # occlientcb
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 $@ $<    
115                 
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 $@ $<    
120                 
121 # logger                
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 $@ $<
126         
127 # occoap        
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 $@ $<    
132
133 # ocsocket      
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 $@ $<    
138
139 # util/json
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 $@ $<    
144
145 # libcoap
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 $@ $<    
150
151 $(OBJ_DIR)/%.o: $(TEST_DIR)/%.cpp $(H_FILES)
152         mkdir -p ./$(OBJ_DIR)
153         $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $<  
154         
155 .PHONY: clean
156 clean :
157         rm -rf ./obj/debug/*
158         rm -rf ./obj/release/*
159         rm -rf ./lib/*
160         rm -rf ./bin/debug/*
161         rm -rf ./bin/release/*
162
163
164 .PHONY: print_vars
165
166 print_vars:
167         @echo ""
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)
176         
177