
SUBDIRS = meshers operators schemes solvers stepconditions utilities

AM_CPPFLAGS = -I${top_builddir} -I${top_srcdir}

this_includedir=${includedir}/${subdir}
this_include_HEADERS = \
	all.hpp \
	boundarycondition.hpp \
	bsmoperator.hpp \
	bsmtermoperator.hpp \
	cranknicolson.hpp \
	dminus.hpp \
	dplus.hpp \
	dplusdminus.hpp \
	dzero.hpp \
	expliciteuler.hpp \
	fdtypedefs.hpp \
	finitedifferencemodel.hpp \
	impliciteuler.hpp \
	mixedscheme.hpp\
	operatortraits.hpp \
	parallelevolver.hpp \
	pde.hpp \
	pdebsm.hpp \
	stepcondition.hpp \
	trbdf2.hpp \
	tridiagonaloperator.hpp \
	zerocondition.hpp

cpp_files = \
    boundarycondition.cpp \
    bsmoperator.cpp \
    tridiagonaloperator.cpp

if UNITY_BUILD

nodist_libFiniteDifferences_la_SOURCES = unity.cpp

unity.cpp: Makefile.am
	echo "/* This file is automatically generated; do not edit.     */" > $@
	echo "/* Add the files to be included into Makefile.am instead. */" >> $@
	echo >> $@
	for i in $(cpp_files); do \
		echo "#include \"${subdir}/$$i\"" >> $@; \
	done

EXTRA_DIST = $(cpp_files)

else

libFiniteDifferences_la_SOURCES = $(cpp_files)

endif

libFiniteDifferences_la_LIBADD = \
    meshers/libFdmMeshers.la \
    operators/libFdmOperators.la \
    schemes/libFdmSchemes.la \
	solvers/libFdmSolvers.la \
	stepconditions/libFdmStepConditions.la \
	utilities/libFdmUtils.la

noinst_LTLIBRARIES = libFiniteDifferences.la

all.hpp: Makefile.am
	echo "/* This file is automatically generated; do not edit.     */" > ${srcdir}/$@
	echo "/* Add the files to be included into Makefile.am instead. */" >> ${srcdir}/$@
	echo >> ${srcdir}/$@
	for i in $(filter-out all.hpp bsmtermoperator.hpp fdtypedefs.hpp parallelevolver.hpp, $(this_include_HEADERS)); do \
		echo "#include <${subdir}/$$i>" >> ${srcdir}/$@; \
	done
	echo >> ${srcdir}/$@
	subdirs='$(SUBDIRS)'; for i in $$subdirs; do \
		echo "#include <${subdir}/$$i/all.hpp>" >> ${srcdir}/$@; \
	done

