#
# Make libmpibnc.a
#

include ../bncmake.inc

all: libmpibnc test print_process cpi test_mpiefunc test_mpiint test_mpicg test_mpikrylov test_mpilinear test_mpimm test_mpidka test_mpi_ode1 test_mpi_ode2 test_mpi_ode3 test_mpi_ode4 test_mpi_ode5 test_mpimharmonic test_mpi_gmp

.c.o: mpi_gmp.h mpi_bnc.h
	$(MPICC) -c $(INCLUDES) $<

test_mpi_gmp: test_mpi_gmp.o mpi_gmp.o
	$(MPICC) -otest_mpi_gmp $(INCLUDES) test_mpi_gmp.o mpi_gmp.o $(LIBS)

test: test.o testc.o testmpzq.o mpi_gmp.o
	$(MPICC) -otest $(INCLUDES) test.o mpi_gmp.o $(LIBS)
	$(MPICC) -otestc $(INCLUDES) testc.o mpi_gmp.o $(LIBS)
	$(MPICC) -ompzq $(INCLUDES) testmpzq.o mpi_gmp.o $(LIBS)

print_process: print_process.o
	$(MPICC) -oprint_process $(INCLUDES) print_process.o mpi_gmp.o $(LIBS)

cpi: mpi_gmp.o cpi-gmp.o
	$(MPICC) -ocpi-gmp $(INCLUDES) cpi-gmp.o mpi_gmp.o $(LIBS)

libmpibnc: mpi_gmp.o mpi_aux.o mpi_linear.o mpi_matrix_mul.o mpi_complex.o mpi_integral.o mpi_cg.o mpi_dka.o mpi_bcastbnc.o mpi_ex_nim.o mpi_ex_nim_lo.o mpi_ex_harmonic.o mpi_ex_harmonic_lo.o mpi_mharmonic.o mpi_krylov.o
	$(AR) libmpibnc.a mpi_aux.o
	$(AR) libmpibnc.a mpi_gmp.o
	$(AR) libmpibnc.a mpi_linear.o
	$(AR) libmpibnc.a mpi_matrix_mul.o
	$(AR) libmpibnc.a mpi_complex.o
	$(AR) libmpibnc.a mpi_integral.o
	$(AR) libmpibnc.a mpi_cg.o
	$(AR) libmpibnc.a mpi_krylov.o
	$(AR) libmpibnc.a mpi_dka.o
	$(AR) libmpibnc.a mpi_bcastbnc.o
	$(AR) libmpibnc.a mpi_ex_nim.o
	$(AR) libmpibnc.a mpi_ex_nim_lo.o
	$(AR) libmpibnc.a mpi_ex_harmonic.o
	$(AR) libmpibnc.a mpi_ex_harmonic_lo.o
	$(AR) libmpibnc.a mpi_mharmonic.o

test_mpiint: test_mpiint.o libmpibnc.a
	$(MPICC) -otest_mpiint $(INCLUDES) test_mpiint.o libmpibnc.a $(LIBS)

test_mpiefunc: test_mpiefunc.o libmpibnc.a
	$(MPICC) -otest_mpiefunc $(INCLUDES) test_mpiefunc.o libmpibnc.a $(LIBS)

test_mpicg: test_mpicg.o libmpibnc.a
	$(MPICC) -otest_mpicg $(INCLUDES) test_mpicg.o libmpibnc.a $(LIBS)

test_mpikrylov: test_mpikrylov.o libmpibnc.a
	$(MPICC) -otest_mpikrylov $(INCLUDES) test_mpikrylov.o libmpibnc.a $(LIBS)

test_mpilinear: test_mpilinear.o libmpibnc.a
	$(MPICC) -otest_mpilinear $(INCLUDES) test_mpilinear.o libmpibnc.a $(LIBS)

test_mpimm: test_mpimm.o libmpibnc.a
	$(MPICC) -otest_mpimm $(INCLUDES) test_mpimm.o libmpibnc.a $(LIBS)

test_mpidka: test_mpidka.o libmpibnc.a
	$(MPICC) -otest_mpidka $(INCLUDES) test_mpidka.o libmpibnc.a $(LIBS)

test_mpimharmonic: test_mpimharmonic.o libmpibnc.a
	$(MPICC) -otest_mpimharmonic $(INCLUDES) test_mpimharmonic.o libmpibnc.a $(LIBS)

test_mpi_ode1: test_mpi_ode1.o libmpibnc.a
	$(MPICC) -otest_mpi_ode1 $(INCLUDES) test_mpi_ode1.o libmpibnc.a $(LIBSODE)

test_mpi_ode2: test_mpi_ode2.o libmpibnc.a
	$(MPICC) -otest_mpi_ode2 $(INCLUDES) test_mpi_ode2.o libmpibnc.a $(LIBSODE)

test_mpi_ode3: test_mpi_ode3.o libmpibnc.a
	$(MPICC) -otest_mpi_ode3 $(INCLUDES) test_mpi_ode3.o libmpibnc.a $(LIBSODE)

test_mpi_ode4: test_mpi_ode4.o libmpibnc.a
	$(MPICC) -otest_mpi_ode4 $(INCLUDES) test_mpi_ode4.o libmpibnc.a $(LIBSODE)

test_mpi_ode5: test_mpi_ode5.o libmpibnc.a
	$(MPICC) -otest_mpi_ode5 $(INCLUDES) test_mpi_ode5.o libmpibnc.a $(LIBSODE)


clean:
	-rm PI*
	-rm *.BAK
	-rm *.o
	-rm *.a
	-rm test
	-rm testc
	-rm mpzq
	-rm print_process
	-rm cpi-gmp
	-rm test_mpiint
	-rm test_mpiefunc
	-rm test_mpicg
	-rm test_mpikrylov
	-rm test_mpilinear
	-rm test_mpimharmonic
	-rm test_mpi_ode1
	-rm test_mpi_ode2
	-rm test_mpi_ode3
	-rm test_mpi_ode4
	-rm test_mpi_ode5
