#  Generic routines for all applications
#  MIMD version 6
#
#  Generic make-include file for generic directory codes
#  This template file defines rules and macros common to all applications
#  It is intended to be an include file for other Makefiles.
#  Don't use it by itself!
#
#  The paths are relative to the application directory.

G_ALL = \
 ape_smear.o \
 ax_gauge.o \
 bsd_sum.o \
 byterevn.o \
 check_unitarity.o \
 com_mpi.o \
 com_qmp.o \
 com_vanilla.o \
 d_plaq2.o \
 d_plaq4.o \
 field_strength.o \
 gaugefix.o \
 gaugefix2.o \
 gauge_force_imp.o \
 gauge_force_symzk1_qdp.o \
 gauge_force_symzk1_qop.o \
 gauge_force_symzk1_qop_milc.o \
 gauge_stuff.o \
 glueball_op.o \
 hvy_pot.o \
 io_ansi.o \
 io_dcap.o \
 io_detect.o \
 io_helpers.o \
 io_helpers_nocheck.o \
 io_lat4.o \
 io_lat_utils.o \
 io_lat4xt.o \
 io_lat_utils.o \
 io_nonansi.o \
 io_paragon3.o \
 io_piofs.o \
 io_romio.o \
 io_scidac.o \
 io_scidac_types.o \
 io_source_cmplx_fm.o \
 layout_hyper_prime.o \
 layout_hyper_2or3.o \
 layout_timeslices.o \
 layout_squares.o \
 layout_hyper_sl32.o \
 layout_qcdoc.o \
 map_milc_to_qopmilc.o \
 map_milc_to_qopqdp.o \
 milc_to_qop_utilities.o \
 make_lattice.o \
 nersc_cksum.o \
 path_product.o \
 plaquette3.o \
 plaquette4.o \
 ploop2.o \
 ploop3.o \
 ploop_dist.o \
 ploop_staple.o \
 project_su3_hit.o \
 qcdoc_alloc.o \
 qop_milc.o \
 qop_milc_D.o \
 qop_milc_F.o \
 qop_milc_utilities.o \
 rand_gauge.o \
 ranmom.o \
 ranstuff.o \
 remap_fftw_fourier.o \
 remap_stdio_from_args.o \
 restrict_fourier.o \
 reunitarize2.o \
 show_generic_opts.o \
 stout_smear.o

# Must match our headers in generic_includes.h
G_HEADERS = \
  ../include/config.h \
  ../include/complex.h \
  ../include/su3.h \
  ../include/macros.h \
  ../include/comdefs.h \
  ../include/generic.h \
  ../include/generic_qdp.h \
  ../include/generic_qop.h \
  ../include/generic_schroed.h \
  ../include/int32type.h \
  ../include/io_scidac.h \
  lattice.h

G_ALL_DEPEND = \
  ../generic/generic_includes.h \
  ../generic/Make_template \
  ../include \
  ${LASTMAKE} \
  ${G_HEADERS}

${G_ALL} : ${G_ALL_DEPEND}

ape_smear.o: ../generic/ape_smear.c
	${CC} -c ${CFLAGS} $<
ax_gauge.o: ../generic/ax_gauge.c
	${CC} -c ${CFLAGS} $<
bsd_sum.o: ../generic/bsd_sum.c
	${CC} -c ${CFLAGS} $<
check_unitarity.o: ../generic/check_unitarity.c
	${CC} -c ${CFLAGS} $<
com_mpi.o: ../generic/com_mpi.c
	${CC} -c ${CFLAGS} $<
com_qmp.o: ../generic/com_qmp.c
	${CC} -c ${CFLAGS} $<
com_vanilla.o: ../generic/com_vanilla.c
	${CC} -c ${CFLAGS} $<
d_plaq2.o: ../generic/d_plaq2.c
	${CC} -c ${CFLAGS} $<
d_plaq4.o: ../generic/d_plaq4.c
	${CC} -c ${CFLAGS} $<
d_linktrsum.o: ../generic/d_linktrsum.c
	${CC} -c ${CFLAGS} $<
field_strength.o: ../generic/field_strength.c
	${CC} -c ${CFLAGS} $<
gaugefix.o: ../generic/gaugefix.c
	${CC} -c ${CFLAGS} $<
gaugefix2.o: ../generic/gaugefix2.c
	${CC} -c ${CFLAGS} $<
gauge_force_imp.o: ../generic/gauge_force_imp.c
	${CC} -c ${CFLAGS} $<
gauge_force_symzk1_qdp.o: ../generic/gauge_force_symzk1_qdp.c
	${CC} -c ${CFLAGS} $<
gauge_force_symzk1_qop.o: ../generic/gauge_force_symzk1_qop.c
	${CC} -c ${CFLAGS} $<
gauge_force_symzk1_qop_milc.o: ../generic/gauge_force_symzk1_qop_milc.c
	${CC} -c ${CFLAGS} $<
gauge_stuff.o: ../generic/gauge_stuff.c
	${CC} -c ${CFLAGS} $<
glueball_op.o: ../generic/glueball_op.c
	${CC} -c ${CFLAGS} $<
hvy_pot.o: ../generic/hvy_pot.c
	${CC} -c ${CFLAGS} $<
io_ansi.o: ../generic/io_ansi.c
	${CC} -c ${CFLAGS} $<
io_dcap.o: ../generic/io_dcap.c
	${CC} -c ${CFLAGS} $<
io_detect.o: ../include/file_types.h
io_detect.o: ../generic/io_detect.c
	${CC} -c ${CFLAGS} $<
io_helpers.o: ../include/io_lat.h
io_helpers.o: ../generic/io_helpers.c
	${CC} -c ${CFLAGS} $<
io_helpers_nocheck.o: ../include/io_lat.h
io_helpers_nocheck.o: ../generic/io_helpers_nocheck.c
	${CC} -c ${CFLAGS} $<
io_lat4.o: ../include/io_lat.h
io_lat4.o: ../generic/io_lat4.c
	${CC} -c ${CFLAGS} $<
io_lat4xt.o: ../generic/io_lat4xt.c
	${CC} -c ${CFLAGS} $<
io_lat_utils.o: ../include/io_lat.h
io_lat_utils.o: ../generic/io_lat_utils.c
	${CC} -c ${CFLAGS} $<
io_nonansi.o: ../generic/io_nonansi.c
	${CC} -c ${CFLAGS} $<
io_paragon3.o: ../generic/io_paragon3.c
	${CC} -c ${CFLAGS} $<
io_piofs.o: ../generic/io_piofs.c
	${CC} -c ${CFLAGS} $<
io_romio.o: ../generic/io_romio.c
	${CC} -c ${CFLAGS} $<
io_scidac.o: ../generic/io_scidac.c
	${CC} -c ${CFLAGS} $<
io_scidac_types.o: ../generic/io_scidac_types.c
	${CC} -c ${CFLAGS} $<
io_source_cmplx_fm.o: ../generic/io_source_cmplx_fm.c
	${CC} -c ${CFLAGS} $<
layout_hyper_prime.o: ../generic/layout_hyper_prime.c
	${CC} -c ${CFLAGS} $<
layout_hyper_2or3.o: ../generic/layout_hyper_2or3.c
	${CC} -c ${CFLAGS} $<
layout_hyper_sl32.o: ../generic/layout_hyper_sl32.c
	${CC} -c ${CFLAGS} $<
layout_timeslices.o: ../generic/layout_timeslices.c
	${CC} -c ${CFLAGS} $<
layout_squares.o: ../generic/layout_squares.c
	${CC} -c ${CFLAGS} $<
layout_qcdoc.o: ../generic/layout_qcdoc.c
	${CC} -c ${CFLAGS} $<
make_lattice.o: ../generic/make_lattice.c
	${CC} -c ${CFLAGS} $<
map_milc_to_qopmilc.o: ../generic/map_milc_to_qopmilc.c ../generic/map_milc_to_qop_all.c
	${CC} -c ${CFLAGS} $<
map_milc_to_qopqdp.o: ../generic/map_milc_to_qopqdp.c ../generic/map_milc_to_qop_all.c
	${CC} -c ${CFLAGS} $<
milc_to_qop_utilities.o: ../generic/milc_to_qop_utilities.c
	${CC} -c ${CFLAGS} $<
nersc_cksum.o: ../generic/nersc_cksum.c
	${CC} -c ${CFLAGS} $<
path_product.o: ../generic/path_product.c
	${CC} -c ${CFLAGS} $<
plaquette3.o: ../generic/plaquette3.c
	${CC} -c ${CFLAGS} $<
plaquette4.o: ../generic/plaquette4.c
	${CC} -c ${CFLAGS} $<
ploop2.o: ../generic/ploop2.c
	${CC} -c ${CFLAGS} $<
ploop3.o: ../generic/ploop3.c
	${CC} -c ${CFLAGS} $<
ploop_dist.o: ../generic/ploop_dist.c
	${CC} -c ${CFLAGS} $<
ploop_staple.o: ../generic/ploop_staple.c
	${CC} -c ${CFLAGS} $<
project_su3_hit.o: ../generic/project_su3_hit.c
	${CC} -c ${CFLAGS} $<
qcdoc_alloc.o: ../generic/qcdoc_alloc.c
	${CC} -c ${CFLAGS} $<
qop_milc.o: ../generic/qop_milc.c
	${CC} -c ${CFLAGS} $<
qop_milc_D.o: ../generic/qop_milc_D.c ../generic/qop_milc_P.c
	${CC} -c ${CFLAGS} $<
qop_milc_F.o: ../generic/qop_milc_F.c ../generic/qop_milc_D.c
	${CC} -c ${CFLAGS} $<
qop_milc_utilities.o: ../generic/qop_milc_utilities.c
	${CC} -c ${CFLAGS} $<
rand_gauge.o: ../generic/rand_gauge.c
	${CC} -c ${CFLAGS} $<
ranmom.o: ../generic/ranmom.c
	${CC} -c ${CFLAGS} $<
ranstuff.o: ../generic/ranstuff.c
	${CC} -c ${CFLAGS} $<
remap_fftw_fourier.o: ../generic/remap_fftw_fourier.c
	${CC} -c ${CFLAGS} $<
remap_stdio_from_args.o: ../generic/remap_stdio_from_args.c
	${CC} -c ${CFLAGS} $<
restrict_fourier.o: ../generic/restrict_fourier.c
	${CC} -c ${CFLAGS} $<
reunitarize2.o: ../generic/reunitarize2.c
	${CC} -c ${CFLAGS} $<
show_generic_opts.o: ../generic/show_generic_opts.c
	${CC} -c ${CFLAGS} $<
stout_smear.o: ../generic/stout_smear.c
	${CC} -c ${CFLAGS} $<

ifeq ($(strip ${HAVEQDP}),true)

G_ALL_QDP = \
 layout_qdp.o \
 map_milc_to_qdp_F.o \
 map_milc_to_qdp_D.o

G_HEADERS_QDP = \
  $(QDP)/include/qdp.h

G_ALL_DEPEND_QDP = \
  ${G_HEADERS_QDP} \
  ${G_ALL_DEPEND}

${G_ALL_QDP} : ${G_ALL_DEPEND_QDP}

layout_qdp.o: ../generic/layout_qdp.c
	${CC} -c ${CFLAGS} $<
map_milc_to_qdp_F.o: ../generic/map_milc_to_qdp_F.c ../generic/map_milc_to_qdp_P.c ../generic/map_milc_to_qdp_Fd.c
	${CC} -c ${CFLAGS} $<
map_milc_to_qdp_D.o: ../generic/map_milc_to_qdp_D.c ../generic/map_milc_to_qdp_P.c ../generic/map_milc_to_qdp_Df.c
	${CC} -c ${CFLAGS} $<

endif
