include ../conf/default-rules

THIS_SRCDIR = src/programs
TOP_SRCDIR = ../..

EXECS = tri meshopt2d coarsen2d scat2d \
	tetra meshopt3d coarsen3d scat3d heal2d 

default: $(BINDIR)
	echo "Making sure executables ($(EXECS)) are up to date..."
	echo " "
	$(MAKE) maybeclean
	$(MAKE) $(EXECS)
	echo " "
	echo "Done updating all executables"
	echo " "

DEP_2D = $(LIBDIR)/libGR_2D.a \
	$(LIBDIR)/libGR_base.a \
	 \
	$(LIBDIR)/libOptMS.a \
	$(LIBDIR)/libSUMAAlog_lite.a

DEP_3D = $(LIBDIR)/libGR_3D.a \
	$(LIBDIR)/libGR_surf.a \
	$(LIBDIR)/libGR_2D.a \
	$(LIBDIR)/libGR_base.a \
	 \
	$(LIBDIR)/libOptMS.a \
	$(LIBDIR)/libSUMAAlog_lite.a

LIB_2D = -L$(LIBDIR) -lGR_2D -lGR_base  -lOptMS -lSUMAAlog_lite -lm
LIB_3D = -L$(LIBDIR) -lGR_3D -lGR_surf -lGR_2D -lGR_base  -lOptMS -lSUMAAlog_lite -lm

tri: tri.o $(DEP_2D) -static
	$(MAKE) "TARGET=tri" "DEP=$(DEP_2D)" "LIB=$(LIB_3D)" exec	

meshopt2d coarsen2d heal2d: tri
	$(MAKE) "TARGET=$@" "SOURCE=tri" link

scat2d: scat2d.o $(DEP_2D)
	$(MAKE) "TARGET=$@" "DEP=$(DEP_2D)" "LIB=$(LIB_3D)" exec

tetra: tetra.o $(DEP_3D)
	$(MAKE) "TARGET=$@" "DEP=$(DEP_3D)" "LIB=$(LIB_3D)" exec

main: main.o  $(DEP_3D)
	$(MAKE) "TARGET=$@" "DEP=$(DEP_3D)" "LIB=$(LIB_3D)" exec

main2: main2.o  $(DEP_3D)
	$(MAKE) "TARGET=$@" "DEP=$(DEP_3D)" "LIB=$(LIB_3D)" exec

# show-tets: show-tets.o $(DEP_3D)
# 	$(MAKE) "TARGET=$@" "DEP=$(DEP_3D)" "LIB=$(LIB_3D)" exec	

meshopt3d coarsen3d: tetra
	$(MAKE) "TARGET=$@" "SOURCE=tetra" link

scat3d: scat3d.cxx $(DEP_3D)
	$(MAKE) "TARGET=$@" "DEP=$(DEP_3D)" "LIB=$(LIB_3D)" exec

surf: surf.o $(DEP_3D)
	$(MAKE) "TARGET=surf" "DEP=$(DEP_3D)" "LIB=$(LIB_3D)" exec	

exec: $(TARGET).o $(DEP)
	touch .lastbuild.mingw32
	touch .lastbuild.mingw32.O
	echo Linking $(TARGET)...
	i686-pc-mingw32-g++ -o $(BINDIR)/$(TARGET) $(LINKFLAGS) $(INCLUDES) $(TARGET).o $(LIB) $(LIB) -L/usr/local/lib 
	-rm -f $(TARGET)
	ln -s $(BINDIR)/$(TARGET) $(TARGET)
	echo Done building $(TARGET) for host mingw32 at optimization level O.
	echo " "

link:
	echo Creating symbolic links for $(TARGET)...
	-rm -f $(BINDIR)/$(TARGET) $(TARGET)
	ln -s $(BINDIR)/$(SOURCE) $(BINDIR)/$(TARGET)
	ln -s $(BINDIR)/$(SOURCE) $(TARGET)
	echo Done building $(TARGET) for host mingw32 at optimization level O.

ALL_LIBS = GR_base GR_2D GR_surf GR_3D OptMS SUMAAlog_lite 

distclean: localdistclean

localdistclean:
	-rm -f $(EXECS)

$(LIBDIR)/libGR_3D.a $(LIBDIR)/libGR_surf.a $(LIBDIR)/libGR_2D.a $(LIBDIR)/libGR_base.a $(LIBDIR)/libGR_geom.a $(LIBDIR)/libOptMS.a $(LIBDIR)/libSUMAAlog_lite.a:
	echo 'Need to make library $@'

