c7f401e6242f692ca76bfd20c1ca7cf314cd9e10
[platform/upstream/iotivity.git] / csdk / stack / samples / SimpleClientServer / makefile
1 # override with `make BUILD=release`
2 # default to debug build
3 BUILD    := release
4 PLATFORM := linux
5 CC       := g++
6 OUT_DIR   := $(PWD)/$(BUILD)
7 OBJ_DIR   := $(OUT_DIR)/obj
8
9 ifeq ($(ROOT_DIR), )
10 ROOT_DIR        = $(PWD)/../../..
11 endif
12
13 OUT_DIR = $(PWD)
14
15 OCLOGGER_DIR    = $(ROOT_DIR)/logger
16 OCRANDOM_DIR    = $(ROOT_DIR)/ocrandom
17 OCSOCKET_DIR    = $(ROOT_DIR)/ocsocket
18 LCOAP_DIR               = $(ROOT_DIR)/libcoap-4.1.1
19 OCCOAP_DIR              = $(ROOT_DIR)/occoap
20 OCTBSTACK_DIR   = $(ROOT_DIR)/stack
21
22 OCLOGGER_INC    = $(OCLOGGER_DIR)/include
23 OCRANDOM_INC    = $(OCRANDOM_DIR)/include
24 OCSOCKET_INC    = $(OCSOCKET_DIR)/include
25 LCOAP_INC               = $(LCOAP_DIR)
26 OCCOAP_INC              = $(OCCOAP_DIR)/include
27 OCTBSTACK_INC   = $(OCTBSTACK_DIR)/include
28
29 INC_DIRS        := -I$(OCLOGGER_INC)
30 INC_DIRS        += -I$(OCRANDOM_INC)
31 INC_DIRS        += -I$(OCSOCKET_INC)
32 INC_DIRS        += -I$(LCOAP_INC)
33 INC_DIRS        += -I$(OCCOAP_INC)
34 INC_DIRS        += -I$(OCTBSTACK_INC)
35
36 CC_FLAGS.debug      := -O0 -g3 -Wall -ffunction-sections -fdata-sections -fno-exceptions \
37                         -std=c++0x -pedantic $(INC_DIRS) -L$(ROOT_DIR)/$(BUILD) -DTB_LOG
38 CC_FLAGS.release    := -Os -Wall -fdata-sections -Wl,--gc-sections -Wl,-s -fno-exceptions \
39                         -std=c++0x $(INC_DIRS) -L$(ROOT_DIR)/$(BUILD) -DTB_LOG
40                                         
41 LDLIBS          += -loctbstack -lpthread
42 CPPFLAGS        += $(CC_FLAGS.$(BUILD)) $(LDLIBS)
43
44 SOURCES     := occlient.cpp ocserver.cpp common.cpp
45
46 OBJECTS:= $(patsubst %.c, $(OBJ_DIR)/%.o, $(SOURCES))
47
48 PROGRAMS        += ocserver
49 PROGRAMS        += occlient
50
51 all:    prep_dirs $(OBJECTS) $(PROGRAMS) 
52
53 prep_dirs:
54         -mkdir -p $(OUT_DIR)
55         -mkdir -p $(OBJ_DIR)
56
57 $(OBJ_DIR)/%.o: %.cpp
58         $(CC) -c $(CPPFLAGS) $< -o $@
59
60 ocserver: $(OBJ_DIR)/ocserver.o $(OBJ_DIR)/common.o
61         $(CC) $^ $(CPPFLAGS) -o $(OUT_DIR)/$(BUILD)/$@
62
63 occlient: $(OBJ_DIR)/occlient.o $(OBJ_DIR)/common.o
64         $(CC) $^ $(CPPFLAGS) -o $(OUT_DIR)/$(BUILD)/$@
65
66 .PHONY: clean
67
68 clean: legacy_clean
69         -rm -rf release
70         -rm -rf debug
71
72 legacy_clean:
73         rm -f *.o $(PROGRAMS)