############################################################## # Structured Markov Chains Solver [ SMCSolver ] # # Dario Bini, Beatrice Meini, Sergio Steffe' # # bini@dm.unipi.it, meini@dm.unipi.it, steffe@dm.unipi.it # # Dipartimento di Matematica "Leonida Tonelli" # # Largo Pontecorvo 5 # # 56127 Pisa # # Italy # # Version 1.2 - Nov 2006 # ############################################################## # # Makefile # ############################################################## # # include ./make.inc # # # Fortran compilation of included minumus set of BLAS, LAPACK and LAPACK95 routines # # # gtk include and libs are found with pkg-config command # GTKINCLUDE=`pkg-config --cflags gtk+-2.0` GTKLIBS=`pkg-config --libs gtk+-2.0` # # add the treads libraries and ncurses LIBS=${GTKLIBS} -lgthread-2.0 -lncurses -lrt INCLUDE=${GTKINCLUDE} # PMOD = fft_interface.mod fi_int.mod is_int.mod pi_int.mod ponte_f_f.mod \ pwcr_interface.mod roots.mod schur_interface.mod smc_int.mod smc_tools.mod # Now the dependency tree for the compilation in C and Fortran # The main program must be linked by Fortran Compiler, the order of terms is important SMCSolver: $(BLASLIB) $(LAPACKLIB) $(LAPACK95LIB) main.o callbacks.o interface.o help.o rw.o padwrite.o examples.o edit_a.o edit_b.o view_mat.o view_pi.o ponte.o futils.o examplesf.o smc_int.o smc_sub.o pwcr_int.o fft_int.o pi_int.o is_int.o pwcr_fft.o pwcr_sub.o fi_int.o fi_sub.o is_sub.o pi_sub.o fcalls.o $(FF) ${FFLAGSM} ${INCLUDE} -o SMCSolver main.o callbacks.o interface.o help.o rw.o padwrite.o examples.o edit_a.o edit_b.o view_mat.o view_pi.o ponte.o futils.o examplesf.o smc_int.o smc_sub.o pwcr_int.o pi_int.o fft_int.o is_int.o pwcr_fft.o pwcr_sub.o fi_int.o fi_sub.o is_sub.o pi_sub.o fcalls.o ${LIBS} ${FFLIBS} main.o: main.c structures.h main.h $(CC) ${CFLAGS} ${INCLUDE} ${LAHEY} -c main.c callbacks.o: callbacks.c structures.h callbacks.h $(CC) ${CFLAGS} ${INCLUDE} -c callbacks.c interface.o: interface.c structures.h interface.h examples.h $(CC) ${CFLAGS} ${INCLUDE} -c interface.c help.o: help.c structures.h help.h doc.h $(CC) ${CFLAGS} ${INCLUDE} -c help.c rw.o: rw.c structures.h callbacks.h interface.h $(CC) ${CFLAGS} ${INCLUDE} -c rw.c padwrite.o: padwrite.c structures.h padwrite.h $(CC) ${CFLAGS} ${INCLUDE} -c padwrite.c examples.o: examples.c structures.h examples.h $(CC) ${CFLAGS} ${INCLUDE} -c examples.c edit_a.o: edit_a.c structures.h edit_a.h $(CC) ${CFLAGS} ${INCLUDE} -c edit_a.c edit_b.o: edit_b.c structures.h edit_b.h $(CC) ${CFLAGS} ${INCLUDE} -c edit_b.c view_mat.o: view_mat.c structures.h view_mat.h $(CC) ${CFLAGS} ${INCLUDE} -c view_mat.c view_pi.o: view_pi.c structures.h view_pi.h $(CC) ${CFLAGS} ${INCLUDE} -c view_pi.c ponte.o ponte_f_f.mod: ponte.f90 $(FF) $(FFLAGSG) ${FFLIBS} ${NOSECOND} -c ponte.f90 examplesf.o: examplesf.f90 ponte_f_f.mod $(FF) $(FFLAGSG) ${FFLIBS} ${NOSECOND} -c examplesf.f90 true_print.o: true_print.f90 ponte_f_f.mod $(FF) $(FFLAGSG) ${FFLIBS} ${NOSECOND} -c true_print.f90 smc_int.o smc_int.mod smc_tools.mod: Fortran/smc_int.f90 $(FF) $(FFLAGSG) ${FFLIBS} -c Fortran/smc_int.f90 pwcr_int.o pwcr_interface.mod schur_interface.mod : Fortran/pwcr_int.f90 $(FF) $(FFLAGSG) ${FFLIBS} -c Fortran/pwcr_int.f90 fft_int.o roots.mod fft_interface.mod : Fortran/fft_int.f90 $(FF) $(FFLAGSG) ${FFLIBS} -c Fortran/fft_int.f90 pi_int.o pi_int.mod :Fortran/pi_int.f90 $(FF) $(FFLAGSG) ${FFLIBS} -c Fortran/pi_int.f90 smc_sub.o: Fortran/smc_sub.f90 smc_int.mod smc_tools.mod ponte_f_f.mod $(LAPACKMOD) $(FF) $(FFLAGSG) ${FFLIBS} -c Fortran/smc_sub.f90 is_int.o is_int.mod :Fortran/is_int.f90 $(FF) ${FFLIBS} -c Fortran/is_int.f90 pwcr_fft.o: Fortran/pwcr_fft.f90 smc_tools.mod roots.mod $(FF) $(FFLAGSG) ${FFLIBS} -c Fortran/pwcr_fft.f90 pwcr_sub.o: Fortran/pwcr_sub.f90 smc_int.mod smc_tools.mod pwcr_interface.mod schur_interface.mod is_int.mod roots.mod ponte_f_f.mod $(LAPACKMOD) $(FF) ${FFLIBS} -c Fortran/pwcr_sub.f90 fi_int.o fi_int.mod :Fortran/fi_int.f90 $(FF) ${FFLIBS} -c Fortran/fi_int.f90 fi_sub.o:Fortran/fi_sub.f90 ponte_f_f.mod smc_tools.mod smc_int.mod fi_int.mod is_int.mod $(LAPACKMOD) $(FF) ${FFLIBS} -c Fortran/fi_sub.f90 is_sub.o:Fortran/is_sub.f90 smc_tools.mod smc_int.mod fi_int.mod is_int.mod ponte_f_f.mod $(LAPACKMOD) $(FF) ${FFLIBS} -c Fortran/is_sub.f90 pi_sub.o:Fortran/pi_sub.f90 smc_tools.mod smc_int.mod ponte_f_f.mod $(LAPACKMOD) $(FF) ${FFLIBS} -c Fortran/pi_sub.f90 fcalls.o: fcalls.f90 smc_tools.mod smc_int.mod ponte_f_f.mod fi_int.mod pwcr_interface.mod is_int.mod pi_int.mod $(FF) $(FFLAGSG) ${FFLIBS} ${NOSECOND} -c fcalls.f90 futils.o: futils.f90 ponte_f_f.mod $(FF) $(FFLAGSG) ${FFLIBS} ${NOSECOND} -c futils.f90 test-lib.o: test-lib.f90 smc_tools.mod smc_int.mod ponte_f_f.mod fi_int.mod pwcr_interface.mod is_int.mod pi_int.mod $(FF) $(FFLAGSG) ${FFLIBS} ${NOSECOND} -c test-lib.f90 blas $(BLASLIB): (cd min_blas_lapack/blas; $(MAKE) blas) lapack $(LAPACKLIB): (cd min_blas_lapack/lapack; $(MAKE) lapack) lapack95 $(LAPACK95LIB) $(LAPACKMOD) : (cd min_blas_lapack/lapack95; $(MAKE) lapack95) libsmcsolver.a: ponte.o smc_int.o smc_sub.o pwcr_int.o pwcr_sub.o fft_int.o \ pi_int.o pi_sub.o is_int.o is_sub.o pwcr_fft.o pwcr_sub.o fi_int.o \ fi_sub.o is_sub.o pi_sub.o true_print.o $(PMOD) rm -f libsmcsolver.a ar cr libsmcsolver.a ponte.o smc_int.o smc_sub.o pwcr_int.o pwcr_sub.o \ fft_int.o pi_int.o pi_sub.o is_int.o is_sub.o pwcr_fft.o pwcr_sub.o \ fi_int.o fi_sub.o is_sub.o pi_sub.o true_print.o test-lib: test-lib.o libsmcsolver.a $(BLASLIB) $(LAPACKLIB) $(LAPACK95LIB) $(FF) ${FFLAGSM} ${INCLUDE} -o test-lib test-lib.o libsmcsolver.a ${FFLIBS} clean: rm -f SMCSolver main.o callbacks.o interface.o help.o rw.o padwrite.o examples.o edit_a.o edit_b.o \ view_mat.o view_pi.o ponte.o examplesf.o smc_int.o pwcr_int.o fft_int.o smc_sub.o pwcr_fft.o pwcr_sub.o \ fcalls.o fi_int.o is_int.o fi_sub.o is_sub.o pi_int.o pi_sub.o fft_interface.mod ponte_f_f.mod \ pwcr_interface.mod roots.mod schur_interface.mod smc_int.mod smc_tools.mod fi_int.mod \ is_int.mod pi_int.mod true_print.o test-lib.o futils.o test-lib rm -f libsmcsolver.a cleanlib: (cd min_blas_lapack/blas; $(MAKE) clean ) (cd min_blas_lapack/lapack; $(MAKE) clean ) (cd min_blas_lapack/lapack95; $(MAKE) clean) rm -f libsmcsolver.a cleanall: clean cleanlib dist: cleanall cp make.inc.default make.inc date>TIMESTAMP; cd ..; tar czvf SMCSolver_1.2-$(DATESTRING).tgz ./SMCSolver_1.2