TARGET = SinHost

CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar

UNAME_OS := $(shell uname -s)
PLUGIN = $(shell find $(GCC_PLUGIN_PATH) -name liblto_plugin.so | tail -n 1 )

ifneq  ($(ARCH_NAME),)
	ARCH_SUFFIX = _$(ARCH_NAME)
endif

ifneq  ($(PLUGIN),)
#	CC_PLUGIN=-fplugin=$(PLUGIN)
	AR_PLUGIN=--plugin $(PLUGIN)
	CCC_FLTO=-flto
	CCL_FLTO=-flto=4
endif


ifeq ("$(wildcard ../Host)", "")
	TOPPATH=../../
else
	TOPPATH=../
endif


CFLAGS=$(CCC_FLTO) -I $(TOPPATH)Host/ -std=c++17 -D_GLIBCXX_USE_NANOSLEEP

LIBS= $(TOPPATH)lib/libDirettaHost$(ARCH_SUFFIX).a  $(TOPPATH)lib/libACQUA$(ARCH_SUFFIX).a
STATIC_LIBS= -L  $(TOPPATH)lib -lDirettaHost$(ARCH_SUFFIX) -lACQUA$(ARCH_SUFFIX)
LDFLAGS= $(CCL_FLTO) -lm -pthread -lstdc++ $(LDFLAGS_APP)

LDFLAGS+=-static

ifeq  ($(APPSAFE),yes)
	CFLAGS+=-O2
	LDFLAGS+=-O2
else
	CFLAGS+=-Ofast
	LDFLAGS+=-Ofast
endif


ifneq  ($(SRCDIR),)
	SRCDIRS = $(wildcard $(SRCDIR)/*)
	SRCS = $(foreach d, $(SRCDIRS), $(wildcard $(d)/*.cpp) )
else
	ifeq  ($(SRCPATH),)
		SRCPATH = .
	endif
	SRCS = $(foreach path,$(SRCPATH),$(wildcard $(path)/*.c $(path)/*.cpp))
endif


OBJS = $(addsuffix .o,$(basename $(SRCS)))

DEPS := $(OBJS:%.o=%.d)

default : $(TARGET)

%.o: %.cpp
	@ echo [COMPILE] $<
	$(CC)  -c -MMD $(CFLAGS) $< -o $@
	
clean:
	@ echo [CLEAN] ALL
	@ rm -f $(TARGET) $(OBJS) $(DEPS)

-include $(DEPS)



$(TARGET) : $(OBJS) $(LIBS)
	@ echo [LINK] $(TARGET)
	@ $(CC) -o $(TARGET) $(OBJS) $(ADDLIBS) $(STATIC_LIBS) $(LDFLAGS)


