Skip to content
Snippets Groups Projects
Make_include 3.28 KiB
Newer Older
Jan Thorbecke's avatar
Jan Thorbecke committed
# Makefile for general rules

# To Change the compile environment to your current system you should set:
#   -1- ROOT variable to the directory where you found this file
#   -2- if needed use a different compiler (CC) if gcc is not available
#   -3- on Solaris system use RANLIB=ranlib which is defined below

# the current directory (in vi ":r!pwd")
ROOT=/vardim/home/thorbcke/src/OpenSource
Jan Thorbecke's avatar
Jan Thorbecke committed

########################################################################
# C compiler; change this only if you are using a different C-compiler

#GNU 
#CC = gcc-mp-5 
Jan Thorbecke's avatar
Jan Thorbecke committed
CC = gcc
FC = gfortran
# Linux gcc version 4.x
OPTC = -O3 -ffast-math
#to include parallelisation with OpenMP
OPTC += -fopenmp

# for better performing code you can try:
#OPTC = -O3 -fno-trapping-math -ffast-math -funroll-all-loops -mavx -fomit-frame-pointer -mfpmath=sse -ftree-vectorizer-verbose=1
Jan Thorbecke's avatar
Jan Thorbecke committed
# Linux gcc version 3.x
#OPTC = -O3 -ffast-math -funroll-all-loops -mfpmath=sse

#for double precision use FFTlib and emmod
Jan Thorbecke's avatar
Jan Thorbecke committed
#OPTC += -DDOUBLE
#OPTF += -fdefault-double-8 -fdefault-real-8

#Cray
#CC=cc
#FC=ftn
#OPTC = -O2
#OPTF = -O2

#Intel 
CC = icc
FC = ifort
## Linux
#OPTC = -O3 -no-prec-div -qopt-report-phase=vec,openmp
#OPTF = -O3 -no-prec-div -qopt-report-phase=vec,openmp
OPTC = -O3 -no-prec-div -xCORE-AVX2
OPTF = -O3 -no-prec-div -xCORE-AVX2
#to include parallelisation with OpenMP
OPTC += -qopenmp

Jan Thorbecke's avatar
Jan Thorbecke committed
# Apple OSX intel 11.1.076 snow leopard 10.6.2
#OPTC = -O3 -msse3 -no-prec-div -vec-report2 -fno-builtin-__sprintf_chk 
Jan Thorbecke's avatar
Jan Thorbecke committed

#PGI 
JanThorbecke's avatar
JanThorbecke committed
#CC = pgcc
#FC = pgf90
#OPTC = -fast  -Minfo=vect -Mvect=simd:256 -Msafeptr
Jan Thorbecke's avatar
Jan Thorbecke committed
#OPTC = -fast  -Minfo=vect -Mvect=simd:256 -Msafeptr -Mprof=lines
JanThorbecke's avatar
JanThorbecke committed
#OPTF = -fast
#LDFLAGS = -fast -Minfo=vect -Mvect=simd:256 -Msafeptr 
Jan Thorbecke's avatar
Jan Thorbecke committed

#Pathscale 
#CC = cc
#FC = ftn
#OPTC = -Ofast -OPT:Ofast -fno-math-errno
#OPTF = -Ofast -OPT:Ofast -fno-math-errno

#Apple OSX clang/gcc (10.9) llvm
JanThorbecke's avatar
JanThorbecke committed
#CC = clang
#OPTC = -Ofast
#LDFLAGS = -Ofast
Jan Thorbecke's avatar
Jan Thorbecke committed

#AMD Open64
#CC = opencc
#FC = openf95
#OPTC = -Ofast
#OPTF = -Ofast
#LDFLAGS = -static -Ofast

#############################################################################
# FOR FFT LIBRARIES
#AMD ACML 4.4.0
#AMDROOT = /home/thorbcke/amdsdk/v1.0/acml/open64_64
#OPTC += -DACML440 -I$(AMDROOT)/include
#LIBSM = -L$(AMDROOT)/lib -lacml -lfortran -lffio -lrt -lm
Jan Thorbecke's avatar
Jan Thorbecke committed

#############################################################################
# Some convenient abbreviations

B = $(ROOT)/bin
I = $(ROOT)/include
L = $(ROOT)/lib

########################################################################
# standard CFLAGS
CFLAGS = -I$I -I.

#############################################################################
# the archiver
AR = ar

#############################################################################
# ar FLAGS
ARFLAGS = rv

#############################################################################
# ranlib definition
RANLIB = ar -s
# on Sun SOLARIS use:
#RANLIB = ranlib


.SUFFIXES : .o .c .cc .f .a .F90
.c.o	:
	$(CC) -c $(CFLAGS) $(OPTC) $<
.c.a	:
	$(CC) -c $(CFLAGS) $(OPTC) $<
	$(AR) $(ARFLAGS) $@ $*.o
	rm -f $*.o
.o.a	:
	$(AR) $(ARFLAGS) $@ $*.o
	rm -f $*.o
.f.o	:
	$(FC) -c $(FFLAGS) $(OPTF) $<
.F90.o	:
	$(FC) -c $(FFLAGS) $(OPTF) $<
.f.a	:
	$(FC) -c $(FFLAGS) -I$I $<
	$(AR) $(ARFLAGS) $@ $*.o
	rm -f $*.o
.cc.a	:
	$(C++) -c $(C++FLAGS) -I$I $<
	$(AR) $(ARFLAGS) $@ $*.o
	rm -f $*.o
.cc.o	:
	$(C++) -c $(C++FLAGS) $<