# multiple compiler options for BGQ

# ---------------------------------------------------------------------
# compiler/linker settings
# specify flags and libraries needed for your compiler

# uncomment one and only one of the following three lines 
# to choose a compiler toolchain

#COMPILER = GCC
#COMPILER = LLVM
COMPILER = XLC

ifeq ($(COMPILER),XLC)
CC       = /bgsys/drivers/ppcfloor/comm/xl.ndebug/bin/mpixlcxx_r
CCFLAGS  = -O3 -qarch=qp -qtune=qp -qsmp=omp -qsimd=auto -qhot=level=2 -qprefetch -qunroll=yes
FC       = /bgsys/drivers/ppcfloor/comm/xl.ndebug/bin/mpixlf90_r
FFLAGS   = -O3 -qarch=qp -qtune=qp -qsimd=auto -qhot=level=2 -qprefetch -qunroll=yes -qsmp=omp -qextname -qnosave
DEPFLAGS = -M -qmakedep=gcc
endif

ifeq ($(COMPILER),GCC)
CC       = /bgsys/drivers/ppcfloor/comm/gcc.legacy/bin/mpicxx
CCFLAGS  = -O3 -fopenmp
FC       = /bgsys/drivers/ppcfloor/comm/gcc.legacy/bin/mpif90
FFLAGS   = -O3 -fopenmp
DEPFLAGS = -M
endif

ifeq ($(COMPILER),LLVM)
#CC       = bgclang++
CC       = /home/projects/llvm/mpi/bgclang/bin/mpiclang++
CCFLAGS  = -O3 -fopenmp
DEPFLAGS = -M
FC	 = /bin/false
FFLAGS   = LLVM does not have a Fortran front-end!
endif

LINK      = $(CC)
LINKFLAGS = $(CCFLAGS)

ifeq ($(COMPILER),XLC)
  MASS_LIB    = ${IBM_MAIN_DIR}/xlmass/bg/7.3/bglib64 
  XLF_LIB     = ${IBM_MAIN_DIR}/xlf/bg/14.1/bglib64
  XLSMP_LIB   = ${IBM_MAIN_DIR}/xlsmp/bg/3.1/bglib64
  LIB        += -L${MASS_LIB} -L${XLF_LIB} -L${XLSMP_LIB} 
  LIB        += -lmassv -lmass 
  LIB        += -lxlf90_r -lxlsmp -lxlopt -lxlfmath -lxl
endif

ifeq ($(COMPILER),GCC)
# libm is definitely slower than libmass...
  LIB += -lm -lgfortran
endif

ifeq ($(COMPILER),LLVM)
    SLEEF_DIR = /home/projects/llvm/sleef
    LIB += -L${SLEEF_DIR}/lib -lsleef
endif

SIZE       = size

ARCHIVE    = ar
ARFLAGS    = -rc

# BGQ should not use shared libraries

SHFLAGS    =
SHLIBFLAGS = 

# ---------------------------------------------------------------------
# LAMMPS-specific settings, all OPTIONAL
# specify settings for LAMMPS features you will use
# if you change any -D setting, do full re-compile after "make clean"

# LAMMPS ifdef settings
# see possible settings in Section 2.2 (step 4) of manual

LMP_INC = -DLAMMPS_GZIP

# MPI library
# see discussion in Section 2.2 (step 5) of manual
# MPI wrapper compiler/linker can provide this info
# can point to dummy MPI library in src/STUBS as in Makefile.serial
# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
# INC = path for mpi.h, MPI compiler settings
# PATH = path for MPI library
# LIB = name of MPI library

MPI_INC    = 
MPI_PATH   = 
MPI_LIB    =

MPI_INC += -DMPICH_SKIP_MPICXX 
MPI_LIB += #/home/jhammond/OSPRI/branches/marpn/wrap/libmpiarbrpn.a

# FFT library
# see discussion in Section 2.2 (step 6) of manaul
# can be left blank to use provided KISS FFT library
# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings
# PATH = path for FFT library
# LIB = name of FFT library

FFT_INC  = -I/soft/libraries/alcf/current/xl/FFTW2/include -DFFT_FFTW -DFFTW_SIZE
FFT_PATH = #/soft/libraries/alcf/current/xl/FFTW2
FFT_LIB  = -L/soft/libraries/alcf/current/xl/FFTW2/lib -ldfftw

# JPEG and/or PNG library
# see discussion in Section 2.2 (step 7) of manual
# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC
# INC = path(s) for jpeglib.h and/or png.h
# PATH = path(s) for JPEG library and/or PNG library
# LIB = name(s) of JPEG library and/or PNG library

JPG_INC  =       
JPG_PATH = 
JPG_LIB  =

depend : fastdep.exe $(SRC)
	@./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1

fastdep.exe: ../DEPEND/fastdep.c
	cc -O -o $@ $<

sinclude .depend
