# 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_FFTW2 -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