#
ifndef ESP_ROOT
$(error ESP_ROOT must be set -- Please fix the environment...)
endif
ifndef ESP_ARCH
$(error ESP_ARCH must be set -- Please fix the environment...)
endif
#
IDIR  = $(ESP_ROOT)/include
include $(IDIR)/$(ESP_ARCH)
LDIR  = $(ESP_ROOT)/lib
BDIR  = $(ESP_ROOT)/bin
ifdef ESP_BLOC
ODIR  = $(ESP_BLOC)/obj
else
ODIR  = .
endif

ifndef VTK_ROOT

default: 
lint:
clean:

else

ifneq ($(shell unset LD_PRELOAD && printf '\043include <vtkUnstructuredGrid.h>' | $(CXX) -x c++ -std=c++17 -I$(VTK_ROOT)/include/vtk-$(VTK_VERSION) -I$(VTK_ROOT)/include/vtk -E -M - 2>&1 > /dev/null && echo 0 || echo 1), 0)
$(error fatal error: 'vtkUnstructuredGrid.h' file not found in 'VTK_ROOT/include/vtk' or 'VTK_ROOT/include/vtk-VTK_VERSION'. Please set VTK_ROOT and VTK_VERSION.)
endif

default: $(LDIR)/vtuWriter.so

VPATH = $(ODIR)

OBJS = vtuWriter.o

VTK_LIBS=vtkIOXML \
         vtkCommonExecutionModel \
         vtkCommonDataModel \
         vtkCommonSystem \
         vtkCommonCore \
         vtkCommonTransforms \
         vtkCommonMath \
         vtkCommonMisc \
         vtkIOCore \
         vtkdoubleconversion \
         vtkzlib \
         vtklz4 \
         vtklzma \
         vtktoken \
         vtkpugixml \
         vtksys \
         vtkloguru


ifdef VTK_VERSION
VTK_LINKLIBS = $(addsuffix -$(VTK_VERSION),$(addprefix -l,$(VTK_LIBS)))
else
VTK_LINKLIBS = $(addprefix -l,$(VTK_LIBS))
endif

ifneq ($(wildcard $(VTK_ROOT)/lib/libvtkCommonCore*),)
VTKLIB=$(VTK_ROOT)/lib
endif
ifneq ($(wildcard $(VTK_ROOT)/lib64/libvtkCommonCore*),)
VTKLIB=$(VTK_ROOT)/lib64
endif

$(LDIR)/vtuWriter.so:	$(ODIR)/vtuWriter.o $(VTK_OBJS) $(LDIR)/libaimUtil.a
	$(CXX) $(SOFLGS) -o $(LDIR)/vtuWriter.so $(ODIR)/vtuWriter.o $(VTK_OBJS) \
		-L$(VTKLIB) $(VTK_LINKLIBS) -L$(LDIR) -laimUtil -legads -locsm -ludunits2 -ldl $(RPATH) -lm -lpthread

$(ODIR)/vtuWriter.o:	vtuWriter.cpp $(IDIR)/aimUtil.h $(IDIR)/capsTypes.h $(IDIR)/aimMesh.h
	$(CXX) -c $(COPTS) -std=c++17 $(DEFINE) -I../include -I$(IDIR) -I$(VTK_ROOT)/include/vtk-$(VTK_VERSION) -I$(VTK_ROOT)/include/vtk vtuWriter.cpp \
		-o $(ODIR)/vtuWriter.o

lint:

clean:
	-(cd $(ODIR); rm -f $(OBJS) $(VTK_OBJS) )
endif

cleanall:	clean
	-rm -f $(LDIR)/vtuWriter.so
