#
# *********************************************************************
#                            GASpAR  makefile
# *********************************************************************
GHOME        = ..
vpath %.cpp  $(GHOME)/sem:$(GHOME)/comm:$(GHOME)/solvers:$(GHOME)/blas:$(GHOME)/utils:$(GHOME)/dd:$(GHOME)/io:$(GHOME)/mesh:$(GHOME)/exec
vpath %.hpp  $(GHOME)/sem:$(GHOME)/comm:$(GHOME)/solvers:$(GHOME)/blas:$(GHOME)/utils:$(GHOME)/dd:$(GHOME)/io:$(GHOME)/mesh:$(GHOME)/exec
vpath %.h  $(GHOME)/include:$(GHOME)/blas:.
vpath %.F  $(GHOME)/blas
#
.KEEP_STATE:
#
EXT          =
EXE          = ginfo
DEBUG        = yes
MPI          = no
#######################################################################
#######################################################################
#
SHELL        = /bin/sh
CC           = pgCC
FC           = pgf77
CPP          = pgCC
LOADER       = pgCC
ifeq ($(MPI),yes)
  MPI_HOME     = /home/duaner/mpich2
  MPI_LIB_DIR  = -L$(MPI_HOME)/lib 
  MPI_INCL_DIR = -I$(MPI_HOME)/include
  MPI_LIBS     = -lmpich
  MPI_DEF      = -DG_MPI1 -DMPI_GENERIC_DEFAULT -DMPI_IO_DEFAULT -DMPICH_IGNORE_CXX_SEEK
else
  MPI_HOME     =
  MPI_LIB_DIR  =
  MPI_INCL_DIR =
  MPI_LIBS     =
  MPI_DEF      = 
endif
LIBS         = $(MPI_LIBS) -lpgftnrtl -lpgsse2 -lpthread  -lrt
H_INCL     = -I$(GHOME)/include -I$(GHOME)/sem -I$(GHOME)/comm -I$(GHOME)/blas -I$(GHOME)/solvers -I$(GHOME)/utils -I$(GHOME)/dd -I$(GHOME)/mesh -I$(GHOME)/io -I$(GHOME)/exec -I$(GHOME)/ginfo $(MPI_INCL_DIR) 
LIB_DIR    = $(MPI_LIB_DIR)
#
#
GDEFINE    = -D_LINUX -D_COMPILER_PG -D_INT32 

ifeq ($(DEBUG),yes)
CFLAGS     = -c -g -w  
FFLAGS     = -c -g -w 
CPPFLAGS   = -c -g -w
EXEFLAGS   =  
else
CFLAGS     = -c -w  -Minline -Knoieee -fast -Mvect=sse -Mnoscalarsse -Minline=levels:10 -Mflushz -Mcache_align -Mnounsafe_par_align
FFLAGS     = -c -w  -Minline -Knoieee -fast -Mvect=sse -Mnoscalarsse -Minline=levels:10 -Mflushz -Mcache_align -Mnounsafe_par_align
CPPFLAGS   = -c -w  -Minline -Knoieee -fast -Mvect=sse -Mnoscalarsse -Minline=levels:10 -Mflushz -Mcache_align -Mnounsafe_par_align
EXEFLAGS   =        -Minline -Knoieee -fast -Mvect=sse -Mnoscalarsse -Minline=levels:10 -Mflushz -Mcache_align -Mnounsafe_par_align
endif
#
#
ifeq ($(DEBUG),yes)
  GGDEFINE   = $(GDEFINE) -DGARRAY_BOUNDS -DGLIST_BOUNDS $(MPI_DEF)
else
  GGDEFINE   = $(GDEFINE) $(MPI_DEF) 
endif

HEADERS  = gindex.hpp  
#

OBJECTS= mtk.o cff.o cff_wrappers.o linop.o gtvector.o gtmatrix.o point.o gtbuffer.o\
         gstream.o gbin_stream.o gbin_reader.o gcomm.o gcutils.o  gtlist.o gneighbor.o \
         vdbdata.o gbin_info.o

.SUFFIXES: 
.SUFFIXES: .F .f .cpp .c .o $(SUFFIXES)
#
#
.cpp.o: $(HEADERS)
	$(CC) $(CPPFLAGS) $(GGDEFINE) $(H_INCL) $^
.c.o: 
	$(CC) $(CFLAGS) $(CDEFINE) $(H_INCL) $^
.F.o: 
	$(FC) $(FFLAGS) $(CDEFINE) $(H_INCL) $^ 
#
#
all:  $(OBJECTS) 
	$(LOADER) -o $(EXE) $(EXEFLAGS) $(LIB_DIR) $(OBJECTS) $(LIBS)
#
clean:
	rm -f $(OBJECTS) $(EXE) *.ti *.ii
