# Simple Makefile for libdyutils
MAKEFLAGS += -r -R
LIBNAME=libdyutils.so

MY_CFLAGS := $(CFLAGS) -Wall -fPIC -ggdb -fno-omit-frame-pointer $(PINST_CFLAGS) # -finstrument-functions

ifdef SUPPORT_LED
  MY_CFLAGS += -DSUPPORT_LED=1
else
  MY_CFLAGS += -DSUPPORT_LED=0
endif

dir=mqtt_client tools load_cfg tag_db socket_client ds modbus_sniffer

ifdef SUPPORT_LED
dir += led
endif

dir += can

INC_DIR=include
HEADERS = $(wildcard $(INC_DIR)/*.h)
ALL_SOURCES=$(subst ./, , $(foreach dir,$(dir),$(wildcard $(dir)/*.c)) ) 
SOURCES=$(filter-out tools/dy_shm.c, $(ALL_SOURCES))
OBJECTS=$(subst .c,.o, $(SOURCES))
CCFLAGS_SO := -I./include -g -Wl,-z,now -Wl,-z,relro $(MY_CFLAGS) -Os -fPIC
LDFLAGS_C = $(LDFLAGS) -shared
LIBS += -lpthread -ldl -lmosquitto -lsqlite3 -lipc_helper -lubox -lubuslog
INCLPATH += -I$(INC_DIR)
PCLNT :=
ifeq ("$(LNX_TARGET_DEV)","MOXA_VM1220T")
CCFLAGS_SO += -DMOXA_VM1220T=1
LIBS += -L./lib/vm1220 -lvm1220io
endif

ifneq ($(wildcard $(COLNT_DIR)),)
PCLNT += pclnt_wrapper
$(info PCLNT-TING PACKAGE libdyutils)
endif

.PHONY: all clean distclean
all: $(LIBNAME)

# target executable
$(LIBNAME):$(OBJECTS)
	$(PCLNT) $(CC) $(LDFLAGS_C) -o $(LIBNAME) $(OBJECTS) $(LIBPATH) $(LIBS)

# object files
%.o: %.c
	$(PCLNT) $(CC) $(CCFLAGS_SO) $(INCLPATH) -c $< -o $@

%.o: %.cpp
	$(PCLNT) $(CC) -c $(CFLAGS) -o $@ $<

# clean
clean:
	rm -rf $(OBJDIR) *.o */*.o *.so

# distclean
distclean: clean
	rm -f $(LIBNAME)
