Replace glib threadpool usage with a 'dumb' thread implementation.
[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 DTLS = 0
28 OBJ_DIR = ./$(BUILD)
29 VERSION_MAJOR = 0
30 VERSION_MINOR = 1
31 VERSION_PATCH = 0
32
33 COMMON_MAKE = common.mk
34
35 include $(COMMON_MAKE)
36
37 #Modify below values to enable/disable the Adapter
38 #Suffix "NO_" to disable given adapter
39 EDR = NO_EDR_ADAPTER
40 WIFI = WIFI_ADAPTER
41 LE = NO_LE_ADAPTER
42 ETHERNET = ETHERNET_ADAPTER
43
44 #Add Pre processor definitions
45
46 DEFINE_FLAG = -D$(EDR) -D$(LE) -D$(WIFI) -D$(ETHERNET)
47 ifeq ($(DTLS),1)
48 DEFINE_FLAG += -D__WITH_DTLS__
49 endif
50 #Add For memory checking
51 #DEBUG_FLAG = -DENABLE_MALLOC_DEBUG
52 #Add Debug flags here
53 DEBUG_FLAG += -DTB_LOG
54
55 ##
56 ##      definitions
57 ##
58 LIB_PREFIX = CA
59 ETHERNET_ADAPTER = ethernet_adapter
60 WIFI_ADAPTER = wifi_adapter
61 BT_ADAPTER = bt_edr_adapter
62 BLE_ADAPTER = bt_le_adapter
63 ETHERNET_ADAPTER_PATH = $(PROJECT_SRC_PATH)/$(ETHERNET_ADAPTER)/$(PLATFORM)
64 ETHERNET_ADAPTER_COMMON_PATH = $(PROJECT_SRC_PATH)/$(ETHERNET_ADAPTER)
65 WIFI_ADAPTER_PATH = $(PROJECT_SRC_PATH)/$(WIFI_ADAPTER)/$(PLATFORM)
66 WIFI_ADAPTER_COMMON_PATH = $(PROJECT_SRC_PATH)/$(WIFI_ADAPTER)
67 BT_ADAPTER_PATH = $(PROJECT_SRC_PATH)/$(BT_ADAPTER)/$(PLATFORM)
68 BLE_ADAPTER_PATH = $(PROJECT_SRC_PATH)/$(BLE_ADAPTER)/$(PLATFORM)
69 ADAPTER_UTILS_PATH = $(PROJECT_SRC_PATH)/adapter_util
70 TARGET = lib$(PROJECT_NAME).so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
71 TARGET_ALIAS = lib$(PROJECT_NAME).so
72
73 ##
74 ##      libcoap
75 ##
76 libcoap_build_dir = $(PROJECT_LIB_PATH)/libcoap-4.1.1
77
78 ifeq ($(DTLS),1)
79 libtiny_lib_dir = $(PROJECT_LIB_PATH)/extlibs/tinydtls
80
81 LDFLAGS := -L$(libcoap_build_dir) -L$(libtiny_lib_dir)
82 LDLIBS := -lcoap -ltinydtls
83 else
84 LDFLAGS := -L$(libcoap_build_dir)
85 LDLIBS := -lcoap
86
87 endif
88 BUILD_FLAG.debug = $(DEFINE_FLAG) $(DEBUG_FLAG)
89 BUILD_FLAG.release =    $(DEFINE_FLAG)
90 BUILD_FLAG = $(BUILD_FLAG.$(BUILD))
91
92 DEBUG_DIR = ./debug
93 RELEASE_DIR = ./release
94
95 ##
96 ##      file declaration
97 ##
98 COMPONENT_SRCS := logger.c oic_logger.c oic_console_logger.c oic_malloc.c oic_string.c uqueue.c uarraylist.c umutex.c cathreadpool_pthreads.c
99 COMPONENT_SRCS += caretransmission.c
100 COMPONENT_SRCS += caconnectivitymanager.c caremotehandler.c cainterfacecontroller.c camessagehandler.c caqueueingthread.c canetworkconfigurator.c caprotocolmessage.c
101 COMPONENT_SRCS += caadapterutils.c
102 COMPONENT_SRCS += caethernetadapter.c cawifiadapter.c caedradapter.c caleadapter.c
103 COMPONENT_SRCS += cawifiserver.c cawificlient.c cawifinwmonitor.c
104 COMPONENT_SRCS += caethernetserver.c caethernetclient.c caethernetnwmonitor.c
105 ifeq ($(DTLS),1)
106 COMPONENT_SRCS += caadapternetdtls.c
107 endif
108 COMPONENT_OBJS = $(COMPONENT_SRCS:%.c=$(OBJ_DIR)/%.o)
109
110 ##
111 ##      compiler flags
112 ##
113 #TODO-CA Remove -fstack-protector-all before merging to master
114 CFLAGS = -g -c -Wall -fstack-protector-all -fPIC `pkg-config --cflags glib-2.0`
115 LFLAGS = -ldl -lpthread `pkg-config --libs glib-2.0`
116 IFLAGS = -I$(PROJECT_COMMON_INC_PATH)   \
117         -I$(PROJECT_API_PATH)   \
118         -I$(PROJECT_INC_PATH)   \
119         -I$(ETHERNET_ADAPTER_PATH)      \
120         -I$(WIFI_ADAPTER_PATH)  \
121         -I$(BT_ADAPTER_PATH)    \
122         -I$(BLE_ADAPTER_PATH)   \
123         -I$(libcoap_build_dir)
124
125 ifeq ($(DTLS),1)
126         IFLAGS += -I$(libtiny_lib_dir) \
127                 -I$(PROJECT_SEC_PATH)
128 endif
129
130 DFLAGS = -D__LINUX__ -DWITH_POSIX $(BUILD_FLAG)
131
132 ##
133 ##      compile and link rules
134 ##
135 vpath %.c $(PROJECT_COMMON_SRC_PATH)
136 vpath %.c $(ADAPTER_UTILS_PATH)
137 vpath %.c $(ETHERNET_ADAPTER_PATH)
138 vpath %.c $(ETHERNET_ADAPTER_COMMON_PATH)
139 vpath %.c $(WIFI_ADAPTER_PATH)
140 vpath %.c $(WIFI_ADAPTER_COMMON_PATH)
141 vpath %.c $(BT_ADAPTER_PATH)
142 vpath %.c $(BLE_ADAPTER_PATH)
143 vpath %.c $(PROJECT_SRC_PATH)
144
145 $(OBJ_DIR)/%.o: %.c
146         $(MAKE_OBJ_PATH)
147         $(CC) -o $@ $(CFLAGS) $(DFLAGS) $(IFLAGS) $<
148
149 all : $(TARGET)
150         @echo   " "
151         @echo   "======================"
152         @echo   "       Success!!"
153         @echo   "======================"
154
155 $(TARGET) : $(COMPONENT_OBJS)
156         cd $(libcoap_build_dir); $(MAKE)
157         @$(MAKE_PROJECT_OUT_PATH)
158         @$(CC) -shared -Wl,-soname,$(TARGET) -o $@ $(COMPONENT_OBJS) $(LFLAGS) $(LDFLAGS) $(LDLIBS)
159         @$(MV) $(TARGET) $(PROJECT_OUT_PATH)/.
160         @$(CD) $(PROJECT_OUT_PATH); $(MAKE_TARGET_ALIAS)
161
162 clean :
163         cd $(libcoap_build_dir) && make clean
164         @$(RM) $(DEBUG_DIR) $(RELEASE_DIR)\
165                         $(PROJECT_OUT_PATH)
166
167 install :
168         @$(MAKE_PROJECT_OUT_PATH)
169
170 ##
171 ##      macros
172 ##
173 define MAKE_OBJ_PATH
174         @if [ ! -d $(OBJ_DIR) ]; then \
175         mkdir $(OBJ_DIR); \
176         fi
177 endef
178
179 define MAKE_TARGET_ALIAS
180         if [ ! -f $(TARGET_ALIAS) ]; then \
181         $(LN) -s $(TARGET) $(TARGET_ALIAS); \
182         fi
183 endef
184
185 .PHONY: all clean install
186
187
188