include $(TRILINOS_HOME)/build/TRILINOS_TARGET_DEFS
TRILINOS_TARGET = $(TRILINOS_ARCH).$(TRILINOS_COMM)$(TRILINOS_ID)
include $(TRILINOS_HOME)/build/makefile.$(TRILINOS_TARGET)

DEFINES= -D$(TRILINOS_ARCH) $(AZTECOO_DEFAULT_DEFINES) \
         $(AZTECOO_ARCH_DEFINES) $(EPETRA_ARCH_DEFINES) \
         -D$(AZTECOO_COMM) $(EPETRA_DEFAULT_DEFINES)

INCLUDES = $(ARCH_INCLUDES) $(AZTECOO_INCLUDES) \
           $(EPETRA_INCLUDES) $(IFPACK_INCLUDES)

CFLAGS=$(ARCH_CFLAGS) $(DEFINES) $(INCLUDES)
FFLAGS=$(ARCH_FFLAGS)
CXXFLAGS=$(ARCH_CXXFLAGS) $(DEFINES) $(INCLUDES)
#=======================================================================
# MACHDEP source files
#=======================================================================

#
# Machine dependent timing routine
#
TIME_GENERIC    = md_timer_generic.c
TIME_SUN4       = md_timer_sun.c
TIME_SOLARIS    = md_timer_sun.c
TIME_SGI        = md_timer_sun.c
TIME_SGI32      = md_timer_sun.c
TIME_SGI64      = md_timer_sun.c
TIME_SGIM4      = md_timer_sun.c
TIME_SGI10K     = md_timer_sun.c
TIME_DEC        = md_timer_sun.c
TIME_I860       = md_timer_intel.c
TIME_HP         = md_timer_generic.c
TIME_SUNMOS     = md_timer_intel.c
TIME_NCUBE      = md_timer_ncube.c
TIME_SP2        = md_timer_generic.c
TIME_T3E        = md_timer_mpi.c
TIME_LINUXALPHA_MPI  = md_timer_mpi.c
TIME_LINUXALPHA_SERIAL = md_timer_generic.c
TIME_LINUXALPHA      = $(TIME_LINUXALPHA_$(TRILINOS_COMM))
TIME_LINUX_MPI  = md_timer_mpi.c
TIME_LINUX_SERIAL = md_timer_generic.c
TIME_LINUX      = $(TIME_LINUX_$(TRILINOS_COMM))
TIME_FREEBSD_SERIAL = md_timer_generic.c
TIME_FREEBSD_MPI = md_timer_mpi.c
TIME_FREEBSD = $(TIME_FREEBSD_$(TRILINOS_COMM))
TIME_MINGW = md_timer_generic.c
TIME_TFLOP      = md_timer_intel.c
TIME_CPLANT_SERIAL = md_timer_generic.c
TIME_CPLANT_MPI    = md_timer_mpi.c
TIME_CPLANT        = $(TIME_CPLANT_$(TRILINOS_COMM))
TIME_WIN2000       = md_timer_generic.c
TIME_CYGWINCL       = $(TIME_WIN2000)
TIME_CYGWINICL       = $(TIME_WIN2000)
TIME_CYGWINGCC       = $(TIME_WIN2000)

#
# Communication package
#
COMM_SERIAL      = md_wrap_scalar_c.c
COMM_I860        = md_wrap_intel_c.c
COMM_MPI         = md_wrap_mpi_c.c
COMM_NCUBE       = md_wrap_ncube_c.c
COMM_SUNMOS      = md_wrap_puma_c.c

#=======================================================================
# AZTECOO source files
#=======================================================================

#
# Aztec communication wrappers
#
AZTEC_COMM_FNS_SERIAL      = az_comm.c
AZTEC_COMM_FNS_I860        = az_comm_intel.c
AZTEC_COMM_FNS_MPI         = az_comm.c
AZTEC_COMM_FNS_NCUBE       = az_comm_ncube.c
AZTEC_COMM_FNS_SUNMOS      = az_comm.c

AZTEC_C = $(AZTEC_COMM_FNS_$(TRILINOS_COMM)) \
          $(TIME_$(TRILINOS_ARCH)) $(COMM_$(TRILINOS_COMM)) \
az_bilu.c	          az_cg.c	        az_cgs.c \
az_cgstab.c	     az_check.c	   \
az_colperm.c        az_converge.c \
az_dd_overlap.c     az_dgemv2.c       az_dgemv3.c \
az_domain_decomp.c  az_fix_pt.c       az_flop_cnt.c \
az_fortran_wrap.c   az_gmres.c	   \
az_gsumd_puma.c     az_icc.c	        az_ilu_util.c \
az_ilut.c	          az_interface.c    az_lu_y12.c \
az_matrix_util.c    az_matvec_mult.c  az_old_matvec_mult.c \
az_pad_utils.c	     az_poly.c	        az_precond.c \
az_qmrcgs.c	     az_rilu.c	        az_scaling.c \
az_solve.c	     az_sort.c	        az_subdomain_solver.c \
az_tools.c	     az_util.c \
az_gmresr.c


AZTEC_F = az_reorder.f az_f_util.f

AZTEC_CC = AZOO_iterate.cpp Aztec2Petra.cpp AztecOO.cpp \
           AztecOO_Operator.cpp Epetra_MsrMatrix.cpp \
           AztecOO_StatusTestCombo.cpp AztecOO_StatusTestMaxIters.cpp \
           AztecOO_StatusTestResNorm.cpp

#=======================================================================
# AZTEC include files
#=======================================================================

AZTEC_INC = az_aztec.h  az_aztec_defs.h  az_aztecf.h

AZTEC_OBJ = $(AZTEC_C:.c=.$(OBJ_EXT)) $(AZTEC_F:.f=.$(OBJ_EXT)) $(AZTEC_CC:.cpp=.$(OBJ_EXT)) 

#$(LIBAZTECOO): $(AZTEC_OBJ)
LIBAZTECOO: $(AZTEC_OBJ)
	mkdir -p $(TRILINOS_HOME)/lib/$(TRILINOS_TARGET)
	$(AR) $(ARFLAGS) $(LIB_WIN_FLAGS)$(LIBAZTECOO) $(AZTEC_OBJ)

# Remove object code and library
clean:
	@echo "junk" > dummy.$(OBJ_EXT)
	@rm -f *.$(OBJ_EXT)  $(LIBAZTECOO) *~
