# Copyright 2004 Shin'ya Murakami <murakami@ahs.scitec.kobe-u.ac.jp>

PREFIX=/usr/local
#FC= g77-34
#FC= gfortran41
FC= g95
#CFLAGS= -ff90 -O2 -march=pentium4 -Wall -I${PREFIX}/include -L${PREFIX}/lib
CFLAGS= -O2 -march=pentium4 -Wall -I${PREFIX}/include -L${PREFIX}/lib
#CFLAGS+= -fbounds-check
CFLAGS+= -funroll-loops
#CFLAGS+= -mfpmath=sse -msse2
LIBS= -lfftw3 -L/usr/local/lib -lgt4f90io -L/usr/local/lib -lnetcdf
OBJS= physquant.o random.o transform.o fft.o debug.o modelparam.o io.o \
	plane2d_dp.o main.o
PROGRAM= spm2dc

.SUFFIXES: .o .f90

#.f90.o:
#	${FC} ${LIBS} ${CFLAGS} -o $@ $<

#$^は全ての依存ファイル
#$@はターゲット
#$<は最初の依存ファイル

#all: spm2dc gplt relvorts spectra

spm2dc: ${OBJS}
	${FC} ${CFLAGS} -o $@ ${OBJS} ${LIBS}
main.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90
plane2d_dp.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90
fft.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90
transform.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90
physquant.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90
random.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90
debug.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90
modelparam.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90
io.o: $*.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90

gplt: gplt.o io.o
	${FC} ${CFLAGS} -o $@ gplt.o io.o ${LIBS}
gplt.o: $*.f90 io.o
	${FC} ${CFLAGS} -c -o $@ $*.f90

gpltsp: gpltsp.o io.o
	${FC} ${CFLAGS} -o $@ gpltsp.o io.o ${LIBS}
gpltsp.o: $*.f90 io.o
	${FC} ${CFLAGS} -c -o $@ $*.f90

relvorts: relvorts.o plane2d_dp.o
	${FC} ${CFLAGS} -o $@ relvorts.o plane2d_dp.o \
	fft.o transform.o physquant.o random.o debug.o io.o  ${LIBS}
relvorts.o: $*.f90 plane2d_dp.o
	${FC} ${CFLAGS} -c -o $@ $*.f90

x_spectra: x_spectra.o plane2d_dp.o fft.o
	${FC} ${CFLAGS} -o $@ x_spectra.o plane2d_dp.o \
	fft.o transform.o physquant.o random.o debug.o io.o  ${LIBS}
x_spectra.o: $*.f90 plane2d_dp.o
	${FC} ${CFLAGS} -c -o $@ $*.f90

spectra_ap: spectra_ap.o plane2d_dp.o
	${FC} ${CFLAGS} -o $@ spectra_ap.o plane2d_dp.o \
	fft.o transform.o physquant.o random.o debug.o io.o  ${LIBS}
spectra_ap.o: $*.f90 plane2d_dp.o
	${FC} ${CFLAGS} -c -o $@ $*.f90

zonalave: zonalave.o plane2d_dp.o
	${FC} ${CFLAGS} -o $@ zonalave.o plane2d_dp.o \
	fft.o transform.o physquant.o random.o debug.o io.o  ${LIBS}
zonalave.o: $*.f90 plane2d_dp.o
	${FC} ${CFLAGS} -c -o $@ $*.f90

testrandom: testrandom.o random.o
	${FC} ${CFLAGS} ${LIBS} -o $@ testrandom.o random.o
testrandom.o: testrandom.f90
	${FC} ${CFLAGS} -c -o $@ $*.f90

fftwtest: fftwtest.f90
	${FC} ${CFLAGS} ${LIBS} -o $@ $*.f90
fft_test: fft.f90
	${FC} ${CFLAGS} ${LIBS} -o $@ $*.f90
clean:
	rm -f *.o *.mod spm2dc spm2dc.core spm2dc.nc gplt gplt.core 
	rm -f relvorts relvorts.core
