7f622251646a4d391936d23ab9d6e8940daf58ab
[platform/upstream/iotivity.git] / resource / csdk / connectivity / build / 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 # override with `make BUILD=debug`
22 # default to release build
23 # default to build for linux
24 BUILD = debug
25 PLATFORM = linux
26 TRANSPORT = ALL
27 OBJ_DIR = ./$(BUILD)
28 VERSION_MAJOR = 0
29 VERSION_MINOR = 1
30 VERSION_PATCH = 0
31
32 COMMON_MAKE = common.mk
33
34 include $(COMMON_MAKE)
35
36 #Modify below values to enable/disable the Adapter
37 #Suffix "NO_" to disable given adapter  
38 EDR = NO_EDR_ADAPTER
39 WIFI = WIFI_ADAPTER
40 LE = NO_LE_ADAPTER
41 ETHERNET = ETHERNET_ADAPTER
42
43 #Add Pre processor definitions
44 DEFINE_FLAG = -D$(EDR) -D$(LE) -D$(WIFI) -D$(ETHERNET)
45 #Add For memory checking
46 #DEBUG_FLAG = -DENABLE_MALLOC_DEBUG
47 #Add Debug flags here
48 DEBUG_FLAG += -DTB_LOG
49
50 ##
51 ##      definitions
52 ##
53 LIB_PREFIX                              = CA
54 ETHERNET_ADAPTER                = ethernet_adapter
55 WIFI_ADAPTER                    = wifi_adapter
56 BT_ADAPTER                              = bt_edr_adapter
57 BLE_ADAPTER                             = bt_le_adapter
58 ETHERNET_ADAPTER_PATH   = $(PROJECT_SRC_PATH)/$(ETHERNET_ADAPTER)/$(PLATFORM)
59 WIFI_ADAPTER_PATH               = $(PROJECT_SRC_PATH)/$(WIFI_ADAPTER)/$(PLATFORM)
60 BT_ADAPTER_PATH                 = $(PROJECT_SRC_PATH)/$(BT_ADAPTER)/$(PLATFORM)
61 BLE_ADAPTER_PATH                = $(PROJECT_SRC_PATH)/$(BLE_ADAPTER)/$(PLATFORM)
62 TARGET                                  = lib$(PROJECT_NAME).so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
63 TARGET_ALIAS                    = lib$(PROJECT_NAME).so
64
65 ##
66 ##      libcoap
67 ##
68 libcoap_build_dir = $(PROJECT_LIB_PATH)/libcoap-4.1.1
69
70 LDFLAGS:=-L$(libcoap_build_dir)
71 LDLIBS:=-lcoap
72
73 BUILD_FLAG.debug        = $(DEFINE_FLAG) $(DEBUG_FLAG) 
74 BUILD_FLAG.release      =       $(DEFINE_FLAG)
75 BUILD_FLAG = $(BUILD_FLAG.$(BUILD))
76
77 DEBUG_DIR = ./debug
78 RELEASE_DIR = ./release
79
80 ##
81 ##      file declaration
82 ##
83 COMPONENT_SRCS                  =  \
84 logger.c oic_malloc.c oic_logger.c oic_console_logger.c \
85 caconnectivitymanager.c caremotehandler.c cainterfacecontroller.c camessagehandler.c    \
86 canetworkconfigurator.c caedradapter.c caleadapter.c    \
87 caethernetadapter.c cawifiadapter.c \
88 caprotocolmessage.c cawificore.c caethernetcore.c\
89 caqueueingthread.c \
90 uqueue.c uarraylist.c umutex.c uthreadpool.c \
91
92 COMPONENT_OBJS                  = $(COMPONENT_SRCS:%.c=$(OBJ_DIR)/%.o)
93
94 ##
95 ##      compiler flags
96 ##
97 CFLAGS                          =       -g -c -Wall -fPIC `pkg-config --cflags glib-2.0`
98
99 LFLAGS                          =       -ldl -lpthread `pkg-config --libs glib-2.0`
100
101 IFLAGS                          =       -I$(PROJECT_COMMON_INC_PATH)    \
102                                                 -I$(PROJECT_API_PATH)   \
103                                                 -I$(PROJECT_INC_PATH)   \
104                                                 -I$(ETHERNET_ADAPTER_PATH)      \
105                                                 -I$(WIFI_ADAPTER_PATH)  \
106                                                 -I$(BT_ADAPTER_PATH)    \
107                                                 -I$(BLE_ADAPTER_PATH)   \
108                         -I$(libcoap_build_dir)
109
110 DFLAGS                          = -D__LINUX__           \
111                       -DWITH_POSIX              \
112                       $(BUILD_FLAG)\
113 ##
114 ##      compile and link rules
115 ##
116 vpath %.c $(PROJECT_COMMON_SRC_PATH)
117 vpath %.c $(ETHERNET_ADAPTER_PATH)
118 vpath %.c $(WIFI_ADAPTER_PATH)
119 vpath %.c $(BT_ADAPTER_PATH)
120 vpath %.c $(BLE_ADAPTER_PATH)
121 vpath %.c $(PROJECT_SRC_PATH)
122
123 $(OBJ_DIR)/%.o: %.c
124         $(MAKE_OBJ_PATH)
125         $(CC) -o $@ $(CFLAGS) $(DFLAGS) $(IFLAGS) $<
126
127 all : $(TARGET)
128         @echo   " "
129         @echo   "======================"
130         @echo   "       Success!!"
131         @echo   "======================"
132
133 $(TARGET) : $(COMPONENT_OBJS)
134         cd $(libcoap_build_dir); $(MAKE)
135         @$(MAKE_PROJECT_OUT_PATH)
136         @$(CC) -shared -Wl,-soname,$(TARGET) -o $@ $(COMPONENT_OBJS) $(LFLAGS) $(LDFLAGS) $(LDLIBS) 
137         @$(MV) $(TARGET) $(PROJECT_OUT_PATH)/.
138         @$(CD) $(PROJECT_OUT_PATH); $(MAKE_TARGET_ALIAS)
139  
140 clean : 
141         cd $(libcoap_build_dir) && make clean
142         @$(RM) $(DEBUG_DIR) $(RELEASE_DIR)\
143                         $(PROJECT_OUT_PATH)
144
145 install :
146         @$(MAKE_PROJECT_OUT_PATH)
147
148 ##
149 ##      macros
150 ##
151 define MAKE_OBJ_PATH
152         @if [ ! -d $(OBJ_DIR) ]; then \
153         mkdir $(OBJ_DIR); \
154         fi
155 endef
156
157 define MAKE_TARGET_ALIAS
158         if [ ! -f $(TARGET_ALIAS) ]; then \
159         $(LN) -s $(TARGET) $(TARGET_ALIAS); \
160         fi
161 endef
162
163 .PHONY: all clean install
164
165