SRCBASE=.

include Makevars
include Maketargets

SUBDIRS=threads cluster cluster/TestFramework cluster/Tests threads/Tests tests ../help
SHAREDOBJECT=edge$(SOEXT)
SHAREDOBJECT2=knnimpute$(SOEXT)
PKG_LIBS=-Lthreads -lprogressthreads -Lcluster -lcluster $(THREAD_LIB)
LIBDEPS=cluster/libcluster.a threads/libprogressthreads.a
SOURCES=edge.c knnimpute.f Rintf_threads.cpp Rintf_cluster.cpp OdpThread.cpp RInterfaces.cpp TimecourseThread.cpp MathUtility.cpp TimecourseNoIntercept.cpp TimecourseIntercept.cpp debug.c 

all: 
	for SUBDIR in $(SUBDIRS) ; do pushd $$SUBDIR && $(MAKE) && popd; done
	$(MAKE) so

install: all
	cp $(SHAREDOBJECT) ../$(SHAREDOBJECT)
	cp $(SHAREDOBJECT2) ../$(SHAREDOBJECT2)

debug:
	DEBUG=1 $(MAKE) all

clean:
	-rm -rf *.o *.so *.dll *.a *.d  __.SYMDEF\ SORTED
	for SUBDIR in $(SUBDIRS) ; do pushd $$SUBDIR && $(MAKE) clean && popd; done

so: $(SHAREDOBJECT) $(SHAREDOBJECT2)

$(SHAREDOBJECT): $(SOURCES) $(LIBDEPS)
	echo Making edge library version $(EDGELIBVERSION)
	mv Makefile Makefile.mv
	SRCBASE=${SRCBASE} PKG_LIBS="${PKG_LIBS}" PKG_CXXFLAGS="${PKG_CXXFLAGS}" PKG_CFLAGS="${PKG_CFLAGS}" $(RCMD) $(RCMD_CMD) SHLIB -o $(SHAREDOBJECT) $(SOURCES) ; RETURN=`echo $$?` bash -c "mv Makefile.mv Makefile; if test 0 -ne \$$RETURN ; then echo 'build failed'; exit 1 ; fi"

$(SHAREDOBJECT2): $(SOURCES) $(LIBDEPS)
	echo Making edge library version $(EDGELIBVERSION)
	mv Makefile Makefile.mv
	SRCBASE=${SRCBASE} PKG_LIBS="${PKG_LIBS}" PKG_CXXFLAGS="${PKG_CXXFLAGS}" PKG_CFLAGS="${PKG_CFLAGS}" $(RCMD) $(RCMD_CMD) SHLIB -o $(SHAREDOBJECT2) $(SOURCES) ; RETURN=`echo $$?` bash -c "mv Makefile.mv Makefile; if test 0 -ne \$$RETURN ; then echo 'build failed'; exit 1 ; fi"

