######################################################################
#
#  Name .......................... LiDIA/src/templates/matrix/makefile
#
#  Architecture : sparc7, sparc8, os2, ...
#  Compiler     : gcc, g++ 
#  Flags        : -g -O2
#  Program Flags: -DDEBUG, -DMEMORY, -DERRIGN 
#  Author       : Thomas Papanikolaou, Patrick Theobald
#  Release      : 1.0 
#  Last Change  : Fri Mar 15 112:27:18 MET DST 1996 
#  Copyright    : by the University of Saarland, 1994
#
 
#
# include the configuration file
#
  
include ../../../config/CONFIG

#
# include instantiation file
#

include makefile.inst
   
#
# Rules
#

c++:	$(CXXOBJ) Lm_bigmod_matrix.o Lm_bigint_matrix.o Lm_multiple_gcd.o \
			Lm_bigfloat_matrix.o Lm_matrix_error_msg.o
	-$(AR) $(LIDIA_LIB)$(DIRSEP)$(libp)LiDIA.a Lm*.o

g++:	$(CXXOBJ) Lm_bigmod_matrix.o Lm_bigint_matrix.o Lm_multiple_gcd.o \
			Lm_bigfloat_matrix.o Lm_matrix_error_msg.o
	-$(AR) $(LIDIA_LIB)$(DIRSEP)$(libp)LiDIA.a Lm*.o 

#CC:	Lm_bigint_matrix.o Lm_multiple_gcd.o Lm_bigmod_matrix.o \
#			Lm_bigfloat_matrix.o
#	-$(AR) $(LIDIA_LIB)$(DIRSEP)$(libp)LiDIA.a Lm*.o

CC:	Lm_bigint_matrix.o Lm_multiple_gcd.o Lm_bigfloat_matrix.o Lm_matrix_error_msg.o
	-$(AR) $(LIDIA_LIB)$(DIRSEP)$(libp)LiDIA.a Lm*.o

ranlib:
	$(RANLIB) $(LIDIA_LIB)$(DIRSEP)$(libp)LiDIA.a

appl:	math_matrix_appl_int$(EXE) \
	math_matrix_appl_long$(EXE) \
	math_matrix_appl_double$(EXE) math_matrix_appl_bigint$(EXE) \
	math_matrix_appl_bigfloat$(EXE) \
	bigint_matrix_appl$(EXE)

#
# Dependencies
# 

PRIME_FILE = -DLIDIA_PRIMELIST_NAME=\"$(LIDIA_INSTALL_PRIMES)/LIDIA_PRIMES\"

Lm_bigint_matrix.o:	bigint_matrix.c $(SRCMAT)
		$(CXX) -c bigint_matrix.c $(CXXFLAGS) -I$(LIDIA_INC) \
		$(PRIME_FILE) -o Lm_bigint_matrix.o
		$(NOOMV) bigint_matrix.o $(objp)m_bigint_matrix.o

Lm_multiple_gcd.o:		multiple_gcd.c
		$(CXX) -c multiple_gcd.c $(CXXFLAGS) -I$(LIDIA_INC) \
		-o Lm_multiple_gcd.o
		$(NOOMV) multiple_gcd.o $(objp)m_multiple_gcd.o

Lm_bigmod_matrix.o:        bigmod_matrix.c 
		$(CXX) -c bigmod_matrix.c $(CXXFLAGS) -I$(LIDIA_INC) \
		-o Lm_bigmod_matrix.o
		$(NOOMV) bigmod_matrix.o $(objp)m_bigmod_matrix.o

Lm_bigfloat_matrix.o:	bigfloat_matrix.c $(SRCMAT)
		$(CXX) -c bigfloat_matrix.c $(CXXFLAGS) -I$(LIDIA_INC) \
		$(PRIME_FILE) -o Lm_bigfloat_matrix.o
		$(NOOMV) bigfloat_matrix.o $(objp)m_bigfloat_matrix.o

Lm_matrix_error_msg.o:	matrix_error_msg.c 
		$(CXX) -c matrix_error_msg.c $(CXXFLAGS) -I$(LIDIA_INC) \
		$(PRIME_FILE) -o Lm_matrix_error_msg.o
		$(NOOMV) matrix_error_msg.o $(objp)m_matrix_error_msg.o

#
# application files
#

MM  = $(CXX) $(CXXFLAGS) math_matrix_appl.c $(CXX-off) $($*_para) -I$(LIDIA_INC)
BM  = $(CXX) $(CXXFLAGS) base_matrix_appl.c $(CXX-off) $($*_para) -I$(LIDIA_INC) 
BIGM = $(CXX) $(CXXFLAGS) bigint_matrix_appl.c $(CXX-off) -I$(LIDIA_INC)

base_matrix_appl_char$(EXE):	base_matrix_appl.c
	$(BM) -DIN_NAME=\"input_char\" -DOUT_NAME=\"base_matrix_appl_char.out\" \
	-DTYPE=char -o base_matrix_appl_char$(EXE) -L$(LIDIA_LIB) $(LIB) 
	-$(MV) base_matrix_appl_char$(EXE) $(LIDIA_BIN)
	-$(CP) input_char $(LIDIA_BIN)
	-$(CP) base_matrix_appl_char.dat $(LIDIA_BIN)

math_matrix_appl_int$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_int\" -DOUT_NAME=\"math_matrix_appl_int.out\" \
	-DTYPE=int -o math_matrix_appl_int$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_int$(EXE) $(LIDIA_BIN)
	-$(CP) input_int $(LIDIA_BIN)
	-$(CP) math_matrix_appl_int.dat $(LIDIA_BIN)

math_matrix_appl_long$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_long\" -DOUT_NAME=\"math_matrix_appl_long.out\" \
	-DTYPE=long -o math_matrix_appl_long$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_long$(EXE) $(LIDIA_BIN)
	-$(CP) input_long $(LIDIA_BIN)
	-$(CP) math_matrix_appl_long.dat $(LIDIA_BIN)

math_matrix_appl_float$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_float\" -DOUT_NAME=\"math_matrix_appl_float.out\" \
	-DTYPE=float -o math_matrix_appl_float$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_float$(EXE) $(LIDIA_BIN)
	-$(CP) input_float $(LIDIA_BIN)
	-$(CP) math_matrix_appl_float.dat $(LIDIA_BIN)

math_matrix_appl_double$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_double\" -DOUT_NAME=\"math_matrix_appl_double.out\" \
	-DTYPE=double -o math_matrix_appl_double$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_double$(EXE) $(LIDIA_BIN)
	-$(CP) input_double $(LIDIA_BIN)
	-$(CP) math_matrix_appl_double.dat $(LIDIA_BIN)

math_matrix_appl_bigint$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_bigint\" -DOUT_NAME=\"math_matrix_appl_bigint.out\" \
	-DTYPE=bigint -o math_matrix_appl_bigint$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_bigint$(EXE) $(LIDIA_BIN)
	-$(CP) input_bigint $(LIDIA_BIN)
	-$(CP) math_matrix_appl_bigint.dat $(LIDIA_BIN)

math_matrix_appl_bigmod$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_bigmod\" -DOUT_NAME=\"math_matrix_appl_bigmod.out\" \
	-DTYPE=bigmod -o math_matrix_appl_bigmod$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_bigmod$(EXE) $(LIDIA_BIN)
	-$(CP) input_bigmod $(LIDIA_BIN)
	-$(CP) math_matrix_appl_bigmod.dat $(LIDIA_BIN)

math_matrix_appl_bigrational$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_bigrational\" -DOUT_NAME=\"math_matrix_appl_bigrational.out\" \
	-DTYPE=bigrational -o math_matrix_appl_bigrational$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_bigrational$(EXE) $(LIDIA_BIN)
	-$(CP) input_bigrational $(LIDIA_BIN)
	-$(CP) math_matrix_appl_bigrational.dat $(LIDIA_BIN)

math_matrix_appl_bigfloat$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_bigfloat\" -DOUT_NAME=\"math_matrix_appl_bigfloat.out\" \
	-DTYPE=bigfloat -o math_matrix_appl_bigfloat$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_bigfloat$(EXE) $(LIDIA_BIN)
	-$(CP) input_bigfloat $(LIDIA_BIN)
	-$(CP) math_matrix_appl_bigfloat.dat $(LIDIA_BIN)

math_matrix_appl_bigcomplex$(EXE):	math_matrix_appl.c
	$(MM) -DIN_NAME=\"input_bigcomplex\" -DOUT_NAME=\"math_matrix_appl_bigcomplex.out\" \
	-DTYPE=bigcomplex -o math_matrix_appl_bigcomplex$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) math_matrix_appl_bigcomplex$(EXE) $(LIDIA_BIN)
	-$(CP) input_bigcomplex $(LIDIA_BIN)
	-$(CP) math_matrix_appl_bigcomplex.dat $(LIDIA_BIN)

#
# special application file
#

bigint_matrix_appl$(EXE):	bigint_matrix_appl.c 
	$(BIGM) -DIN_NAME=\"input_bigint\" -DOUT_NAME=\"bigint_matrix_appl.out\" \
	-o bigint_matrix_appl$(EXE) -L$(LIDIA_LIB) $(LIB)
	-$(MV) bigint_matrix_appl$(EXE) $(LIDIA_BIN)
	-$(CP) input_bigint $(LIDIA_BIN)
	-$(CP) bigint_matrix_appl.dat $(LIDIA_BIN)

#
# Clean
#

clean:
	-$(RM) *.o
	-$(RMR) ptrepository

veryclean:	clean 
	-$(RM) $(appl)

#
# end of makefile
#



