# Whenever this version string changes, the application is configured
# and rebuilt from scratch
VERSION = qb2-mvapich2-2016-03-07

CPP = cpp
FPP = cpp
CC  = /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/bin/intel64/icc
CXX = /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/bin/intel64/icpc
F77 = /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/bin/intel64/ifort
F90 = /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/bin/intel64/ifort

CPPFLAGS = -DMPICH_IGNORE_CXX_SEEK
FPPFLAGS = -traditional

CFLAGS   = -align -std=gnu99 -U__STRICT_ANSI__ -g -xHOST -diag-disable 10397
CXXFLAGS = -align -std=gnu++11 -U__STRICT_ANSI__ -g  -xHOST -diag-disable 10397 -D__builtin_signbit=__signbit
F77FLAGS = -g -align -pad -xHOST -diag-disable 10397
F90FLAGS = -g -align -pad -xHOST -diag-disable 10397

LDFLAGS  = -rdynamic -Wl,-rpath,/usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/mkl/lib/intel64 -Wl,-rpath,/usr/local/packages/fftw/3.3.3/INTEL-140-MVAPICH2-2.0/lib -Wl,-rpath,/usr/local/packages/gsl/1.16/INTEL-14.0.2/lib -Wl,-rpath,/usr/local/packages/mvapich2/2.0/INTEL-14.0.2/lib -Wl,-rpath,/usr/lib64 -Wl,-rpath,/usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/compiler/lib/intel64
LIBDIRS = /usr/lib64 /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/compiler/lib/intel64 /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/mkl/lib/intel64

C_LINE_DIRECTIVES = yes
F_LINE_DIRECTIVES = yes

VECTORISE                = yes
VECTORISE_ALIGNED_ARRAYS = no
VECTORISE_INLINE         = no

# -check-uninit fails for asm output operands
DEBUG = no
CPP_DEBUG_FLAGS = -DCARPET_DEBUG
FPP_DEBUG_FLAGS = -DCARPET_DEBUG
C_DEBUG_FLAGS   = -O0 # -check-uninit
CXX_DEBUG_FLAGS = -O0 # -check-uninit
F77_DEBUG_FLAGS = -O0 -check bounds -check format # -check all
F90_DEBUG_FLAGS = -O0 -check bounds -check format # -check all

OPTIMISE = yes
CPP_OPTIMISE_FLAGS = # -DCARPET_OPTIMISE -DNDEBUG
FPP_OPTIMISE_FLAGS = # -DCARPET_OPTIMISE -DNDEBUG
C_OPTIMISE_FLAGS   = -O2 -override-limits
CXX_OPTIMISE_FLAGS = -O2 -override-limits
F77_OPTIMISE_FLAGS = -O2 -override-limits
F90_OPTIMISE_FLAGS = -O2 -override-limits

PROFILE = no
CPP_PROFILE_FLAGS =
FPP_PROFILE_FLAGS =
C_PROFILE_FLAGS   = -pg
CXX_PROFILE_FLAGS = -pg
F77_PROFILE_FLAGS = -pg
F90_PROFILE_FLAGS = -pg

OPENMP           = yes
CPP_OPENMP_FLAGS = -openmp
FPP_OPENMP_FLAGS = -D_OPENMP
C_OPENMP_FLAGS   = -openmp
CXX_OPENMP_FLAGS = -openmp
F77_OPENMP_FLAGS = -openmp
F90_OPENMP_FLAGS = -openmp

WARN           = yes
CPP_WARN_FLAGS = 
FPP_WARN_FLAGS = 
C_WARN_FLAGS   = 
CXX_WARN_FLAGS = 
F77_WARN_FLAGS = 
F90_WARN_FLAGS = 



# With OpenMP, certain Intel libraries need to be linked statically.
# This prevents the error
# "cannot allocate memory for thread-local data: ABORT".
# However, the MPI libraries must be linked dynamically.

BLAS_DIR  = NO_BUILD
BLAS_LIBS = -mkl

# CUDA, configured with the flesh
CUCC                = /usr/local/packages/cuda/6.5/bin/nvcc
CUCCFLAGS           = -m 64 -arch sm_50 -Xcompiler -march=native -g -maxrregcount 60 -Drestrict=__restrict__
CUCC_DEBUG_FLAGS    = -DCARPET_DEBUG -O0
CUCC_OPTIMISE_FLAGS = -O3 -use_fast_math
CUCC_WARN_FLAGS     =  -Xcompiler -Wall
CU_DEPEND = /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/bin/intel64/icpc -M -x c++ -DMPICH_IGNORE_CXX_SEEK -openmp

# CUDA, configured via thorn CUDA
CUDA_DIR                  = /usr/local/packages/cuda/6.5
CUCC_ARCH                 = sm_50
CUCC_EXTRA_FLAGS          = -maxrregcount 60 -Drestrict=__restrict__
CUCC_EXTRA_OPTIMISE_FLAGS = -use_fast_math
CUCC_EXTRA_WARN_FLAGS     = -use_fast_math

# The installed FFTW3 does not support threads
# FFTW3_DIR = /usr/local/packages/fftw/3.3.3/INTEL-140-MVAPICH2-2.0
# FFTW3 build fails since ptrdiff_t is not found
FFTW3_DIR = BUILD
# FFTW3_DIR = /scratch/eschnett/fftw-3.3.4

GSL_DIR = /usr/local/packages/gsl/1.16/INTEL-14.0.2

LAPACK_DIR  = NO_BUILD
LAPACK_LIBS = -mkl

MPI_DIR      = NO_BUILD
MPI_INC_DIRS = /usr/local/packages/mvapich2/2.0/INTEL-14.0.2/include
MPI_LIB_DIRS = /usr/local/packages/mvapich2/2.0/INTEL-14.0.2/lib /usr/lib64
MPI_LIBS     = mpich ibverbs ibumad rdmacm   bfd iberty rt

PETSC_DIR                   = BUILD
PETSC_BLAS_EXTRA_LIB_DIRS   = /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/compiler/lib/intel64   /usr/lib64
PETSC_LAPACK_EXTRA_LIB_DIRS = /usr/local/compilers/Intel/cluster_studio_xe_2013.1.046/composer_xe_2013_sp1.2.144/compiler/lib/intel64   /usr/lib64
PETSC_MPI_EXTRA_LIB_DIRS    = /usr/lib64
PETSC_MPI_EXTRA_LIBS        = pthread

PTHREADS_DIR = NO_BUILD

TAU_MAKEFILE = /usr/local/packages/tau/2.23.2b3/INTEL-140-MVAPICH2-2.0/x86_64/lib/Makefile.tau-icpc-mpi-pdt-openmp
