####################################################################
# 
#    Makefile for 3VIL (3-loop Vacuum Integral Library)
#
########################## COMPILER ################################
# Uncomment the choices appropriate for your computing environment.
# (Not guaranteed to be complete. Please send info to the authors if
# you succeed in making things work on a system requiring different
# flags.)
#
# GNU C Compiler:
# ===============
 CC		= gcc
 TVIL_OPT	= -O2 # -O3 -funroll-loops 
#
# Intel C compiler:
# =================
# CC	 	= icc
# TVIL_OPT 	= -O3 -unroll -w
#
# General C compiler:
# ===================
# CC	 	= cc
# TVIL_OPT 	= -O3
#
################### INSTALLATION DIRECTORIES #######################
#
# TVIL_LIBDIR	= /usr/lib
# TVIL_INCDIR	= /usr/include
#
####################################################################
####################################################################
#
#  Users should not need to modify anything below this point!!!
#
####################################################################
####################################################################

CFLAGS	= $(TVIL_RESCALE) $(TVIL_SIZE) $(TVIL_OPT)
LDFLAGS	= 
LIBS	= -L. -l3vil -lm
ARFLAGS = -rus

TVIL_SRCS = initialize.c \
	    functions.c \
	    analyticA.c \
	    analyticE.c \
	    analyticFBAR.c \
	    analyticG.c \
	    analyticH.c \
	    analyticI.c \
	    initE.c \
	    initFBAR.c \
	    initG.c \
	    initH.c \
	    initI.c \
	    dFBARdt.c \
	    dGdt.c \
	    dHdt.c \
	    dIdt.c \
	    evaluate.c \
	    generic.c \
	    special.c \
	    setbold.c \
	    rk6.c \
	    rk5.c \
	    dilog.c \
	    trilog.c \
	    fevaluate.c

TVIL_OBJS = $(TVIL_SRCS:.c=.o)

MAIN_OBJ = basecalc.o

TEST_SRC = testprog.c

TEST_OBJ = $(TEST_SRC:.c=.o)

all:	lib3vil.a 3vil 3vil.tst

lib3vil.a: $(TVIL_OBJS)
	$(AR) $(ARFLAGS) $@ $?

3vil:	$(MAIN_OBJ) lib3vil.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(MAIN_OBJ) $(LIBS)

$(TEST_OBJ):	$(TEST_SRC)
	$(CC) -c $(CFLAGS) $(TVIL_TESTOPT) $(TEST_SRC)

3vil.tst:	$(TEST_OBJ) lib3vil.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TEST_OBJ) $(LIBS)

install: lib3vil.a
	cp lib3vil.a $(TVIL_LIBDIR)
	cp 3vil.h $(TVIL_INCDIR)

tidy:
	rm -rf core* a.out *~

clean:
	rm -rf core* a.out 3vil 3vil.tst *~ *.o *.T lib3vil.a

current:
	cp -p $(TVIL_SRCS) $(TEST_SRC) *.h *.inc basecalc.c* sample.c* figureH.c ftest.f Makefile README.txt LICENSE.txt $(CURRENT)
	cp -R TestData $(CURRENT)
	tar cvf $(CURRENT).tar $(CURRENT)
	gzip $(CURRENT).tar

# ===== Header dependencies: =====

generic.o initialize.o: 3vil_params.h

$(TVIL_OBJS):	internal.h 3vil.h 3vil_funcs.h 3vil_global.h

$(MAIN_OBJ):	3vil.h

$(TEST_OBJ):	3vil_testparams.h internal.h 3vil.h

functions.o:	3vil_names.h
