1 #/******************************************************************
3 # * Copyright 2014 Samsung Electronics All Rights Reserved.
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
11 # * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #******************************************************************/
21 # override with `make BUILD=debug`
22 # default to release build
23 # default to build for linux
32 COMMON_MAKE = common.mk
34 include $(COMMON_MAKE)
36 #Modify below values to enable/disable the Adapter
37 #Suffix "NO_" to disable given adapter
41 ETHERNET = NO_ETHERNET_ADAPTER
43 #Add Pre processor definitions
44 DEFINE_FLAG = -D$(EDR) -D$(LE) -D$(WIFI) -D$(ETHERNET)
53 ETHERNET_ADAPTER = ethernet_adapter
54 WIFI_ADAPTER = wifi_adapter
55 BT_ADAPTER = bt_edr_adapter
56 BLE_ADAPTER = bt_le_adapter
57 ETHERNET_ADAPTER_PATH = $(PROJECT_SRC_PATH)/$(ETHERNET_ADAPTER)/$(PLATFORM)
58 WIFI_ADAPTER_PATH = $(PROJECT_SRC_PATH)/$(WIFI_ADAPTER)/$(PLATFORM)
59 BT_ADAPTER_PATH = $(PROJECT_SRC_PATH)/$(BT_ADAPTER)/$(PLATFORM)
60 BLE_ADAPTER_PATH = $(PROJECT_SRC_PATH)/$(BLE_ADAPTER)/$(PLATFORM)
61 TARGET = lib$(PROJECT_NAME).so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
62 TARGET_ALIAS = lib$(PROJECT_NAME).so
67 libcoap_build_dir = $(PROJECT_LIB_PATH)/libcoap-4.1.1
69 LDFLAGS:=-L$(libcoap_build_dir)
72 BUILD_FLAG.debug = $(DEFINE_FLAG) $(DEBUG_FLAG)
73 BUILD_FLAG.release = $(DEFINE_FLAG)
74 BUILD_FLAG = $(BUILD_FLAG.$(BUILD))
77 RELEASE_DIR = ./release
83 logger.c oic_malloc.c oic_logger.c oic_console_logger.c \
84 caconnectivitymanager.c caremotehandler.c cainterfacecontroller.c camessagehandler.c \
85 canetworkconfigurator.c caedradapter.c caleadapter.c \
86 caethernetadapter.c cawifiadapter.c \
87 caprotocolmessage.c cawificore.c \
88 uqueue.c uarraylist.c umutex.c uthreadpool.c \
90 COMPONENT_OBJS = $(COMPONENT_SRCS:%.c=$(OBJ_DIR)/%.o)
95 CFLAGS = -g -c -Wall -fPIC `pkg-config --cflags glib-2.0`
97 LFLAGS = -ldl -lpthread `pkg-config --libs glib-2.0`
99 IFLAGS = -I$(PROJECT_COMMON_INC_PATH) \
100 -I$(PROJECT_API_PATH) \
101 -I$(PROJECT_INC_PATH) \
102 -I$(ETHERNET_ADAPTER_PATH) \
103 -I$(WIFI_ADAPTER_PATH) \
104 -I$(BT_ADAPTER_PATH) \
105 -I$(BLE_ADAPTER_PATH) \
106 -I$(libcoap_build_dir)
112 ## compile and link rules
114 vpath %.c $(PROJECT_COMMON_SRC_PATH)
115 vpath %.c $(ETHERNET_ADAPTER_PATH)
116 vpath %.c $(WIFI_ADAPTER_PATH)
117 vpath %.c $(BT_ADAPTER_PATH)
118 vpath %.c $(BLE_ADAPTER_PATH)
119 vpath %.c $(PROJECT_SRC_PATH)
123 @$(CC) -o $@ $(CFLAGS) $(DFLAGS) $(IFLAGS) $<
127 @echo "======================"
129 @echo "======================"
131 $(TARGET) : $(COMPONENT_OBJS)
132 @$(MAKE_PROJECT_OUT_PATH)
133 @$(CC) -shared -Wl,-soname,$(TARGET) -o $@ $(COMPONENT_OBJS) $(LFLAGS) $(LDFLAGS) $(LDLIBS)
134 @$(MV) $(TARGET) $(PROJECT_OUT_PATH)/.
135 @$(CD) $(PROJECT_OUT_PATH); $(MAKE_TARGET_ALIAS)
138 @$(RM) $(DEBUG_DIR) $(RELEASE_DIR)\
142 @$(MAKE_PROJECT_OUT_PATH)
148 @if [ ! -d $(OBJ_DIR) ]; then \
153 define MAKE_TARGET_ALIAS
154 if [ ! -f $(TARGET_ALIAS) ]; then \
155 $(LN) -s $(TARGET) $(TARGET_ALIAS); \
159 .PHONY: all clean install