Created
June 2, 2020 15:27
-
-
Save pwolfram/2537e6a32a8fe4d85e32e8af76a0c898 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MODEL_FORMULATION = | |
dummy: | |
( $(MAKE) error ) | |
xlf: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpifort" \ | |
"CC_PARALLEL = mpicc" \ | |
"CXX_PARALLEL = mpic++" \ | |
"FC_SERIAL = xlf2003_r" \ | |
"CC_SERIAL = xlc_r" \ | |
"CXX_SERIAL = xlc++_r" \ | |
"FFLAGS_PROMOTION = -qrealsize=8" \ | |
"FFLAGS_OPT = -O3 -qufmt=be -WF,-qnotrigraph" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_DEBUG = -O0 -g -C -qufmt=be -WF,-qnotrigraph" \ | |
"CFLAGS_DEBUG = -O0 -g" \ | |
"CXXFLAGS_DEBUG = -O0 -g" \ | |
"LDFLAGS_DEBUG = -O0 -g" \ | |
"FFLAGS_OMP = -qsmp=omp" \ | |
"CFLAGS_OMP = -qsmp=omp" \ | |
"PICFLAG = -qpic" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
ftn: | |
( $(MAKE) all \ | |
"FC_PARALLEL = ftn" \ | |
"CC_PARALLEL = cc" \ | |
"CXX_PARALLEL = CC" \ | |
"FC_SERIAL = ftn" \ | |
"CC_SERIAL = cc" \ | |
"CXX_SERIAL = CC" \ | |
"FFLAGS_PROMOTION = -r8" \ | |
"FFLAGS_OPT = -i4 -gopt -O2 -Mvect=nosse -Kieee -convert big_endian" \ | |
"CFLAGS_OPT = -fast" \ | |
"CXXFLAGS_OPT = -fast" \ | |
"LDFLAGS_OPT = " \ | |
"FFLAGS_OMP = -mp" \ | |
"CFLAGS_OMP = -mp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
titan-cray: | |
( $(MAKE) all \ | |
"FC_PARALLEL = ftn" \ | |
"CC_PARALLEL = cc" \ | |
"FC_SERIAL = ftn" \ | |
"CC_SERIAL = gcc" \ | |
"FFLAGS_PROMOTION = -default64" \ | |
"FFLAGS_OPT = -s integer32 -O3 -f free -N 255 -em -ef" \ | |
"CFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_OMP = " \ | |
"CFLAGS_OMP = " \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
pgi: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpif90" \ | |
"CC_PARALLEL = mpicc" \ | |
"CXX_PARALLEL = mpicxx" \ | |
"FC_SERIAL = pgf90" \ | |
"CC_SERIAL = pgcc" \ | |
"CXX_SERIAL = pgc++" \ | |
"FFLAGS_PROMOTION = -r8" \ | |
"FFLAGS_OPT = -O3 -byteswapio -Mfree" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -byteswapio -Mfree -Ktrap=divz,fp,inv,ovf -traceback" \ | |
"CFLAGS_DEBUG = -O0 -g -traceback" \ | |
"CXXFLAGS_DEBUG = -O0 -g -traceback" \ | |
"LDFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -Ktrap=divz,fp,inv,ovf -traceback" \ | |
"FFLAGS_OMP = -mp" \ | |
"CFLAGS_OMP = -mp" \ | |
"PICFLAG = -fpic" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
pgi-nersc: | |
( $(MAKE) all \ | |
"FC_PARALLEL = ftn" \ | |
"CC_PARALLEL = cc" \ | |
"CXX_PARALLEL = CC" \ | |
"FC_SERIAL = ftn" \ | |
"CC_SERIAL = cc" \ | |
"CXX_SERIAL = CC" \ | |
"FFLAGS_PROMOTION = -r8" \ | |
"FFLAGS_OPT = -O3 -byteswapio -Mfree" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_OMP = -mp" \ | |
"CFLAGS_OMP = -mp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
pgi-llnl: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpipgf90" \ | |
"CC_PARALLEL = pgcc" \ | |
"CXX_PARALLEL = mpipgcxx" \ | |
"FC_SERIAL = pgf90" \ | |
"CC_SERIAL = pgcc" \ | |
"CXX_SERIAL = pgc++" \ | |
"FFLAGS_PROMOTION = -r8" \ | |
"FFLAGS_OPT = -i4 -g -O2 -byteswapio" \ | |
"CFLAGS_OPT = -fast" \ | |
"CXXFLAGS_OPT = -fast" \ | |
"LDFLAGS_OPT = " \ | |
"FFLAGS_OMP = -mp" \ | |
"CFLAGS_OMP = -mp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
intel: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpiifort" \ | |
"CC_PARALLEL = mpiicc" \ | |
"CXX_PARALLEL = mpiicxx" \ | |
"FC_SERIAL = ifort" \ | |
"CC_SERIAL = icc" \ | |
"CXX_SERIAL = icpc" \ | |
"FFLAGS_PROMOTION = -real-size 64" \ | |
"FFLAGS_OPT = -O3 -convert big_endian -free -align array64byte" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_DEBUG = -g -convert big_endian -free -CU -CB -check all -fpe0 -traceback" \ | |
"CFLAGS_DEBUG = -g -traceback" \ | |
"CXXFLAGS_DEBUG = -g -traceback" \ | |
"LDFLAGS_DEBUG = -g -fpe0 -traceback" \ | |
"FFLAGS_OMP = -qopenmp" \ | |
"CFLAGS_OMP = -qopenmp" \ | |
"PICFLAG = -fpic" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
ifort: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpif90" \ | |
"CC_PARALLEL = mpicc" \ | |
"CXX_PARALLEL = mpicxx" \ | |
"FC_SERIAL = ifort" \ | |
"CC_SERIAL = icc" \ | |
"CXX_SERIAL = icpc" \ | |
"FFLAGS_PROMOTION = -real-size 64" \ | |
"FFLAGS_OPT = -O3 -convert big_endian -free -align array64byte" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_DEBUG = -g -convert big_endian -free -CU -CB -check all -fpe0 -traceback" \ | |
"CFLAGS_DEBUG = -g -traceback" \ | |
"CXXFLAGS_DEBUG = -g -traceback" \ | |
"LDFLAGS_DEBUG = -g -fpe0 -traceback" \ | |
"FFLAGS_OMP = -qopenmp" \ | |
"CFLAGS_OMP = -qopenmp" \ | |
"PICFLAG = -fpic" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
ifort-scorep: | |
( $(MAKE) all \ | |
"FC_PARALLEL = scorep --compiler mpif90" \ | |
"CC_PARALLEL = scorep --compiler mpicc" \ | |
"CXX_PARALLEL = scorep --compiler mpicxx" \ | |
"FC_SERIAL = ifort" \ | |
"CC_SERIAL = icc" \ | |
"CXX_SERIAL = icpc" \ | |
"FFLAGS_PROMOTION = -real-size 64" \ | |
"FFLAGS_OPT = -O3 -g -convert big_endian -free -align array64byte" \ | |
"CFLAGS_OPT = -O3 -g" \ | |
"CXXFLAGS_OPT = -O3 -g" \ | |
"LDFLAGS_OPT = -O3 -g" \ | |
"FFLAGS_DEBUG = -g -convert big_endian -free -CU -CB -check all -fpe0 -traceback" \ | |
"CFLAGS_DEBUG = -g -traceback" \ | |
"CXXFLAGS_DEBUG = -g -traceback" \ | |
"LDFLAGS_DEBUG = -g -fpe0 -traceback" \ | |
"FFLAGS_OMP = -qopenmp" \ | |
"CFLAGS_OMP = -qopenmp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
ifort-gcc: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpif90" \ | |
"CC_PARALLEL = mpicc" \ | |
"CXX_PARALLEL = mpicxx" \ | |
"FC_SERIAL = ifort" \ | |
"CC_SERIAL = gcc" \ | |
"CXX_SERIAL = g++" \ | |
"FFLAGS_PROMOTION = -real-size 64" \ | |
"FFLAGS_OPT = -O3 -convert big_endian -free -align array64byte" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_DEBUG = -g -convert big_endian -free -CU -CB -check all -fpe0 -traceback" \ | |
"CFLAGS_DEBUG = -g" \ | |
"CXXFLAGS_DEBUG = -g" \ | |
"LDFLAGS_DEBUG = -g -fpe0 -traceback" \ | |
"FFLAGS_OMP = -qopenmp" \ | |
"CFLAGS_OMP = -fopenmp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
gfortran: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpif90" \ | |
"CC_PARALLEL = mpicc" \ | |
"CXX_PARALLEL = mpicxx" \ | |
"FC_SERIAL = gfortran" \ | |
"CC_SERIAL = gcc" \ | |
"CXX_SERIAL = g++" \ | |
"FFLAGS_PROMOTION = -fdefault-real-8 -fdefault-double-8" \ | |
"FFLAGS_OPT = -O3 -m64 -ffree-line-length-none -fconvert=big-endian -ffree-form" \ | |
"CFLAGS_OPT = -O3 -m64" \ | |
"CXXFLAGS_OPT = -O3 -m64" \ | |
"LDFLAGS_OPT = -O3 -m64" \ | |
"FFLAGS_DEBUG = -g -m64 -ffree-line-length-none -fconvert=big-endian -ffree-form -fbounds-check -fbacktrace -ffpe-trap=invalid,zero,overflow" \ | |
"CFLAGS_DEBUG = -g -m64" \ | |
"CXXFLAGS_DEBUG = -O3 -m64" \ | |
"LDFLAGS_DEBUG = -g -m64" \ | |
"FFLAGS_OMP = -fopenmp" \ | |
"CFLAGS_OMP = -fopenmp" \ | |
"PICFLAG = -fPIC" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
gfortran-clang: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpif90" \ | |
"CC_PARALLEL = mpicc -cc=clang" \ | |
"CXX_PARALLEL = mpicxx -cxx=clang++" \ | |
"FC_SERIAL = gfortran" \ | |
"CC_SERIAL = clang" \ | |
"CXX_SERIAL = clang++" \ | |
"FFLAGS_PROMOTION = -fdefault-real-8 -fdefault-double-8" \ | |
"FFLAGS_OPT = -O3 -m64 -ffree-line-length-none -fconvert=big-endian -ffree-form" \ | |
"CFLAGS_OPT = -O3 -m64" \ | |
"CXXFLAGS_OPT = -O3 -m64" \ | |
"LDFLAGS_OPT = -O3 -m64" \ | |
"FFLAGS_DEBUG = -g -m64 -ffree-line-length-none -fconvert=big-endian -ffree-form -fbounds-check -fbacktrace -ffpe-trap=invalid,zero,overflow" \ | |
"CFLAGS_DEBUG = -g -m64" \ | |
"CXXFLAGS_DEBUG = -O3 -m64" \ | |
"LDFLAGS_DEBUG = -g -m64" \ | |
"FFLAGS_OMP = -fopenmp" \ | |
"CFLAGS_OMP = -fopenmp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
g95: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpif90" \ | |
"CC_PARALLEL = mpicc" \ | |
"CXX_PARALLEL = mpicxx" \ | |
"FC_SERIAL = g95" \ | |
"CC_SERIAL = gcc" \ | |
"CXX_SERIAL = g++" \ | |
"FFLAGS_PROMOTION = -r8" \ | |
"FFLAGS_OPT = -O3 -ffree-line-length-huge -fendian=big" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_OMP = -fopenmp" \ | |
"CFLAGS_OMP = -fopenmp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
pathscale-nersc: | |
( $(MAKE) all \ | |
"FC_PARALLEL = ftn" \ | |
"CC_PARALLEL = cc" \ | |
"CXX_PARALLEL = CC" \ | |
"FC_SERIAL = ftn" \ | |
"CC_SERIAL = cc" \ | |
"CXX_SERIAL = CC" \ | |
"FFLAGS_PROMOTION = -r8" \ | |
"FFLAGS_OPT = -O3 -freeform -extend-source" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_OMP = -mp" \ | |
"CFLAGS_OMP = -mp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
cray-nersc: | |
( $(MAKE) all \ | |
"FC_PARALLEL = ftn" \ | |
"CC_PARALLEL = cc" \ | |
"CXX_PARALLEL = CC" \ | |
"FC_SERIAL = ftn" \ | |
"CC_SERIAL = cc" \ | |
"CXX_SERIAL = CC" \ | |
"FFLAGS_PROMOTION = -default64" \ | |
"FFLAGS_OPT = -O3 -f free" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_OMP = " \ | |
"CFLAGS_OMP = " \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
gnu-nersc: | |
( $(MAKE) all \ | |
"FC_PARALLEL = ftn" \ | |
"CC_PARALLEL = cc" \ | |
"CXX_PARALLEL = CC" \ | |
"FC_SERIAL = ftn" \ | |
"CC_SERIAL = cc" \ | |
"CXX_SERIAL = CC" \ | |
"FFLAGS_PROMOTION = -fdefault-real-8 -fdefault-double-8" \ | |
"FFLAGS_OPT = -O3 -m64 -ffree-line-length-none -fconvert=big-endian -ffree-form" \ | |
"CFLAGS_OPT = -O3 -m64" \ | |
"CXXFLAGS_OPT = -O3 -m64" \ | |
"LDFLAGS_OPT = -O3 -m64" \ | |
"FFLAGS_DEBUG = -g -m64 -ffree-line-length-none -fconvert=big-endian -ffree-form" \ | |
"CFLAGS_DEBUG = -g -m64" \ | |
"CXXFLAGS_DEBUG = -g -m64" \ | |
"LDFLAGS_DEBUG = -g -m64" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"SERIAL = $(SERIAL)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI $(FILE_OFFSET) $(ZOLTAN_DEFINE)" ) | |
intel-nersc: | |
( $(MAKE) all \ | |
"FC_PARALLEL = ftn" \ | |
"CC_PARALLEL = cc" \ | |
"CXX_PARALLEL = CC" \ | |
"FC_SERIAL = ftn" \ | |
"CC_SERIAL = cc" \ | |
"CXX_SERIAL = CC" \ | |
"FFLAGS_PROMOTION = -real-size 64" \ | |
"FFLAGS_OPT = -O3 -convert big_endian -free -align array64byte" \ | |
"CFLAGS_OPT = -O3" \ | |
"CXXFLAGS_OPT = -O3" \ | |
"LDFLAGS_OPT = -O3" \ | |
"FFLAGS_OMP = -qopenmp" \ | |
"CFLAGS_OMP = -qopenmp" \ | |
"FFLAGS_DEBUG = -real-size 64 -g -convert big_endian -free -CU -CB -check all -gen-interfaces -warn interfaces -traceback" \ | |
"CFLAGS_DEBUG = -g -traceback" \ | |
"CXXFLAGS_DEBUG = -g -traceback" \ | |
"LDFLAGS_DEBUG = -g -traceback" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
bluegene: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpixlf95_r" \ | |
"CC_PARALLEL = mpixlc_r" \ | |
"CXX_PARALLEL = mpixlcxx_r" \ | |
"FC_SERIAL = bgxlf95_r" \ | |
"CC_SERIAL = bgxlc_r" \ | |
"CXX_SERIAL = bgxlc++_r" \ | |
"FFLAGS_PROMOTION = -qrealsize=8" \ | |
"FFLAGS_OPT = -O2 -g" \ | |
"CFLAGS_OPT = -O2 -g" \ | |
"CXXFLAGS_OPT = -O2 -g" \ | |
"LDFLAGS_OPT = -O2 -g" \ | |
"FFLAGS_DEBUG = -O0 -g -C -qinitalloc -qinitauto" \ | |
"CFLAGS_DEBUG = -O0 -g" \ | |
"CXXFLAGS_DEBUG = -O0 -g" \ | |
"LDFLAGS_DEBUG = -O0 -g" \ | |
"FFLAGS_OMP = -qsmp=omp" \ | |
"CFLAGS_OMP = -qsmp=omp" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
llvm: | |
( $(MAKE) all \ | |
"FC_PARALLEL = mpifort" \ | |
"CC_PARALLEL = mpicc" \ | |
"CXX_PARALLEL = mpic++" \ | |
"FC_SERIAL = flang" \ | |
"CC_SERIAL = clang" \ | |
"CXX_SERIAL = clang++" \ | |
"FFLAGS_PROMOTION = -r8" \ | |
"FFLAGS_OPT = -O3 -g -Mbyteswapio -Mfreeform" \ | |
"CFLAGS_OPT = -O3 -g" \ | |
"CXXFLAGS_OPT = -O3 -g" \ | |
"LDFLAGS_OPT = -O3 -g" \ | |
"FFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -Mbyteswapio -Mfreeform -Mstandard" \ | |
"CFLAGS_DEBUG = -O0 -g -Weverything" \ | |
"CXXFLAGS_DEBUG = -O0 -g -Weverything" \ | |
"LDFLAGS_DEBUG = -O0 -g" \ | |
"FFLAGS_OMP = -mp" \ | |
"CFLAGS_OMP = -fopenmp" \ | |
"PICFLAG = -fpic" \ | |
"BUILD_TARGET = $(@)" \ | |
"CORE = $(CORE)" \ | |
"DEBUG = $(DEBUG)" \ | |
"USE_PAPI = $(USE_PAPI)" \ | |
"OPENMP = $(OPENMP)" \ | |
"CPPFLAGS = $(MODEL_FORMULATION) -D_MPI" ) | |
CPPINCLUDES = | |
FCINCLUDES = | |
LIBS = | |
# | |
# If user has indicated a PIO2 library, define USE_PIO2 pre-processor macro | |
# | |
ifeq "$(USE_PIO2)" "true" | |
override CPPFLAGS += -DUSE_PIO2 | |
endif | |
# | |
# Regardless of PIO library version, look for a lib subdirectory of PIO path | |
# NB: PIO_LIB is used later, so we don't just set LIBS directly | |
# | |
ifneq ($(wildcard $(PIO)/lib), ) | |
PIO_LIB = $(PIO)/lib | |
else | |
PIO_LIB = $(PIO) | |
endif | |
LIBS = -L$(PIO_LIB) | |
# | |
# Regardless of PIO library version, look for an include subdirectory of PIO path | |
# | |
ifneq ($(wildcard $(PIO)/include), ) | |
CPPINCLUDES += -I$(PIO)/include | |
FCINCLUDES += -I$(PIO)/include | |
else | |
CPPINCLUDES += -I$(PIO) | |
FCINCLUDES += -I$(PIO) | |
endif | |
# | |
# Depending on PIO version, libraries may be libpio.a, or libpiof.a and libpioc.a | |
# Keep open the possibility of shared libraries in future with, e.g., .so suffix | |
# | |
ifneq ($(wildcard $(PIO_LIB)/libpio\.*), ) | |
LIBS += -lpio | |
endif | |
ifneq ($(wildcard $(PIO_LIB)/libpiof\.*), ) | |
LIBS += -lpiof | |
endif | |
ifneq ($(wildcard $(PIO_LIB)/libpioc\.*), ) | |
LIBS += -lpioc | |
endif | |
ifneq ($(wildcard $(PIO_LIB)/libgptl\.*), ) | |
LIBS += -lgptl | |
endif | |
ifneq "$(NETCDF)" "" | |
CPPINCLUDES += -I$(NETCDF)/include | |
FCINCLUDES += -I$(NETCDF)/include | |
LIBS += -L$(NETCDF)/lib64 | |
NCLIB = -lnetcdf | |
NCLIBF = -lnetcdff | |
ifneq ($(wildcard $(NETCDF)/lib64/libnetcdff.*), ) # CHECK FOR NETCDF4 | |
LIBS += $(NCLIBF) | |
endif # CHECK FOR NETCDF4 | |
ifneq "$(NETCDFF)" "" | |
FCINCLUDES += -I$(NETCDFF)/include | |
LIBS += -L$(NETCDFF)/lib64 | |
LIBS += $(NCLIBF) | |
endif | |
LIBS += $(NCLIB) | |
endif | |
ifneq "$(PNETCDF)" "" | |
CPPINCLUDES += -I$(PNETCDF)/include | |
FCINCLUDES += -I$(PNETCDF)/include | |
LIBS += -L$(PNETCDF)/lib -lpnetcdf | |
endif | |
RM = rm -f | |
CPP = cpp -P -traditional | |
RANLIB = ranlib | |
ifdef CORE | |
ifneq ($(wildcard src/core_$(CORE)), ) # CHECK FOR EXISTENCE OF CORE DIRECTORY | |
ifneq ($(wildcard src/core_$(CORE)/build_options.mk), ) # Check for build_options.mk | |
include src/core_$(CORE)/build_options.mk | |
else # ELSE Use Default Options | |
EXE_NAME=$(CORE)_model | |
NAMELIST_SUFFIX=$(CORE) | |
endif | |
override CPPFLAGS += -DMPAS_NAMELIST_SUFFIX=$(NAMELIST_SUFFIX) | |
override CPPFLAGS += -DMPAS_EXE_NAME=$(EXE_NAME) | |
else # ELSE CORE DIRECTORY CHECK | |
report_builds: all | |
endif # END CORE DIRECTORY CHECK | |
ifeq "$(DEBUG)" "true" | |
ifndef FFLAGS_DEBUG | |
FFLAGS=$(FFLAGS_OPT) | |
CFLAGS=$(CFLAGS_OPT) | |
CXXFLAGS=$(CXXFLAGS_OPT) | |
LDFLAGS=$(LDFLAGS_OPT) | |
DEBUG_MESSAGE="Debug flags are not defined for this compile group. Defaulting to Optimized flags" | |
else # FFLAGS_DEBUG IF | |
FFLAGS=$(FFLAGS_DEBUG) | |
CFLAGS=$(CFLAGS_DEBUG) | |
CXXFLAGS=$(CXXFLAGS_DEBUG) | |
LDFLAGS=$(LDFLAGS_DEBUG) | |
override CPPFLAGS += -DMPAS_DEBUG | |
DEBUG_MESSAGE="Debugging is on." | |
endif # FFLAGS_DEBUG IF | |
else # DEBUG IF | |
FFLAGS=$(FFLAGS_OPT) | |
CFLAGS=$(CFLAGS_OPT) | |
CXXFLAGS=$(CXXFLAGS_OPT) | |
LDFLAGS=$(LDFLAGS_OPT) | |
DEBUG_MESSAGE="Debugging is off." | |
endif # DEBUG IF | |
FC=$(FC_PARALLEL) | |
CC=$(CC_PARALLEL) | |
CXX=$(CXX_PARALLEL) | |
SFC=$(FC_SERIAL) | |
SCC=$(CC_SERIAL) | |
PARALLEL_MESSAGE="Parallel version is on." | |
ifeq "$(OPENMP)" "true" | |
FFLAGS += $(FFLAGS_OMP) | |
CFLAGS += $(CFLAGS_OMP) | |
CXXFLAGS += $(CFLAGS_OMP) | |
override CPPFLAGS += "-DMPAS_OPENMP" | |
LDFLAGS += $(FFLAGS_OMP) | |
endif #OPENMP IF | |
ifeq "$(PRECISION)" "single" | |
CFLAGS += "-DSINGLE_PRECISION" | |
CXXFLAGS += "-DSINGLE_PRECISION" | |
override CPPFLAGS += "-DSINGLE_PRECISION" | |
PRECISION_MESSAGE="MPAS was built with default single-precision reals." | |
else | |
FFLAGS += $(FFLAGS_PROMOTION) | |
PRECISION_MESSAGE="MPAS was built with default double-precision reals." | |
endif #PRECISION IF | |
ifeq "$(USE_PAPI)" "true" | |
CPPINCLUDES += -I$(PAPI)/include -D_PAPI | |
FCINCLUDES += -I$(PAPI)/include | |
LIBS += -L$(PAPI)/lib -lpapi | |
PAPI_MESSAGE="Papi libraries are on." | |
else # USE_PAPI IF | |
PAPI_MESSAGE="Papi libraries are off." | |
endif # USE_PAPI IF | |
# Only if this Makefile was invoked from a compiler target should we check that PICFLAG is set | |
ifneq "$(FC_SERIAL)" "" | |
ifeq "$(SHAREDLIB)" "true" | |
ifneq "$(PICFLAG)" "" | |
FFLAGS += $(PICFLAG) | |
CFLAGS += $(PICFLAG) | |
CXXFLAGS += $(PICFLAG) | |
LDFLAGS += $(PICFLAG) | |
SHAREDLIB_MESSAGE="Position-independent code was generated." | |
else | |
$(error Position-independent code was requested but PIC flags are not available. Please add PIC flags for the '$(BUILD_TARGET)' target) | |
endif | |
else | |
SHAREDLIB_MESSAGE="Position-dependent code was generated." | |
endif | |
endif | |
ifeq "$(USE_PIO2)" "true" | |
PIO_MESSAGE="Using the PIO 2 library." | |
else # USE_PIO2 IF | |
PIO_MESSAGE="Using the PIO 1.x library." | |
endif # USE_PIO2 IF | |
ifdef TIMER_LIB | |
ifeq "$(TIMER_LIB)" "tau" | |
override TAU=true | |
TIMER_MESSAGE="TAU is being used for the timer interface" | |
endif | |
ifeq "$(TIMER_LIB)" "gptl" | |
override CPPFLAGS += -DMPAS_GPTL_TIMERS | |
override FCINCLUDES += -I${GPTL}/include | |
override LIBS += -L${GPTL}/lib -lgptl | |
TIMER_MESSAGE="GPTL is being used for the timer interface" | |
endif | |
ifeq "$(TIMER_LIB)" "" | |
override CPPFLAGS += -DMPAS_NATIVE_TIMERS | |
TIMER_MESSAGE="The native timer interface is being used" | |
endif | |
else # else ifdef $(TIMER_LIB) | |
override CPPFLAGS += -DMPAS_NATIVE_TIMERS | |
TIMER_MESSAGE="The native timer interface is being used" | |
endif # endif ifdef $(TIMER_LIB) | |
ifeq "$(TAU)" "true" | |
LINKER=tau_f90.sh | |
CPPINCLUDES += -DMPAS_TAU -DMPAS_TAU_TIMERS | |
TAU_MESSAGE="TAU Hooks are on." | |
else | |
LINKER=$(FC) | |
TAU_MESSAGE="TAU Hooks are off." | |
endif | |
ifeq "$(GEN_F90)" "true" | |
override CPPFLAGS += -Uvector | |
GEN_F90_MESSAGE="MPAS generated and was built with intermediate .f90 files." | |
else | |
override GEN_F90=false | |
GEN_F90_MESSAGE="MPAS was built with .F files." | |
endif | |
ifeq "$(OPENMP)" "true" | |
OPENMP_MESSAGE="MPAS was built with OpenMP enabled." | |
else | |
OPENMP_MESSAGE="MPAS was built without OpenMP support." | |
endif | |
ifneq ($(wildcard .mpas_core_*), ) # CHECK FOR BUILT CORE | |
ifneq ($(wildcard .mpas_core_$(CORE)), ) # CHECK FOR SAME CORE AS ATTEMPTED BUILD. | |
override AUTOCLEAN=false | |
CONTINUE=true | |
else | |
LAST_CORE=`cat .mpas_core_*` | |
ifeq "$(AUTOCLEAN)" "true" # CHECK FOR CLEAN PRIOR TO BUILD OF A NEW CORE. | |
CONTINUE=true | |
AUTOCLEAN_MESSAGE="Infrastructure was cleaned prior to building ." | |
else | |
CONTINUE=false | |
endif # END OF AUTOCLEAN CHECK | |
endif # END OF CORE=LAST_CORE CHECK | |
else | |
override AUTOCLEAN=false | |
CONTINUE=true | |
endif # END IF BUILT CORE CHECK | |
ifneq ($(wildcard namelist.$(NAMELIST_SUFFIX)), ) # Check for generated namelist file. | |
NAMELIST_MESSAGE="A default namelist file (namelist.$(NAMELIST_SUFFIX).defaults) has been generated, but namelist.$(NAMELIST_SUFFIX) has not been modified." | |
else | |
NAMELIST_MESSAGE="A default namelist file (namelist.$(NAMELIST_SUFFIX).defaults) has been generated and copied to namelist.$(NAMELIST_SUFFIX)." | |
endif | |
ifneq ($(wildcard streams.$(NAMELIST_SUFFIX)), ) # Check for generated streams file. | |
STREAM_MESSAGE="A default streams file (streams.$(NAMELIST_SUFFIX).defaults) has been generated, but streams.$(NAMELIST_SUFFIX) has not been modified." | |
else | |
STREAM_MESSAGE="A default streams file (streams.$(NAMELIST_SUFFIX).defaults) has been generated and copied to streams.$(NAMELIST_SUFFIX)." | |
endif | |
ifeq "$(findstring clean, $(MAKECMDGOALS))" "clean" # CHECK FOR CLEAN TARGET | |
override AUTOCLEAN=false | |
endif # END OF CLEAN TARGET CHECK | |
VER=$(shell git describe --dirty 2> /dev/null) | |
#override CPPFLAGS += -DMPAS_GIT_VERSION=$(VER) | |
ifeq "$(findstring v, $(VER))" "v" | |
override CPPFLAGS += -DMPAS_GIT_VERSION=$(VER) | |
else | |
override CPPFLAGS += -DMPAS_GIT_VERSION="unknown" | |
endif # END OF GIT DESCRIBE VERSION | |
#################################################### | |
# Section for adding external libraries and includes | |
#################################################### | |
ifdef MPAS_EXTERNAL_LIBS | |
override LIBS += $(MPAS_EXTERNAL_LIBS) | |
endif | |
ifdef MPAS_EXTERNAL_INCLUDES | |
override CPPINCLUDES += $(MPAS_EXTERNAL_INCLUDES) | |
override FCINCLUDES += $(MPAS_EXTERNAL_INCLUDES) | |
endif | |
ifdef MPAS_EXTERNAL_CPPFLAGS | |
override CPPFLAGS += $(MPAS_EXTERNAL_CPPFLAGS) | |
endif | |
#################################################### | |
ifeq ($(wildcard src/core_$(CORE)), ) # CHECK FOR EXISTENCE OF CORE DIRECTORY | |
all: core_error | |
else | |
ifeq ($(wildcard src/core_$(CORE)/build_options.mk), ) # Check for build_options.mk | |
report_builds: | |
@echo "CORE=$(CORE)" | |
endif | |
ifeq "$(CONTINUE)" "true" | |
all: mpas_main | |
else | |
all: clean_core | |
endif | |
endif | |
openmp_test: | |
ifeq "$(OPENMP)" "true" | |
@echo "Testing compiler for OpenMP support" | |
@echo "#include <omp.h>" > conftest.c; echo "int main() { int n = omp_get_num_threads(); return 0; }" >> conftest.c; $(SCC) $(CFLAGS) -o conftest.out conftest.c || \ | |
(echo "$(SCC) does not support OpenMP - see INSTALL in top-level directory for more information"; rm -fr conftest.*; exit 1) | |
@echo "#include <omp.h>" > conftest.c; echo "int main() { int n = omp_get_num_threads(); return 0; }" >> conftest.c; $(CC) $(CFLAGS) -o conftest.out conftest.c || \ | |
(echo "$(CC) does not support OpenMP - see INSTALL in top-level directory for more information"; rm -fr conftest.*; exit 1) | |
@echo "#include <omp.h>" > conftest.cpp; echo "int main() { int n = omp_get_num_threads(); return 0; }" >> conftest.cpp; $(CXX) $(CFLAGS) -o conftest.out conftest.cpp || \ | |
(echo "$(CXX) does not support OpenMP - see INSTALL in top-level directory for more information"; rm -fr conftest.*; exit 1) | |
@echo "program test; use omp_lib; integer n; n = OMP_GET_NUM_THREADS(); stop 0; end program" > conftest.f90; $(SFC) $(FFLAGS) -o conftest.out conftest.f90 || \ | |
(echo "$(SFC) does not support OpenMP - see INSTALL in top-level directory for more information"; rm -fr conftest.*; exit 1) | |
@echo "program test; use omp_lib; integer n; n = OMP_GET_NUM_THREADS(); stop 0; end program" > conftest.f90; $(FC) $(FFLAGS) -o conftest.out conftest.f90 || \ | |
(echo "$(FC) does not support OpenMP - see INSTALL in top-level directory for more information"; rm -fr conftest.*; exit 1) | |
@rm -fr conftest.* | |
endif | |
pio_test: | |
@# | |
@# Create two test programs: one that should work with PIO1 and a second that should work with PIO2 | |
@# | |
@echo "program pio1; use pio; use pionfatt_mod; integer, parameter :: MPAS_IO_OFFSET_KIND = PIO_OFFSET; integer, parameter :: MPAS_INT_FILLVAL = NF_FILL_INT; end program" > pio1.f90 | |
@echo "program pio2; use pio; integer, parameter :: MPAS_IO_OFFSET_KIND = PIO_OFFSET_KIND; integer, parameter :: MPAS_INT_FILLVAL = PIO_FILL_INT; end program" > pio2.f90 | |
@# | |
@# See whether either of the test programs can be compiled | |
@# | |
@echo "Checking for a usable PIO library..." | |
@($(FC) pio1.f90 $(FCINCLUDES) $(FFLAGS) $(LDFLAGS) $(LIBS) -o pio1.out &> /dev/null && echo "=> PIO 1 detected") || \ | |
($(FC) pio2.f90 $(FCINCLUDES) $(FFLAGS) $(LDFLAGS) $(LIBS) -o pio2.out &> /dev/null && echo "=> PIO 2 detected") || \ | |
(echo "************ ERROR ************"; \ | |
echo "Failed to compile a PIO test program"; \ | |
echo "Please ensure the PIO environment variable is set to the PIO installation directory"; \ | |
echo "************ ERROR ************"; \ | |
rm -rf pio[12].f90 pio[12].out; exit 1) | |
@rm -rf pio[12].out | |
@# | |
@# Check that what the user has specified agrees with the PIO library version that was detected | |
@# | |
ifeq "$(USE_PIO2)" "true" | |
@($(FC) pio2.f90 $(FCINCLUDES) $(FFLAGS) $(LDFLAGS) $(LIBS) -o pio2.out &> /dev/null) || \ | |
(echo "************ ERROR ************"; \ | |
echo "PIO 1 was detected, but USE_PIO2=true was specified in the make command"; \ | |
echo "************ ERROR ************"; \ | |
rm -rf pio[12].f90 pio[12].out; exit 1) | |
else | |
@($(FC) pio1.f90 $(FCINCLUDES) $(FFLAGS) $(LDFLAGS) $(LIBS) -o pio1.out &> /dev/null) || \ | |
(echo "************ ERROR ************"; \ | |
echo "PIO 2 was detected. Please specify USE_PIO2=true in the make command"; \ | |
echo "************ ERROR ************"; \ | |
rm -rf pio[12].f90 pio[12].out; exit 1) | |
endif | |
@rm -rf pio[12].f90 pio[12].out | |
mpas_main: openmp_test pio_test | |
ifeq "$(AUTOCLEAN)" "true" | |
$(RM) .mpas_core_* | |
endif | |
cd src; $(MAKE) FC="$(FC)" \ | |
CC="$(CC)" \ | |
CXX="$(CXX)" \ | |
SFC="$(SFC)" \ | |
SCC="$(SCC)" \ | |
LINKER="$(LINKER)" \ | |
CFLAGS="$(CFLAGS)" \ | |
CXXFLAGS="$(CXXFLAGS)" \ | |
FFLAGS="$(FFLAGS)" \ | |
LDFLAGS="$(LDFLAGS)" \ | |
RM="$(RM)" \ | |
CPP="$(CPP)" \ | |
CPPFLAGS="$(CPPFLAGS)" \ | |
LIBS="$(LIBS)" \ | |
CPPINCLUDES="$(CPPINCLUDES)" \ | |
FCINCLUDES="$(FCINCLUDES)" \ | |
CORE="$(CORE)"\ | |
AUTOCLEAN="$(AUTOCLEAN)" \ | |
GEN_F90="$(GEN_F90)" \ | |
NAMELIST_SUFFIX="$(NAMELIST_SUFFIX)" \ | |
EXE_NAME="$(EXE_NAME)" | |
@echo "$(EXE_NAME)" > .mpas_core_$(CORE) | |
if [ -e src/$(EXE_NAME) ]; then mv src/$(EXE_NAME) .; fi | |
( cd src/core_$(CORE); $(MAKE) ROOT_DIR="$(PWD)" post_build ) | |
@echo "*******************************************************************************" | |
@echo $(PRECISION_MESSAGE) | |
@echo $(DEBUG_MESSAGE) | |
@echo $(PARALLEL_MESSAGE) | |
@echo $(PAPI_MESSAGE) | |
@echo $(TAU_MESSAGE) | |
@echo $(OPENMP_MESSAGE) | |
@echo $(SHAREDLIB_MESSAGE) | |
ifeq "$(AUTOCLEAN)" "true" | |
@echo $(AUTOCLEAN_MESSAGE) | |
endif | |
@echo $(GEN_F90_MESSAGE) | |
@echo $(TIMER_MESSAGE) | |
@echo $(PIO_MESSAGE) | |
@echo "*******************************************************************************" | |
clean: | |
cd src; $(MAKE) clean RM="$(RM)" CORE="$(CORE)" | |
$(RM) .mpas_core_* | |
$(RM) $(EXE_NAME) | |
$(RM) namelist.$(NAMELIST_SUFFIX).defaults | |
$(RM) streams.$(NAMELIST_SUFFIX).defaults | |
core_error: | |
@echo "" | |
@echo "*******************************************************************************" | |
@echo " The directory src/core_$(CORE) does not exist." | |
@echo " $(CORE) is not a valid core choice." | |
@echo "*******************************************************************************" | |
@echo "" | |
exit 1 | |
error: errmsg | |
clean_core: | |
@echo "" | |
@echo "*******************************************************************************" | |
@echo " The MPAS infrastructure is currently built for the $(LAST_CORE) core." | |
@echo " Before building the $(CORE) core, please do one of the following." | |
@echo "" | |
@echo "" | |
@echo " To remove the $(LAST_CORE)_model executable and clean the MPAS infrastructure, run:" | |
@echo " make clean CORE=$(LAST_CORE)" | |
@echo "" | |
@echo " To preserve all executables except $(CORE)_model and clean the MPAS infrastructure, run:" | |
@echo " make clean CORE=$(CORE)" | |
@echo "" | |
@echo " Alternatively, AUTOCLEAN=true can be appended to the make command to force a clean," | |
@echo " build a new $(CORE)_model executable, and preserve all other executables." | |
@echo "" | |
@echo "*******************************************************************************" | |
@echo "" | |
exit 1 | |
else # CORE IF | |
all: error | |
clean: errmsg | |
exit 1 | |
error: errmsg | |
@echo "************ ERROR ************" | |
@echo "No CORE specified. Quitting." | |
@echo "************ ERROR ************" | |
@echo "" | |
exit 1 | |
endif # CORE IF | |
errmsg: | |
@echo "" | |
@echo "Usage: $(MAKE) target CORE=[core] [options]" | |
@echo "" | |
@echo "Example targets:" | |
@echo " ifort" | |
@echo " gfortran" | |
@echo " xlf" | |
@echo " pgi" | |
@echo "" | |
@echo "Availabe Cores:" | |
@cd src; ls -d core_* | grep ".*" | sed "s/core_/ /g" | |
@echo "" | |
@echo "Available Options:" | |
@echo " DEBUG=true - builds debug version. Default is optimized version." | |
@echo " USE_PAPI=true - builds version using PAPI for timers. Default is off." | |
@echo " TAU=true - builds version using TAU hooks for profiling. Default is off." | |
@echo " AUTOCLEAN=true - forces a clean of infrastructure prior to build new core." | |
@echo " GEN_F90=true - Generates intermediate .f90 files through CPP, and builds with them." | |
@echo " TIMER_LIB=opt - Selects the timer library interface to be used for profiling the model. Options are:" | |
@echo " TIMER_LIB=native - Uses native built-in timers in MPAS" | |
@echo " TIMER_LIB=gptl - Uses gptl for the timer interface instead of the native interface" | |
@echo " TIMER_LIB=tau - Uses TAU for the timer interface instead of the native interface" | |
@echo " OPENMP=true - builds and links with OpenMP flags. Default is to not use OpenMP." | |
@echo " USE_PIO2=true - links with the PIO 2 library. Default is to use the PIO 1.x library." | |
@echo " PRECISION=single - builds with default single-precision real kind. Default is to use double-precision." | |
@echo " SHAREDLIB=true - generate position-independent code suitable for use in a shared library. Default is false." | |
@echo "" | |
@echo "Ensure that NETCDF, PNETCDF, PIO, and PAPI (if USE_PAPI=true) are environment variables" | |
@echo "that point to the absolute paths for the libraries." | |
@echo "" | |
ifdef CORE | |
exit 1 | |
endif | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment