ROOT_PATH = $(shell cd ../../; pwd)
##Set project directory
SRC_PATH = $(ROOT_PATH)/src
OUTPUT_PATH = $(ROOT_PATH)/bin/linux
TMPOBJ_PATH = $(ROOT_PATH)/bin/linux/objs
INC_PATH = $(ROOT_PATH)/libs/include
LIB_PATH = $(ROOT_PATH)/libs
$(warning SRC_PATH $(SRC_PATH))
$(warning OUTPUT_PATH $(OUTPUT_PATH))
$(warning TMPOBJ_PATH $(TMPOBJ_PATH))
$(warning INC_PATH $(INC_PATH))
$(warning LIB_PATH $(LIB_PATH))
INCLUDE_PATHS:=
BUILD_FILES:=
BUILD_PATH := $(SRC_PATH)/osal
include $(SRC_PATH)/osal/Linux.mk
BUILD_FILES += $(LOCAL_SRC_FILES)
INCLUDE_PATHS +=$(LOCAL_C_INCLUDES)
BUILD_PATH := $(SRC_PATH)/utils
include $(SRC_PATH)/utils/Linux.mk
BUILD_FILES += $(LOCAL_SRC_FILES)
INCLUDE_PATHS +=$(LOCAL_C_INCLUDES)
BUILD_PATH := $(SRC_PATH)/com
include $(SRC_PATH)/com/Linux.mk
BUILD_FILES +=$(LOCAL_SRC_FILES)
INCLUDE_PATHS +=$(LOCAL_C_INCLUDES)
BUILD_PATH = $(SRC_PATH)/upnp
include $(SRC_PATH)/upnp/Linux.mk
BUILD_FILES +=$(LOCAL_SRC_FILES)
INCLUDE_PATHS +=$(LOCAL_C_INCLUDES)
INCLUDE_PATHS := $(addprefix -I,$(INCLUDE_PATHS))
#Custom Predefines
CFLAGS += -D_DEBUG
##Dependent header files
CFLAGS += -I. \
-I$(SRC_PATH) \
$(INCLUDE_PATHS)
##Set compiler
CFLAGS += -fPIC
#-Wall
# -std=c++98
#-pedantic-errors \
#-Werror
#-g
##Dependent libraries
LDFLAGS += -shared -fPIC -lm -lpthread -lrt -ldl
CPP_SOURCES = $(filter %.cpp,$(BUILD_FILES))
CPP_OBJFILES = $(patsubst %.cpp,$(TMPOBJ_PATH)/%.o,$(notdir $(CPP_SOURCES)))
#$(warning CPP_SOURCE: $(CPP_SOURCES))
#$(warning CPP_OBJFILES: $(CPP_OBJFILES))
C_SOURCES = $(filter %.c,$(BUILD_FILES))
C_OBJFILES = $(patsubst %.c,$(TMPOBJ_PATH)/%.o,$(notdir $(C_SOURCES)))
#$(warning C_SOURCE: $(C_SOURCES))
#$(warning C_OBJFILES: $(C_OBJFILES))
#Set vpath where to find these types of files
vpath %.cpp $(dir $(CPP_SOURCES))
vpath %.c $(dir $(C_SOURCES))
vpath %.o $(TMPOBJ_PATH)
#Set target output path and the path of intermidiate object
TARGET = $(OUTPUT_PATH)/txic
TARGET_LIB = $(OUTPUT_PATH)/libtxcore.so
#The first target to be executed
all: target
target: $(TARGET_LIB)
#Static dependecy pattern
$(C_OBJFILES): $(TMPOBJ_PATH)/%.o: %.c
-mkdir -p $(TMPOBJ_PATH)
$(CC) -c $(CFLAGS) -o $@ $<
$(CPP_OBJFILES): $(TMPOBJ_PATH)/%.o: %.cpp
-mkdir -p $(TMPOBJ_PATH)
$(CXX) -c $(CFLAGS) -o $@ $<
$(TARGET): $(CPP_OBJFILES) $(C_OBJFILES)
-mkdir -p $(OUTPUT_PATH)
$(CXX) -o $@ $^ $(LDFLAGS)
$(TARGET_LIB): $(CPP_OBJFILES) $(C_OBJFILES)
-mkdir -p $(OUTPUT_PATH)
$(CXX) $(LDFLAGS) -o $(TARGET_LIB) $(C_OBJFILES) $(CPP_OBJFILES)
clean:
-rm -rf $(TMPOBJ_PATH)
-rm -f $(TARGET_LIB)
$(SRC_PATH)/utils/Linux.mk
PRJ_SRC_FILES:= \
Buffer.cpp \
...................... \
String.cpp
LOCAL_SRC_FILES = $(addprefix $(BUILD_PATH)/,$(PRJ_SRC_FILES))
ROOT_PATH = $(shell cd ./; pwd)
##Set project directory
SRC_PATH = $(ROOT_PATH)/src
OUTPUT_PATH = $(ROOT_PATH)/bin
TMPOBJ_PATH = $(ROOT_PATH)/bin/objs
INC_PATH = $(ROOT_PATH)/include
LIB_PATH = $(ROOT_PATH)/libs
$(warning SRC_PATH $(SRC_PATH))
$(warning OUTPUT_PATH $(OUTPUT_PATH))
$(warning TMPOBJ_PATH $(TMPOBJ_PATH))
$(warning INC_PATH $(INC_PATH))
$(warning LIB_PATH $(LIB_PATH))
#Custom Predefines
CFLAGS += -D_DEBUG
##Dependent header files
CFLAGS += -I. \
-I$(SRC_PATH) \
-I$(INC_PATH) \
-I$(INC_PATH)/osal \
-I$(INC_PATH)/utils \
-I$(INC_PATH)/com \
-I$(INC_PATH)/upnp
##Set compiler
CFLAGS +=
#-Wall
#-pedantic-errors \
#-Werror
#-g
##Dependent libraries
LDFLAGS += -ltxcore -lm -lpthread -lrt -ldl
#Find all src dir from SRC_PATH and sub dir in FIND_LAYER
FIND_LAYER = 2
PRJ_SRCDIR := $(shell find $(SRC_PATH) -maxdepth $(FIND_LAYER) -type d)
PRJ_SRCDIR := $(basename $(patsubst ./%,%,$(PRJ_SRCDIR)))
PRJ_SRCDIR := $(filter-out $(EXCLUDE_PATH),$(PRJ_SRCDIR))
#CPP Source files
CPP_SOURCES = $(foreach d,$(PRJ_SRCDIR),$(wildcard $(d)/*.cpp) )
CPP_OBJFILES = $(patsubst %.cpp,$(TMPOBJ_PATH)/%.o,$(notdir $(CPP_SOURCES)))
#C Source files
C_SOURCES := $(foreach d,$(PRJ_SRCDIR),$(wildcard $(d)/*.c) )
C_OBJFILES := $(patsubst %.c,$(TMPOBJ_PATH)/%.o,$(notdir $(C_SOURCES)))
#Set vpath where to find these types of files
vpath %.cpp $(dir $(CPP_SOURCES))
vpath %.c $(dir $(C_SOURCES))
vpath %.o $(TMPOBJ_PATH)
#Set target output path and the path of intermidiate object
TARGET = $(OUTPUT_PATH)/txic
#The first target to be executed
all: target
target: $(TARGET)
#Static dependecy pattern
$(C_OBJFILES): $(TMPOBJ_PATH)/%.o: %.c
-mkdir -p $(TMPOBJ_PATH)
$(CC) -c $(CFLAGS) -o $@ $<
$(CPP_OBJFILES): $(TMPOBJ_PATH)/%.o: %.cpp
-mkdir -p $(TMPOBJ_PATH)
$(CXX) -c $(CFLAGS) -o $@ $<
$(TARGET): $(CPP_OBJFILES) $(C_OBJFILES)
-mkdir -p $(OUTPUT_PATH)
$(CXX) -o $@ $^ -L./ -L$(LIB_PATH) $(LDFLAGS)
clean:
-rm -rf $(TMPOBJ_PATH)
-rm -f $(TARGET)