68f3ad6992c6a27ef05ef87c1462d8d186851843
[platform/upstream/iotivity.git] / resource / csdk / connectivity / samples / linux / Makefile
1 #/******************************************************************
2 # *
3 # * Copyright 2014 Samsung Electronics All Rights Reserved.
4 # *
5 # *
6 # *
7 # * Licensed under the Apache License, Version 2.0 (the "License");
8 # * you may not use this file except in compliance with the License.
9 # * You may obtain a copy of the License at
10 # *
11 # *      http://www.apache.org/licenses/LICENSE-2.0
12 # *
13 # * Unless required by applicable law or agreed to in writing, software
14 # * distributed under the License is distributed on an "AS IS" BASIS,
15 # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # * See the License for the specific language governing permissions and
17 # * limitations under the License.
18 # *
19 #******************************************************************/
20
21 ##
22 ##      Definitions
23 ##
24 SHELL                                           = /bin/bash
25 PROJECT_NAME                            = connectivity_abstraction
26 PROJECT_ROOT_PATH                       = ../..
27 PROJECT_API_PATH                        = $(PROJECT_ROOT_PATH)/api
28 PROJECT_INC_PATH                        = $(PROJECT_ROOT_PATH)/inc
29 PROJECT_SRC_PATH                        = $(PROJECT_ROOT_PATH)/src
30 PROJECT_COMMON_PATH             = $(PROJECT_ROOT_PATH)/common
31 PROJECT_SEC_PATH                        = $(PROJECT_ROOT_PATH)/../stack/include
32 PROJECT_OUT_PATH                        = $(PROJECT_ROOT_PATH)/build/out
33 COMPONENT_OUT_PATH              = ./out
34 COMPONENT_OBJ_PATH              = ./.objs
35
36 TARGET  = sample_main
37
38 ##
39 ##      Commands
40 ##
41 CC                      = gcc
42 CXX                     = g++
43 RM                      = rm -rf
44 CP                      = cp
45 MV                      = mv
46 AR                      = ar
47 LD                      = ld
48 LN                      = ln
49 CD                      = cd
50 RANLIB          = ranlib
51
52 ##
53 ##      file declaration
54 ##
55 COMPONENT_SRCS                  =  sample_main.c        \
56
57 COMPONENT_OBJS                  = $(COMPONENT_SRCS:%.c=$(COMPONENT_OBJ_PATH)/%.o)
58
59 ##
60 ##      compiler flags
61 ##
62 LIBS                            = -lconnectivity_abstraction -L$(PROJECT_OUT_PATH)
63
64 CFLAGS                          = -g -c -Wall -fPIC
65
66 LFLAGS                          = -ldl -lpthread
67
68 IFLAGS                          = -I$(PROJECT_API_PATH) -I$(PROJECT_SEC_PATH)
69
70 DFLAGS                          = -DLINUX -DTB_LOG
71
72 ##
73 ##      compile and link rules
74 ##
75 vpath %.c ./
76
77 $(COMPONENT_OBJ_PATH)/%.o: %.c
78         @$(MAKE_OBJ_PATH)
79         $(CC) -o $@ $(CFLAGS) $(DFLAGS) $(IFLAGS) $<
80
81 all : $(TARGET)
82         @echo   " "
83         @echo   "======================"
84         @echo   "       Success!!"
85         @echo   "======================"
86
87 $(TARGET) : $(COMPONENT_OBJS)
88         @$(MAKE_COMPONENT_OUT_PATH)
89         $(CC) -o $@ $(COMPONENT_OBJS) $(LIBS) $(LFLAGS)
90         @$(MV) $(TARGET) $(COMPONENT_OUT_PATH)/.
91
92 clean :
93         @$(RM) $(COMPONENT_OBJ_PATH) \
94                         $(COMPONENT_OUT_PATH)
95
96 install :
97         @$(MAKE_COMPONENT_OUT_PATH)
98         @$(CP) $(PROJECT_OUT_PATH)/* $(COMPONENT_OUT_PATH)/.
99
100 ##
101 ##      macros
102 ##
103 define MAKE_OBJ_PATH
104         @if [ ! -d $(COMPONENT_OBJ_PATH) ]; then \
105         mkdir $(COMPONENT_OBJ_PATH); \
106         fi
107 endef
108
109
110 ##
111 ##      macro
112 ##
113 define  MAKE_COMPONENT_OUT_PATH
114         @if     [ ! -d $(COMPONENT_OUT_PATH) ]; then    \
115         mkdir $(COMPONENT_OUT_PATH);    \
116         fi
117 endef
118
119 .PHONY: all clean install
120
121