#
# This is a makefile for GRAPE-DR.
# For other architectures, set GARCH and HIB as follows:
#
#          GRAPE-DR   GRAPE-7   GRAPE-6BX     GRAPE-6A   Phantom-GRAPE-5
# GARCH    gdr        g7        g6bx          g6a        pg5
# HIB      hib        hib       g6bxhib       -          -
#
# For GRAPE-DR, GRAPE-7 and GRAPE-6BX, set HIBLIB
# and LINKHIB as follows:
#   HIBLIB   = $(LIBPATH)/lib$(HIB).a
#   LINKHIB  = -l$(HIB)
#
# For Phantom-GRAPE-5 with OpenMP enabled, set LDFLAGS and CFLAGS as follows:
#   LDFLAGS += -fopenmp
#   CFLAGS += -fopenmp
#
# For CUDA G5/G6, set LDFLAGS and CFLAGS as follows:
#   LDFLAGS += -L$(cudapath)/lib -lcudart
# Here, 'cudapath' and 'cudasdkpath' denotes the path which
# CUDA Toolkit and SDK are installed into.
# By default, numerical format 'double single' is used.
# For single-precision, use '-lcuda5s' instead of '-cuda5'.
#
# An architecuture-independent makefile can be found at Makefile.generic.
#

GARCH     = gdr
HIB       = hib
INCPATH   = ../../include
LIBPATH   = ../../lib
CC        = cc
CFLAGS    = -O3 -I$(INCPATH)
LDFLAGS   = -L$(LIBPATH)
OBJECT    = sticky8.o force.o ksort.o cl.o cpu.o

HIBLIB   = $(LIBPATH)/lib$(HIB).a
LINKHIB  = -l$(HIB)

s8_$(GARCH):	$(OBJECT) $(LIBPATH)/lib$(GARCH)6.a $(HIBLIB)
		$(CC) $(CFLAGS) $(LDFLAGS) $(OBJECT) -o $@ -l$(GARCH)6 $(LINKHIB) -lm

s8a_$(GARCH):	sticky8a.o $(OBJECT) animation.o Xtc.o $(LIBPATH)/lib$(GARCH)6.a $(HIBLIB)
		$(CC) $(CFLAGS) sticky8a.o $(OBJECT) animation.o Xtc.o -o $@ -l$(GARCH)6 $(LINKHIB) -lm -L/usr/X11R6/lib -lX11 

cl.o: cl.c  
	$(CC) $(CFLAGS) -c cl.c 

ksort.o: ksort.c
	$(CC) $(CFLAGS) -c ksort.c 

force.o: force.c
	$(CC) $(CFLAGS) -c force.c 

radius.o: radius.c
	$(CC) $(CFLAGS) -c radius.c 

sticky8.o: sticky8.c
	$(CC) $(CFLAGS) -c sticky8.c 

sticky8a.o: sticky8.c 
	$(CC) $(CFLAGS) -c sticky8.c -o sticky8a.o  -DANIMATION

animation.o: animation.c
	$(CC) $(CFLAGS) -c animation.c 

Xtc.o: Xtc.c
	$(CC) $(CFLAGS) -c Xtc.c 

clean: 
	rm -f *.o s8_$(GARCH) s8a_$(GARCH) s8_* *~

g6util.o: g6util.c
	$(CC) $(CFLAGS) -c g6util.c
