# Makefile for Libraries for QCD programs
#
# For alpha workstations, includes assembler code
# Originally designed for the Alpha 21064 processor
#  DO NOT USE WITH DOUBLE PRECISION VERSION!! (Until we have double
#     precision assembly code)

MAKEFILE = Make_alpha

# See Make_RS6K for IBM RS6000 assembly code
# See Make_t3e for the Cray T3E assembly code
# See Make_vanilla for generic code

#CFLAGS =  -O  -DFAST -float	#Dec alpha cc
CFLAGS =  -O  -DFAST -fast	#Dec alpha cc, new versions
#CFLAGS =  -O  -DFAST 	        #gnu c cc

CC = cc	#most
#CC = gcc	#Gnu c cc

#install .alpha (assembler code) in the suffixes list
.SUFFIXES:
.SUFFIXES: .1o .alpha .c .y .l .s

.c.1o:
	$(CC) $(CFLAGS) -c $*.c -o $*.1o

# compile alpha assembly language routines 
.alpha.1o:
	cp $*.alpha $*.s
	cc -O -DFAST -DPROTO -float -c $*.s
	rm $*.s

#Assembler language routines
m_mat_nn.1o: m_mat_nn.alpha
m_mat_an.1o: m_mat_an.alpha
m_mat_na.1o: m_mat_na.alpha
addmat.1o: addmat.alpha
s_m_a_mat.1o: s_m_a_mat.alpha

m_matvec.1o: m_matvec.alpha
m_amatvec.1o: m_amatvec.alpha
m_amv_4dir.1o: m_amv_4dir.alpha
m_mv_s_4dir.1o: m_mv_s_4dir.alpha
s_m_a_vec.1o: s_m_a_vec.alpha
su3_rdot.1o: su3_rdot.alpha
msq_su3vec.1o: msq_su3vec.alpha
sub4vecs.1o: sub4vecs.alpha

cs_m_a_wvec.1o: cs_m_a_wvec.alpha
m_amat_hwvec.1o: m_amat_hwvec.alpha
m_mat_hwvec.1o: m_mat_hwvec.alpha
msq_wvec.1o: msq_wvec.alpha
wvec_dot.1o: wvec_dot.alpha
grow4wvecs.1o: grow4wvecs.alpha
wp_grow.1o: wp_grow.alpha
wp_grow_a.1o: wp_grow_a.alpha
wp_shrink.1o: wp_shrink.alpha
wp_shrink4.1o: wp_shrink4.alpha

# Prefetch - taken from T3E code
prefetch.1o: prefetch32.alpha
	cp prefetch32.alpha prefetch.s
	cc -O -DFAST -DPROTO -float -c prefetch.s
	-/bin/rm prefetch.s

include Make_template
