default : libccm

include $(CCM_COM)_include

OS= ccm_barrier_mod.o    ccm_bcast_mod.o     ccm_init_mod.o\
    ccm_numz_mod.o       ccm_reduce_mod.o    ccm_merge_mod.o\
    ccm_allreduce_mod.o  ccm_scatter_mod.o   ccm_scatterv_mod.o\
    ccm_gatherv_mod.o	 ccm_gather_mod.o    ccm_alltoall_mod.o\
    ccm_alltoallv_mod.o  ccm_error_mod.o     ccm_check_sizes.o \
    ccm_rank_mod.o       ccm_size_mod.o      ccm_rs_mod.o


make_mod:  make_mod.f90
	$(F90) -o make_mod make_mod.f90

ccm_allreduce_mod.f90:ccm_allreduce_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_allreduce_mod.input ccm_allreduce_mod.f90
	
ccm_alltoall_mod.f90:ccm_alltoall_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_alltoall_mod.input ccm_alltoall_mod.f90
	
ccm_alltoallv_mod.f90:ccm_alltoallv_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_alltoallv_mod.input ccm_alltoallv_mod.f90
	
ccm_bcast_mod.f90:ccm_bcast_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_bcast_mod.input ccm_bcast_mod.f90
	
ccm_gather_mod.f90:ccm_gather_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_gather_mod.input ccm_gather_mod.f90
	
ccm_gatherv_mod.f90:ccm_gatherv_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_gatherv_mod.input ccm_gatherv_mod.f90
	
ccm_reduce_mod.f90:ccm_reduce_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_reduce_mod.input ccm_reduce_mod.f90
	
ccm_scatter_mod.f90:ccm_scatter_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_scatter_mod.input ccm_scatter_mod.f90
	
ccm_scatterv_mod.f90:ccm_scatterv_mod.input make_mod ccm_barrier_mod.o
	make_mod_script ccm_scatterv_mod.input ccm_scatterv_mod.f90
	
ccm_size_mod.f90:ccm_size_mod.input make_mod
	make_mod_script ccm_size_mod.input ccm_size_mod.f90
	
ccm_rank_mod.f90:ccm_rank_mod.input make_mod
	make_mod_script ccm_rank_mod.input ccm_rank_mod.f90
	
	
ccm_mod.o: ccm_mod.f90 $(OS)
	$(PF90) -c ccm_mod.f90
	
	
ccm_barrier_mod.o: ccm_barrier_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_barrier_mod.f90

ccm_bcast_mod.o:   ccm_bcast_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_bcast_mod.f90

ccm_scatter_mod.o:   ccm_scatter_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_scatter_mod.f90

ccm_scatter2_mod.o:   ccm_scatter2_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_scatter2_mod.f90

ccm_scatterv_mod.o:   ccm_scatterv_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_scatterv_mod.f90

ccm_gatherv_mod.o:   ccm_gatherv_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_gatherv_mod.f90

ccm_gather_mod.o:   ccm_gather_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_gather_mod.f90

ccm_alltoall_mod.o:   ccm_alltoall_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_alltoall_mod.f90

ccm_alltoallv_mod.o:   ccm_alltoallv_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_alltoallv_mod.f90

ccm_allreduce_mod.o:   ccm_allreduce_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_merge_mod.o ccm_bcast_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_allreduce_mod.f90

ccm_merge_mod.o:   ccm_merge_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_merge_mod.f90

ccm_numz_mod.o:        ccm_numz_mod.f90
	$(PF90) -c ccm_numz_mod.f90 $(INC_DIR)

ccm_error_mod.o:        ccm_error_mod.f90 ccm_numz_mod.o
	$(PF90) -c ccm_error_mod.f90
	
ccm_check_sizes.o: ccm_check_sizes.f90 ccm_numz_mod.o ccm_bcast_mod.o ccm_allreduce_mod.o ccm_alltoall_mod.o ccm_scatter_mod.o ccm_gather_mod.o
	$(PF90) -c ccm_check_sizes.f90


#-I$(INC_DIR)

ccm_reduce_mod.o:  ccm_reduce_mod.f90 ccm_numz_mod.o ccm_error_mod.o ccm_merge_mod.o ccm_rs_mod.o
	$(PF90) -c ccm_reduce_mod.f90


ccm_init_mod.o:        ccm_init_mod.f90 ccm_numz_mod.o ccm_error_mod.o
	$(PF90) -c ccm_init_mod.f90

ccm_rs_mod.o: ccm_rs_mod.f90 ccm_rank_mod.o ccm_size_mod.o
	$(PF90) -c ccm_rs_mod.f90

ccm_rank_mod.o: ccm_rank_mod.f90 ccm_numz_mod.o
	$(PF90) -c ccm_rank_mod.f90

ccm_size_mod.o: ccm_size_mod.f90 ccm_numz_mod.o
	$(PF90) -c ccm_size_mod.f90

clean:
	/bin/rm -f *mod *o \
	ccm_allreduce_mod.f90 ccm_alltoallv_mod.f90 ccm_gather_mod.f90 \
	ccm_reduce_mod.f90 ccm_scatterv_mod.f90 ccm_alltoall_mod.f90 \
	ccm_bcast_mod.f90 ccm_gatherv_mod.f90 ccm_scatter_mod.f90 \
	allreduce_test alltoallv_test bcast_test  reduce_test \
	scat_gatv_test alltoall_test  scat_gat_test \
	allreduce_test.f90 alltoallv_test.f90 bcast_test.f90  reduce_test.f90 \
	scat_gatv_test.f90 alltoall_test.f90  scat_gat_test.f90  \
	ccm_rank_mod.f90 ccm_size_mod.f90 \
	make_test make_mod libccm.a build_report

libccm:ccm_mod.o
	ar -r libccm.a $(OS) ccm_mod.o
	$(RANLIB) libccm.a


f9t= ccm_barrier_mod.f90 ccm_init_mod.f90    ccm_mod.f90         make_mod.f90 \
     ccm_error_mod.f90   ccm_merge_mod.f90   ccm_numz_mod.f90    ccm_check_sizes.f90  \
     ccm_rs_mod.f90

FILES= $(f9t) *input *script makefile *include README build.txt build.html to_quad from_quad

archive:
	tar -cf `date +%y%m%d`source.tar $(FILES)

tar:
	tar -cf mpi_src.tar $(FILES)



