diff --git a/cime_config/acme/config_files.xml b/cime_config/acme/config_files.xml
index 139fef06fb0..932deb21c7e 100644
--- a/cime_config/acme/config_files.xml
+++ b/cime_config/acme/config_files.xml
@@ -38,6 +38,7 @@
case_last
env_case.xml
file containing compiler specifications for target model primary component (for documentation only - DO NOT EDIT)
+ $CIMEROOT/cime_config/xml_schemas/config_compilers_v2.xsd
@@ -48,14 +49,6 @@
file containing machine specifications for target model primary component (for documentation only - DO NOT EDIT)
-
- char
- $CIMEROOT/cime_config/$MODEL/machines/config_build.xml
- case_last
- env_case.xml
- file containing build specifications for target model primary component (for documentation only - DO NOT EDIT)
-
-
char
$CIMEROOT/cime_config/$MODEL/machines/config_pio.xml
diff --git a/cime_config/acme/machines/Makefile b/cime_config/acme/machines/Makefile
index 00072733330..ea496356ae9 100644
--- a/cime_config/acme/machines/Makefile
+++ b/cime_config/acme/machines/Makefile
@@ -137,7 +137,7 @@ ifeq (,$(SHAREDPATH))
INSTALL_SHAREDPATH = $(EXEROOT)/$(SHAREDPATH)
endif
-include $(CASEROOT)/Macros
+include $(CASEROOT)/Macros.make
# Decide whether to use a C++ or Fortran linker, based on whether we
# are using any C++ code and the compiler-dependent CXX_LINKER variable
ifeq ($(USE_CXX), true)
@@ -399,7 +399,7 @@ INCLDIR += -I$(INSTALL_SHAREDPATH)/include -I$(CIMEROOT)/share/csm_share/shr \
CFLAGS+=$(CPPDEFS)
CXXFLAGS := $(CFLAGS)
-CONFIG_ARGS += CC="$(SCC)" FC="$(SFC)" MPICC="$(MPICC)" \
+CONFIG_ARGS += CC="$(CC)" FC="$(FC)" MPICC="$(MPICC)" \
MPIFC="$(MPIFC)" FCFLAGS="$(FFLAGS) $(FREEFLAGS) $(INCLDIR)" \
CPPDEFS="$(CPPDEFS)" CFLAGS="$(CFLAGS) -I.. $(INCLDIR)" \
NETCDF_PATH=$(NETCDF_PATH) LDFLAGS="$(LDFLAGS)"
diff --git a/cime_config/acme/machines/config_build.xml b/cime_config/acme/machines/config_build.xml
deleted file mode 100644
index d48e46f2db9..00000000000
--- a/cime_config/acme/machines/config_build.xml
+++ /dev/null
@@ -1,1625 +0,0 @@
-
-
-
-
-
-
- -D_USE_FLOW_CONTROL
-
- FALSE
-
-
-
-
- -h noomp
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -DDIR=NOOP
- -DDIR=NOOP
-
-
- -s real64
-
-
- -O2 -f free -N 255 -h byteswapio -em
- -h noomp
- -g -trapuv -Wuninitialized
-
-
- -O0
- -h noomp
-
- TRUE
-
- -Wl,--allow-multiple-definition -h byteswapio
- -h noomp
-
-
-
-
-
- -mcmodel=medium
- -fopenmp
- -g -Wall
- -O
-
-
- -D CISM_GNU=ON
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
-
- FORTRAN
-
- -fdefault-real-8
-
-
-
- -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none
- -fopenmp
- -g -Wall
- -O
-
-
- -O0
-
-
- -ffixed-form
-
-
- -ffree-form
-
- FALSE
-
- -fopenmp
-
- mpicc
- mpicxx
- mpif90
- gcc
- g++
- gfortran
- TRUE
-
-
-
-
- -g -qfullpath -qmaxmem=-1
- -O3
- -qsmp=omp:nested_par
- -qsmp=omp:nested_par:noopt
-
-
-
- -DFORTRAN_SAME
-
- -WF,-D
-
- -qrealsize=8
-
-
- -g -qfullpath -qmaxmem=-1
- -O2 -qstrict -Q
- -qsmp=omp:nested_par
- -qsmp=omp:nested_par:noopt
- -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en
- -C
-
-
- -qsuffix=f=f -qfixed=132
-
-
- -qsuffix=f=f90:cpp=F90
-
- TRUE
-
-
-
-
- -O2 -fp-model precise -std=gnu99
- -openmp
- -O2 -debug minimal
- -O0 -g
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
-
-
- -cxxlib
-
- FORTRAN
-
- -r8
-
-
- -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source
- -openmp
-
- -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created
- -O2 -debug minimal
-
-
- -O0
- -openmp
-
-
- -fixed -132
-
-
- -free
-
- TRUE
-
- -openmp
-
- mpicc
- mpicxx
- mpif90
- icc
- icpc
- ifort
- TRUE
-
-
-
-
- -O2 -fp-model precise
- -openmp
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -DCPRINTEL
-
-
- -cxxlib
-
- FORTRAN
-
- -r8
-
-
- -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
- -openmp
- -O0 -g -check uninit -check bounds -check pointers -fpe0
- -O2
-
-
- -O0
-
-
- -fixed -132
-
-
- -free
-
- TRUE
-
- -openmp
-
- mpicc
- mpicxx
- mpif90
- icc
- icpc
- ifort
-
- NETCDF_PATH/bin/nf-config --flibs
-
- TRUE
-
-
-
-
- -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR
- -openmp
-
-
- --host=x86_64-k1om-linux --build=x86_64-unknown-linux
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -DCPRINTEL
-
-
- -cxxlib
-
- FORTRAN
-
- -r8
-
-
- -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
- -openmp
- -O0 -g -check uninit -check bounds -check pointers -fpe0
- -O2
-
-
- -O0 -mmic
-
-
- -fixed -132
-
-
- -free
-
- TRUE
-
- -openmp
- -mmic
-
- mpiicc
- mpiicpc
- mpiifort
- icc
- icpc
- ifort
-
- NETCDF_PATH/bin/nf-config --flibs
-
- TRUE
-
-
-
-
- -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR
- -openmp
-
-
- --host=x86_64-k1om-linux --build=x86_64-unknown-linux
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -DCPRINTEL
-
-
- -cxxlib
-
- FORTRAN
-
- -r8
-
-
- -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
- -openmp
- -O0 -g -check uninit -check bounds -check pointers -fpe0
- -O2
-
-
- -O0 -mmic
-
-
- -fixed -132
-
-
- -free
-
- TRUE
-
- -openmp
- -mmic
-
- mpiicc
- mpiicpc
- mpiifort
- icc
- icpc
- ifort
-
- NETCDF_PATH/bin/nf-config --flibs
-
- TRUE
-
-
-
-
- -g
-
-
- -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH
-
-
- -r8
-
-
-
-
-
-
-
- -wmismatch=mpi_send,mpi_recv,mpi_bcast,mpi_allreduce,mpi_reduce,mpi_isend,mpi_irecv,mpi_irsend,mpi_rsend,mpi_gatherv,mpi_gather,mpi_scatterv,mpi_allgather,mpi_alltoallv,mpi_file_read_all,mpi_file_write_all,mpibcast,mpiscatterv,mpi_alltoallw,nfmpi_get_vara_all,NFMPI_IPUT_VARA,NFMPI_GET_VAR_ALL,NFMPI_PUT_VARA,NFMPI_PUT_ATT_REAL,NFMPI_PUT_ATT_DOUBLE,NFMPI_PUT_ATT_INT,NFMPI_GET_ATT_REAL,NFMPI_GET_ATT_INT,NFMPI_GET_ATT_DOUBLE,NFMPI_PUT_VARA_DOUBLE_ALL,NFMPI_PUT_VARA_REAL_ALL,NFMPI_PUT_VARA_INT_ALL -convert=BIG_ENDIAN
-
- -ieee=full -O2
- -g -time -f2003 -ieee=stop
-
-
- -C=all -g -time -f2003 -ieee=stop
- -gline
- -openmp
-
-
- FFLAGS
- -ieee=full
-
-
-
- -g -time -f2003 -ieee=stop
- -gline
- -openmp
-
-
- -fixed
-
-
- -free
-
- FALSE
-
- -openmp
-
- mpicc
- mpif90
- gcc
- nagfor
-
-
-
-
- -mp
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16 -DCPRPATHSCALE
-
-
- -r8
-
-
- -O -extend_source -ftpp -fno-second-underscore -funderscoring -byteswapio
- -mp
- -g -trapuv -Wuninitialized
-
-
- -O0
-
- FALSE
-
- -mp
-
- mpicc
- mpif90
-
-
-
-
- -gopt -Mlist -time
-
- -mp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16
-
- CXX
-
- -r8
-
-
- -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee
-
- -mp
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
-
-
- -O0 -g -Ktrap=fp -Mbounds -Kieee
-
- -mp
-
-
- -Mfixed
-
-
- -Mfree
-
-
-
- FALSE
-
- -time -Wl,--allow-multiple-definition
-
- -mp
-
- mpicc
- mpicxx
- mpif90
- pgcc
- pgc++
- pgf95
-
-
-
-
- -Mlist -time
-
- -mp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DUSE_CUDA_FORTRAN -DCPRPGI
-
- CXX
-
- -r8
-
-
- -i4 -Mlist -time -Mextend -byteswapio -Mflushz -Kieee
-
- -mp
- -acc -ta=tesla,pin,cuda7.0,cc35,ptxinfo -Minfo=accel -DUSE_OPENACC=1
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
-
-
- -O0 -g -Ktrap=fp -Mbounds -Kieee
-
- -mp
-
-
- -Mfixed
-
-
- -Mfree
-
-
-
- FALSE
-
- -time -Wl,--allow-multiple-definition -acc -ta=tesla,pin,cuda7.0,cc35,ptxinfo
-
- -mp
-
- mpicc
- mpicxx
- mpif90
- pgcc
- pgc++
- pgf95
-
-
-
-
- -qarch=auto -qtune=auto -qcache=auto
-
- /usr/bin/bash
-
- -qarch=auto -qtune=auto -qcache=auto -qsclk=micro
- -qspill=6000
-
-
- -qsigtrap=xl__trcedump
- -bdatapsize:64K -bstackpsize:64K -btextpsize:32K
-
- mpcc_r
- mpxlf2003_r
- cc_r
- xlf2003_r
-
- -lmassv -lessl
- -lmass
-
-
-
-
-
- -O3 -qstrict
- -qtune=440 -qarch=440d
-
-
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
-
-
- -DLINUX -DnoI8
-
-
- -qtune=440 -qarch=440d
- -O3 -qstrict -Q
- -qinitauto=FF911299 -qflttrap=ov:zero:inv:en
- -qextname=flush
-
-
- -Wl,--relax -Wl,--allow-multiple-definition
-
-
- -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
-
- blrts_xlc
- blrts_xlf2003
- mpich.rts
- /bgl/BlueLight/ppcfloor/bglsys
- blrts_xlc
- blrts_xlf2003
-
-
-
-
- -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/
-
-
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
-
-
- -DLINUX -DnoI8
-
-
- -qspillsize=2500 -qtune=450 -qarch=450
- -qextname=flush
-
-
- -Wl,--relax -Wl,--allow-multiple-definition
-
-
-
-
-
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
-
-
- -DLINUX
-
-
- -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush
- -O3 -qstrict -Q
-
-
- -Wl,--relax -Wl,--allow-multiple-definition
-
-
-
-
-
- -DCMAKE_SYSTEM_NAME=Catamount
-
-
- -DLINUX
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
- cc
- CC
- ftn
- mpich
- MPICH_DIR
- NETCDF_DIR
- lustre
- PARALLEL_NETCDF_DIR
- cc
- CC
- ftn
-
-
-
-
- -DSYSDARWIN
-
-
- -all_load
-
-
-
-
-
- -heap-arrays
-
-
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
-
- -mcmodel medium -shared-intel
-
-
-
-
- /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
-
- -O2
-
-
- --host=Linux
-
-
- -lstdc++ -lmpi_cxx
-
-
- -O2
-
- NETCDFROOT
- PNETCDFROOT
-
- NETCDF_PATH/bin/nf-config --flibs -lblas -llapack
-
-
-
-
- mpi
- /soft/mvapich2/2.2b_psm/gnu-5.2/
- NETCDFROOT
- gpfs
- PNETCDFROOT
-
- NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
-
-
-
-
- mpi
- /soft/mvapich2/2.2b_psm/intel-15.0
- NETCDFROOT
- gpfs
- PNETCDFROOT
-
- NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
- -Wl,-rpath -Wl,NETCDFROOT/lib
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
- mpi
- mpich
- /soft/openmpi/1.8.2/intel-13.1
- /soft/mpich2/1.4.1-intel-13.1
- NETCDFROOT
- gpfs
- PNETCDFROOT
-
- NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
- mpi
- /home/robl/soft/mpich-3.1.4-nag-6.0
- NETCDFROOT
- gpfs
- PNETCDFROOT
-
- NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
-
-
-
-
- mpi
- mpi
- mpich
- /soft/openmpi/1.8.2/pgi-13.9
- /soft/mpich2/1.4.1-pgi-13.9/
- NETCDFROOT
- gpfs
- PNETCDFROOT
-
- NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
- -rpath NETCDFROOT/lib
-
-
-
-
-
-
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
- NETCDF
- gpfs
- PNETCDF
-
-
-
-
- --host=Linux --enable-filesystem-hints=lustre
-
-
- -DLINUX
-
-
- -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv
-
- NETCDF_LIB/..
- lustre
- PNETCDFROOT
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
-
- -DnoI8
-
-
-
- -gline -C=all -g -O0 -v
- -gline -C=all -g -nan -O0 -v
-
-
-
-
- MPI_LIB
- NETCDF_ROOT
- lustre
- PNETCDFROOT
-
- -LNETCDF_ROOT/lib -lnetcdf -lnetcdff -LMKL_PATH -lmkl_rt
-
-
-
-
- /projects/ccsm/libs/AlbanyTrilinos/Albany/build/install
-
- -DMPASLI_EXTERNAL_INTERFACE_DISABLE_MANGLING
-
-
- -llapack -lblas -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp
-
- CXX
-
- -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl
-
- mpixlc_r
- /soft/compilers/bgclang/mpi/bgclang/bin/mpic++11
- mpixlf2003_r
- /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/
- /soft/libraries/petsc/3.5.3.1
- /home/santos/pFUnit/pFUnit_IBM
- gpfs
- /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/
- mpixlc_r
- mpixlf2003_r
-
- -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
- -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp
-
- TRUE
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
- -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv
-
- NETCDF_HOME
- lustre
- PNETCDFROOT
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
- -C -Mbounds -traceback -Mchkfpstk -Mchkstk -Mdalign -Mdepchk -Mextend -Miomutex -Mrecursive -Ktrap=fp -O0 -g -byteswapio -Meh_frame
-
- NETCDF_HOME
- lustre
- PNETCDFROOT
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMPI_LIB -lmpich
-
-
-
-
-
- -xCORE-AVX2
- -O2
-
-
- --host=Linux
-
-
- -DHAVE_SLASHPROC
- -DHAVE_PAPI
-
-
- -xCORE-AVX2
- -O2
-
- cc
- CC
- ftn
- PETSC_DIR
-
- -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
- MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
-
-
-
-
-
- -xMIC-AVX512
- -O2
-
-
- --host=Linux
-
-
- -DHAVE_SLASHPROC
- -DHAVE_PAPI
-
-
- -xMIC-AVX512
- -O2
-
- cc
- CC
- ftn
- PETSC_DIR
-
- -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
- MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF_HOME
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
-
-
-
-
- /global/project/projectdirs/acme/software/AlbanyTrilinos_09232015/Albany/build/install
-
- -O2
-
-
- --host=Linux
-
-
- -DHAVE_PAPI
-
-
- -O2
-
- cc
- CC
- ftn
- PETSC_DIR
-
- -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
- MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DHAVE_PAPI
-
-
- -O2
-
- cc
- CC
- ftn
-
- -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
- MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
-
-
-
-
- /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install
-
-
-
- /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/
- /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/
-
- NETCDF_PATH/bin/nf-config --flibs
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
-
- -O2
-
-
- -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o
-
-
- -O2
-
- TRUE
- /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-pgi/install
-
-
-
-
- -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY
-
-
- -lnetcdff -lnetcdf -mkl
-
-
-
-
-
- -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY
-
-
- -lnetcdff -lnetcdf -mkl
-
-
-
-
- NETCDF_PATH
- PNETCDF_PATH
-
- NETCDF_PATH/bin/nc-config --flibs
-
-
-
-
-
- -framework Accelerate
-
- NETCDF_PATH
-
- -LNETCDF_PATH/lib -lnetcdff -lnetcdf
-
-
-
-
- /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
-
- -O2
-
-
- --host=Linux
-
-
- -lstdc++ -lmpi_cxx
-
-
- -O2
-
- NETCDFROOT
- PNETCDFROOT
-
- NETCDF_PATH/bin/nf-config --flibs -lblas -llapack
-
-
-
-
- /projects/ccsm/libs/AlbanyTrilinos/Albany/build/install
-
- -DMPASLI_EXTERNAL_INTERFACE_DISABLE_MANGLING
-
-
- -llapack -lblas -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp
-
- CXX
- /soft/libraries/hdf5/1.8.14/cnk-xl/current/
-
-
- mpixlf77_r
- mpixlc_r
- /soft/compilers/bgclang/mpi/bgclang/bin/mpic++11
- mpixlf2003_r
- /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/
- /soft/libraries/petsc/3.5.3.1
- /home/santos/pFUnit/pFUnit_IBM
- gpfs
- /soft/libraries/pnetcdf/1.6.0/cnk-xl/current/
- mpixlc_r
- mpixlf2003_r
-
- -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.14/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
- -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp
-
- TRUE
-
-
-
- ALBANY_PATH
-
- -lstdc++ -lmpi_cxx
-
- mpicc
- mpic++
- mpif90
- gcc
- g++
- gfortran
-
- NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
-
- TRILINOS_PATH
-
-
-
- mpicc
- mpic++
- mpif90
- icc
- icpc
- ifort
-
- NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
- TRILINOS_PATH
-
-
-
- mpicc
- mpic++
- mpif90
- pgcc
- pgc++
- pgfortran
-
- NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
-
- TRILINOS_PATH
-
-
-
- /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpicc
- /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpif90
- /projects/cesm/devtools/netcdf-4.1.3-gcc4.8.1-mpich3.0.4/
- /projects/cesm/devtools/gcc-4.8.1/bin/gcc
- /projects/cesm/devtools/gcc-4.8.1/bin/g++
- /projects/cesm/devtools/gcc-4.8.1/bin/gfortran
-
- -L/user/lib64 -llapack -lblas -lnetcdff
-
-
-
-
- /home/zdr/opt/netcdf-4.1.3_pgf95
-
-
-
- /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpicc
- /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpif90
- /projects/cesm/devtools/netcdf-4.1.3-gcc4.8.1-mpich3.0.4/
- /projects/cesm/devtools/gcc-4.8.1/bin/gcc
- /projects/cesm/devtools/gcc-4.8.1/bin/g++
- /projects/cesm/devtools/gcc-4.8.1/bin/gfortran
-
- -L/user/lib64 -llapack -lblas -lnetcdff
-
-
-
-
- /home/zdr/opt/netcdf-4.1.3_pgf95
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF_LIB/..
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF_LIB/..
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
-
-
-
-
- /projects/ccsm/AlbanyTrilinos/Albany/build/install
-
- -O2
-
-
- --host=Linux
-
- /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
-
- -O2
-
- NETCDFROOT
- lustre
- PNETCDFROOT
-
- NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
- /projects/ccsm/AlbanyTrilinos/Albany/build/install
-
- -O2
-
-
- --host=Linux
-
- /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
-
- -O2
-
- NETCDFROOT
- lustre
- PNETCDFROOT
-
- NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lpmi
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF_LIB/..
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -O2
-
- lustre
-
- NETCDF_PATH/bin/nf-config --flibs
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
- TRUE
-
-
-
- /ccs/proj/cli106/AlbanyTrilinos/Albany/build/install
-
- -O2
-
-
- --host=Linux
-
-
- -lfmpich -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o /opt/gcc/default/snos/lib64/libstdc++.a
-
-
- -O2
-
- cc
- /opt/cray/craype/2.4.0/bin/CC
- ftn
- lustre
-
- nf-config --flibs
-
- TRUE
- /lustre/atlas/world-shared/cli900/cesm/software/Trilinos/Trilinos-11.10.2_gptl/titan-pgi-ci-nophal/install
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -lfmpich -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o
-
-
- -O2
-
- lustre
-
- NETCDF_PATH/bin/nf-config --flibs
-
- TRUE
-
-
-
-
-
-
-
-
-
-
-
-
- USERDEFINED_MUST_EDIT_THIS
-
-
- # USERDEFINED NETCDF_PATH/bin/nc-config --flibs
-
-
-
-
- ALBANY_PATH
-
- -lstdc++ -lmpi_cxx
-
- mpicc
- mpic++
- mpif90
- gcc
- g++
- gfortran
-
- NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
-
- TRILINOS_PATH
-
-
-
- mpicc
- mpic++
- mpif90
- icc
- icpc
- ifort
-
- NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
- TRILINOS_PATH
-
-
-
- mpicc
- mpic++
- mpif90
- pgcc
- pgc++
- pgfortran
-
- NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
-
- TRILINOS_PATH
-
-
-
diff --git a/cime_config/acme/machines/config_compilers.xml b/cime_config/acme/machines/config_compilers.xml
index d649fe2a9cd..d48e46f2db9 100644
--- a/cime_config/acme/machines/config_compilers.xml
+++ b/cime_config/acme/machines/config_compilers.xml
@@ -1,6 +1,5 @@
-
-
-
+
+
+
+ -D_USE_FLOW_CONTROL
+
FALSE
- -D_USE_FLOW_CONTROL
+
+
+
+
+ -h noomp
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16
+ -DDIR=NOOP
+ -DDIR=NOOP
+
+
+ -s real64
+
+
+ -O2 -f free -N 255 -h byteswapio -em
+ -h noomp
+ -g -trapuv -Wuninitialized
+
+
+ -O0
+ -h noomp
+
+ TRUE
+
+ -Wl,--allow-multiple-definition -h byteswapio
+ -h noomp
+
+
+
+
+
+ -mcmodel=medium
+ -fopenmp
+ -g -Wall
+ -O
+
+
+ -D CISM_GNU=ON
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16
+
+ FORTRAN
+
+ -fdefault-real-8
+
+
+
+ -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none
+ -fopenmp
+ -g -Wall
+ -O
+
+
+ -O0
+
+
+ -ffixed-form
+
+
+ -ffree-form
+
+ FALSE
+
+ -fopenmp
+
+ mpicc
+ mpicxx
+ mpif90
+ gcc
+ g++
+ gfortran
+ TRUE
-
- -DFORTRAN_SAME
+ -DFORTRAN_SAME
+
-WF,-D
- -g -qfullpath -qmaxmem=-1
- -qsuffix=f=f -qfixed=132
- -qsuffix=f=f90:cpp=F90
- -g -qfullpath -qmaxmem=-1
- -qrealsize=8
- -O2 -qstrict -Q
- -O3
- -qsmp=omp:nested_par
- -qsmp=omp:nested_par
- -qsmp=omp:nested_par:noopt
- -qsmp=omp:nested_par:noopt
- -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en
- -C
+
+ -qrealsize=8
+
+
+ -g -qfullpath -qmaxmem=-1
+ -O2 -qstrict -Q
+ -qsmp=omp:nested_par
+ -qsmp=omp:nested_par:noopt
+ -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en
+ -C
+
+
+ -qsuffix=f=f -qfixed=132
+
+
+ -qsuffix=f=f90:cpp=F90
+
TRUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16
- -gopt -Mlist -time
-
-
-
-
- -mp
- -mp
- -mp
-
- -Mfixed
- -Mfree
- -r8
-
- -i4 -gopt -time -Mstack_arrays -Mextend -byteswapio -Mflushz -Kieee
- -O0 -g -Ktrap=fp -Mbounds -Kieee
-
- -mp
-
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -time -Wl,--allow-multiple-definition
- pgcc
- pgf95
- pgc++
- mpicc
- mpif90
- mpicxx
-
- CXX
-
-
-
- FALSE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DUSE_CUDA_FORTRAN -DCPRPGI
- -Mlist -time
-
-
-
-
- -mp
- -mp
- -mp
-
- -Mfixed
- -Mfree
- -r8
-
- -i4 -Mlist -time -Mstack_arrays -Mextend -byteswapio -Mflushz -Kieee
- -acc -ta=tesla,pin,cuda7.0,cc35,ptxinfo -Minfo=accel -DUSE_OPENACC=1
- -O0 -g -Ktrap=fp -Mbounds -Kieee
-
- -mp
-
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -time -Wl,--allow-multiple-definition -acc -ta=tesla,pin,cuda7.0,cc35,ptxinfo
- pgcc
- pgf95
- pgc++
- mpicc
- mpif90
- mpicxx
-
- CXX
-
-
- FALSE
-
- -DFORTRANUNDERSCORE -DNO_R16
- -openmp
- -openmp
- -openmp
- -free
- -fixed -132
-
+ -DFORTRANUNDERSCORE -DNO_R16
+
+
+ -cxxlib
+
+ FORTRAN
+
+ -r8
+
+
+ -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source
+ -openmp
+
- -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created
- -O2 -debug minimal
- -O2 -debug minimal
- -O0 -g
- -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source
- -O2 -fp-model precise -std=gnu99
- -O0
- -openmp
- -r8
- ifort
- icc
- icpc
- mpif90
+ -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created
+ -O2 -debug minimal
+
+
+ -O0
+ -openmp
+
+
+ -fixed -132
+
+
+ -free
+
+ TRUE
+
+ -openmp
+
mpicc
mpicxx
- FORTRAN
- -cxxlib
+ mpif90
+ icc
+ icpc
+ ifort
TRUE
- TRUE
-
-
-
-
- -mcmodel medium -shared-intel
-
- -DFORTRANUNDERSCORE -DNO_R16
- -openmp
- -openmp
- -openmp
- -free
- -fixed -132
- -O0 -g -check uninit -check bounds -check pointers -fpe0
- -O2
- -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
- -O2 -fp-model precise
- -O0
- -r8
- ifort
- icc
- icpc
- mpif90
+
+ -O2 -fp-model precise
+ -openmp
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16
+ -DCPRINTEL
+
+
+ -cxxlib
+
+ FORTRAN
+
+ -r8
+
+
+ -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
+ -openmp
+ -O0 -g -check uninit -check bounds -check pointers -fpe0
+ -O2
+
+
+ -O0
+
+
+ -fixed -132
+
+
+ -free
+
+ TRUE
+
+ -openmp
+
mpicc
mpicxx
- FORTRAN
- -cxxlib
- -DCPRINTEL
+ mpif90
+ icc
+ icpc
+ ifort
+
+ NETCDF_PATH/bin/nf-config --flibs
+
TRUE
- TRUE
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
-
- -DFORTRANUNDERSCORE -DNO_R16
- -openmp
- -openmp
- -openmp
- -free
- -fixed -132
- -O0 -g -check uninit -check bounds -check pointers -fpe0
- -O2
- -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
- -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR
- --host=x86_64-k1om-linux --build=x86_64-unknown-linux
- -O0 -mmic
- -r8
- ifort
- icc
- icpc
- mpiifort
+
+ -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR
+ -openmp
+
+
+ --host=x86_64-k1om-linux --build=x86_64-unknown-linux
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16
+ -DCPRINTEL
+
+
+ -cxxlib
+
+ FORTRAN
+
+ -r8
+
+
+ -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
+ -openmp
+ -O0 -g -check uninit -check bounds -check pointers -fpe0
+ -O2
+
+
+ -O0 -mmic
+
+
+ -fixed -132
+
+
+ -free
+
+ TRUE
+
+ -openmp
+ -mmic
+
mpiicc
mpiicpc
- FORTRAN
- -cxxlib
+ mpiifort
+ icc
+ icpc
+ ifort
+
+ NETCDF_PATH/bin/nf-config --flibs
+
TRUE
- TRUE
- -DCPRINTEL
- -mmic
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
-
- -DFORTRANUNDERSCORE -DNO_R16
- -openmp
- -openmp
- -openmp
- -free
- -fixed -132
- -O0 -g -check uninit -check bounds -check pointers -fpe0
- -O2
- -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
- -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR
- --host=x86_64-k1om-linux --build=x86_64-unknown-linux
- -O0 -mmic
- -r8
- ifort
- icc
- icpc
- mpiifort
+
+ -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR
+ -openmp
+
+
+ --host=x86_64-k1om-linux --build=x86_64-unknown-linux
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16
+ -DCPRINTEL
+
+
+ -cxxlib
+
+ FORTRAN
+
+ -r8
+
+
+ -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
+ -openmp
+ -O0 -g -check uninit -check bounds -check pointers -fpe0
+ -O2
+
+
+ -O0 -mmic
+
+
+ -fixed -132
+
+
+ -free
+
+ TRUE
+
+ -openmp
+ -mmic
+
mpiicc
mpiicpc
- FORTRAN
- -cxxlib
+ mpiifort
+ icc
+ icpc
+ ifort
+
+ NETCDF_PATH/bin/nf-config --flibs
+
TRUE
- TRUE
- -DCPRINTEL
- -mmic
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -fopenmp
- -fopenmp
- -fopenmp
- -D CISM_GNU=ON
- -ffixed-form
- -ffree-form
- -g -Wall
- -O
- -g -Wall
- -O
-
- -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none
- -mcmodel=medium
- -O0
- -fdefault-real-8
- gfortran
- gcc
- g++
- mpif90
- mpicc
- mpicxx
- FORTRAN
- TRUE
+
+
+ -g
+
+
+ -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH
+
+
+ -r8
+
+
+
+
+
+
+
+ -wmismatch=mpi_send,mpi_recv,mpi_bcast,mpi_allreduce,mpi_reduce,mpi_isend,mpi_irecv,mpi_irsend,mpi_rsend,mpi_gatherv,mpi_gather,mpi_scatterv,mpi_allgather,mpi_alltoallv,mpi_file_read_all,mpi_file_write_all,mpibcast,mpiscatterv,mpi_alltoallw,nfmpi_get_vara_all,NFMPI_IPUT_VARA,NFMPI_GET_VAR_ALL,NFMPI_PUT_VARA,NFMPI_PUT_ATT_REAL,NFMPI_PUT_ATT_DOUBLE,NFMPI_PUT_ATT_INT,NFMPI_GET_ATT_REAL,NFMPI_GET_ATT_INT,NFMPI_GET_ATT_DOUBLE,NFMPI_PUT_VARA_DOUBLE_ALL,NFMPI_PUT_VARA_REAL_ALL,NFMPI_PUT_VARA_INT_ALL -convert=BIG_ENDIAN
+
+ -ieee=full -O2
+ -g -time -f2003 -ieee=stop
+
+
+ -C=all -g -time -f2003 -ieee=stop
+ -gline
+ -openmp
+
+
+ FFLAGS
+ -ieee=full
+
+
+
+ -g -time -f2003 -ieee=stop
+ -gline
+ -openmp
+
+
+ -fixed
+
+
+ -free
+
FALSE
+
+ -openmp
+
+ mpicc
+ mpif90
+ gcc
+ nagfor
-
- -DFORTRANUNDERSCORE -DNO_R16 -DCPRPATHSCALE
- -mp
- -mp
- -mp
- -g -trapuv -Wuninitialized
- -O -extend_source -ftpp -fno-second-underscore -funderscoring -byteswapio
- -O0
- -r8
- mpif90
- mpicc
+
+ -mp
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16 -DCPRPATHSCALE
+
+
+ -r8
+
+
+ -O -extend_source -ftpp -fno-second-underscore -funderscoring -byteswapio
+ -mp
+ -g -trapuv -Wuninitialized
+
+
+ -O0
+
FALSE
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -DDIR=NOOP
- -h noomp
- -h noomp
- -h noomp
- -DDIR=NOOP
- -g -trapuv -Wuninitialized
- -O2 -f free -N 255 -h byteswapio -em
- -O0
- -h noomp
- -s real64
- -Wl,--allow-multiple-definition -h byteswapio
- TRUE
-
-
-
-
-
- nagfor
+
+ -mp
+
+ mpicc
mpif90
- gcc
- mpicc
+
- -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH
-
-
-
-
-
-
- -wmismatch=mpi_send,mpi_recv,mpi_bcast,mpi_allreduce,mpi_reduce,mpi_isend,mpi_irecv,mpi_irsend,mpi_rsend,mpi_gatherv,mpi_gather,mpi_scatterv,mpi_allgather,mpi_alltoallv,mpi_file_read_all,mpi_file_write_all,mpibcast,mpiscatterv,mpi_alltoallw,nfmpi_get_vara_all,NFMPI_IPUT_VARA,NFMPI_GET_VAR_ALL,NFMPI_PUT_VARA,NFMPI_PUT_ATT_REAL,NFMPI_PUT_ATT_DOUBLE,NFMPI_PUT_ATT_INT,NFMPI_GET_ATT_REAL,NFMPI_GET_ATT_INT,NFMPI_GET_ATT_DOUBLE,NFMPI_PUT_VARA_DOUBLE_ALL,NFMPI_PUT_VARA_REAL_ALL,NFMPI_PUT_VARA_INT_ALL -convert=BIG_ENDIAN
- $(FFLAGS)
-
-
- -ieee=full -O2
- -ieee=full
-
- -g -time -f2003 -ieee=stop
- -g
-
-
-
- -C=all -g -time -f2003 -ieee=stop
- -gline
-
-
-
- -g -time -f2003 -ieee=stop
- -gline
-
- -openmp
- -openmp
- -openmp
-
- -r8
- -fixed
- -free
+
+
+ -gopt -Mlist -time
+
+ -mp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16
+
+ CXX
+
+ -r8
+
+
+ -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee
+
+ -mp
+ -O0 -g -Ktrap=fp -Mbounds -Kieee
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+
+
+ -O0 -g -Ktrap=fp -Mbounds -Kieee
+
+ -mp
+
+
+ -Mfixed
+
+
+ -Mfree
+
+
+
FALSE
+
+ -time -Wl,--allow-multiple-definition
+
+ -mp
+
+ mpicc
+ mpicxx
+ mpif90
+ pgcc
+ pgc++
+ pgf95
-
- -DSYSDARWIN
- -all_load
+
+
+ -Mlist -time
+
+ -mp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DUSE_CUDA_FORTRAN -DCPRPGI
+
+ CXX
+
+ -r8
+
+
+ -i4 -Mlist -time -Mextend -byteswapio -Mflushz -Kieee
+
+ -mp
+ -acc -ta=tesla,pin,cuda7.0,cc35,ptxinfo -Minfo=accel -DUSE_OPENACC=1
+ -O0 -g -Ktrap=fp -Mbounds -Kieee
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+
+
+ -O0 -g -Ktrap=fp -Mbounds -Kieee
+
+ -mp
+
+
+ -Mfixed
+
+
+ -Mfree
+
+
+
+ FALSE
+
+ -time -Wl,--allow-multiple-definition -acc -ta=tesla,pin,cuda7.0,cc35,ptxinfo
+
+ -mp
+
+ mpicc
+ mpicxx
+ mpif90
+ pgcc
+ pgc++
+ pgf95
-
- -heap-arrays
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
+
+
+ -qarch=auto -qtune=auto -qcache=auto
+
+ /usr/bin/bash
+
+ -qarch=auto -qtune=auto -qcache=auto -qsclk=micro
+ -qspill=6000
+
+
+ -qsigtrap=xl__trcedump
+ -bdatapsize:64K -bstackpsize:64K -btextpsize:32K
+
+ mpcc_r
+ mpxlf2003_r
+ cc_r
+ xlf2003_r
+
+ -lmassv -lessl
+ -lmass
+
+
+
+
+
+ -O3 -qstrict
+ -qtune=440 -qarch=440d
+
+
+ --build=powerpc-bgp-linux --host=powerpc64-suse-linux
+
+
+ -DLINUX -DnoI8
+
+
+ -qtune=440 -qarch=440d
+ -O3 -qstrict -Q
+ -qinitauto=FF911299 -qflttrap=ov:zero:inv:en
+ -qextname=flush
+
+
+ -Wl,--relax -Wl,--allow-multiple-definition
+
+
+ -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
+
+ blrts_xlc
+ blrts_xlf2003
+ mpich.rts
+ /bgl/BlueLight/ppcfloor/bglsys
+ blrts_xlc
+ blrts_xlf2003
-
- USERDEFINED_MUST_EDIT_THIS
-
- # USERDEFINED $(shell $(NETCDF_PATH)/bin/nc-config --flibs)
-
-
-
-
-
+
+
+ -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/
+
+
+ --build=powerpc-bgp-linux --host=powerpc64-suse-linux
+
+
+ -DLINUX -DnoI8
+
+
+ -qspillsize=2500 -qtune=450 -qarch=450
+ -qextname=flush
+
+
+ -Wl,--relax -Wl,--allow-multiple-definition
+
+
+
+
+
+ --build=powerpc-bgp-linux --host=powerpc64-suse-linux
+
+
+ -DLINUX
+
+
+ -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush
+ -O3 -qstrict -Q
+
+
+ -Wl,--relax -Wl,--allow-multiple-definition
+
- ftn
- cc
- CC
- ftn
+
+ -DCMAKE_SYSTEM_NAME=Catamount
+
+
+ -DLINUX
+ -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
+
cc
CC
+ ftn
mpich
- $(MPICH_DIR)
- $(NETCDF_DIR)
- $(PARALLEL_NETCDF_DIR)
+ MPICH_DIR
+ NETCDF_DIR
lustre
- -DLINUX
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
- -DCMAKE_SYSTEM_NAME=Catamount
+ PARALLEL_NETCDF_DIR
+ cc
+ CC
+ ftn
+
+
+ -DSYSDARWIN
+
+
+ -all_load
+
+
+
+
+
+ -heap-arrays
+
+
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+
+
+
+
+ -mcmodel medium -shared-intel
+
+
+
+
+ /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
+
+ -O2
+
+
+ --host=Linux
+
+
+ -lstdc++ -lmpi_cxx
+
+
+ -O2
+
+ NETCDFROOT
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nf-config --flibs -lblas -llapack
+
+
+
+
+ mpi
+ /soft/mvapich2/2.2b_psm/gnu-5.2/
+ NETCDFROOT
+ gpfs
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
+
+
-
- -O2
- -O2
- --host=Linux
- -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
- ${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group ${MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
- -DHAVE_PAPI
- ftn
- cc
- CC
- $(PETSC_DIR)
- /global/project/projectdirs/acme/software/AlbanyTrilinos_09232015/Albany/build/install
+
+ mpi
+ /soft/mvapich2/2.2b_psm/intel-15.0
+ NETCDFROOT
+ gpfs
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
+ -Wl,-rpath -Wl,NETCDFROOT/lib
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+
+
+
+ mpi
+ mpich
+ /soft/openmpi/1.8.2/intel-13.1
+ /soft/mpich2/1.4.1-intel-13.1
+ NETCDFROOT
+ gpfs
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+
+
+
+ mpi
+ /home/robl/soft/mpich-3.1.4-nag-6.0
+ NETCDFROOT
+ gpfs
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
+
-
- -xCORE-AVX2
- -xCORE-AVX2
- -O2 -qno-opt-dynamic-align
- -O2
- -qopenmp
- -qopenmp
- -qopenmp
- -qopenmp
- --host=Linux
- -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
- ${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group ${MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
-
- -DHAVE_PAPI
- -DHAVE_SLASHPROC
- ftn
+
+ mpi
+ mpi
+ mpich
+ /soft/openmpi/1.8.2/pgi-13.9
+ /soft/mpich2/1.4.1-pgi-13.9/
+ NETCDFROOT
+ gpfs
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nc-config --flibs -llapack -lblas
+ -rpath NETCDFROOT/lib
+
+
+
+
+
+
+ -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
+
+ NETCDF
+ gpfs
+ PNETCDF
+
+
+
+
+ --host=Linux --enable-filesystem-hints=lustre
+
+
+ -DLINUX
+
+
+ -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv
+
+ NETCDF_LIB/..
+ lustre
+ PNETCDFROOT
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+
+
+
+
+ -DnoI8
+
+
+
+ -gline -C=all -g -O0 -v
+ -gline -C=all -g -nan -O0 -v
+
+
+
+
+ MPI_LIB
+ NETCDF_ROOT
+ lustre
+ PNETCDFROOT
+
+ -LNETCDF_ROOT/lib -lnetcdf -lnetcdff -LMKL_PATH -lmkl_rt
+
+
+
+
+ /projects/ccsm/libs/AlbanyTrilinos/Albany/build/install
+
+ -DMPASLI_EXTERNAL_INTERFACE_DISABLE_MANGLING
+
+
+ -llapack -lblas -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp
+
+ CXX
+
+ -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl
+
+ mpixlc_r
+ /soft/compilers/bgclang/mpi/bgclang/bin/mpic++11
+ mpixlf2003_r
+ /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/
+ /soft/libraries/petsc/3.5.3.1
+ /home/santos/pFUnit/pFUnit_IBM
+ gpfs
+ /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/
+ mpixlc_r
+ mpixlf2003_r
+
+ -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
+ -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp
+
+ TRUE
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+ -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv
+
+ NETCDF_HOME
+ lustre
+ PNETCDFROOT
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+ -C -Mbounds -traceback -Mchkfpstk -Mchkstk -Mdalign -Mdepchk -Mextend -Miomutex -Mrecursive -Ktrap=fp -O0 -g -byteswapio -Meh_frame
+
+ NETCDF_HOME
+ lustre
+ PNETCDFROOT
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMPI_LIB -lmpich
+
+
+
+
+
+ -xCORE-AVX2
+ -O2
+
+
+ --host=Linux
+
+
+ -DHAVE_SLASHPROC
+ -DHAVE_PAPI
+
+
+ -xCORE-AVX2
+ -O2
+
cc
CC
- ifort
- icc
- icpc
- $(PETSC_DIR)
-
-
-
- -xMIC-AVX512
- -xMIC-AVX512
- -O2 -qno-opt-dynamic-align
- -O2
- -qopenmp
- -qopenmp
- -qopenmp
- -qopenmp
- --host=Linux
- -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
- ${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group ${MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
-
-
- -DHAVE_PAPI
- -DHAVE_SLASHPROC
-
ftn
+ PETSC_DIR
+
+ -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
+ MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
+
+
+
+
+
+ -xMIC-AVX512
+ -O2
+
+
+ --host=Linux
+
+
+ -DHAVE_SLASHPROC
+ -DHAVE_PAPI
+
+
+ -xMIC-AVX512
+ -O2
+
cc
CC
- ifort
- icc
- icpc
- $(PETSC_DIR)
+ ftn
+ PETSC_DIR
+
+ -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
+ MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF_HOME
+ lustre
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
+
-
- -O2
- -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv
- -O2
- --host=Linux
- -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
- ${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group ${MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
- -DHAVE_PAPI
- ftn
+
+ /global/project/projectdirs/acme/software/AlbanyTrilinos_09232015/Albany/build/install
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DHAVE_PAPI
+
+
+ -O2
+
cc
CC
-
-
-
ftn
+ PETSC_DIR
+
+ -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
+ MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DHAVE_PAPI
+
+
+ -O2
+
cc
CC
- -O2 -xMIC-AVX512
- -O2 -xMIC-AVX512
- -O0 -g -xMIC-AVX512
- -O0 -g -xMIC-AVX512
- -qopenmp
- -qopenmp
- -qopenmp
- -qopenmp
- --host=Linux
- -L$(NETCDF_DIR)/lib -lnetcdff -L$(NETCDF_DIR)/lib -lnetcdf -Wl,-rpath -Wl,$(NETCDF_DIR)/lib
- -mkl -lpthread -lm
- -DHAVE_COMM_F2C
-
-
-
- $(NETCDF_PATH)
- -framework Accelerate
- -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf
-
-
-
- $(NETCDF_PATH)
- $(PNETCDF_PATH)
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs)
-
-
-
- -O2
- -O2
- --host=Linux
- $(NETCDFROOT)
- $(PNETCDFROOT)
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -lblas -llapack
- -lstdc++ -lmpi_cxx
- /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
-
-
-
- -O2
- -O2
- --host=Linux
- $(NETCDFROOT)
- $(PNETCDFROOT)
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L/usr/lib64 -L/usr/lib64/atlas -lblas -llapack
- -lstdc++ -lmpi_cxx
- /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
-
-
-
- -O2
- -O2
- --host=Linux
- $(NETCDFROOT)
- $(PNETCDFROOT)
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -lblas -llapack
- -lstdc++ -lmpi_cxx
- /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
-
-
-
- -O2
- -O2
- $(NETCDFROOT)
- $(PNETCDFROOT)
- /opt/openmpi-1.8-intel
- /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
- --host=Linux
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L/projects/ccsm/BLAS-intel -lblas_LINUX
- lustre
- -mkl=cluster
- -mkl
- /projects/ccsm/AlbanyTrilinos/Albany/build/install
-
-
-
- -O2
- -O2
- $(NETCDFROOT)
- $(PNETCDFROOT)
- /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
- --host=Linux
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L/projects/ccsm/BLAS-intel -lblas_LINUX
- lustre
- -mkl=cluster
- -mkl
- /projects/ccsm/AlbanyTrilinos/Albany/build/install
-
-
-
- /usr/local/tools/netcdf-pgi-4.1.3
- /usr/local/tools/mvapich2-pgi-1.7/
- mpich
- -DNO_SHR_VMATH -DCNL
- $(shell /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs)
- -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib -llapack -lblas
-
-
-
- -O2
- -O2
- /usr/local/tools/netcdf-intel-4.1.3
- /usr/local/tools/parallel-netcdf-intel-1.6.1
- --host=Linux
- /usr/local/tools/mvapich2-intel-2.1/
- mpich
- -DNO_SHR_VMATH -DCNL
- -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv
- $(shell /usr/local/tools/netcdf-intel-4.1.3/bin/nc-config --flibs)
- -llapack -lblas
-
-
- -D_USE_FLOW_CONTROL
-
-
-
- /projects/cesm/devtools/netcdf-4.1.3-gcc4.8.1-mpich3.0.4/
- -L/user/lib64 -llapack -lblas -lnetcdff
- /projects/cesm/devtools/gcc-4.8.1/bin/gfortran
- /projects/cesm/devtools/gcc-4.8.1/bin/gcc
- /projects/cesm/devtools/gcc-4.8.1/bin/g++
- /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpicc
- /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpif90
-
-
-
- /home/zdr/opt/netcdf-4.1.3_pgf95
-
-
-
- /projects/cesm/devtools/netcdf-4.1.3-gcc4.8.1-mpich3.0.4/
- -L/user/lib64 -llapack -lblas -lnetcdff
- /projects/cesm/devtools/gcc-4.8.1/bin/gfortran
- /projects/cesm/devtools/gcc-4.8.1/bin/gcc
- /projects/cesm/devtools/gcc-4.8.1/bin/g++
- /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpicc
- /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpif90
+ ftn
+
+ -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
+ MKLROOT/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group MKLROOT/lib/intel64/libmkl_intel_lp64.a MKLROOT/lib/intel64/libmkl_core.a MKLROOT/lib/intel64/libmkl_sequential.a -Wl,--end-group MKLROOT/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm
+
-
- /home/zdr/opt/netcdf-4.1.3_pgf95
+
+ /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install
-
- -DFORTRANUNDERSCORE -DNO_R16
- -fopenmp
- -fopenmp
- -L$(GCC_ROOT)/lib64/gcc/x86_64-unknown-linux-gnu/5.3.0 -fopenmp
- -D CISM_GNU=ON
- -ffixed-form
- -ffree-form
- -g -Wall
-
- -O -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none -fno-range-check
- -O0
- -fdefault-real-8
-
- /software/tools/spack/opt/spack/linux-x86_64/gcc-4.8.5/gcc-5.3.0-5hy3c4b3xqemygnfwyl5dsc753gbvzrc/bin/gfortran
- /software/tools/spack/opt/spack/linux-x86_64/gcc-4.8.5/gcc-5.3.0-5hy3c4b3xqemygnfwyl5dsc753gbvzrc/bin/gcc
- /software/tools/spack/opt/spack/linux-x86_64/gcc-4.8.5/gcc-5.3.0-5hy3c4b3xqemygnfwyl5dsc753gbvzrc/bin/gcpp
- /software/tools/spack/opt/spack/linux-x86_64/gcc-5.3.0/openmpi-1.10.2-w26llp27jmybo7wlgoqxjrtptltmripg/bin/mpif90
- /software/tools/spack/opt/spack/linux-x86_64/gcc-5.3.0/openmpi-1.10.2-w26llp27jmybo7wlgoqxjrtptltmripg/bin/mpicc
- /software/tools/spack/opt/spack/linux-x86_64/gcc-5.3.0/openmpi-1.10.2-w26llp27jmybo7wlgoqxjrtptltmripg/bin/mpic++
- FORTRAN
- TRUE
-
- /software/user_tools/current/cades-ccsi/netcdf4/4.4.0/openmpi-1.10.2-gcc-5.3
- /software/user_tools/current/cades-ccsi/hdf5/1.8.16/openmpi-1.10.2-gcc-5.3
- /software/tools/spack/opt/spack/linux-x86_64/gcc-5.3.0/netlib-lapack-3.5.0-ktb3cldqesiba6ndoiifvr3irojqhdhc/lib/
- /software/tools/spack/opt/spack/linux-x86_64/gcc-5.3.0/netlib-blas-3.5.0-cxsdr3okwvgr6u7kusa5ee5vhsyqxwgg/lib/
- -L$(NETCDF_PATH)/lib -Wl,-rpath=$(NETCDF_PATH)/lib -lnetcdff -lnetcdf \
- -L$(HDF5_ROOT)/lib -Wl,-rpath=$(HDF5_ROOT)/lib -lhdf5_hl -lhdf5 \
- -L$(LAPACK_LIBDIR) -Wl,-rpath=$(LAPACK_LIBDIR) \
- -L$(BLAS_LIBDIR) -Wl,-rpath=$(BLAS_LIBDIR)
-
-
-
-
-
- -O2
- -O2
- --host=Linux
- lustre
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
- TRUE
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
- -O2
- -O2
- --host=Linux
- lustre
- $(shell nf-config --flibs)
- /lustre/atlas/world-shared/cli900/cesm/software/Trilinos/Trilinos-11.10.2_gptl/titan-pgi-ci-nophal/install
- -lfmpich -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o /opt/gcc/default/snos/lib64/libstdc++.a
+
+ /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/
+ /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/
+
+ NETCDF_PATH/bin/nf-config --flibs
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+
+
+
+
+ -O2
+
+
+ -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o
+
+
+ -O2
+
TRUE
- ftn
- cc
- /opt/cray/craype/2.4.0/bin/CC
- /ccs/proj/cli106/AlbanyTrilinos/Albany/build/install
+ /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-pgi/install
-
- -O2
- -O2
- --host=Linux
- lustre
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
- -lfmpich -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o
- TRUE
+
+
+ -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY
+
+
+ -lnetcdff -lnetcdf -mkl
+
-
- /usr/bin/bash
- xlf2003_r
- mpxlf2003_r
- cc_r
- mpcc_r
- -qarch=auto -qtune=auto -qcache=auto
- -qarch=auto -qtune=auto -qcache=auto -qsclk=micro
- -qsigtrap=xl__trcedump
- -qspill=6000
- -bdatapsize:64K -bstackpsize:64K -btextpsize:32K
- -lmassv -lessl
- -lmass
-
-
-
- -qtune=440 -qarch=440d
- -qtune=440 -qarch=440d
- /bgl/BlueLight/ppcfloor/bglsys
- mpich.rts
- blrts_xlf2003
- blrts_xlf2003
- blrts_xlc
- blrts_xlc
- -O3 -qstrict
- -O3 -qstrict -Q
- -qinitauto=FF911299 -qflttrap=ov:zero:inv:en
- -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
- -DLINUX -DnoI8
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
- -Wl,--relax -Wl,--allow-multiple-definition
- -qextname=flush
+
+
+ -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY
+
+
+ -lnetcdff -lnetcdf -mkl
+
-
- -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/
- -qspillsize=2500 -qtune=450 -qarch=450
- -DLINUX -DnoI8
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
- -Wl,--relax -Wl,--allow-multiple-definition
- -qextname=flush
+
+ NETCDF_PATH
+ PNETCDF_PATH
+
+ NETCDF_PATH/bin/nc-config --flibs
+
-
-
- -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush
- -O3 -qstrict -Q
- -DLINUX
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
- -Wl,--relax -Wl,--allow-multiple-definition
+
+
+ -framework Accelerate
+
+ NETCDF_PATH
+
+ -LNETCDF_PATH/lib -lnetcdff -lnetcdf
+
-
-
- mpixlf2003_r
- mpixlf2003_r
- mpixlc_r
- mpixlc_r
+
+ /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
+
+ -O2
+
+
+ --host=Linux
+
+
+ -lstdc++ -lmpi_cxx
+
+
+ -O2
+
+ NETCDFROOT
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nf-config --flibs -lblas -llapack
+
+
+
+
+ /projects/ccsm/libs/AlbanyTrilinos/Albany/build/install
+
+ -DMPASLI_EXTERNAL_INTERFACE_DISABLE_MANGLING
+
+
+ -llapack -lblas -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp
+
+ CXX
+ /soft/libraries/hdf5/1.8.14/cnk-xl/current/
mpixlf77_r
- /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/
- /soft/libraries/pnetcdf/1.6.0/cnk-xl/current/
- /home/santos/pFUnit/pFUnit_IBM
- /soft/libraries/hdf5/1.8.14/cnk-xl/current/
- -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.14/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
- -L$(IBM_MAIN_DIR)/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -L$(IBM_MAIN_DIR)/xlsmp/bg/3.1/bglib64 -lxlsmp
- gpfs
- /soft/libraries/petsc/3.5.3.1
- TRUE
- CXX
- -llapack -lblas -L$(IBM_MAIN_DIR)/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -L$(IBM_MAIN_DIR)/xlsmp/bg/3.1/bglib64 -lxlsmp
- -DMPASLI_EXTERNAL_INTERFACE_DISABLE_MANGLING
+ mpixlc_r
/soft/compilers/bgclang/mpi/bgclang/bin/mpic++11
- /projects/ccsm/libs/AlbanyTrilinos/Albany/build/install
-
-
-
-
- mpixlf2003_r
mpixlf2003_r
- mpixlc_r
- mpixlc_r
- /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/
- /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/
+ /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/
+ /soft/libraries/petsc/3.5.3.1
/home/santos/pFUnit/pFUnit_IBM
- -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl
- -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5 -lhdf5_hl -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
- -L$(IBM_MAIN_DIR)/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -L$(IBM_MAIN_DIR)/xlsmp/bg/3.1/bglib64 -lxlsmp
gpfs
- /soft/libraries/petsc/3.5.3.1
+ /soft/libraries/pnetcdf/1.6.0/cnk-xl/current/
+ mpixlc_r
+ mpixlf2003_r
+
+ -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.14/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
+ -LIBM_MAIN_DIR/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -LIBM_MAIN_DIR/xlsmp/bg/3.1/bglib64 -lxlsmp
+
TRUE
- CXX
- -llapack -lblas -L$(IBM_MAIN_DIR)/xlf/bg/14.1/bglib64 -lxlfmath -lxlf90_r -lxlopt -lxl -L$(IBM_MAIN_DIR)/xlsmp/bg/3.1/bglib64 -lxlsmp
- -DMPASLI_EXTERNAL_INTERFACE_DISABLE_MANGLING
- /soft/compilers/bgclang/mpi/bgclang/bin/mpic++11
- /projects/ccsm/libs/AlbanyTrilinos/Albany/build/install
-
-
-
- $(PNETCDFROOT)
- $(NETCDFROOT)
- /soft/openmpi/1.8.2/pgi-13.9
- /soft/mpich2/1.4.1-pgi-13.9/
- mpi
- mpi
- mpich
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas
- -rpath $(NETCDFROOT)/lib
- gpfs
-
- $(PNETCDFROOT)
- $(NETCDFROOT)
- /soft/openmpi/1.8.2/intel-13.1
- /soft/mpich2/1.4.1-intel-13.1
- mpi
- mpich
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas
- gpfs
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
- $(PNETCDFROOT)
- $(NETCDFROOT)
- /soft/mvapich2/2.2b_psm/intel-15.0
- mpi
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas
- -Wl,-rpath -Wl,$(NETCDFROOT)/lib
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
- gpfs
+
+ ALBANY_PATH
+
+ -lstdc++ -lmpi_cxx
+
+ mpicc
+ mpic++
+ mpif90
+ gcc
+ g++
+ gfortran
+
+ NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
+
+ TRILINOS_PATH
-
- $(PNETCDFROOT)
- $(NETCDFROOT)
- /blues/gpfs/home/software/spack/opt/spack/linux-x86_64/gcc-5.3.0/mvapich2-2.2b-sdh7nhddicl4sh5mgxjyzxtxox3ajqey
- mpi
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas
- -DHAVE_NANOTIME -DBIT64 -DHAVE_SLASHPROC -DHAVE_GETTIMEOFDAY
- gpfs
+
+ mpicc
+ mpic++
+ mpif90
+ icc
+ icpc
+ ifort
+
+ NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+ TRILINOS_PATH
-
- $(PNETCDFROOT)
- $(NETCDFROOT)
- /home/robl/soft/mpich-3.1.4-nag-6.0
- mpi
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas
- gpfs
+
+ mpicc
+ mpic++
+ mpif90
+ pgcc
+ pgc++
+ pgfortran
+
+ NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
+
+ TRILINOS_PATH
-
- $(PNETCDFROOT)
- $(NETCDFROOT)
- /blues/gpfs/home/software/spack-0.9.1/opt/spack/linux-centos6-x86_64/intel-16.0.3/mvapich2-2.2b-ow5ikyjehwemgdr4h6k7ii7da6hs6lfz
- mpi
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas
- -Wl,-rpath -Wl,$(NETCDFROOT)/lib
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
- gpfs
+
+ /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpicc
+ /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpif90
+ /projects/cesm/devtools/netcdf-4.1.3-gcc4.8.1-mpich3.0.4/
+ /projects/cesm/devtools/gcc-4.8.1/bin/gcc
+ /projects/cesm/devtools/gcc-4.8.1/bin/g++
+ /projects/cesm/devtools/gcc-4.8.1/bin/gfortran
+
+ -L/user/lib64 -llapack -lblas -lnetcdff
+
-
- $(PNETCDFROOT)
- $(NETCDFROOT)
- /soft/spack/opt/spack/linux-x86_64/gcc-4.4.7/gcc-5.3.0-fygfl7rvyuiteto27dlhmilp5cstw2o2
- mpi
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas
- -DHAVE_NANOTIME -DBIT64 -DHAVE_SLASHPROC -DHAVE_GETTIMEOFDAY
- gpfs
+
+ /home/zdr/opt/netcdf-4.1.3_pgf95
-
- $(PNETCDFROOT)
- $(NETCDFROOT)
- soft/spack/opt/spack/linux-x86_64/pgi-16.3-0/mvapich2-2.2b-2t45yukj4ij6ek24fwimzydo2dg6i3n2
- mpi
- $(shell $(NETCDF_PATH)/bin/nc-config --flibs) -llapack -lblas
- -rpath $(NETCDFROOT)/lib
- gpfs
+
+ /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpicc
+ /projects/cesm/devtools/mpich-3.0.4-gcc4.8.1/bin/mpif90
+ /projects/cesm/devtools/netcdf-4.1.3-gcc4.8.1-mpich3.0.4/
+ /projects/cesm/devtools/gcc-4.8.1/bin/gcc
+ /projects/cesm/devtools/gcc-4.8.1/bin/g++
+ /projects/cesm/devtools/gcc-4.8.1/bin/gfortran
+
+ -L/user/lib64 -llapack -lblas -lnetcdff
+
-
- -O2
- -O2
- $(NETCDF_HOME)
- --host=Linux
- lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi
+
+ /home/zdr/opt/netcdf-4.1.3_pgf95
-
- -O2
- -O2
- $(NETCDF_LIB)/..
- --host=Linux
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF_LIB/..
lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi
-
-
-
- -O2
- -O2
- $(NETCDF_LIB)/..
- --host=Linux
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF_LIB/..
lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
+
-
- -O2
- -O2
- $(NETCDF)
- --host=Linux
+
+ /projects/ccsm/AlbanyTrilinos/Albany/build/install
+
+ -O2
+
+
+ --host=Linux
+
+ /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
+
+ -O2
+
+ NETCDFROOT
+ lustre
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+
+
+
+ /projects/ccsm/AlbanyTrilinos/Albany/build/install
+
+ -O2
+
+
+ --host=Linux
+
+ /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
+
+ -O2
+
+ NETCDFROOT
+ lustre
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF
lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lpmi
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
- -O2
- -O2
- $(NETCDF_LIB)/..
- --host=Linux
+
+ -LNETCDF_PATH/lib -lnetcdf -lpmi
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF_LIB/..
lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi
-
-
-
- $(NETCDF_LIB)/..
- $(PNETCDFROOT)
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -O2
+
lustre
- --host=Linux --enable-filesystem-hints=lustre
- -DLINUX
- -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi -L$(MKL_PATH) -lmkl_rt
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
- $(NETCDF_ROOT)
- $(PNETCDFROOT)
- lustre
- $(MPI_LIB)
- -DnoI8
-
-
- -gline -C=all -g -O0 -v
- -gline -C=all -g -nan -O0 -v
- -L$(NETCDF_ROOT)/lib -lnetcdf -lnetcdff -L$(MKL_PATH) -lmkl_rt
+
+ NETCDF_PATH/bin/nf-config --flibs
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+ TRUE
-
- -O2
- -O2
- $(NETCDF_LIB)/../
- $(PNETCDFROOT)
- --host=Linux
+
+ /ccs/proj/cli106/AlbanyTrilinos/Albany/build/install
+
+ -O2
+
+
+ --host=Linux
+
+
+ -lfmpich -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o /opt/gcc/default/snos/lib64/libstdc++.a
+
+
+ -O2
+
+ cc
+ /opt/cray/craype/2.4.0/bin/CC
+ ftn
lustre
- -DLINUX
- -C -Mbounds -traceback -Mchkfpstk -Mchkstk -Mdalign -Mdepchk -Mextend -Miomutex -Mrecursive -Ktrap=fp -O0 -g -byteswapio -Meh_frame
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi -L$(MPI_LIB) -lmpich
+
+ nf-config --flibs
+
+ TRUE
+ /lustre/atlas/world-shared/cli900/cesm/software/Trilinos/Trilinos-11.10.2_gptl/titan-pgi-ci-nophal/install
-
- -O2
- -O2
- $(NETCDF_LIB)/../
- $(PNETCDFROOT)
- --host=Linux
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -lfmpich -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o
+
+
+ -O2
+
lustre
- -DLINUX
- -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi -L$(MKL_LIB) -lmkl_rt
-
-
-
-
- -O2
- -O2
- /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-pgi/install
- -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o
- TRUE
-
-
-
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
- /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/
- /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
- /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install
-
-
-
- mpicc
- mpif90
- mpic++
- pgfortran
- pgcc
- pgc++
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -llapack -lblas
- $(TRILINOS_PATH)
-
-
-
- mpicc
- mpif90
- mpic++
- ifort
- icc
- icpc
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -llapack -lblas
- $(TRILINOS_PATH)
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
- mpicc
- mpif90
- mpic++
- gfortran
- gcc
- g++
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -llapack -lblas
- -lstdc++ -lmpi_cxx
- $(TRILINOS_PATH)
- $(ALBANY_PATH)
-
-
-
- mpicc
- mpif90
- mpic++
- pgfortran
- pgcc
- pgc++
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -llapack -lblas
- $(TRILINOS_PATH)
+
+ NETCDF_PATH/bin/nf-config --flibs
+
+ TRUE
-
- mpicc
- mpif90
- mpic++
- ifort
- icc
- icpc
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -llapack -lblas
- $(TRILINOS_PATH)
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
+
+
+
+
+
+
+
+
+
+
+ USERDEFINED_MUST_EDIT_THIS
+
+
+ # USERDEFINED NETCDF_PATH/bin/nc-config --flibs
+
- mpicc
- mpif90
- mpic++
- gfortran
- gcc
- g++
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -llapack -lblas
- -lstdc++ -lmpi_cxx
- $(TRILINOS_PATH)
- $(ALBANY_PATH)
-
-
-
- gpfs
- $(NETCDF)
- $(PNETCDF)
-
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
+ ALBANY_PATH
+
+ -lstdc++ -lmpi_cxx
+
+ mpicc
+ mpic++
+ mpif90
+ gcc
+ g++
+ gfortran
+
+ NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
+
+ TRILINOS_PATH
-
- -lnetcdff -lnetcdf -mkl
- -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY
-
-
-
- -lnetcdff -lnetcdf -mkl
- -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY
-
-
-
- -std=c99
+
+ mpicc
+ mpic++
+ mpif90
+ icc
+ icpc
+ ifort
+
+ NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+ TRILINOS_PATH
-
+
+ mpicc
+ mpic++
+ mpif90
+ pgcc
+ pgc++
+ pgfortran
+
+ NETCDF_PATH/bin/nf-config --flibs -llapack -lblas
+
+ TRILINOS_PATH
+
+
+
diff --git a/cime_config/buildlib.gptl b/cime_config/buildlib.gptl
index 42dc281db9d..1269c3fd4cc 100755
--- a/cime_config/buildlib.gptl
+++ b/cime_config/buildlib.gptl
@@ -18,6 +18,6 @@ setenv SHAREDPATH $2
cd $GPTL_LIBDIR
-$GMAKE -f $GPTL_DIR/Makefile install MACFILE=$CASEROOT/Macros MODEL=gptl || exit 1
+$GMAKE -f $GPTL_DIR/Makefile install MACFILE=$CASEROOT/Macros.make MODEL=gptl || exit 1
exit 0
diff --git a/cime_config/cesm/allactive/config_pes.xml b/cime_config/cesm/allactive/config_pes.xml
index 31252ebd1a1..23f446bcbad 100644
--- a/cime_config/cesm/allactive/config_pes.xml
+++ b/cime_config/cesm/allactive/config_pes.xml
@@ -77,7 +77,7 @@
-
+
none
@@ -1109,7 +1109,7 @@
-
+
none
diff --git a/cime_config/cesm/config_files.xml b/cime_config/cesm/config_files.xml
index 42d126bc870..d3e9920a80a 100644
--- a/cime_config/cesm/config_files.xml
+++ b/cime_config/cesm/config_files.xml
@@ -47,14 +47,7 @@
case_last
env_case.xml
file containing compiler specifications for target model primary component (for documentation only - DO NOT EDIT)
-
-
-
- char
- $CIMEROOT/cime_config/$MODEL/machines/config_build.xml
- case_last
- env_case.xml
- file containing build specifications for target model primary component (for documentation only - DO NOT EDIT)
+ $CIMEROOT/cime_config/xml_schemas/config_compilers_v2.xsd
@@ -332,4 +325,3 @@
-
diff --git a/cime_config/cesm/machines/Makefile b/cime_config/cesm/machines/Makefile
index 3cbf9943965..85835206f31 100644
--- a/cime_config/cesm/machines/Makefile
+++ b/cime_config/cesm/machines/Makefile
@@ -137,7 +137,7 @@ ifeq (,$(SHAREDPATH))
endif
INSTALL_SHAREDPATH = $(EXEROOT)/$(SHAREDPATH)
-include $(CASEROOT)/Macros
+include $(CASEROOT)/Macros.make
# Decide whether to use a C++ or Fortran linker, based on whether we
# are using any C++ code and the compiler-dependent CXX_LINKER variable
ifeq ($(USE_CXX), true)
@@ -360,7 +360,7 @@ INCLDIR += -I$(INSTALL_SHAREDPATH)/include -I$(CIMEROOT)/share/csm_share/shr \
CFLAGS+=$(CPPDEFS)
CXXFLAGS := $(CFLAGS)
-CONFIG_ARGS += CC="$(SCC)" FC="$(SFC)" MPICC="$(MPICC)" \
+CONFIG_ARGS += CC="$(CC)" FC="$(FC)" MPICC="$(MPICC)" \
MPIFC="$(MPIFC)" FCFLAGS="$(FFLAGS) $(FREEFLAGS) $(INCLDIR)" \
CPPDEFS="$(CPPDEFS)" CFLAGS="$(CFLAGS) -I.. $(INCLDIR)" \
NETCDF_PATH=$(NETCDF_PATH) LDFLAGS="$(LDFLAGS)"
diff --git a/cime_config/cesm/machines/config_batch.xml b/cime_config/cesm/machines/config_batch.xml
index a214a2e4cb2..d3c76ca9b0c 100644
--- a/cime_config/cesm/machines/config_batch.xml
+++ b/cime_config/cesm/machines/config_batch.xml
@@ -10,7 +10,7 @@
batch_redirect: Whether a redirect character is needed to submit jobs.
batch_directive: The string that prepends a batch directive for the batch system.
jobid_pattern: A perl regular expression used to filter out the returned job id from a
- queue submission.
+ queue submission.
depend_pattern:
===============================================================
@@ -180,7 +180,7 @@
-S {{ shell }}
- regular
+ regular
debug
@@ -361,7 +361,7 @@
-
+
sbatch
-C haswell
@@ -372,6 +372,17 @@
+
+ sbatch
+
+ -C knl
+
+
+ regular
+
+
+
+
sbatch
@@ -446,4 +457,3 @@
-
diff --git a/cime_config/cesm/machines/config_build.xml b/cime_config/cesm/machines/config_build.xml
deleted file mode 100644
index dd0f2f12ef1..00000000000
--- a/cime_config/cesm/machines/config_build.xml
+++ /dev/null
@@ -1,1370 +0,0 @@
-
-
-
-
-
-
- -D_USE_FLOW_CONTROL
-
- FALSE
-
-
-
-
- -h noomp
- -g -O0
- -O2
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -DDIR=NOOP
- -DDIR=NOOP
-
-
- -s real64
-
-
- -f free -N 255 -h byteswapio -x dir
- -h noomp
- -g -O0 -K trap=fp -m1
- -O2,ipa2 -em
-
-
- -O1,fp2,ipa0,scalar0,vector0
-
- TRUE
-
- -Wl,--allow-multiple-definition -h byteswapio
-
-
-
-
-
- -mcmodel=medium -std=gnu99
- -fopenmp
- -g -Wall
- -O
-
-
- -D CISM_GNU=ON
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
-
- FORTRAN
-
- -fdefault-real-8
-
-
-
- -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none
- -fopenmp
- -g -Wall
- -O
-
-
- -O0
-
-
- -ffixed-form
-
-
- -ffree-form
-
- FALSE
-
- -fopenmp
-
- mpicc
- mpicxx
- mpif90
- gcc
- g++
- gfortran
- TRUE
-
-
-
-
- -g -qfullpath -qmaxmem=-1
- -O3
- -qsmp=omp
- -qsmp=omp:noopt
-
-
-
- -DFORTRAN_SAME
-
- -WF,-D
-
- -qrealsize=8
-
-
- -g -qfullpath -qmaxmem=-1
- -O2 -qstrict -qinline=auto
- -qsmp=omp
- -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en
- -qsmp=omp:noopt
- -C
-
-
- -qsuffix=f=f -qfixed=132
-
-
- -qsuffix=f=f90:cpp=F90
-
- TRUE
-
- -qsmp=omp
- -qsmp=omp:noopt
-
-
-
-
-
- -no-opt-dynamic-align -fp-model precise -std=gnu99
- -openmp
- -O2 -debug minimal
- -O0 -g
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
-
-
- -cxxlib
-
- FORTRAN
-
- -r8
-
-
- -no-opt-dynamic-align -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source
- -openmp
-
- -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created
- -O2 -debug minimal
-
-
- -O0
- -openmp
-
-
- -fixed -132
-
-
- -free
-
- TRUE
-
- -openmp
-
- mpicc
- mpicxx
- mpif90
- icc
- icpc
- ifort
-
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
- TRUE
-
-
-
-
- -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR
- -openmp
-
-
- --host=x86_64-k1om-linux --build=x86_64-unknown-linux
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -DCPRINTEL
-
-
- -cxxlib
-
- FORTRAN
-
- -r8
-
-
- -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
- -openmp
- -O0 -g -check uninit -check bounds -check pointers -fpe0
- -O2
-
-
- -O0 -mmic
-
-
- -fixed -132
-
-
- -free
-
- TRUE
-
- -openmp
- -mmic
-
- mpiicc
- mpiicpc
- mpiifort
- icc
- icpc
- ifort
-
- NETCDF_PATH/bin/nf-config --flibs
-
- TRUE
-
-
-
-
- -std=gnu99
- -g
-
-
- -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH
-
-
- -r8
-
-
-
-
- -Wp,-macro=no_com -convert=BIG_ENDIAN -indirect CIMEROOT/cime_config/cesm/machines/nag_mpi_argument.txt
-
- -ieee=full -O2
-
-
- -C=all -g -time -f2003 -ieee=stop
- -gline
- -openmp
-
- -mismatch_all
-
-
- FFLAGS
- -ieee=full
-
-
-
- -g -time -f2003 -ieee=stop
- -gline
- -openmp
-
-
- -fixed
-
-
- -free
-
- FALSE
-
- -openmp
-
- mpicc
- mpif90
- gcc
- nagfor
-
-
-
-
- -gopt -time
- -mp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16
-
- CXX
-
- -r8
-
-
- -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee
- -mp
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
-
-
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -mp
-
-
- -Mfixed
-
-
- -Mfree
-
-
-
- FALSE
-
- -time -Wl,--allow-multiple-definition
- -mp
-
- mpicc
- mpicxx
- mpif90
- pgcc
- pgc++
- pgf95
-
-
-
-
- -gopt -time
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DUSE_CUDA_FORTRAN -DCPRPGI
-
- CXX
-
- -r8
-
-
- -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee
- -ta=nvidia -Mcuda=5.5,cc35
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
-
-
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -mp
-
-
- -Mfixed
-
-
- -Mfree
-
-
-
- FALSE
-
- -time -Wl,--allow-multiple-definition -ta=nvidia -Mcuda=5.0,cc35
-
- mpicc
- mpicxx
- mpif90
- pgcc
- pgc++
- pgf95
-
-
-
-
- -qarch=auto -qtune=auto -qcache=auto
-
- /usr/bin/bash
-
- -qarch=auto -qtune=auto -qcache=auto -qsclk=micro
- -qspill=6000
-
-
- -qsigtrap=xl__trcedump
- -bdatapsize:64K -bstackpsize:64K -btextpsize:32K
-
- mpcc_r
- mpxlf2003_r
- cc_r
- xlf2003_r
-
- -lmassv -lessl
- -lmass
-
-
-
-
-
- -O3 -qstrict
- -qtune=440 -qarch=440d
-
-
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
-
-
- -DLINUX -DnoI8
-
-
- -qtune=440 -qarch=440d
- -O3 -qstrict -qinline=auto
- -qinitauto=FF911299 -qflttrap=ov:zero:inv:en
- -qextname=flush
-
-
- -Wl,--relax -Wl,--allow-multiple-definition
-
-
- -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
-
- blrts_xlc
- blrts_xlf2003
- mpich.rts
- /bgl/BlueLight/ppcfloor/bglsys
- blrts_xlc
- blrts_xlf2003
-
-
-
-
- -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/
-
-
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
-
-
- -DLINUX -DnoI8
-
-
- -qspillsize=2500 -qtune=450 -qarch=450
- -qextname=flush
-
-
- -Wl,--relax -Wl,--allow-multiple-definition
-
-
-
-
-
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
-
-
- -DLINUX
-
-
- -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush
- -O3 -qstrict -qinline=auto
- -qsmp=omp
- -qsmp=omp:noopt
-
-
- -Wl,--relax -Wl,--allow-multiple-definition
-
-
-
-
-
- -DCMAKE_SYSTEM_NAME=Catamount
-
-
- -DLINUX
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
- cc
- CC
- ftn
- NETCDF_DIR
- lustre
- PARALLEL_NETCDF_DIR
- cc
- CC
- ftn
-
-
-
-
- -DSYSDARWIN
-
-
- -all_load
-
-
-
-
-
- -heap-arrays
-
-
-
-
-
- -xHost -no-save-temps
-
-
- --host=Linux
-
-
- -DHAVE_NANOTIME -DCPRINTEL
-
-
- -xHost -no-save-temps
-
-
- NETCDF
-
- mpiicc
- mpiicpc
- mpiifort
-
- NETCDF_DIR
- PNETCDF_DIR
- icc
- ifort
-
- NETCDf MKL
-
-
-
-
-
- -mmic -O3 -fp-model precise -DFORTRANUNDERSCORE -no-save-temps
-
-
- --host=x86_64-k1om-linux --build=x86_64-unknown-linux
-
-
- -DHAVE_NANOTIME -DCPRINTELMIC -DCPRINTEL
-
-
-
- -O0 -g -check all -check noarg_temp_created
- -O3 -mP2OPT_hpo_matrix_opt_framework=0
- -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -no-save-temps -no-opt-dynamic-align
-
-
- -O0 -mmic
-
-
- NETCDF -mmic
-
- mpiicc
- mpiicpc
- mpiifort
-
- NETCDF_DIR
- PNETCDF_DIR
- icc
- ifort
-
- NETCDF MKL
-
-
-
-
-
- -DHAVE_PAPI
-
- lustre
-
-
-
-
- -O2
- -nofma
-
-
- -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o
-
-
- -O2
- -nofma
-
- TRUE
-
-
-
-
- --host=LINUX
-
- mpich
- mpi
- MPI_ROOT
- NETCDF
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF_HOME
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF_HOME
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF_HOME
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
-
-
-
-
-
- -O2
- -nomp
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
- -nomp
-
-
- -nomp
-
- NETCDF_HOME
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DHAVE_PAPI
-
-
- -O2
-
-
- -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
-
-
-
-
-
-
- -DNO_MPI2
-
- NETCDF
- gpfs
- PNETCDF
- mpicc
- mpif90
-
-
-
-
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
- /usr/lib64
- mpi
-
- NETCDF_PATH/bin/nf-config --flibs
-
-
-
-
-
- -Wl,-rpath,NETCDF_PATH/lib
- -Wl,-rpath,COMPILER_PATH/lib/intel64
- -Wl,-rpath,COMPILER_PATH/mkl/lib/intel64
-
- /home/santos/pFUnit/pFUnit_Intel_3_0
-
-
-
-
- -DNO_C_SIZEOF
-
-
-
- -kind=byte
-
-
-
- -L/home/santos/lib/fake_omp -lfake_omp -Wl,-Wl,,--rpath=/home/santos/lib/fake_omp
-
- /usr/local/openmpi-gcc-nag
- /usr/local/netcdf-gcc-nag
- /home/santos/pFUnit/pFUnit_NAG_3_0
-
-
-
-
- -O0
-
-
- -O0
-
-
- -lgomp
- -Wl,-RNETCDF_PATH/lib
- -Wl,-RCOMPILER_PATH/lib
- -Wl,-RCOMPILER_PATH/libso
-
-
-
-
-
- -O2
-
-
- -O2
-
-
- -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib
-
- mpich
- /usr/local/tools/mvapich2-pgi-1.7/
- /usr/local/tools/netcdf-pgi-4.1.3
-
- /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs
-
-
-
-
-
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
- /usr/lib64
- mpich
- NETCDF_PATH
-
- NETCDF_PATH/bin/nf-config --flibs
-
-
-
-
-
- -lifcore
-
-
- -lifcore
- -mcmodel medium
-
-
- -lquadmath
- -Wl,-rpath,NETCDF_PATH/lib
- -Wl,-rpath,COMPILER_PATH/lib/intel64
- -Wl,-rpath,COMPILER_PATH/mkl/lib/intel64
- -Wl,-rpath,MPI_PATH/lib
- -lifcore
-
- /home/santos/pFUnit/pFUnit_Intel_3_0
-
- -mkl=cluster
-
-
-
-
-
-
- -DNO_C_SIZEOF
-
-
- -lpthread
-
- /home/santos/pFUnit/pFUnit_NAG_3_0
-
-
-
-
- -O0
-
-
- -O0
-
-
- -lgomp
- -Wl,-RNETCDF_PATH/lib
- -Wl,-RCOMPILER_PATH/lib
- -Wl,-RCOMPILER_PATH/libso
-
-
-
-
- /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install
-
-
-
- /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/
- /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/
-
- NETCDF_PATH/bin/nf-config --flibs
-
-
-
-
-
- -O2
-
-
- -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o
-
-
- -O2
-
- TRUE
- /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-pgi/install
-
-
-
- mpixlc_r
- mpixlf2003_r
- /bgsys/local/netcdf/
- gpfs
- /bgsys/local/parallel-netcdf/v1.3.1
- mpixlc_r
- mpixlf2003_r
-
- -L/bgsys/local/netcdf/lib -lnetcdf -L/bgsys/drivers/ppcfloor/comm/lib
-
-
-
-
- /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
-
- -O2
-
-
- --host=Linux
-
-
- -lstdc++ -lmpi_cxx
-
-
- -O2
-
- NETCDFROOT
- PNETCDFROOT
-
- NETCDF_PATH/bin/nf-config --flibs -lblas -llapack
-
-
-
-
-
- -qfloat=nomaf
-
-
- -qfloat=nomaf
-
- HDF5
-
-
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf77_r
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r
- /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/
- /home/santos/pFUnit/pFUnit_IBM
- gpfs
- /soft/libraries/pnetcdf/1.6.1/cnk-xl/current/
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r
-
- -LNETCDF_PATH/lib -lnetcdff -lnetcdf -LHDF5/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -DLINUX
-
-
- -O2
-
- NETCDF_LIB/..
- lustre
-
- -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
-
-
-
-
-
- -O2 -aCORE-AVX2 -align array32byte
-
- icc
- mpi
- MPI_ROOT
- /nasa/netcdf/4.1.3/intel/mpt
-
- -LNETCDF_DIR/lib -lnetcdff -lnetcdf
-
-
-
-
-
- -O2 -xAVX
-
- icc
- mpi
- MPI_ROOT
- /nasa/netcdf/4.1.3/intel/mpt
-
- -LNETCDF_DIR/lib -lnetcdff -lnetcdf
-
-
-
-
-
- -O2 -xAVX
-
- icc
- mpi
- MPI_ROOT
- /nasa/netcdf/4.1.3/intel/mpt
-
- -LNETCDF_DIR/lib -lnetcdff -lnetcdf
-
-
-
-
-
- -O2 -xSSE4.2
-
- icc
- mpi
- MPI_ROOT
- /nasa/netcdf/4.1.3/intel/mpt
-
- -LNETCDF_DIR/lib -lnetcdff -lnetcdf
-
-
-
-
-
- -xHost
-
-
- -xHost
-
-
- -LTACC_HDF5_LIB -lhdf5
-
- mpiicc
- mpicpc
- mpiifort
- icc
- icpc
- ifort
-
- NETCDF_PATH/bin/nf-config --flibs -LTACC_HDF5_LIB -lhdf5
-
- TRILINOS_PATH
-
-
-
-
- -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib
-
- mpich
- /usr/local/tools/mvapich2-pgi-1.7/
- /usr/local/tools/netcdf-pgi-4.1.3
-
- /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs
-
-
-
-
-
- -O2
-
-
- --host=Linux
-
- /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
-
- -O2
-
- NETCDFROOT
- lustre
- PNETCDFROOT
-
- NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX
-
-
-
-
-
- -DHAVE_NANOTIME
-
- TACC_NETCDF_DIR
- lustre
- TACC_PNETCDF_DIR
-
-
-
-
- -xHost
-
-
- -xHost
- -mcmodel medium
-
-
- -LTACC_HDF5_LIB -lhdf5
-
-
- NETCDF_PATH/bin/nf-config --flibs -LTACC_HDF5_LIB -lhdf5
-
- TRILINOS_PATH
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -O2
-
- lustre
-
- NETCDF_PATH/bin/nf-config --flibs
-
- TRUE
-
-
-
-
- -O2
-
-
- --host=Linux
-
-
- -lfmpich -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o
-
-
- -O2
-
- lustre
-
- nf-config --flibs
-
- TRUE
- /lustre/atlas1/cli900/world-shared/cesm/software/Trilinos/Trilinos-11.12.1/titan-pgi-cesm/install
-
-
-
- /soft/libraries/hdf5/1.8.10/cnk-xl/current/
-
-
- mpixlf77_r
- mpixlc_r
- mpixlf2003_r
- /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/
- /home/santos/pFUnit/pFUnit_IBM
- gpfs
- /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/
- mpixlc_r
- mpixlf2003_r
-
- -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
-
-
-
-
-
-
-
-
-
-
-
-
-
- USERDEFINED_MUST_EDIT_THIS
-
-
- # USERDEFINED NETCDF_PATH/bin/nc-config --flibs
-
-
-
-
-
-
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
- NETCDF
- gpfs
- PNETCDF
-
-
-
- /glade/apps/opt/lib
-
-
-
-
- -xHost
-
-
- -DINTEL_MKL -DHAVE_SSE2
-
-
- -xHost
-
- mpiicpc
- /glade/apps/opt/papi/5.3.0/intel/12.1.5/include/
- /glade/apps/opt/papi/5.3.0/intel/12.1.5/lib64
- CESMDATAROOT/tools/pFUnit/pFUnit3.1_Intel15.0.1_MPI
-
- icc
- ifort
- MPICC
- MPIFC
-
- -Wl,-rpath PAPI_LIB -LPAPI_LIB -lpapi
-
- TRILINOS_PATH
-
-
-
-
- -DNO_MPIMOD
-
- pathcc
- pathf95
-
-
-
-
- -O
-
-
- -O
-
-
- -llapack -lblas
-
-
-
-
diff --git a/cime_config/cesm/machines/config_compilers.xml b/cime_config/cesm/machines/config_compilers.xml
index 2779a9ea5a5..473a844d19b 100644
--- a/cime_config/cesm/machines/config_compilers.xml
+++ b/cime_config/cesm/machines/config_compilers.xml
@@ -1,13 +1,11 @@
-
-
-
+
+
+
+ -D_USE_FLOW_CONTROL
+
FALSE
- -D_USE_FLOW_CONTROL
+
+
+
+
+ -h noomp
+ -g -O0
+ -O2
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16
+ -DDIR=NOOP
+ -DDIR=NOOP
+
+
+ -s real64
+
+
+ -f free -N 255 -h byteswapio -x dir
+ -h noomp
+ -g -O0 -K trap=fp -m1
+ -O2,ipa2 -em
+
+
+ -O1,fp2,ipa0,scalar0,vector0
+
+ TRUE
+
+ -Wl,--allow-multiple-definition -h byteswapio
+
+
+
+
+
+ -mcmodel=medium -std=gnu99
+ -fopenmp
+ -g -Wall
+ -O
+
+
+ -D CISM_GNU=ON
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16
+
+ FORTRAN
+
+ -fdefault-real-8
+
+
+
+ -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none
+ -fopenmp
+ -g -Wall
+ -O
+
+
+ -O0
+
+
+ -ffixed-form
+
+
+ -ffree-form
+
+ FALSE
+
+ -fopenmp
+
+ mpicc
+ mpicxx
+ mpif90
+ gcc
+ g++
+ gfortran
+ TRUE
-
- -DFORTRAN_SAME
+ -DFORTRAN_SAME
+
-WF,-D
- -g -qfullpath -qmaxmem=-1
- -qsuffix=f=f -qfixed=132
- -qsuffix=f=f90:cpp=F90
- -g -qfullpath -qmaxmem=-1
- -O2 -qstrict -qinline=auto
- -O3
- -qsmp=omp
- -qsmp=omp
- -qsmp=omp
- -qrealsize=8
- -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en
- -qsmp=omp:noopt
- -qsmp=omp:noopt
- -qsmp=omp:noopt
- -C
+
+ -qrealsize=8
+
+
+ -g -qfullpath -qmaxmem=-1
+ -O2 -qstrict -qinline=auto
+ -qsmp=omp
+ -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en
+ -qsmp=omp:noopt
+ -C
+
+
+ -qsuffix=f=f -qfixed=132
+
+
+ -qsuffix=f=f90:cpp=F90
+
TRUE
-
+
+ -qsmp=omp
+ -qsmp=omp:noopt
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16
- -gopt -time
-
- -mp
- -mp
- -mp
-
- -Mfixed
- -Mfree
- -r8
-
- -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -mp
-
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -time -Wl,--allow-multiple-definition
- pgcc
- pgf95
- pgc++
- mpicc
- mpif90
+
+
+ -qno-opt-dynamic-align -fp-model precise -std=gnu99
+ -qopenmp
+ -O2 -debug minimal
+ -O0 -g
+
+
+
+ -DFORTRANUNDERSCORE -DNO_R16
+
+
+ -cxxlib
+
+ FORTRAN
+
+ -r8
+
+
+ -qno-opt-dynamic-align -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source
+ -qopenmp
+ -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created
+ -O2 -debug minimal
+
+
+ -O0
+ -qopenmp
+
+
+ -fixed -132
+
+
+ -free
+
+ TRUE
+
+ -qopenmp
+
+ mpicc
mpicxx
-
- CXX
-
-
-
- FALSE
+ mpif90
+ icc
+ icpc
+ ifort
+
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl=cluster
+ -mkl
+
+ TRUE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DUSE_CUDA_FORTRAN -DCPRPGI
- -gopt -time
-
-
- -Mfixed
- -Mfree
- -r8
-
- -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee
- -ta=nvidia -Mcuda=5.5,cc35
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -mp
-
- -O0 -g -Ktrap=fp -Mbounds -Kieee
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -Mnovect
- -time -Wl,--allow-multiple-definition -ta=nvidia -Mcuda=5.0,cc35
- pgcc
- pgf95
- pgc++
+
+
+ -std=gnu99
+ -g
+
+
+ -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH -DCPRNAG
+
+
+ -r8
+
+
+
+
+ -Wp,-macro=no_com -convert=BIG_ENDIAN -indirect CIMEROOT/cime_config/cesm/machines/nag_mpi_argument.txt
+
+ -ieee=full -O2
+
+
+ -C=all -g -time -f2003 -ieee=stop
+ -gline
+ -openmp
+
+ -mismatch_all
+
+
+ FFLAGS
+ -ieee=full
+
+
+
+ -g -time -f2003 -ieee=stop
+ -gline
+ -openmp
+
+
+ -fixed
+
+
+ -free
+
+ FALSE
+
+ -openmp
+
mpicc
mpif90
- mpicxx
+ gcc
+ nagfor
+
+
+
+ -gopt -time
+ -mp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16
+
CXX
+
+ -r8
+
+
+ -i4 -gopt -time -Mextend -byteswapio -Mflushz -Kieee
+ -mp
+ -O0 -g -Ktrap=fp -Mbounds -Kieee
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+ -Mnovect
+
+
+ -O0 -g -Ktrap=fp -Mbounds -Kieee
+ -mp
+
+
+ -Mfixed
+
+
+ -Mfree
+
@@ -258,738 +380,625 @@ for mct, etc.
but support is either buggy or incomplete, notably in that
the "contiguous" attribute is incompatible with "intent".-->
FALSE
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -openmp
- -openmp
- -openmp
- -free
- -fixed -132
-
- -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created
- -O2 -debug minimal
- -O2 -debug minimal
- -O0 -g
- -no-opt-dynamic-align -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source
- -no-opt-dynamic-align -fp-model precise -std=gnu99
- -O0
- -openmp
- -r8
- ifort
- icc
- icpc
- mpif90
- mpicc
- mpicxx
- FORTRAN
- -cxxlib
- TRUE
- TRUE
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl=cluster
- -mkl
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -openmp
- -openmp
- -openmp
- -free
- -fixed -132
- -O0 -g -check uninit -check bounds -check pointers -fpe0
- -O2
- -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs
- -mmic -O2 -fp-model precise -DFORTRANUNDERSCOR
- --host=x86_64-k1om-linux --build=x86_64-unknown-linux
- -O0 -mmic
- -r8
- ifort
- icc
- icpc
- mpiifort
- mpiicc
- mpiicpc
- FORTRAN
- -cxxlib
- TRUE
- TRUE
- -DCPRINTEL
- -mmic
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -fopenmp
- -fopenmp
- -fopenmp
- -D CISM_GNU=ON
- -ffixed-form
- -ffree-form
- -g -Wall
- -O
- -g -Wall
- -O
-
- -mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none
- -mcmodel=medium -std=gnu99
- -O0
- -fdefault-real-8
- gfortran
- gcc
- g++
- mpif90
- mpicc
+
+ -time -Wl,--allow-multiple-definition
+ -mp
+
+ mpicc
mpicxx
- FORTRAN
- TRUE
- FALSE
-
-
-
-
-
- -DFORTRANUNDERSCORE -DNO_R16
- -DDIR=NOOP
- -h noomp
- -h noomp
- -DDIR=NOOP
- -g -O0 -K trap=fp -m1
- -O2,ipa2 -em
- -g -O0
- -O2
- -f free -N 255 -h byteswapio -x dir
- -O1,fp2,ipa0,scalar0,vector0
- -s real64
- -Wl,--allow-multiple-definition -h byteswapio
- TRUE
-
-
-
-
-
- nagfor
mpif90
- gcc
- mpicc
-
- -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH
-
-
-
- -Wp,-macro=no_com -convert=BIG_ENDIAN -indirect $(CIMEROOT)/cime_config/cesm/machines/nag_mpi_argument.txt
- $(FFLAGS)
- -std=gnu99
-
-
- -ieee=full -O2
- -ieee=full
-
- -g
-
-
-
- -C=all -g -time -f2003 -ieee=stop
- -gline
-
-
-
- -g -time -f2003 -ieee=stop
- -gline
-
- -openmp
- -openmp
- -openmp
-
-
- -mismatch_all
-
- -r8
- -fixed
- -free
- FALSE
-
-
-
- -DSYSDARWIN
- -all_load
-
-
-
- -heap-arrays
+ pgcc
+ pgc++
+ pgf95
-
- USERDEFINED_MUST_EDIT_THIS
-
- # USERDEFINED $(shell $(NETCDF_PATH)/bin/nc-config --flibs)
-
-
-
-
-
+
+
+ -qarch=auto -qtune=auto -qcache=auto
+
+ /usr/bin/bash
+
+ -qarch=auto -qtune=auto -qcache=auto -qsclk=micro
+ -qspill=6000
+
+
+ -qsigtrap=xl__trcedump
+ -bdatapsize:64K -bstackpsize:64K -btextpsize:32K
+
+ mpcc_r
+ mpxlf2003_r
+ cc_r
+ xlf2003_r
+
+ -lmassv -lessl
+ -lmass
+
+
+
+
+
+ --build=powerpc-bgp-linux --host=powerpc64-suse-linux
+
+
+ -DLINUX
+
+
+ -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush
+ -O3 -qstrict -qinline=auto
+ -qsmp=omp
+ -qsmp=omp:noopt
+
+
+ -Wl,--relax -Wl,--allow-multiple-definition
+
- ftn
- cc
- CC
- ftn
+
+ -DCMAKE_SYSTEM_NAME=Catamount
+
+
+ -DLINUX
+ -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
+
cc
CC
- lustre
- $(PARALLEL_NETCDF_DIR)
- $(NETCDF_DIR)
- -DLINUX
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
- -DCMAKE_SYSTEM_NAME=Catamount -->
-
-
-
-
- -O2
- -O2
- --host=Linux
- -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
- -DHAVE_PAPI
-
-
-
- -O2
- -O2
- $(NETCDFROOT)
- $(PNETCDFROOT)
- /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
- --host=Linux
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L/projects/ccsm/BLAS-intel -lblas_LINUX
- lustre
-
-
-
ftn
- cc
- CC
- -O2 -xMIC-AVX512
- -O2 -xMIC-AVX512
- -O0 -g -xMIC-AVX512
- -O0 -g -xMIC-AVX512
- -qopenmp
- -qopenmp
- -qopenmp
- -qopenmp
- --host=Linux
- -L$(NETCDF_DIR)/lib -lnetcdff -L$(NETCDF_DIR)/lib -lnetcdf -Wl,-rpath -Wl,$(NETCDF_DIR)/lib
- -mkl -lpthread -lm
- -DHAVE_COMM_F2C
-
-
-
- -O2
- -O2
- --host=Linux
- $(NETCDFROOT)
- $(PNETCDFROOT)
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -lblas -llapack
- -lstdc++ -lmpi_cxx
- /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
-
-
-
- /glade/apps/opt/lib
-
-
-
- gpfs
- $(NETCDF)
- $(PNETCDF)
-
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
-
-
- gpfs
- $(NETCDF)
- $(PNETCDF)
-
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
-
-
-
-
-
- $(MPICC)
- $(MPIFC)
- mpiicpc
- -xHost
- -xHost
- -DINTEL_MKL -DHAVE_SSE2
- $(TRILINOS_PATH)
- /glade/apps/opt/papi/5.3.0/intel/12.1.5/include/
- /glade/apps/opt/papi/5.3.0/intel/12.1.5/lib64
- -Wl,-rpath ${PAPI_LIB} -L${PAPI_LIB} -lpapi
- -mcmodel medium
-
-
-
-
-
- $ENV{CESMDATAROOT}/tools/pFUnit/pFUnit3.1_Intel15.0.1_MPI
-
-
-
- -O
- -O
- -llapack -lblas
+ NETCDF_DIR
+ lustre
+ PARALLEL_NETCDF_DIR
+ cc
+ CC
+ ftn
-
- -DNO_MPIMOD
- pathcc
- pathf95
+
+
+ -DSYSDARWIN
+
+
+ -all_load
+
-
-
-gpfs
- $(NETCDF)
- $(PNETCDF)
-
- -DNO_MPI2
- mpicc
- mpif90
+
+
+ -heap-arrays
+
-
- -O2
- -O2
- --host=Linux
+
+
+ -DHAVE_PAPI
+
lustre
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
- TRUE
-
- -O2
- -O2
- --host=Linux
- lustre
- $(shell nf-config --flibs)
- /lustre/atlas1/cli900/world-shared/cesm/software/Trilinos/Trilinos-11.12.1/titan-pgi-cesm/install
- -lfmpich -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o
+
+
+ -O2
+ -nofma
+
+
+ -lmpichf90_pgi PGI_PATH/linux86-64/PGI_VERSION/lib/f90main.o
+
+
+ -O2
+ -nofma
+
TRUE
-
- -O2
- -O2
- -nofma
- -nofma
- -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o
- TRUE
-
-
-
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF_HOME
lustre
- -DHAVE_PAPI
-
-
-
-
- /usr/bin/bash
- xlf2003_r
- mpxlf2003_r
- cc_r
- mpcc_r
- -qarch=auto -qtune=auto -qcache=auto
- -qarch=auto -qtune=auto -qcache=auto -qsclk=micro
- -qsigtrap=xl__trcedump
- -qspill=6000
- -bdatapsize:64K -bstackpsize:64K -btextpsize:32K
- -lmassv -lessl
- -lmass
-
-
-
- -qtune=440 -qarch=440d
- -qtune=440 -qarch=440d
- /bgl/BlueLight/ppcfloor/bglsys
- mpich.rts
- blrts_xlf2003
- blrts_xlf2003
- blrts_xlc
- blrts_xlc
- -O3 -qstrict
- -O3 -qstrict -qinline=auto
- -qinitauto=FF911299 -qflttrap=ov:zero:inv:en
- -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
- -DLINUX -DnoI8
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
- -Wl,--relax -Wl,--allow-multiple-definition
- -qextname=flush
-
-
-
- -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/
- -qspillsize=2500 -qtune=450 -qarch=450
- -DLINUX -DnoI8
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
- -Wl,--relax -Wl,--allow-multiple-definition
- -qextname=flush
-
-
-
-
- -g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush
- -O3 -qstrict -qinline=auto
- -qsmp=omp
- -qsmp=omp:noopt
- -DLINUX
- --build=powerpc-bgp-linux --host=powerpc64-suse-linux
- -Wl,--relax -Wl,--allow-multiple-definition
-
-
-
-
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r
-
-
- /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf77_r
- /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/
- /soft/libraries/pnetcdf/1.6.1/cnk-xl/current/
- /home/santos/pFUnit/pFUnit_IBM
- $(HDF5)
- -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L$(HDF5)/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
- gpfs
- -qfloat=nomaf
- -qfloat=nomaf
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi -LMKL_PATH -lmkl_rt
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF_HOME
+ lustre
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
+
+
+
+
+
+ --host=Linux
+
+
+ -xCORE-AVX2
+
+
+ -xCORE-AVX2
+
+
+ -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf -mkl -lpthread -lm
+
+
+ -DHAVE_PAPI -DHAVE_SLASHPROC
+
+
+
+
+
+
+
+ --host=Linux
+
+
+ -xMIC-AVX512
+
+
+ -xMIC-AVX512
+
+
+ -L$(NETCDF_DIR) -lnetcdff -Wl,--as-needed,-L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
+
+
+ -DHAVE_PAPI -DHAVE_SLASHPROC
+
+
+ -mkl -lmemkind -ljemalloc -zmuldefs
+
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF_HOME
+ lustre
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
+
+
+
+
+
+ -O2
+ -nomp
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+ -nomp
+
+
+ -nomp
+
+ NETCDF_HOME
+ lustre
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DHAVE_PAPI
+
+
+ -O2
+
+
+ -LNETCDF_DIR -lnetcdff -Wl,--as-needed,-LNETCDF_DIR/lib -lnetcdff -lnetcdf
+
+
+
+
+
+ -O2
+
+
+ -O2
+
+
+ -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib
+
+ mpich
+ /usr/local/tools/mvapich2-pgi-1.7/
+ /usr/local/tools/netcdf-pgi-4.1.3
+
+ /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs
+
-
-
- mpixlf2003_r
- mpixlf2003_r
- mpixlc_r
+
+
+ -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
+
+ /usr/lib64
+ mpich
+ NETCDF_PATH
+
+ NETCDF_PATH/bin/nf-config --flibs
+
+
+
+
+
+ -lifcore
+
+
+ -lifcore
+ -mcmodel medium
+
+
+ -lquadmath
+ -Wl,-rpath,NETCDF_PATH/lib
+ -Wl,-rpath,COMPILER_PATH/lib/intel64
+ -Wl,-rpath,COMPILER_PATH/mkl/lib/intel64
+ -Wl,-rpath,MPI_PATH/lib
+ -lifcore
+
+ /home/santos/pFUnit/pFUnit_Intel_3_0
+
+ -mkl=cluster
+
+
+
+
+
+
+ -DNO_C_SIZEOF
+
+
+ -lpthread
+
+ /home/santos/pFUnit/pFUnit_NAG_3_0
+
+
+
+
+ -O0
+
+
+ -O0
+
+
+ -lgomp
+ -Wl,-RNETCDF_PATH/lib
+ -Wl,-RCOMPILER_PATH/lib
+ -Wl,-RCOMPILER_PATH/libso
+
+
+
+
mpixlc_r
-
-
- mpixlf77_r
- /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/
- /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/
- /home/santos/pFUnit/pFUnit_IBM
- /soft/libraries/hdf5/1.8.10/cnk-xl/current/
- -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
- gpfs
-
-
-
- mpixlf2003_r
mpixlf2003_r
- mpixlc_r
- mpixlc_r
/bgsys/local/netcdf/
- /bgsys/local/parallel-netcdf/v1.3.1
- -L/bgsys/local/netcdf/lib -lnetcdf -L/bgsys/drivers/ppcfloor/comm/lib
gpfs
+ /bgsys/local/parallel-netcdf/v1.3.1
+ mpixlc_r
+ mpixlf2003_r
+
+ -L/bgsys/local/netcdf/lib -lnetcdf -L/bgsys/drivers/ppcfloor/comm/lib
+
-
- $(NETCDF)
- $(MPI_ROOT)
- mpich
- mpi
- --host=LINUX
-
-
-
- -O2
- -O2
- -nomp
- -nomp
- -nomp
- $(NETCDF_HOME)
- --host=Linux
- lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi
-
-
-
- -O2
- -O2
- $(NETCDF_HOME)
- --host=Linux
- lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi
-
-
-
- -O2
- -O2
- $(NETCDF_HOME)
- --host=Linux
- lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi
-
-
-
- -O2
- -O2
- $(NETCDF_HOME)
- --host=Linux
- lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi -L$(MKL_PATH) -lmkl_rt
-
-
-
- -O2
- -O2
- $(NETCDF_LIB)/..
- --host=Linux
+
+ /projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install
+
+ -O2
+
+
+ --host=Linux
+
+
+ -lstdc++ -lmpi_cxx
+
+
+ -O2
+
+ NETCDFROOT
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nf-config --flibs -lblas -llapack
+
+
+
+
+
+ -qfloat=nomaf
+
+
+ -qfloat=nomaf
+
+ HDF5
+
+
+ /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf77_r
+ /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r
+ /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r
+ /soft/libraries/netcdf/4.3.3-f4.4.1/cnk-xl/current/
+ /home/santos/pFUnit/pFUnit_IBM
+ gpfs
+ /soft/libraries/pnetcdf/1.6.1/cnk-xl/current/
+ /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlc_r
+ /home/pkcoff/mpich-sandboxes/master/install-production/bin/mpixlf2003_r
+
+ -LNETCDF_PATH/lib -lnetcdff -lnetcdf -LHDF5/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+
+ -DLINUX
+
+
+ -O2
+
+ NETCDF_LIB/..
lustre
- -DLINUX
- -L$(NETCDF_PATH)/lib -lnetcdf -lnetcdff -lpmi
+
+ -LNETCDF_PATH/lib -lnetcdf -lnetcdff -lpmi
+
-
- -O2
- -O2
- /usr/local/tools/netcdf-pgi-4.1.3
- /usr/local/tools/mvapich2-pgi-1.7/
- mpich
- $(shell /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs)
- -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib
-
-
-
- -O2
- -O2
- /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-pgi/install
- -lmpichf90_pgi $(PGI_PATH)/linux86-64/$(PGI_VERSION)/lib/f90main.o
- TRUE
-
-
-
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
- /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libO/Unicos.intel.64.mpi.default/
- /project/projectdirs/ccsm1/esmf/ESMF_5_3_0_intel12.1.5/lib/libg/Unicos.intel.64.mpi.default/
-
-
-
- /project/projectdirs/ccsm1/Trilinos/trilinos-10.12.2/hopper-gnu/install
+
+
+ -O2 -aCORE-AVX2 -align array32byte
+
+ icc
+ mpi
+ MPI_ROOT
+ /nasa/netcdf/4.1.3/intel/mpt
+
+ -LNETCDF_DIR/lib -lnetcdff -lnetcdf
+
-
- /nasa/netcdf/4.1.3/intel/mpt
- $(MPI_ROOT)
- mpi
+
+
+ -O2 -xAVX
+
icc
- -O2 -xSSE4.2
- -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
+ mpi
+ MPI_ROOT
+ /nasa/netcdf/4.1.3/intel/mpt
+
+ -LNETCDF_DIR/lib -lnetcdff -lnetcdf
+
- /nasa/netcdf/4.1.3/intel/mpt
- $(MPI_ROOT)
- mpi
+
+ -O2 -xAVX
+
icc
- -O2 -xAVX
- -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
-
-
-
- /nasa/netcdf/4.1.3/intel/mpt
- $(MPI_ROOT)
mpi
- icc
- -O2 -xAVX
- -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
+ MPI_ROOT
+ /nasa/netcdf/4.1.3/intel/mpt
+
+ -LNETCDF_DIR/lib -lnetcdff -lnetcdf
+
-
- /nasa/netcdf/4.1.3/intel/mpt
- $(MPI_ROOT)
- mpi
+
+
+ -O2 -xSSE4.2
+
icc
- -O2 -aCORE-AVX2 -align array32byte
- -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
+ mpi
+ MPI_ROOT
+ /nasa/netcdf/4.1.3/intel/mpt
+
+ -LNETCDF_DIR/lib -lnetcdff -lnetcdf
+
- /usr/local/tools/netcdf-pgi-4.1.3
- /usr/local/tools/mvapich2-pgi-1.7/
+
+ -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib
+
mpich
- $(shell /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs)
- -Wl,-rpath /usr/local/tools/netcdf-pgi-4.1.3/lib
+ /usr/local/tools/mvapich2-pgi-1.7/
+ /usr/local/tools/netcdf-pgi-4.1.3
+
+ /usr/local/tools/netcdf-pgi-4.1.3/bin/nc-config --flibs
+
+
+
+
+
+ -O2
+
+
+ --host=Linux
+
+ /projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default
+
+ -O2
+
+ NETCDFROOT
+ lustre
+ PNETCDFROOT
+
+ NETCDF_PATH/bin/nf-config --flibs -L/projects/ccsm/BLAS-intel -lblas_LINUX
+
+
+
+ -DHAVE_NANOTIME
+
+ TACC_NETCDF_DIR
+ lustre
+ TACC_PNETCDF_DIR
+
-
- mpi
- /usr/lib64
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
+
+
+ -xHost
+
+
+ -xHost
+ -mcmodel medium
+
+
+ -LTACC_HDF5_LIB -lhdf5
+
+
+ NETCDF_PATH/bin/nf-config --flibs -LTACC_HDF5_LIB -lhdf5
+
+ TRILINOS_PATH
+
+
+
+
+ -xMIC-AVX512
+
+
+ -xMIC-AVX512
+
+
+ --host=Linux
+
+
+ -L$(NETCDF_DIR)/lib -lnetcdff -L$(NETCDF_DIR)/lib -lnetcdf -Wl,-rpath -Wl,$(NETCDF_DIR)/lib
+
+
+
+
+
+ /soft/libraries/hdf5/1.8.10/cnk-xl/current/
+
+
+ mpixlf77_r
+ mpixlc_r
+ mpixlf2003_r
+ /soft/libraries/netcdf/4.3.0-f4.2/cnk-xl/V1R2M0-20131211/
+ /home/santos/pFUnit/pFUnit_IBM
+ gpfs
+ /soft/libraries/pnetcdf/1.3.1/cnk-xl/current/
+ mpixlc_r
+ mpixlf2003_r
+
+ -LNETCDF_PATH/lib -lnetcdff -lnetcdf -L/soft/libraries/hdf5/1.8.10/cnk-xl/current/lib -lhdf5_hl -lhdf5 -L/soft/libraries/alcf/current/xl/ZLIB/lib -lz -L/soft/libraries/alcf/current/xl/LAPACK/lib -llapack -L/soft/libraries/alcf/current/xl/BLAS/lib -lblas -L/bgsys/drivers/ppcfloor/comm/sys/lib
+
-
- -Wl,-rpath,$(NETCDF_PATH)/lib
- -Wl,-rpath,$(COMPILER_PATH)/lib/intel64
- -Wl,-rpath,$(COMPILER_PATH)/mkl/lib/intel64
- /home/santos/pFUnit/pFUnit_Intel_3_0
+
+
+
+
+
+
+
+
+
+
+ USERDEFINED_MUST_EDIT_THIS
+
+
+ # USERDEFINED NETCDF_PATH/bin/nc-config --flibs
+
-
- -O0
- -O0
- -lgomp
- -Wl,-R$(NETCDF_PATH)/lib
- -Wl,-R$(COMPILER_PATH)/lib
- -Wl,-R$(COMPILER_PATH)/libso
+
+
+
+ -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
+
+ NETCDF
+ gpfs
+ PNETCDF
-
- mpich
- /usr/lib64
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs)
- -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY
-
-
-
- -lquadmath
- -Wl,-rpath,$(NETCDF_PATH)/lib
- -Wl,-rpath,$(COMPILER_PATH)/lib/intel64
- -Wl,-rpath,$(COMPILER_PATH)/mkl/lib/intel64
- -Wl,-rpath,$(MPI_PATH)/lib
- -mkl=cluster
- -lifcore
- -lifcore
- -lifcore
- /home/santos/pFUnit/pFUnit_Intel_3_0
- -mcmodel medium
-
-
-
- -O0
- -O0
- -lgomp
- -Wl,-R$(NETCDF_PATH)/lib
- -Wl,-R$(COMPILER_PATH)/lib
- -Wl,-R$(COMPILER_PATH)/libso
-
-
-
- /home/santos/pFUnit/pFUnit_NAG_3_0
-
- -DNO_C_SIZEOF
- -lpthread
-
-
-
-
-
- /usr/local/netcdf-gcc-nag
- /usr/local/openmpi-gcc-nag
- /home/santos/pFUnit/pFUnit_NAG_3_0
-
- -kind=byte
- -DNO_C_SIZEOF
-
- -L/home/santos/lib/fake_omp -lfake_omp -Wl,-Wl,,--rpath=/home/santos/lib/fake_omp
+
+ /glade/apps/opt/lib
-
- lustre
- $(TACC_NETCDF_DIR)
- $(TACC_PNETCDF_DIR)
- -DHAVE_NANOTIME
+
+
+ -xHost
+
+
+ -DINTEL_MKL -DHAVE_SSE2
+
+
+ -xHost
+
+ mpiicpc
+ /glade/apps/opt/papi/5.3.0/intel/12.1.5/include/
+ /glade/apps/opt/papi/5.3.0/intel/12.1.5/lib64
+ CESMDATAROOT/tools/pFUnit/pFUnit3.1_Intel15.0.1_MPI
+
+ icc
+ ifort
+ MPICC
+ MPIFC
+
+ -Wl,-rpath PAPI_LIB -LPAPI_LIB -lpapi
+
+ TRILINOS_PATH
-
- -xHost
- -xHost
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L$(TACC_HDF5_LIB) -lhdf5
- -L$(TACC_HDF5_LIB) -lhdf5
- $(TRILINOS_PATH)
- -mcmodel medium
-
-
-
- mpiifort
- mpiicc
- mpiicpc
- ifort
- icc
- -xHost -no-save-temps
- -xHost -no-save-temps
-
- $(NETCDF_DIR)
- $(PNETCDF_DIR)
- -DHAVE_NANOTIME -DCPRINTEL
- --host=Linux
- $(NETCDf) $(MKL)
- $(NETCDF)
-
-
-
- mpiifort
- mpiicc
- mpiicpc
- ifort
- icc
-
- $(NETCDF_DIR)
- $(PNETCDF_DIR)
- -DHAVE_NANOTIME -DCPRINTELMIC -DCPRINTEL
- $(NETCDF) $(MKL)
- $(NETCDF) -mmic
-
- -O0 -g -check all -check noarg_temp_created
- -O3 -mP2OPT_hpo_matrix_opt_framework=0
- -mmic -fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -no-save-temps -no-opt-dynamic-align
- -mmic -O3 -fp-model precise -DFORTRANUNDERSCORE -no-save-temps
- --host=x86_64-k1om-linux --build=x86_64-unknown-linux
- -O0 -mmic
-
-
-
- mpiicc
- mpiifort
- mpicpc
- ifort
- icc
- icpc
- -xHost
- -xHost
- $(shell $(NETCDF_PATH)/bin/nf-config --flibs) -L$(TACC_HDF5_LIB) -lhdf5
- -L$(TACC_HDF5_LIB) -lhdf5
- $(TRILINOS_PATH)
+
+
+ -O
+
+
+ -O
+
+
+ -llapack -lblas
+
diff --git a/cime_config/cesm/machines/config_machines.xml b/cime_config/cesm/machines/config_machines.xml
index 1d009cc6ef1..16ff1d13eff 100644
--- a/cime_config/cesm/machines/config_machines.xml
+++ b/cime_config/cesm/machines/config_machines.xml
@@ -39,7 +39,7 @@
The attributes used to choose the mpirun command are:
mpilib: can either be 'default' the name of an mpi library, or a compiler name so one can choose the mpirun
- based on the mpi library in use.
+ based on the mpi library in use.
the 'executable' tag must have arguments required for the chosen mpirun, as well as the executable name.
@@ -120,8 +120,8 @@
cmake/3.1.3
darshan
- /sw/modulefiles/CESM
- CESM-ENV
+ /sw/modulefiles/CESM
+ CESM-ENV
@@ -218,18 +218,18 @@
srun
- --mpi=none
- --ntasks=$TOTALPES
- --cpu_bind=sockets --cpu_bind=verbose
- --kill-on-bad-exit
+ --mpi=none
+ --ntasks=$TOTALPES
+ --cpu_bind=sockets --cpu_bind=verbose
+ --kill-on-bad-exit
srun
- --ntasks=$TOTALPES
- --cpu_bind=sockets --cpu_bind=verbose
- --kill-on-bad-exit
+ --ntasks=$TOTALPES
+ --cpu_bind=sockets --cpu_bind=verbose
+ --kill-on-bad-exit
@@ -292,9 +292,11 @@
-
- NERSC XC40 Haswell, os is CNL, 32 pes/node, batch system is Slurm
+
+
+
cori
+ NERSC XC40 Haswell, os is CNL, 32 pes/node, batch system is Slurm
intel,gnu,cray
mpt,mpi-serial
$ENV{SCRATCH}
@@ -357,12 +359,12 @@
esmf/6.3.0rp1-defio-intel2016-mpi-O
- esmf/6.3.0rp1-defio-intel2016-mpiuni-O
+ esmf/6.3.0rp1-defio-intel2016-mpiuni-O
PrgEnv-cray
- cce cce/8.5.1
+ cce cce/8.5.4
PrgEnv-gnu
@@ -379,11 +381,11 @@
cray-mpich/7.4.1
- cray-hdf5/1.8.16
- cray-netcdf/4.4.0
+ cray-hdf5/1.10.0
+ cray-netcdf/4.4.1
- cray-netcdf-hdf5parallel/4.4.0
+ cray-netcdf-hdf5parallel/4.3.3.1
cray-hdf5-parallel/1.8.16
cray-parallel-netcdf/1.7.0
@@ -396,6 +398,9 @@
+
+
+
NERSC XC* KNL, os is CNL, 68 pes/node, batch system is Slurm
intel,gnu,cray
mpt,mpi-serial
@@ -430,6 +435,8 @@
module
module
+ craype-mic-knl
+ craype-haswell
PrgEnv-intel
PrgEnv-cray
PrgEnv-gnu
@@ -444,32 +451,31 @@
cray-netcdf
cray-hdf5
cray-netcdf-hdf5parallel
- craype-sandybridge
- craype-ivybridge
- craype
PrgEnv-intel
intel intel/17.0.0.098
cray-libsci
/global/project/projectdirs/ccsm1/modulefiles/cori
+ memkind
esmf/6.3.0rp1-defio-intel2016-mpi-O
- esmf/6.3.0rp1-defio-intel2016-mpiuni-O
+ esmf/6.3.0rp1-defio-intel2016-mpiuni-O
PrgEnv-cray
- cce cce/8.5.1
+ cce cce/8.5.4
PrgEnv-gnu
gcc gcc/6.1.0
+ craype-mic-knl
papi/5.4.3.2
craype craype/2.5.5
@@ -480,11 +486,11 @@
cray-mpich/7.4.1
- cray-hdf5/1.8.16
- cray-netcdf/4.4.0
+ cray-hdf5/1.10.0
+ cray-netcdf/4.4.1
- cray-netcdf-hdf5parallel/4.4.0
+ cray-netcdf-hdf5parallel/4.3.3.1
cray-hdf5-parallel/1.8.16
cray-parallel-netcdf/1.7.0
@@ -509,7 +515,7 @@
$CIME_OUTPUT_ROOT/archive/$CASE
/projects/EarlyPerf_theta/cesm/csm/$CASE
/projects/EarlyPerf_theta/cesm/baselines
- /projects/EarlyPerf_theta/cesm/tools/cprnc
+ /projects/EarlyPerf_theta/cesm/tools/cprnc/cprnc
/projects/EarlyPerf_theta/cesm
CNL
cobalt_theta
@@ -523,11 +529,11 @@
aprun
- -n $TOTALPES
- -N $PES_PER_NODE
- --cc depth -d $OMP_NUM_THREADS
- -e OMP_STACKSIZE=64M
- -e OMP_NUM_THREADS=$OMP_NUM_THREADS
+ -n $TOTALPES
+ -N $PES_PER_NODE
+ --cc depth -d $OMP_NUM_THREADS
+ -e OMP_STACKSIZE=64M
+ -e OMP_NUM_THREADS=$OMP_NUM_THREADS
@@ -540,51 +546,51 @@
module
module
- PrgEnv-intel
- PrgEnv-cray
- PrgEnv-gnu
- intel
- cce
- cray-parallel-netcdf
- cray-hdf5-parallel
- pmi
- cray-libsci
- cray-mpich
- cray-netcdf
- cray-hdf5
- cray-netcdf-hdf5parallel
- craype-mic-knl
- craype
+ PrgEnv-intel
+ PrgEnv-cray
+ PrgEnv-gnu
+ intel
+ cce
+ cray-parallel-netcdf
+ cray-hdf5-parallel
+ pmi
+ cray-libsci
+ cray-mpich
+ cray-netcdf
+ cray-hdf5
+ cray-netcdf-hdf5parallel
+ craype-mic-knl
+ craype
- PrgEnv-intel/6.0.3
- intel intel/17.0.0.098
- cray-libsci
+ PrgEnv-intel/6.0.3
+ intel intel/17.0.0.098
+ cray-libsci
- PrgEnv-cray/6.0.3
- cce cce/8.5.4
+ PrgEnv-cray/6.0.3
+ cce cce/8.5.4
- PrgEnv-gnu/6.0.3
- gcc gcc/6.2.0
+ PrgEnv-gnu/6.0.3
+ gcc gcc/6.2.0
- papi/5.4.3.3
- craype craype/2.5.7
+ papi/5.4.3.3
+ craype craype/2.5.7
- cray-libsci/16.09.1
+ cray-libsci/16.09.1
- cray-mpich/7.4.4
+ cray-mpich/7.4.4
- cray-netcdf-hdf5parallel/4.4.1
- cray-hdf5-parallel/1.10.0
- cray-parallel-netcdf/1.7.0
+ cray-netcdf-hdf5parallel/4.4.1
+ cray-hdf5-parallel/1.10.0
+ cray-parallel-netcdf/1.7.0
@@ -634,9 +640,9 @@
module
- perl/5.20.7
- cmake/3.0.0
- pgi/15.5
+ perl/5.20.7
+ cmake/3.0.0
+ pgi/15.5
mpi/mvapich2/1.5.1p1/pgi11.3
netcdf/4.1.2/pgi
@@ -711,7 +717,7 @@
esmf/6.3.0rp1-defio-intel15.0-mpi-O
- esmf/6.3.0rp1-defio-intel15.0-mpiuni-O
+ esmf/6.3.0rp1-defio-intel15.0-mpiuni-O
PrgEnv-cray
@@ -941,7 +947,7 @@
netcdf/4.4.1
- netcdf-mpi/4.4.1
+ netcdf-mpi/4.4.1
@@ -978,7 +984,7 @@
mpirun
- -np $TOTALPES
+ -np $TOTALPES
@@ -1128,7 +1134,7 @@
mpiexec_mpt
- -n $TOTALPES
+ -n $TOTALPES
@@ -1231,7 +1237,7 @@
mpiexec_mpt
- -n $TOTALPES
+ -n $TOTALPES
@@ -1283,7 +1289,7 @@
mpiexec_mpt
- -n $TOTALPES
+ -n $TOTALPES
@@ -1331,9 +1337,9 @@
aprun
- -n $TOTALPES
- -N $PES_PER_NODE
- -d $ENV{OMP_NUM_THREADS}
+ -n $TOTALPES
+ -N $PES_PER_NODE
+ -d $ENV{OMP_NUM_THREADS}
@@ -1374,8 +1380,8 @@
mpirun
- -np $TOTALPES
- -npernode $PES_PER_NODE
+ -np $TOTALPES
+ -npernode $PES_PER_NODE
@@ -1542,7 +1548,6 @@
2
yes
us
- $MPILIB
unordered
yes
diff --git a/cime_config/xml_schemas/config_build.xsd b/cime_config/xml_schemas/config_compilers_v2.xsd
similarity index 80%
rename from cime_config/xml_schemas/config_build.xsd
rename to cime_config/xml_schemas/config_compilers_v2.xsd
index 3e26ffb0665..5f51849d242 100644
--- a/cime_config/xml_schemas/config_build.xsd
+++ b/cime_config/xml_schemas/config_compilers_v2.xsd
@@ -3,32 +3,17 @@
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -39,12 +24,21 @@
-
-
+
+
+
+
-
-
+
+
+
+
-
-
+ complicate the process of adding new models. -->
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -105,11 +93,48 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/driver_cpl/cime_config/config_component.xml b/driver_cpl/cime_config/config_component.xml
index b867b3813db..985f3596477 100644
--- a/driver_cpl/cime_config/config_component.xml
+++ b/driver_cpl/cime_config/config_component.xml
@@ -3503,7 +3503,7 @@
TRUE
TRUE
+ feedbacks for a TG compset, this will give us additional diagnostics -->
TRUE
run_glc
diff --git a/scripts/Tools/code_checker b/scripts/Tools/code_checker
index 2d83c2b50b9..c98b1e5b3a2 100755
--- a/scripts/Tools/code_checker
+++ b/scripts/Tools/code_checker
@@ -74,7 +74,7 @@ def run_pylint(on_file):
os.path.join(cimeroot,"scripts","Tools"))
cmd = "%s %s %s" % (pylint, cmd_options, on_file)
-
+ logger.debug("pylint command is %s"%cmd)
stat, out, err = run_cmd(cmd, verbose=False, from_dir=cimeroot)
if stat != 0:
logger.info("File %s has pylint problems, please fix\n Use command: %s" % (on_file, cmd))
@@ -102,11 +102,15 @@ def check_code(dir_to_check, num_procs, files):
Returns True if all files had no problems
"""
# Get list of files to check
- files_to_check = run_cmd_no_fail('git ls-files --full-name %s' % dir_to_check, verbose=False).splitlines()
- if files:
- files_to_check = [item for item in files_to_check if matches(item, files)]
+ if '/' in files:
+ files_to_check = files
else:
- files_to_check = [item for item in files_to_check if item.endswith(".py")]
+ files_to_check = run_cmd_no_fail('git ls-files --full-name %s' % dir_to_check, verbose=False).splitlines()
+ if files:
+ files_to_check = [item for item in files_to_check if matches(item, files)]
+ else:
+ files_to_check = [item for item in files_to_check if item.endswith(".py")]
+
pool = ThreadPool(num_procs)
results = pool.map(run_pylint, files_to_check)
diff --git a/share/timing/Makefile b/share/timing/Makefile
index 85e456d209e..e2bc675d0c4 100644
--- a/share/timing/Makefile
+++ b/share/timing/Makefile
@@ -19,7 +19,7 @@ endif
ifeq ($(strip $(MACFILE)),)
- MACFILE := Macros
+ MACFILE := Macros.make
endif
# Machine specific macros file
diff --git a/tools/configure b/tools/configure
index c5140d40e6f..b731460fe5b 100755
--- a/tools/configure
+++ b/tools/configure
@@ -16,16 +16,15 @@ COMPILER, MPILIB, and DEBUG, respectively.
"""
import os
-import shutil
import sys
_CIMEROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
sys.path.append(os.path.join(_CIMEROOT, "scripts", "Tools"))
+sys.path.append(os.path.join(_CIMEROOT, "scripts", "utils", "python"))
from standard_script_setup import *
from CIME.utils import expect
-from CIME.XML.build import Build
-from CIME.XML.env_mach_specific import EnvMachSpecific
+from CIME.BuildTools.configure import configure
from CIME.XML.machines import Machines
logger = logging.getLogger(__name__)
@@ -117,59 +116,6 @@ def parse_command_line(args):
return opts
-def configure(machobj, output_dir, macros_format, compiler, mpilib, debug, sysos):
- """Add Macros, Depends, and env_mach_specific files to a directory.
-
- Arguments:
- machobj - Machines argument for this machine.
- output_dir - Directory in which to place output.
- macros_format - Container containing the string 'Makefile' to produce
- Makefile Macros output, and/or 'CMake' for CMake output.
- compiler - String containing the compiler vendor to configure for.
- mpilib - String containing the MPI implementation to configure for.
- debug - Boolean specifying whether debugging options are enabled.
- """
- # Macros generation.
- suffixes = {'Makefile': '.make', 'CMake': '.cmake'}
- macro_maker = Build(machobj)
- build_file_name = os.path.join(machobj.machines_dir, "config_build.xml")
- for form in macros_format:
- out_file_name = os.path.join(output_dir,
- "Macros"+suffixes[form])
- with open(out_file_name, "w") as macros_file:
- macro_maker.write_macros(form, build_file_name, macros_file)
-
- # Depends file copy.
- mach_depends = os.path.join(machobj.machines_dir,
- "Depends."+machobj.get_machine_name())
- if os.path.isfile(mach_depends):
- shutil.copy(mach_depends, output_dir)
- compiler_depends = os.path.join(machobj.machines_dir, "Depends."+compiler)
- if os.path.isfile(compiler_depends):
- shutil.copy(compiler_depends, output_dir)
-
- # env_mach_specific generation.
- ems_path = os.path.join(output_dir, "env_mach_specific.xml")
- if os.path.exists(ems_path):
- os.remove(ems_path)
- ems_file = EnvMachSpecific(output_dir)
- ems_file.populate(machobj)
- ems_file.write()
- for shell in ('sh', 'csh'):
- ems_file.make_env_mach_specific_file(compiler, debug, mpilib, shell)
- shell_path = os.path.join(output_dir, ".env_mach_specific." + shell)
- with open(shell_path, 'a') as shell_file:
- if shell == 'sh':
- shell_file.write("\nexport COMPILER=%s\n" % compiler)
- shell_file.write("export MPILIB=%s\n" % mpilib)
- shell_file.write("export DEBUG=%s\n" % repr(debug).upper())
- shell_file.write("export OS=%s\n" % sysos)
- else:
- shell_file.write("\nsetenv COMPILER %s\n" % compiler)
- shell_file.write("setenv MPILIB %s\n" % mpilib)
- shell_file.write("setenv DEBUG %s\n" % repr(debug).upper())
- shell_file.write("setenv OS %s\n" % sysos)
-
def _main():
opts = parse_command_line(sys.argv)
configure(opts['machobj'], opts['output_dir'], opts['macros_format'],
diff --git a/utils/python/CIME/BuildTools/__init__.py b/utils/python/CIME/BuildTools/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/utils/python/CIME/BuildTools/cmakemacroswriter.py b/utils/python/CIME/BuildTools/cmakemacroswriter.py
new file mode 100644
index 00000000000..59681ac57f7
--- /dev/null
+++ b/utils/python/CIME/BuildTools/cmakemacroswriter.py
@@ -0,0 +1,119 @@
+"""Classes used to write build system files.
+
+The classes here are used to write out settings for use by Makefile and CMake
+build systems. The two relevant classes are CMakeMacroWriter and
+MakeMacroWriter, which encapsulate the information necessary to write CMake and
+Makefile formatted text, respectively. See the docstrings for those classes for
+more.
+"""
+
+# This is not the most useful check.
+# pylint: disable=invalid-name
+
+from CIME.BuildTools.macrowriterbase import MacroWriterBase
+from CIME.XML.standard_module_setup import *
+logger = logging.getLogger(__name__)
+
+
+class CMakeMacroWriter(MacroWriterBase):
+
+ """Macro writer for the CMake format.
+
+ For details on the provided methods, see MacroWriterBase, which this
+ class inherits from.
+ """
+
+ def __init__(self, output):
+ """Initialize a CMake macro writer.
+
+ Arguments:
+ output - File-like object (probably an io.TextIOWrapper), which
+ will be written to.
+ """
+ super(CMakeMacroWriter, self).__init__(output)
+ # This counter is for avoiding name conflicts in temporary
+ # variables used for shell commands.
+ self._var_num = 0
+
+ def environment_variable_string(self, name):
+ """Return an environment variable reference.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> CMakeMacroWriter(s).environment_variable_string("foo")
+ '$ENV{foo}'
+ """
+ return "$ENV{" + name + "}"
+
+ def shell_command_strings(self, command):
+ # pylint: disable=line-too-long
+ """Return strings used to get the output of a shell command.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> set_up, inline, tear_down = CMakeMacroWriter(s).shell_command_strings("echo bar")
+ >>> set_up
+ 'execute_process(COMMAND echo bar OUTPUT_VARIABLE CIME_TEMP_SHELL0 OUTPUT_STRIP_TRAILING_WHITESPACE)'
+ >>> inline
+ '${CIME_TEMP_SHELL0}'
+ >>> tear_down
+ 'unset(CIME_TEMP_SHELL0)'
+ """
+ # pylint: enable=line-too-long
+ # Create a unique variable name, then increment variable number
+ # counter so that we get a different value next time.
+ var_name = "CIME_TEMP_SHELL" + str(self._var_num)
+ self._var_num += 1
+ set_up = "execute_process(COMMAND " + command + \
+ " OUTPUT_VARIABLE " + var_name + \
+ " OUTPUT_STRIP_TRAILING_WHITESPACE)"
+ tear_down = "unset(" + var_name + ")"
+ return (set_up, "${" + var_name + "}", tear_down)
+
+ def variable_string(self, name):
+ """Return a string to refer to a variable with the given name.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> CMakeMacroWriter(s).variable_string("foo")
+ '${CIME_foo}'
+ """
+ return "${CIME_" + name + "}"
+
+ def set_variable(self, name, value):
+ """Write out a statement setting a variable to some value.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> CMakeMacroWriter(s).set_variable("foo", "bar")
+ >>> s.getvalue()
+ u'set(CIME_foo "bar")\\n'
+ """
+ self.write_line("set(CIME_" + name + ' "' + value + '")')
+
+ def start_ifeq(self, left, right):
+ """Write out a statement to start a conditional block.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> CMakeMacroWriter(s).start_ifeq("foo", "bar")
+ >>> s.getvalue()
+ u'if("foo" STREQUAL "bar")\\n'
+ """
+ self.write_line('if("' + left + '" STREQUAL "' + right + '")')
+ self.indent_right()
+
+ def end_ifeq(self):
+ """Write out a statement to end a block started with start_ifeq.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> writer = CMakeMacroWriter(s)
+ >>> writer.start_ifeq("foo", "bar")
+ >>> writer.set_variable("foo2", "bar2")
+ >>> writer.end_ifeq()
+ >>> s.getvalue()
+ u'if("foo" STREQUAL "bar")\\n set(CIME_foo2 "bar2")\\nendif()\\n'
+ """
+ self.indent_left()
+ self.write_line("endif()")
diff --git a/utils/python/CIME/BuildTools/configure.py b/utils/python/CIME/BuildTools/configure.py
new file mode 100644
index 00000000000..359df7cda12
--- /dev/null
+++ b/utils/python/CIME/BuildTools/configure.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+
+"""This script writes CIME build information to a directory.
+
+The pieces of information that will be written include:
+
+1. Machine-specific build settings (i.e. the "Macros" file).
+2. File-specific build settings (i.e. "Depends" files).
+3. Environment variable loads (i.e. the env_mach_specific files).
+
+The .env_mach_specific.sh and .env_mach_specific.csh files are specific to a
+given compiler, MPI library, and DEBUG setting. By default, these will be the
+machine's default compiler, the machine's default MPI library, and FALSE,
+respectively. These can be changed by setting the environment variables
+COMPILER, MPILIB, and DEBUG, respectively.
+"""
+
+import shutil
+from CIME.XML.standard_module_setup import *
+from CIME.utils import expect
+from CIME.XML.compilers import Compilers
+from CIME.XML.env_mach_specific import EnvMachSpecific
+
+logger = logging.getLogger(__name__)
+
+def configure(machobj, output_dir, macros_format, compiler, mpilib, debug, sysos):
+ """Add Macros, Depends, and env_mach_specific files to a directory.
+
+ Arguments:
+ machobj - Machines argument for this machine.
+ output_dir - Directory in which to place output.
+ macros_format - Container containing the string 'Makefile' to produce
+ Makefile Macros output, and/or 'CMake' for CMake output.
+ compiler - String containing the compiler vendor to configure for.
+ mpilib - String containing the MPI implementation to configure for.
+ debug - Boolean specifying whether debugging options are enabled.
+ """
+ # Macros generation.
+ suffixes = {'Makefile': 'make', 'CMake': 'cmake'}
+ macro_maker = Compilers(machobj)
+ for form in macros_format:
+ out_file_name = os.path.join(output_dir,"Macros."+suffixes[form])
+ macro_maker.write_macros_file(macros_file=out_file_name, output_format=suffixes[form])
+
+ _copy_depends_files(machobj.get_machine_name(), machobj.machines_dir, output_dir, compiler)
+ _generate_env_mach_specific(output_dir, machobj, compiler, mpilib,
+ debug, sysos)
+
+def _copy_depends_files(machine_name, machines_dir, output_dir, compiler):
+ """
+ Copy any system or compiler Depends files if they do not exist in the output directory
+ """
+ for dep in (machine_name, compiler):
+ dfile = os.path.join(machines_dir, "Depends.%s"%dep)
+ outputdfile = os.path.join(output_dir, "Depends.%s"%dep)
+ if os.path.isfile(dfile) and not os.path.isfile(outputdfile):
+ shutil.copyfile(dfile, outputdfile)
+ dfile = os.path.join(machines_dir, "Depends.%s.%s"%(machine_name,compiler))
+ outputdfile = os.path.join(output_dir, "Depends.%s.%s"%(machine_name,compiler))
+ if os.path.isfile(dfile) and not os.path.isfile(outputdfile):
+ shutil.copyfile(dfile, outputdfile)
+
+def _generate_env_mach_specific(output_dir, machobj, compiler, mpilib, debug, sysos):
+ """
+ env_mach_specific generation.
+ """
+ ems_path = os.path.join(output_dir, "env_mach_specific.xml")
+ if os.path.exists(ems_path):
+ logger.warn("%s already exists, delete to replace"%ems_path)
+ return
+ ems_file = EnvMachSpecific(output_dir)
+ ems_file.populate(machobj)
+ ems_file.write()
+ for shell in ('sh', 'csh'):
+ ems_file.make_env_mach_specific_file(compiler, debug, mpilib, shell)
+ shell_path = os.path.join(output_dir, ".env_mach_specific." + shell)
+ with open(shell_path, 'a') as shell_file:
+ if shell == 'sh':
+ shell_file.write("\nexport COMPILER=%s\n" % compiler)
+ shell_file.write("export MPILIB=%s\n" % mpilib)
+ shell_file.write("export DEBUG=%s\n" % repr(debug).upper())
+ shell_file.write("export OS=%s\n" % sysos)
+ else:
+ shell_file.write("\nsetenv COMPILER %s\n" % compiler)
+ shell_file.write("setenv MPILIB %s\n" % mpilib)
+ shell_file.write("setenv DEBUG %s\n" % repr(debug).upper())
+ shell_file.write("setenv OS %s\n" % sysos)
diff --git a/utils/python/CIME/BuildTools/macroconditiontree.py b/utils/python/CIME/BuildTools/macroconditiontree.py
new file mode 100644
index 00000000000..4172f2621f5
--- /dev/null
+++ b/utils/python/CIME/BuildTools/macroconditiontree.py
@@ -0,0 +1,170 @@
+from CIME.XML.standard_module_setup import *
+logger = logging.getLogger(__name__)
+
+class MacroConditionTree(object): # pylint: disable=too-many-instance-attributes
+
+ """Tree containing the various possible settings of a specific macro.
+
+ Unlike the PossibleValues class, this class assumes that we have
+ finished determining which settings could apply on a given machine. It
+ also sorts the settings based on the conditions under which they take
+ effect, in preparation for writing out the Macros file itself.
+
+ Public methods:
+ merge
+ write_out
+ """
+
+ def __init__(self, name, settings):
+ """Create a MacroConditionTree recursively.
+
+ Arguments:
+ name - Name of the variable.
+ settings - A list of all settings for this variable.
+ """
+ # Search for any conditions controlling the number of settings.
+ condition = None
+ # Prefer the COMPILER attribute as the top level attribute, for
+ # readability of the merged file.
+ if any("COMPILER" in setting.conditions for setting in settings):
+ condition = "COMPILER"
+ else:
+ # To make merging more effective, sort the conditions.
+ all_conditions = []
+ for setting in settings:
+ all_conditions += setting.conditions.keys()
+ if all_conditions:
+ condition = sorted(all_conditions)[0]
+ if condition is None:
+ # If there are no conditions, we have reached a leaf.
+ # We combine whatever settings are left; there should be at
+ # most one non-appending setting, or an arbitrary number of
+ # appending settings.
+ self._is_leaf = True
+ self._assignments = []
+ self._set_up = []
+ self._tear_down = []
+ self._do_append = True
+ for setting in settings:
+ if not setting.do_append:
+ self._do_append = False
+ assert len(settings) == 1, \
+ "Internal error in macros: An ambiguity was " \
+ "found after the ambiguity check was complete, " \
+ "or there is a mixture of appending and initial " \
+ "settings in the condition tree."
+ self._assignments.append((name, setting.value))
+ self._set_up += setting.set_up
+ self._tear_down += setting.tear_down
+ else:
+ # If a condition was found, partition the settings depending on
+ # how they use it, and recursively create a tree for each
+ # partition.
+ self._is_leaf = False
+ self._condition = condition
+ partition = dict()
+ for setting in settings:
+ # If some of the settings don't use a condition, we use
+ # None to represent that.
+ cond_val = setting.conditions.pop(condition, None)
+ if cond_val in partition:
+ partition[cond_val].append(setting)
+ else:
+ partition[cond_val] = [setting]
+ branches = dict()
+ for cond_val in partition:
+ branches[cond_val] = \
+ MacroConditionTree(name, partition[cond_val])
+ self._branches = branches
+
+ # pylint shouldn't concern itself with the way that we access other, since
+ # it's actually a member of the same class.
+ # pylint:disable=protected-access
+ def merge(self, other):
+ """Merge another tree with this one.
+
+ This should be considered destructive to both trees. The only valid
+ value is the one that's returned.
+ """
+ if self._is_leaf:
+ if other._is_leaf:
+ assert self._do_append == other._do_append, \
+ "Internal error in macros: Tried to merge an " \
+ "appending tree with a tree containing initial "\
+ "settings."
+ # If both are leaves, just merge the values.
+ self._assignments += other._assignments
+ self._set_up += other._set_up
+ self._tear_down += other._tear_down
+ return self
+ else:
+ # If other is not a leaf, swap the arguments so that self
+ # is the one that's not a leaf, handled below.
+ return other.merge(self)
+ else:
+ # If self is not a leaf but other is, it should go in
+ # self._branches[None]. The same goes for the case where the
+ # conditions don't match, and self._condition is last
+ # alphabetically.
+ if other._is_leaf or self._condition > other._condition:
+ if None in self._branches:
+ self._branches[None] = self._branches[None].merge(other)
+ else:
+ self._branches[None] = other
+ return self
+ else:
+ # If the other condition comes last alphabetically, swap
+ # the order.
+ if self._condition < other._condition:
+ return other.merge(self)
+ # If neither is a leaf and their conditions match, merge
+ # their sets of branches.
+ for (cond_val, other_branch) in other._branches.items():
+ if cond_val in self._branches:
+ self._branches[cond_val] = \
+ self._branches[cond_val].merge(other_branch)
+ else:
+ self._branches[cond_val] = other_branch
+ return self
+ # pylint:enable=protected-access
+
+ def write_out(self, writer):
+ """Write tree to file.
+
+ The writer argument is an object inheriting from MacroWriterBase.
+ This function first writes out all the initial settings with
+ appropriate conditionals, then the appending settings.
+ """
+ if self._is_leaf:
+ for line in self._set_up:
+ writer.write_line(line)
+ for (name, value) in self._assignments:
+ if self._do_append:
+ writer.append_variable(name, value)
+ else:
+ writer.set_variable(name, value)
+ for line in self._tear_down:
+ writer.write_line(line)
+ else:
+ condition = self._condition
+ # Take care of the settings that don't use this condition.
+ if None in self._branches:
+ self._branches[None].write_out(writer)
+ # Now all the if statements.
+ for cond_val in self._branches:
+ if cond_val is None:
+ continue
+ env_ref = writer.environment_variable_string(condition)
+ writer.start_ifeq(env_ref, cond_val)
+ self._branches[cond_val].write_out(writer)
+ writer.end_ifeq()
+
+def merge_optional_trees(tree, big_tree):
+ """Merge two MacroConditionTrees when one or both objects may be `None`."""
+ if tree is not None:
+ if big_tree is None:
+ return tree
+ else:
+ return big_tree.merge(tree)
+ else:
+ return big_tree
diff --git a/utils/python/CIME/BuildTools/macrowriterbase.py b/utils/python/CIME/BuildTools/macrowriterbase.py
new file mode 100644
index 00000000000..117c101e093
--- /dev/null
+++ b/utils/python/CIME/BuildTools/macrowriterbase.py
@@ -0,0 +1,254 @@
+"""Classes used to write build system files.
+
+The classes here are used to write out settings for use by Makefile and CMake
+build systems. The two relevant classes are CMakeMacroWriter and
+MakeMacroWriter, which encapsulate the information necessary to write CMake and
+Makefile formatted text, respectively. See the docstrings for those classes for
+more.
+"""
+
+# This is not the most useful check.
+# pylint: disable=invalid-name
+
+import os
+from abc import ABCMeta, abstractmethod
+from CIME.XML.standard_module_setup import *
+logger = logging.getLogger(__name__)
+
+class MacroWriterBase(object):
+
+ """Abstract base class for macro file writers.
+
+ The methods here come in three flavors:
+ 1. indent_left/indent_right change the level of indent used internally by
+ the class.
+ 2. The various methods ending in "_string" return strings relevant to the
+ build system.
+ 3. The other methods write information to the file handle associated with
+ an individual writer instance.
+
+ Public attributes:
+ indent_increment - Number of spaces to indent if blocks (does not apply
+ to format-specific indentation, e.g. cases where
+ Makefiles must use tabs).
+ output - File-like object that output is written to.
+
+ Public methods:
+ indent_string
+ indent_left
+ indent_right
+ write_line
+ environment_variable_string
+ shell_command_string
+ variable_string
+ set_variable
+ append_variable
+ start_ifeq
+ end_ifeq
+ """
+
+ __metaclass__ = ABCMeta
+
+ indent_increment = 2
+
+ def __init__(self, output):
+ """Initialize a macro writer.
+
+ Arguments:
+ output - File-like object (probably an io.TextIOWrapper), which
+ will be written to.
+ """
+ self.output = output
+ self._indent_num = 0
+
+ def indent_string(self):
+ """Return an appropriate number of spaces for the indent."""
+ return ' ' * self._indent_num
+
+ def indent_left(self):
+ """Decrease the amount of line indent."""
+ self._indent_num -= 2
+
+ def indent_right(self):
+ """Increase the amount of line indent."""
+ self._indent_num += 2
+
+ def write_line(self, line):
+ """Write a single line of output, appropriately indented.
+
+ A trailing newline is added, whether or not the input has one.
+ """
+ self.output.write(unicode(self.indent_string() + line + "\n"))
+
+ @abstractmethod
+ def environment_variable_string(self, name):
+ """Return an environment variable reference."""
+ pass
+
+ @abstractmethod
+ def shell_command_strings(self, command):
+ """Return strings used to get the output of a shell command.
+
+ Implementations should return a tuple of three strings:
+ 1. A line that is needed to get the output of the command (or None,
+ if a command can be run inline).
+ 2. A string that can be used within a line to refer to the output.
+ 3. A line that does any cleanup of temporary variables (or None, if
+ no cleanup is necessary).
+
+ Example usage:
+
+ # Get strings and write initial command.
+ (pre, var, post) = writer.shell_command_strings(command)
+ if pre is not None:
+ writer.write(pre)
+
+ # Use the variable to write an if block.
+ writer.start_ifeq(var, "TRUE")
+ writer.set_variable("foo", "bar")
+ writer.end_ifeq()
+
+ # Cleanup
+ if post is not None:
+ writer.write(post)
+ """
+ pass
+
+ @abstractmethod
+ def variable_string(self, name):
+ """Return a string to refer to a variable with the given name."""
+ pass
+
+ @abstractmethod
+ def set_variable(self, name, value):
+ """Write out a statement setting a variable to some value."""
+ pass
+
+ def append_variable(self, name, value):
+ """Write out a statement appending a value to a string variable."""
+ var_string = self.variable_string(name)
+ self.set_variable(name, var_string + " " + value)
+
+ @abstractmethod
+ def start_ifeq(self, left, right):
+ """Write out a statement to start a conditional block.
+
+ The arguments to this method are compared, and the block is entered
+ only if they are equal.
+ """
+ pass
+
+ @abstractmethod
+ def end_ifeq(self):
+ """Write out a statement to end a block started with start_ifeq."""
+ pass
+
+# None class based method for version 1.0
+
+def write_macros_file_v1(macros, compiler, os_, machine, macros_file="Macros", output_format="make"):
+ """
+ Parse the config_compiler.xml file into a Macros file for the
+ given machine and compiler.
+ """
+ # A few things can be used from environ if not in XML
+ for item in ["MPI_PATH", "NETCDF_PATH"]:
+ if not item in macros and item in os.environ:
+ logger.warn("Setting %s from Environment" % item)
+ macros[item] = os.environ[item]
+
+ with open(macros_file, "w") as fd:
+ fd.write(
+"""#
+# COMPILER=%s
+# OS=%s
+# MACH=%s
+""" % (compiler, os_, machine)
+)
+ if output_format == "make":
+ fd.write("#\n# Makefile Macros \n")
+
+ # print the settings out to the Macros file
+ for key, value in sorted(macros.iteritems()):
+ if key == "_COND_":
+ pass
+ elif key.startswith("ADD_"):
+ fd.write("%s+=%s\n\n" % (key[4:], value))
+ else:
+ fd.write("%s:=%s\n\n" % (key, value))
+
+ elif output_format == "cmake":
+ fd.write(
+'''#
+# cmake Macros generated from $compiler_file
+#
+include(Compilers)
+set(CMAKE_C_FLAGS_RELEASE "" CACHE STRING "Flags used by c compiler." FORCE)
+set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "Flags used by c compiler." FORCE)
+set(CMAKE_Fortran_FLAGS_RELEASE "" CACHE STRING "Flags used by Fortran compiler." FORCE)
+set(CMAKE_Fortran_FLAGS_DEBUG "" CACHE STRING "Flags used by Fortran compiler." FORCE)
+set(all_build_types "None Debug Release RelWithDebInfo MinSizeRel")
+set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Choose the type of build, options are: ${all_build_types}." FORCE)
+''')
+
+ # print the settings out to the Macros file, do it in
+ # two passes so that path values appear first in the
+ # file.
+ for key, value in sorted(macros.iteritems()):
+ if key == "_COND_":
+ pass
+ else:
+ value = value.replace("(", "{").replace(")", "}")
+ if key.endswith("_PATH"):
+ fd.write("set(%s %s)\n" % (key, value))
+ fd.write("list(APPEND CMAKE_PREFIX_PATH %s)\n\n" % value)
+
+ for key, value in sorted(macros.iteritems()):
+ if key == "_COND_":
+ pass
+ else:
+ value = value.replace("(", "{").replace(")", "}")
+ if "CFLAGS" in key:
+ fd.write("add_flags(CMAKE_C_FLAGS %s)\n\n" % value)
+ elif "FFLAGS" in key:
+ fd.write("add_flags(CMAKE_Fortran_FLAGS %s)\n\n" % value)
+ elif "CPPDEFS" in key:
+ fd.write("list(APPEND COMPILE_DEFINITIONS %s)\n\n" % value)
+ elif "SLIBS" in key or "LDFLAGS" in key:
+ fd.write("add_flags(CMAKE_EXE_LINKER_FLAGS %s)\n\n" % value)
+
+ # Recursively print the conditionals, combining tests to avoid repetition
+ _parse_hash(macros["_COND_"], fd, 0, output_format)
+
+
+def _parse_hash(macros, fd, depth, output_format, cmakedebug=""):
+ width = 2 * depth
+ for key, value in macros.iteritems():
+ if type(value) is dict:
+ if output_format == "make" or "DEBUG" in key:
+ for key2, value2 in value.iteritems():
+ if output_format == "make":
+ fd.write("%sifeq ($(%s), %s) \n" % (" " * width, key, key2))
+
+ _parse_hash(value2, fd, depth + 1, output_format, key2)
+ else:
+ if output_format == "make":
+ if key.startswith("ADD_"):
+ fd.write("%s %s += %s\n" % (" " * width, key[4:], value))
+ else:
+ fd.write("%s %s += %s\n" % (" " * width, key, value))
+
+ else:
+ value = value.replace("(", "{").replace(")", "}")
+ release = "DEBUG" if "TRUE" in cmakedebug else "RELEASE"
+ if "CFLAGS" in key:
+ fd.write("add_flags(CMAKE_C_FLAGS_%s %s)\n\n" % (release, value))
+ elif "FFLAGS" in key:
+ fd.write("add_flags(CMAKE_Fortran_FLAGS_%s %s)\n\n" % (release, value))
+ elif "CPPDEF" in key:
+ fd.write("add_config_definitions(%s %s)\n\n" % (release, value))
+ elif "SLIBS" in key or "LDFLAGS" in key:
+ fd.write("add_flags(CMAKE_EXE_LINKER_FLAGS_%s %s)\n\n" % (release, value))
+
+ width -= 2
+ if output_format == "make" and depth > 0:
+ fd.write("%sendif\n\n" % (" " * width))
diff --git a/utils/python/CIME/BuildTools/makemacroswriter.py b/utils/python/CIME/BuildTools/makemacroswriter.py
new file mode 100644
index 00000000000..83322e0b1f6
--- /dev/null
+++ b/utils/python/CIME/BuildTools/makemacroswriter.py
@@ -0,0 +1,93 @@
+"""Classes used to write build system files.
+
+The classes here are used to write out settings for use by Makefile and CMake
+build systems. The two relevant classes are CMakeMacroWriter and
+MakeMacroWriter, which encapsulate the information necessary to write CMake and
+Makefile formatted text, respectively. See the docstrings for those classes for
+more.
+"""
+
+from CIME.BuildTools.macrowriterbase import MacroWriterBase
+from CIME.XML.standard_module_setup import *
+logger = logging.getLogger(__name__)
+
+# This is not the most useful check.
+# pylint: disable=invalid-name
+
+class MakeMacroWriter(MacroWriterBase):
+
+ """Macro writer for the Makefile format.
+
+ For details on the provided methods, see MacroWriterBase, which this
+ class inherits from.
+ """
+
+ def environment_variable_string(self, name):
+ """Return an environment variable reference.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> MakeMacroWriter(s).environment_variable_string("foo")
+ '$(foo)'
+ """
+ return "$(" + name + ")"
+
+ def shell_command_strings(self, command):
+ """Return strings used to get the output of a shell command.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> MakeMacroWriter(s).shell_command_strings("echo bar")
+ (None, '$(shell echo bar)', None)
+ """
+ return (None, "$(shell " + command + ")", None)
+
+ def variable_string(self, name):
+ """Return a string to refer to a variable with the given name.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> MakeMacroWriter(s).variable_string("foo")
+ '$(foo)'
+ """
+ return "$(" + name + ")"
+
+ def set_variable(self, name, value):
+ """Write out a statement setting a variable to some value.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> MakeMacroWriter(s).set_variable("foo", "bar")
+ >>> s.getvalue()
+ u'foo := bar\\n'
+ """
+ # Note that ":=" is used so that we can control the behavior for
+ # both Makefile and CMake variables similarly.
+ self.write_line(name + " := " + value)
+
+ def start_ifeq(self, left, right):
+ """Write out a statement to start a conditional block.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> MakeMacroWriter(s).start_ifeq("foo", "bar")
+ >>> s.getvalue()
+ u'ifeq (foo,bar)\\n'
+ """
+ self.write_line("ifeq (" + left + "," + right + ")")
+ self.indent_right()
+
+ def end_ifeq(self):
+ """Write out a statement to end a block started with start_ifeq.
+
+ >>> import io
+ >>> s = io.StringIO()
+ >>> writer = MakeMacroWriter(s)
+ >>> writer.start_ifeq("foo", "bar")
+ >>> writer.set_variable("foo2", "bar2")
+ >>> writer.end_ifeq()
+ >>> s.getvalue()
+ u'ifeq (foo,bar)\\n foo2 := bar2\\nendif\\n'
+ """
+ self.indent_left()
+ self.write_line("endif")
diff --git a/utils/python/CIME/BuildTools/possiblevalues.py b/utils/python/CIME/BuildTools/possiblevalues.py
new file mode 100644
index 00000000000..a4073922fee
--- /dev/null
+++ b/utils/python/CIME/BuildTools/possiblevalues.py
@@ -0,0 +1,139 @@
+from CIME.XML.standard_module_setup import *
+from CIME.BuildTools.macroconditiontree import MacroConditionTree
+
+logger = logging.getLogger(__name__)
+
+class PossibleValues(object):
+
+ """Holds a list of settings for a single "Macros" variable.
+
+ This helper class takes in variable settings and, for each one, decides
+ whether to throw it out, add it to the list of values, or replace the
+ existing list of values with the new, more specific setting.
+
+ This class also performs ambiguity checking; if it is possible at build
+ time for more than one setting to match the same variable, this is
+ considered an error.
+
+ Public attributes:
+ name - The name of the variable.
+ settings - The current list of possible initial settings for the
+ variable.
+ append_settings - A dictionary of lists of possible appending settings
+ for the variable, with the specificity of each list
+ as the associated dictionary key.
+ depends - The current list of variables that this variable depends on
+ to get its value.
+
+ Public methods:
+ add_setting
+ ambiguity_check
+ to_cond_trees
+ """
+
+ def __init__(self, name, setting, specificity, depends):
+ """Construct a PossibleValues object.
+
+ The name argument refers to the name of the variable. The other
+ arguments are the same as for append_match.
+ """
+ self.name = name
+ self.depends = depends
+ # If this is an appending setting, its specificity can't cause it
+ # to overwrite other settings, but we want to keep track of it.
+ if setting.do_append:
+ self.settings = []
+ self.append_settings = {specificity: [setting]}
+ self._specificity = 0
+ else:
+ self.settings = [setting]
+ self.append_settings = {}
+ self._specificity = specificity
+
+ def add_setting(self, setting, specificity, depends):
+ """Add a possible value for a variable.
+
+ Arguments:
+ setting - A ValueSetting to start the list.
+ specificity - An integer representing how specific the setting is.
+ Only the initial settings with the highest
+ specificity and appending settings with at least that
+ specificity will actually be kept in the list. The
+ lowest allowed specificity is 0.
+ depends - A set of variable names, specifying the variables that
+ have to be set before this setting can be used (e.g. if
+ SLIBS refers to NETCDF_PATH, then NETCDF_PATH has to be
+ set first).
+
+ >>> a = ValueSetting('foo', False, dict(), [], [])
+ >>> b = ValueSetting('bar', False, dict(), [], [])
+ >>> vals = PossibleValues('var', a, 0, {'dep1'})
+ >>> vals.add_setting(b, 1, {'dep2'})
+ >>> a not in vals.settings and b in vals.settings
+ True
+ >>> 'dep1' not in vals.depends and 'dep2' in vals.depends
+ True
+ >>> vals.add_setting(a, 1, {'dep1'})
+ >>> a in vals.settings and b in vals.settings
+ True
+ >>> 'dep1' in vals.depends and 'dep2' in vals.depends
+ True
+ """
+ if setting.do_append:
+ # Appending settings with at least the current level of
+ # specificity should be kept.
+ if specificity >= self._specificity:
+ if specificity not in self.append_settings:
+ self.append_settings[specificity] = []
+ self.append_settings[specificity].append(setting)
+ self.depends |= depends
+ else:
+ # Add equally specific settings to the list.
+ if specificity == self._specificity:
+ self.settings.append(setting)
+ self.depends |= depends
+ # Replace the list if the setting is more specific.
+ elif specificity > self._specificity:
+ self.settings = [setting]
+ self._specificity = specificity
+ self.depends = depends
+ # Do nothing if the setting is less specific.
+
+ def ambiguity_check(self):
+ """Check the current list of settings for ambiguity.
+
+ This function raises an error if an ambiguity is found.
+ """
+ for i in range(len(self.settings)-1):
+ for other in self.settings[i+1:]:
+ expect(not self.settings[i].is_ambiguous_with(other),
+ "Variable "+self.name+" is set ambiguously in "
+ "config_build.xml. Check the file for these "
+ "conflicting settings: \n1: {}\n2: {}".format(
+ self.settings[i].conditions, other.conditions))
+
+ def to_cond_trees(self):
+ """Convert this object to a pair of MacroConditionTree objects.
+
+ This represents the step where the list of possible values is
+ frozen and we're ready to convert it into an actual text file. This
+ object is checked for ambiguities before conversion.
+
+ The return value is a tuple of two trees. The first contains all
+ initial settings, and the second contains all appending settings.
+ If either would be empty, None is returned instead.
+ """
+ self.ambiguity_check()
+ if self.settings:
+ normal_tree = MacroConditionTree(self.name, self.settings)
+ else:
+ normal_tree = None
+ append_settings = []
+ for specificity in self.append_settings:
+ if specificity >= self._specificity:
+ append_settings += self.append_settings[specificity]
+ if append_settings:
+ append_tree = MacroConditionTree(self.name, append_settings)
+ else:
+ append_tree = None
+ return (normal_tree, append_tree)
diff --git a/utils/python/CIME/BuildTools/valuesetting.py b/utils/python/CIME/BuildTools/valuesetting.py
new file mode 100644
index 00000000000..13f8ce9318d
--- /dev/null
+++ b/utils/python/CIME/BuildTools/valuesetting.py
@@ -0,0 +1,107 @@
+from CIME.XML.standard_module_setup import *
+
+logger = logging.getLogger(__name__)
+
+class ValueSetting(object):
+
+ """Holds data about how a value can be assigned to a variable.
+
+ Note that this class doesn't know or care *which* variable might be
+ assigned in this way, only that there is a procedure to perform that
+ operation
+
+ Public attributes:
+ value - The actual value that will be set.
+ do_append - Boolean describing whether the value should be
+ appended to the existing value of the variable rather
+ than overwriting other settings.
+ conditions - Dictionary containing the set of values that different
+ variables have to have to use this setting (e.g.
+ DEBUG="TRUE" might be a condition on a debug flag).
+ set_up - List of any commands that have to be executed in the build
+ system before this setting can occur.
+ tear_down - List of any commands that should be executed to clean up
+ after setting the variable.
+
+ Public methods:
+ is_ambiguous_with
+ """
+
+ def __init__(self, value, do_append, conditions, set_up, tear_down): # pylint: disable=too-many-arguments
+ """Create a ValueSetting object by specifying all its data."""
+ self.value = value
+ self.do_append = do_append
+ self.conditions = conditions
+ self.set_up = set_up
+ self.tear_down = tear_down
+
+ def is_ambiguous_with(self, other):
+ """Check to see if this setting conflicts with another one.
+
+ The purpose of this routine is to see if two settings can coexist
+ in the same Macros file, or if doing so would raise an ambiguity
+ about which one should be preferred over the other. Note that this
+ is a symmetric relation (this function returns the same value if
+ self and other are swapped).
+
+ The rules to determine this are as follows:
+
+ 1) If one or both settings are appending to the value, there's no
+ ambiguity, because both can cooperate to set the value.
+
+ >>> a = ValueSetting('foo', True, dict(), [], [])
+ >>> b = ValueSetting('bar', False, dict(), [], [])
+ >>> a.is_ambiguous_with(b)
+ False
+ >>> b.is_ambiguous_with(a)
+ False
+
+ 2) If the two settings have conflicting conditions, then there
+ is no ambiguity because they can't both apply to the same
+ build.
+
+ >>> a = ValueSetting('foo', False, {"DEBUG": "TRUE"}, [], [])
+ >>> b = ValueSetting('bar', False, {"DEBUG": "FALSE"}, [], [])
+ >>> a.is_ambiguous_with(b)
+ False
+
+ 3) If one setting is strictly more specific than the other, then
+ there's no ambiguity, because we prefer the more specific
+ setting whenever both apply to a build.
+
+ >>> a = ValueSetting('foo', False, {"DEBUG": "TRUE"}, [], [])
+ >>> b = ValueSetting('bar', False, {"DEBUG": "TRUE", "MPILIB": "mpich2"}, [], [])
+ >>> a.is_ambiguous_with(b)
+ False
+ >>> b.is_ambiguous_with(a)
+ False
+
+ 4) All other cases are considered ambiguous.
+
+ >>> a = ValueSetting('foo', False, dict(), [], [])
+ >>> b = ValueSetting('bar', False, dict(), [], [])
+ >>> a.is_ambiguous_with(b)
+ True
+ >>> a = ValueSetting('foo', False, {"DEBUG": "TRUE"}, [], [])
+ >>> b = ValueSetting('bar', False, {"MPILIB": "mpich2"}, [], [])
+ >>> a.is_ambiguous_with(b)
+ True
+ """
+ # Append check.
+ if self.do_append or other.do_append:
+ return False
+ # Consistency check.
+ for var_name in self.conditions:
+ if var_name not in other.conditions:
+ continue
+ if self.conditions[var_name] != other.conditions[var_name]:
+ return False
+ # Specificity check.
+ # One setting being more specific than the other is equivalent to
+ # its set of conditions being a proper superset of the others.
+ self_set = set(self.conditions.keys())
+ other_set = set(other.conditions.keys())
+ if self_set < other_set or self_set > other_set:
+ return False
+ # Any situation we couldn't resolve is ambiguous.
+ return True
diff --git a/utils/python/CIME/XML/build.py b/utils/python/CIME/XML/build.py
deleted file mode 100644
index 438440ef364..00000000000
--- a/utils/python/CIME/XML/build.py
+++ /dev/null
@@ -1,756 +0,0 @@
-"""
-Classes used to build the CIME Macros file.
-
-The main "public" class here is Build. It is initialized with machine-specific
-information, and its write_macros method is the driver for translating the
-config_build.xml file into a Makefile or CMake-format Macros file.
-
-For developers, here's the role of the other classes in the process:
-
-- A CompilerBlock is responsible for translating the XML code in a
- tag into Python data structures.
-
-- A PossibleValues object keeps track of all the settings that could affect a
- particular variable, and is the main way that these settings are stored.
-
-- A MacroConditionTree is the structure that is responsible for writing out the
- settings. While the PossibleValues objects are organized by variable name, the
- MacroConditionTree is organized by conditional blocks, and thus roughly
- plays the role of a syntax tree corresponding to the Makefile/CMake output.
-
-In more detail:
-
-- Build.write_macros immediately creates a MakeMacroWriter or CMakeMacroWriter
- to translate strings for the build system.
-
-- It also creates value_lists, a dictionary of PossibleValues objects, with
- variable names as the keys. Each variable has a single PossibleValues object
- associated with it.
-
-- For each element, Build.write_macros creates a CompilerBlock
- instance. This object is responsible for translating the XML in its block, in
- order to populate the PossibleValues instances. This includes handling the
- // tags, and keeping track of dependencies induced by one
- variable referencing another's value.
-
-- The PossibleValues object holds the information about how one variable can be
- set, based on various build options. It has two main roles:
- 1. As we iterate through the XML input file, each setting is added to the
- relevant PossibleValues object. The PossibleValues object contains lists
- of settings sorted by how machine-specific those settings are.
- 2. The PossibleValues object iterates through the list of settings to check
- for ambiguities. E.g. if there is a setting for DEBUG=TRUE, and another
- setting for MPILIB=mpi-serial, it is ambiguous in the case where both
- conditions hold.
-
-- A ValueSetting object is a simple struct that a setting from the XML file is
- translated to. The lists in the PossibleValues class contain these objects.
-
-- Once the XML has all been read in and the PossibleValues objects are
- populated, the dependencies among variables are checked in Build.write_macros.
- For each variable, if all its dependencies have been handled, it is converted
- to a MacroConditionTree merged with all other trees for variables that are
- ready, and written out. Then we loop through the variable list again to check
- for variables whose dependencies are all handled.
-
-- The MacroConditionTree acts as a primitive syntax tree. Its __init__ method
- reorganizes the data into conditional blocks, and its write_out method writes
- uses the MakeMacroWriter/CMakeMacroWrite object to write to the Macros file.
- MacroConditionTree objects can be merged to reduce the length of the output.
-"""
-
-# These don't seem to be particularly useful checks.
-# pylint: disable=invalid-name,too-few-public-methods,unused-wildcard-import
-# pylint: disable=wildcard-import
-
-from CIME.macros_writers import *
-from CIME.utils import get_cime_root
-from CIME.XML.machines import Machines # pylint: disable=unused-import
-from CIME.XML.standard_module_setup import *
-
-__all__ = ["Build"]
-
-logger = logging.getLogger(__name__)
-
-class ValueSetting(object):
-
- """Holds data about how a value can be assigned to a variable.
-
- Note that this class doesn't know or care *which* variable might be
- assigned in this way, only that there is a procedure to perform that
- operation
-
- Public attributes:
- value - The actual value that will be set.
- do_append - Boolean describing whether the value should be
- appended to the existing value of the variable rather
- than overwriting other settings.
- conditions - Dictionary containing the set of values that different
- variables have to have to use this setting (e.g.
- DEBUG="TRUE" might be a condition on a debug flag).
- set_up - List of any commands that have to be executed in the build
- system before this setting can occur.
- tear_down - List of any commands that should be executed to clean up
- after setting the variable.
-
- Public methods:
- is_ambiguous_with
- """
-
- def __init__(self, value, do_append, conditions, set_up, tear_down): # pylint: disable=too-many-arguments
- """Create a ValueSetting object by specifying all its data."""
- self.value = value
- self.do_append = do_append
- self.conditions = conditions
- self.set_up = set_up
- self.tear_down = tear_down
-
- def is_ambiguous_with(self, other):
- """Check to see if this setting conflicts with another one.
-
- The purpose of this routine is to see if two settings can coexist
- in the same Macros file, or if doing so would raise an ambiguity
- about which one should be preferred over the other. Note that this
- is a symmetric relation (this function returns the same value if
- self and other are swapped).
-
- The rules to determine this are as follows:
-
- 1) If one or both settings are appending to the value, there's no
- ambiguity, because both can cooperate to set the value.
-
- >>> a = ValueSetting('foo', True, dict(), [], [])
- >>> b = ValueSetting('bar', False, dict(), [], [])
- >>> a.is_ambiguous_with(b)
- False
- >>> b.is_ambiguous_with(a)
- False
-
- 2) If the two settings have conflicting conditions, then there
- is no ambiguity because they can't both apply to the same
- build.
-
- >>> a = ValueSetting('foo', False, {"DEBUG": "TRUE"}, [], [])
- >>> b = ValueSetting('bar', False, {"DEBUG": "FALSE"}, [], [])
- >>> a.is_ambiguous_with(b)
- False
-
- 3) If one setting is strictly more specific than the other, then
- there's no ambiguity, because we prefer the more specific
- setting whenever both apply to a build.
-
- >>> a = ValueSetting('foo', False, {"DEBUG": "TRUE"}, [], [])
- >>> b = ValueSetting('bar', False, {"DEBUG": "TRUE", "MPILIB": "mpich2"}, [], [])
- >>> a.is_ambiguous_with(b)
- False
- >>> b.is_ambiguous_with(a)
- False
-
- 4) All other cases are considered ambiguous.
-
- >>> a = ValueSetting('foo', False, dict(), [], [])
- >>> b = ValueSetting('bar', False, dict(), [], [])
- >>> a.is_ambiguous_with(b)
- True
- >>> a = ValueSetting('foo', False, {"DEBUG": "TRUE"}, [], [])
- >>> b = ValueSetting('bar', False, {"MPILIB": "mpich2"}, [], [])
- >>> a.is_ambiguous_with(b)
- True
- """
- # Append check.
- if self.do_append or other.do_append:
- return False
- # Consistency check.
- for var_name in self.conditions:
- if var_name not in other.conditions:
- continue
- if self.conditions[var_name] != other.conditions[var_name]:
- return False
- # Specificity check.
- # One setting being more specific than the other is equivalent to
- # its set of conditions being a proper superset of the others.
- self_set = set(self.conditions.keys())
- other_set = set(other.conditions.keys())
- if self_set < other_set or self_set > other_set:
- return False
- # Any situation we couldn't resolve is ambiguous.
- return True
-
-
-class PossibleValues(object):
-
- """Holds a list of settings for a single "Macros" variable.
-
- This helper class takes in variable settings and, for each one, decides
- whether to throw it out, add it to the list of values, or replace the
- existing list of values with the new, more specific setting.
-
- This class also performs ambiguity checking; if it is possible at build
- time for more than one setting to match the same variable, this is
- considered an error.
-
- Public attributes:
- name - The name of the variable.
- settings - The current list of possible initial settings for the
- variable.
- append_settings - A dictionary of lists of possible appending settings
- for the variable, with the specificity of each list
- as the associated dictionary key.
- depends - The current list of variables that this variable depends on
- to get its value.
-
- Public methods:
- add_setting
- ambiguity_check
- to_cond_trees
- """
-
- def __init__(self, name, setting, specificity, depends):
- """Construct a PossibleValues object.
-
- The name argument refers to the name of the variable. The other
- arguments are the same as for append_match.
- """
- self.name = name
- self.depends = depends
- # If this is an appending setting, its specificity can't cause it
- # to overwrite other settings, but we want to keep track of it.
- if setting.do_append:
- self.settings = []
- self.append_settings = {specificity: [setting]}
- self._specificity = 0
- else:
- self.settings = [setting]
- self.append_settings = {}
- self._specificity = specificity
-
- def add_setting(self, setting, specificity, depends):
- """Add a possible value for a variable.
-
- Arguments:
- setting - A ValueSetting to start the list.
- specificity - An integer representing how specific the setting is.
- Only the initial settings with the highest
- specificity and appending settings with at least that
- specificity will actually be kept in the list. The
- lowest allowed specificity is 0.
- depends - A set of variable names, specifying the variables that
- have to be set before this setting can be used (e.g. if
- SLIBS refers to NETCDF_PATH, then NETCDF_PATH has to be
- set first).
-
- >>> a = ValueSetting('foo', False, dict(), [], [])
- >>> b = ValueSetting('bar', False, dict(), [], [])
- >>> vals = PossibleValues('var', a, 0, {'dep1'})
- >>> vals.add_setting(b, 1, {'dep2'})
- >>> a not in vals.settings and b in vals.settings
- True
- >>> 'dep1' not in vals.depends and 'dep2' in vals.depends
- True
- >>> vals.add_setting(a, 1, {'dep1'})
- >>> a in vals.settings and b in vals.settings
- True
- >>> 'dep1' in vals.depends and 'dep2' in vals.depends
- True
- """
- if setting.do_append:
- # Appending settings with at least the current level of
- # specificity should be kept.
- if specificity >= self._specificity:
- if specificity not in self.append_settings:
- self.append_settings[specificity] = []
- self.append_settings[specificity].append(setting)
- self.depends |= depends
- else:
- # Add equally specific settings to the list.
- if specificity == self._specificity:
- self.settings.append(setting)
- self.depends |= depends
- # Replace the list if the setting is more specific.
- elif specificity > self._specificity:
- self.settings = [setting]
- self._specificity = specificity
- self.depends = depends
- # Do nothing if the setting is less specific.
-
- def ambiguity_check(self):
- """Check the current list of settings for ambiguity.
-
- This function raises an error if an ambiguity is found.
- """
- for i in range(len(self.settings)-1):
- for other in self.settings[i+1:]:
- expect(not self.settings[i].is_ambiguous_with(other),
- "Variable "+self.name+" is set ambiguously in "
- "config_build.xml. Check the file for these "
- "conflicting settings: \n1: {}\n2: {}".format(
- self.settings[i].conditions, other.conditions))
-
- def to_cond_trees(self):
- """Convert this object to a pair of MacroConditionTree objects.
-
- This represents the step where the list of possible values is
- frozen and we're ready to convert it into an actual text file. This
- object is checked for ambiguities before conversion.
-
- The return value is a tuple of two trees. The first contains all
- initial settings, and the second contains all appending settings.
- If either would be empty, None is returned instead.
- """
- self.ambiguity_check()
- if self.settings:
- normal_tree = MacroConditionTree(self.name, self.settings)
- else:
- normal_tree = None
- append_settings = []
- for specificity in self.append_settings:
- if specificity >= self._specificity:
- append_settings += self.append_settings[specificity]
- if append_settings:
- append_tree = MacroConditionTree(self.name, append_settings)
- else:
- append_tree = None
- return (normal_tree, append_tree)
-
-
-class MacroConditionTree(object): # pylint: disable=too-many-instance-attributes
-
- """Tree containing the various possible settings of a specific macro.
-
- Unlike the PossibleValues class, this class assumes that we have
- finished determining which settings could apply on a given machine. It
- also sorts the settings based on the conditions under which they take
- effect, in preparation for writing out the Macros file itself.
-
- Public methods:
- merge
- write_out
- """
-
- def __init__(self, name, settings):
- """Create a MacroConditionTree recursively.
-
- Arguments:
- name - Name of the variable.
- settings - A list of all settings for this variable.
- """
- # Search for any conditions controlling the number of settings.
- condition = None
- # Prefer the COMPILER attribute as the top level attribute, for
- # readability of the merged file.
- if any("COMPILER" in setting.conditions for setting in settings):
- condition = "COMPILER"
- else:
- # To make merging more effective, sort the conditions.
- all_conditions = []
- for setting in settings:
- all_conditions += setting.conditions.keys()
- if all_conditions:
- condition = sorted(all_conditions)[0]
- if condition is None:
- # If there are no conditions, we have reached a leaf.
- # We combine whatever settings are left; there should be at
- # most one non-appending setting, or an arbitrary number of
- # appending settings.
- self._is_leaf = True
- self._assignments = []
- self._set_up = []
- self._tear_down = []
- self._do_append = True
- for setting in settings:
- if not setting.do_append:
- self._do_append = False
- assert len(settings) == 1, \
- "Internal error in macros: An ambiguity was " \
- "found after the ambiguity check was complete, " \
- "or there is a mixture of appending and initial " \
- "settings in the condition tree."
- self._assignments.append((name, setting.value))
- self._set_up += setting.set_up
- self._tear_down += setting.tear_down
- else:
- # If a condition was found, partition the settings depending on
- # how they use it, and recursively create a tree for each
- # partition.
- self._is_leaf = False
- self._condition = condition
- partition = dict()
- for setting in settings:
- # If some of the settings don't use a condition, we use
- # None to represent that.
- cond_val = setting.conditions.pop(condition, None)
- if cond_val in partition:
- partition[cond_val].append(setting)
- else:
- partition[cond_val] = [setting]
- branches = dict()
- for cond_val in partition:
- branches[cond_val] = \
- MacroConditionTree(name, partition[cond_val])
- self._branches = branches
-
- # pylint shouldn't concern itself with the way that we access other, since
- # it's actually a member of the same class.
- # pylint:disable=protected-access
- def merge(self, other):
- """Merge another tree with this one.
-
- This should be considered destructive to both trees. The only valid
- value is the one that's returned.
- """
- if self._is_leaf:
- if other._is_leaf:
- assert self._do_append == other._do_append, \
- "Internal error in macros: Tried to merge an " \
- "appending tree with a tree containing initial "\
- "settings."
- # If both are leaves, just merge the values.
- self._assignments += other._assignments
- self._set_up += other._set_up
- self._tear_down += other._tear_down
- return self
- else:
- # If other is not a leaf, swap the arguments so that self
- # is the one that's not a leaf, handled below.
- return other.merge(self)
- else:
- # If self is not a leaf but other is, it should go in
- # self._branches[None]. The same goes for the case where the
- # conditions don't match, and self._condition is last
- # alphabetically.
- if other._is_leaf or self._condition > other._condition:
- if None in self._branches:
- self._branches[None] = self._branches[None].merge(other)
- else:
- self._branches[None] = other
- return self
- else:
- # If the other condition comes last alphabetically, swap
- # the order.
- if self._condition < other._condition:
- return other.merge(self)
- # If neither is a leaf and their conditions match, merge
- # their sets of branches.
- for (cond_val, other_branch) in other._branches.items():
- if cond_val in self._branches:
- self._branches[cond_val] = \
- self._branches[cond_val].merge(other_branch)
- else:
- self._branches[cond_val] = other_branch
- return self
- # pylint:enable=protected-access
-
- def write_out(self, writer):
- """Write tree to file.
-
- The writer argument is an object inheriting from MacroWriterBase.
- This function first writes out all the initial settings with
- appropriate conditionals, then the appending settings.
- """
- if self._is_leaf:
- for line in self._set_up:
- writer.write_line(line)
- for (name, value) in self._assignments:
- if self._do_append:
- writer.append_variable(name, value)
- else:
- writer.set_variable(name, value)
- for line in self._tear_down:
- writer.write_line(line)
- else:
- condition = self._condition
- # Take care of the settings that don't use this condition.
- if None in self._branches:
- self._branches[None].write_out(writer)
- # Now all the if statements.
- for cond_val in self._branches:
- if cond_val is None:
- continue
- env_ref = writer.environment_variable_string(condition)
- writer.start_ifeq(env_ref, cond_val)
- self._branches[cond_val].write_out(writer)
- writer.end_ifeq()
-
-
-def _merge_optional_trees(tree, big_tree):
- """Merge two MacroConditionTrees when one or both objects may be `None`."""
- if tree is not None:
- if big_tree is None:
- return tree
- else:
- return big_tree.merge(tree)
- else:
- return big_tree
-
-
-class CompilerBlock(object):
-
- """Data used to translate a single element.
-
- This is used during write_macros to traverse the XML and create a list
- of settings specified in the element.
-
- Public methods:
- add_settings_to_lists
- matches_machine
- """
-
- def __init__(self, writer, compiler_elem, machobj):
- """Construct a CompilerBlock.
-
- Arguments:
- writer - The Makefile/CMake writer object.
- compiler_elem - An xml.ElementTree.Element corresponding to this
- element.
- machobj - Machines object for this machine.
- """
- self._writer = writer
- self._compiler_elem = compiler_elem
- self._machobj = machobj
- # If there's no COMPILER attribute, self._compiler is None.
- self._compiler = compiler_elem.get("COMPILER")
- self._specificity = 0
-
- def _handle_references(self, elem, set_up, tear_down, depends):
- """Expand markup used internally.
-
- This function is responsible for expanding , , and
- tags into Makefile/CMake syntax.
-
- Arguments:
- elem - An ElementTree.Element containing text to expand.
- set_up - A list to add any preparation commands to.
- tear_down - A list to add any cleanup commands to.
- depends - A set of variables that need to be set before this one.
-
- Note that while the return value of this function is the expanded
- text, the set_up, tear_down, and depends variables are also
- modified and thus serve as additional outputs.
- """
- writer = self._writer
- output = elem.text
- if output is None:
- output = ""
- for child in elem:
- if child.tag == "env":
- # tags just need to be expanded by the writer.
- output += writer.environment_variable_string(child.text)
- elif child.tag == "shell":
- # tags can contain other tags, so handle those.
- command = self._handle_references(child, set_up, tear_down,
- depends)
- new_set_up, inline, new_tear_down = \
- writer.shell_command_strings(command)
- output += inline
- if new_set_up is not None:
- set_up.append(new_set_up)
- if new_tear_down is not None:
- tear_down.append(new_tear_down)
- elif child.tag == "var":
- # commands also need expansion by the writer, and can
- # add dependencies.
- var_name = child.text
- output += writer.variable_string(var_name)
- depends.add(var_name)
- else:
- expect(False,
- "Unexpected tag "+child.tag+" encountered in "
- "config_build.xml. Check that the file is valid "
- "according to the schema.")
- if child.tail is not None:
- output += child.tail
- return output
-
- def _elem_to_setting(self, elem):
- """Take an element and convert it to a ValueSetting.
-
- Arguments:
- elem - An ElementTree.Element with data to add.
-
- This function returns a tuple containing a ValueSetting
- corresponding to the element, along with a set of names of
- variables that this setting depends on.
- """
- # Attributes on an element are the conditions on that element.
- conditions = dict(elem.items())
- if self._compiler is not None:
- conditions["COMPILER"] = self._compiler
- # Deal with internal markup.
- set_up = []
- tear_down = []
- depends = set()
- value_text = self._handle_references(elem, set_up,
- tear_down, depends)
- # Create the setting object.
- setting = ValueSetting(value_text, elem.tag == "append",
- conditions, set_up, tear_down)
- return (setting, depends)
-
- def _add_elem_to_lists(self, name, elem, value_lists):
- """Add an element's data to an appropriate list of value settings.
-
- Arguments:
- name - The name of the variable being set by this element.
- elem - The element to translate into a ValueSetting.
- value_lists - A dictionary of PossibleValues, containing the lists
- of all settings for each variable.
- """
- # Skip this if the element's MPILIB is not valid.
- if "MPILIB" in elem.keys() and \
- not self._machobj.is_valid_MPIlib(elem.get("MPILIB")):
- return
- setting, depends = self._elem_to_setting(elem)
- if name not in value_lists:
- value_lists[name] = PossibleValues(name, setting,
- self._specificity, depends)
- else:
- value_lists[name].add_setting(setting, self._specificity,
- depends)
-
- def add_settings_to_lists(self, flag_vars, value_lists):
- """Add all data in the element to lists of settings.
-
- Arguments:
- flag_vars - A set of variables containing "flag-like" data.
- value_lists - A dictionary of PossibleValues, containing the lists
- of all settings for each variable.
- """
- for elem in self._compiler_elem:
- # Deal with "flag"-type variables.
- if elem.tag in flag_vars:
- for child in elem:
- self._add_elem_to_lists(elem.tag, child, value_lists)
- else:
- self._add_elem_to_lists(elem.tag, elem, value_lists)
-
- def matches_machine(self):
- """Check whether this block matches a machine/os.
-
- This also sets the specificity of the block, so this must be called
- before add_settings_to_lists if machine-specific output is needed.
- """
- self._specificity = 0
- if "MACH" in self._compiler_elem.keys():
- if self._machobj.get_machine_name() == \
- self._compiler_elem.get("MACH"):
- self._specificity += 2
- else:
- return False
- if "OS" in self._compiler_elem.keys():
- if self._machobj.get_value("OS") == self._compiler_elem.get("OS"):
- self._specificity += 1
- else:
- return False
- # Check if the compiler is valid on this machine.
- if self._compiler is not None:
- return self._machobj.is_valid_compiler(self._compiler)
- else:
- return True
-
-
-class Build(object):
-
- """Class to convert config_build.xml input into a macros file.
-
- Public attributes:
- os - Operating system used in config_build lookup and ranking.
- machobj - Machines object used in config_build lookup.
- flag_vars - A set of all variables in config_build that contain "flag-
- like" data (i.e. a space-separated list of arguments).
-
- Public methods:
- write_macros
- """
-
- def __init__(self, machobj, schema_path=None):
- """Construct a Build given machine-specific information.
-
- In the process some information about possible variables is read in
- from the schema file.
-
- Arguments:
- machobj - A Machines object for this machine.
- schema_path (optional) - Path to config_build.xsd within CIME.
-
- >>> "CFLAGS" in Build('MyMach').flag_vars
- True
- >>> "MPICC" in Build('MyMach').flag_vars
- False
- """
- self.machobj = machobj
-
- # The schema is used to figure out which variables contain
- # command-line arguments (e.g. compiler flags), since these are
- # processed in a more complex manner than other variables.
- if schema_path is None:
- schema_path = os.path.join(get_cime_root(), "cime_config",
- "xml_schemas", "config_build.xsd")
-
- # Run an XPath query to extract the list of flag variable names.
- ns = {"xs": "http://www.w3.org/2001/XMLSchema"}
- flag_xpath = ".//xs:group[@name='compilerVars']/xs:choice/xs:element[@type='flagsVar']"
- flag_elems = ET.parse(schema_path).getroot().findall(flag_xpath, ns)
- self.flag_vars = set(elem.get('name') for elem in flag_elems)
-
- def write_macros(self, build_system, xml_file, output):
- """Write a Macros file for this machine.
-
- Arguments:
- build_system - Format of the file to be written. Currently the only
- valid values are "Makefile" and "CMake".
- xml_file - File name or file object containing the config_build
- specification of machine-specific settings.
- output - Text I/O object (inheriting from io.TextIOBase) that
- output should be written to. Typically, this will be the
- Macros file, opened for writing.
- """
- # Set up writer for this build system.
- if build_system == "Makefile":
- writer = MakeMacroWriter(output)
- elif build_system == "CMake":
- writer = CMakeMacroWriter(output)
- else:
- expect(False,
- "Unrecognized build system provided to write_macros: " +
- build_system)
-
- # Start processing the file.
- value_lists = dict()
- for compiler_elem in ET.parse(xml_file).findall("compiler"):
- block = CompilerBlock(writer, compiler_elem, self.machobj)
- # If this block matches machine settings, use it.
- if block.matches_machine():
- block.add_settings_to_lists(self.flag_vars, value_lists)
-
- # Now that we've scanned through the input, output the variable
- # settings.
- vars_written = set()
- while value_lists:
- # Variables that are ready to be written.
- ready_variables = [
- var_name for var_name in value_lists.keys()
- if value_lists[var_name].depends <= vars_written
- ]
- expect(len(ready_variables) > 0,
- "The config_build XML has bad references. "
- "Check for circular references or variables that "
- "are in a tag but not actually defined.")
- big_normal_tree = None
- big_append_tree = None
- for var_name in ready_variables:
- # Note that we're writing this variable.
- vars_written.add(var_name)
- # Make the conditional trees and write them out.
- normal_tree, append_tree = \
- value_lists[var_name].to_cond_trees()
- big_normal_tree = _merge_optional_trees(normal_tree,
- big_normal_tree)
- big_append_tree = _merge_optional_trees(append_tree,
- big_append_tree)
- # Remove this variable from the list of variables to handle
- # next iteration.
- del value_lists[var_name]
- if big_normal_tree is not None:
- big_normal_tree.write_out(writer)
- if big_append_tree is not None:
- big_append_tree.write_out(writer)
diff --git a/utils/python/CIME/XML/compilerblock.py b/utils/python/CIME/XML/compilerblock.py
new file mode 100644
index 00000000000..ee27a154f75
--- /dev/null
+++ b/utils/python/CIME/XML/compilerblock.py
@@ -0,0 +1,232 @@
+"""
+Classes used to build the CIME Macros file.
+
+The main "public" class here is Build. It is initialized with machine-specific
+information, and its write_macros method is the driver for translating the
+config_build.xml file into a Makefile or CMake-format Macros file.
+
+For developers, here's the role of the other classes in the process:
+
+- A CompilerBlock is responsible for translating the XML code in a
+ tag into Python data structures.
+
+- A PossibleValues object keeps track of all the settings that could affect a
+ particular variable, and is the main way that these settings are stored.
+
+- A MacroConditionTree is the structure that is responsible for writing out the
+ settings. While the PossibleValues objects are organized by variable name, the
+ MacroConditionTree is organized by conditional blocks, and thus roughly
+ plays the role of a syntax tree corresponding to the Makefile/CMake output.
+
+In more detail:
+
+- Build.write_macros immediately creates a MakeMacroWriter or CMakeMacroWriter
+ to translate strings for the build system.
+
+- It also creates value_lists, a dictionary of PossibleValues objects, with
+ variable names as the keys. Each variable has a single PossibleValues object
+ associated with it.
+
+- For each element, Build.write_macros creates a CompilerBlock
+ instance. This object is responsible for translating the XML in its block, in
+ order to populate the PossibleValues instances. This includes handling the
+ // tags, and keeping track of dependencies induced by one
+ variable referencing another's value.
+
+- The PossibleValues object holds the information about how one variable can be
+ set, based on various build options. It has two main roles:
+ 1. As we iterate through the XML input file, each setting is added to the
+ relevant PossibleValues object. The PossibleValues object contains lists
+ of settings sorted by how machine-specific those settings are.
+ 2. The PossibleValues object iterates through the list of settings to check
+ for ambiguities. E.g. if there is a setting for DEBUG=TRUE, and another
+ setting for MPILIB=mpi-serial, it is ambiguous in the case where both
+ conditions hold.
+
+- A ValueSetting object is a simple struct that a setting from the XML file is
+ translated to. The lists in the PossibleValues class contain these objects.
+
+- Once the XML has all been read in and the PossibleValues objects are
+ populated, the dependencies among variables are checked in Build.write_macros.
+ For each variable, if all its dependencies have been handled, it is converted
+ to a MacroConditionTree merged with all other trees for variables that are
+ ready, and written out. Then we loop through the variable list again to check
+ for variables whose dependencies are all handled.
+
+- The MacroConditionTree acts as a primitive syntax tree. Its __init__ method
+ reorganizes the data into conditional blocks, and its write_out method writes
+ uses the MakeMacroWriter/CMakeMacroWrite object to write to the Macros file.
+ MacroConditionTree objects can be merged to reduce the length of the output.
+"""
+
+# These don't seem to be particularly useful checks.
+# pylint: disable=invalid-name,too-few-public-methods,unused-wildcard-import
+# pylint: disable=wildcard-import
+
+from CIME.XML.standard_module_setup import *
+from CIME.BuildTools.valuesetting import ValueSetting
+from CIME.BuildTools.possiblevalues import PossibleValues
+
+class CompilerBlock(object):
+
+ """Data used to translate a single element.
+
+ This is used during write_macros to traverse the XML and create a list
+ of settings specified in the element.
+
+ Public methods:
+ add_settings_to_lists
+ matches_machine
+ """
+
+ def __init__(self, writer, compiler_elem, machobj):
+ """Construct a CompilerBlock.
+
+ Arguments:
+ writer - The Makefile/CMake writer object.
+ compiler_elem - An xml.ElementTree.Element corresponding to this
+ element.
+ machobj - Machines object for this machine.
+ """
+ self._writer = writer
+ self._compiler_elem = compiler_elem
+ self._machobj = machobj
+ # If there's no COMPILER attribute, self._compiler is None.
+ self._compiler = compiler_elem.get("COMPILER")
+ self._specificity = 0
+
+ def _handle_references(self, elem, set_up, tear_down, depends):
+ """Expand markup used internally.
+
+ This function is responsible for expanding , , and
+ tags into Makefile/CMake syntax.
+
+ Arguments:
+ elem - An ElementTree.Element containing text to expand.
+ set_up - A list to add any preparation commands to.
+ tear_down - A list to add any cleanup commands to.
+ depends - A set of variables that need to be set before this one.
+
+ Note that while the return value of this function is the expanded
+ text, the set_up, tear_down, and depends variables are also
+ modified and thus serve as additional outputs.
+ """
+ writer = self._writer
+ output = elem.text
+ if output is None:
+ output = ""
+ for child in elem:
+ if child.tag == "env":
+ # tags just need to be expanded by the writer.
+ output += writer.environment_variable_string(child.text)
+ elif child.tag == "shell":
+ # tags can contain other tags, so handle those.
+ command = self._handle_references(child, set_up, tear_down,
+ depends)
+ new_set_up, inline, new_tear_down = \
+ writer.shell_command_strings(command)
+ output += inline
+ if new_set_up is not None:
+ set_up.append(new_set_up)
+ if new_tear_down is not None:
+ tear_down.append(new_tear_down)
+ elif child.tag == "var":
+ # commands also need expansion by the writer, and can
+ # add dependencies.
+ var_name = child.text
+ output += writer.variable_string(var_name)
+ depends.add(var_name)
+ else:
+ expect(False,
+ "Unexpected tag "+child.tag+" encountered in "
+ "config_build.xml. Check that the file is valid "
+ "according to the schema.")
+ if child.tail is not None:
+ output += child.tail
+ return output
+
+ def _elem_to_setting(self, elem):
+ """Take an element and convert it to a ValueSetting.
+
+ Arguments:
+ elem - An ElementTree.Element with data to add.
+
+ This function returns a tuple containing a ValueSetting
+ corresponding to the element, along with a set of names of
+ variables that this setting depends on.
+ """
+ # Attributes on an element are the conditions on that element.
+ conditions = dict(elem.items())
+ if self._compiler is not None:
+ conditions["COMPILER"] = self._compiler
+ # Deal with internal markup.
+ set_up = []
+ tear_down = []
+ depends = set()
+ value_text = self._handle_references(elem, set_up,
+ tear_down, depends)
+ # Create the setting object.
+ setting = ValueSetting(value_text, elem.tag == "append",
+ conditions, set_up, tear_down)
+ return (setting, depends)
+
+ def _add_elem_to_lists(self, name, elem, value_lists):
+ """Add an element's data to an appropriate list of value settings.
+
+ Arguments:
+ name - The name of the variable being set by this element.
+ elem - The element to translate into a ValueSetting.
+ value_lists - A dictionary of PossibleValues, containing the lists
+ of all settings for each variable.
+ """
+ # Skip this if the element's MPILIB is not valid.
+ if "MPILIB" in elem.keys() and \
+ not self._machobj.is_valid_MPIlib(elem.get("MPILIB")):
+ return
+ setting, depends = self._elem_to_setting(elem)
+ if name not in value_lists:
+ value_lists[name] = PossibleValues(name, setting,
+ self._specificity, depends)
+ else:
+ value_lists[name].add_setting(setting, self._specificity,
+ depends)
+
+ def add_settings_to_lists(self, flag_vars, value_lists):
+ """Add all data in the element to lists of settings.
+
+ Arguments:
+ flag_vars - A set of variables containing "flag-like" data.
+ value_lists - A dictionary of PossibleValues, containing the lists
+ of all settings for each variable.
+ """
+ for elem in self._compiler_elem:
+ # Deal with "flag"-type variables.
+ if elem.tag in flag_vars:
+ for child in elem:
+ self._add_elem_to_lists(elem.tag, child, value_lists)
+ else:
+ self._add_elem_to_lists(elem.tag, elem, value_lists)
+
+ def matches_machine(self):
+ """Check whether this block matches a machine/os.
+
+ This also sets the specificity of the block, so this must be called
+ before add_settings_to_lists if machine-specific output is needed.
+ """
+ self._specificity = 0
+ if "MACH" in self._compiler_elem.keys():
+ if self._machobj.get_machine_name() == \
+ self._compiler_elem.get("MACH"):
+ self._specificity += 2
+ else:
+ return False
+ if "OS" in self._compiler_elem.keys():
+ if self._machobj.get_value("OS") == self._compiler_elem.get("OS"):
+ self._specificity += 1
+ else:
+ return False
+ # Check if the compiler is valid on this machine.
+ if self._compiler is not None:
+ return self._machobj.is_valid_compiler(self._compiler)
+ else:
+ return True
diff --git a/utils/python/CIME/XML/compilers.py b/utils/python/CIME/XML/compilers.py
index 68bd76f531d..19a603b1dd9 100644
--- a/utils/python/CIME/XML/compilers.py
+++ b/utils/python/CIME/XML/compilers.py
@@ -5,12 +5,17 @@
from CIME.XML.standard_module_setup import *
from CIME.XML.generic_xml import GenericXML
from CIME.XML.files import Files
+from CIME.XML.compilerblock import CompilerBlock
+from CIME.BuildTools.macrowriterbase import write_macros_file_v1
+from CIME.BuildTools.makemacroswriter import MakeMacroWriter
+from CIME.BuildTools.cmakemacroswriter import CMakeMacroWriter
+from CIME.BuildTools.macroconditiontree import merge_optional_trees
logger = logging.getLogger(__name__)
class Compilers(GenericXML):
- def __init__(self, compiler=None, machine=None, os_= None, mpilib=None, infile=None, files=None):
+ def __init__(self, machobj, infile=None, compiler=None, mpilib=None, files=None):
"""
initialize an object
"""
@@ -18,14 +23,22 @@ def __init__(self, compiler=None, machine=None, os_= None, mpilib=None, infile=N
if files is None:
files = Files()
infile = files.get_value("COMPILERS_SPEC_FILE")
+ schema = files.get_schema("COMPILERS_SPEC_FILE")
+
+ GenericXML.__init__(self, infile, schema)
+ self._machobj = machobj
+ self._version = self.get_version()
+
+ self.machine = machobj.get_machine_name()
+ self.os = machobj.get_value("OS")
+ if mpilib is None:
+ mpilib = machobj.get_default_MPIlib()
+ self.mpilib = mpilib
+ if compiler is None:
+ compiler = machobj.get_default_compiler()
+ self.compiler = compiler
- GenericXML.__init__(self, infile)
-
- self.machine = machine
- self.os = os_
- self.mpilib = mpilib
self.compiler_nodes = None # Listed from last to first
- self.compiler = compiler
#Append the contents of $HOME/.cime/config_compilers.xml if it exists
#This could cause problems if node matchs are repeated when only one is expected
infile = os.path.join(os.environ.get("HOME"),".cime","config_compilers.xml")
@@ -35,6 +48,14 @@ def __init__(self, compiler=None, machine=None, os_= None, mpilib=None, infile=N
if self.compiler is not None:
self.set_compiler(compiler)
+ if self._version != "1.0":
+ # Run an XPath query to extract the list of flag variable names.
+ ns = {"xs": "http://www.w3.org/2001/XMLSchema"}
+ flag_xpath = ".//xs:group[@name='compilerVars']/xs:choice/xs:element[@type='flagsVar']"
+ flag_elems = ET.parse(schema).getroot().findall(flag_xpath, ns)
+ self.flag_vars = set(elem.get('name') for elem in flag_elems)
+
+
def get_compiler(self):
"""
@@ -64,10 +85,10 @@ def _is_compatible(self, compiler_node, compiler, machine, os_, mpilib):
def set_compiler(self, compiler, machine=None, os_=None, mpilib=None):
"""
Sets the compiler block in the Compilers object
-
- >>> machobj = Compilers(machine="melvin")
- >>> machobj.set_compiler("gnu")
- >>> machobj.get_compiler()
+ >>> from CIME.XML.machines import Machines
+ >>> compobj = Compilers(Machines(machine="melvin"))
+ >>> compobj.set_compiler("gnu")
+ >>> compobj.get_compiler()
'gnu'
"""
machine = machine if machine else self.machine
@@ -112,123 +133,100 @@ def get_value(self, name, attribute=None, resolved=True, subgroup=None):
return value
- def write_macros_file(self, macros_file="Macros", output_format="make"):
- """
- Parse the config_compiler.xml file into a Macros file for the
- given machine and compiler.
- """
-
- # Parse the xml settings into the $macros hash structure
- # put conditional settings in the _COND_ portion of the hash
- # and handle them seperately
- macros = {"_COND_" : {}}
-
- # Do worst matches first
- for compiler_node in reversed(self.compiler_nodes):
- _add_to_macros(compiler_node, macros)
-
- # A few things can be used from environ if not in XML
- for item in ["MPI_PATH", "NETCDF_PATH"]:
- if not item in macros and item in os.environ:
- logger.warn("Setting %s from Environment" % item)
- macros[item] = os.environ[item]
-
- with open(macros_file, "w") as fd:
- fd.write(
-"""#
-# COMPILER=%s
-# OS=%s
-# MACH=%s
-""" % (self.compiler, self.os, self.machine)
-)
+ def write_macros_file(self, macros_file="Macros", output_format="make", xml=None):
+ if self._version == "1.0":
+ # Parse the xml settings into the $macros hash structure
+ # put conditional settings in the _COND_ portion of the hash
+ # and handle them seperately
+ macros = {"_COND_" : {}}
+
+ # Do worst matches first
+ for compiler_node in reversed(self.compiler_nodes):
+ _add_to_macros(compiler_node, macros)
+ write_macros_file_v1(macros, self.compiler, self.os,
+ self.machine, macros_file,
+ output_format)
+ else:
if output_format == "make":
- fd.write("#\n# Makefile Macros generated from %s \n#\n" % self.filename)
+ format_ = "Makefile"
+ elif output_format == "cmake":
+ format_ = "CMake"
+ else:
+ format_ = output_format
+
+ if isinstance(macros_file, basestring):
+ with open(macros_file, "w") as macros:
+ self._write_macros_file_v2(format_, macros)
+ else:
+ self._write_macros_file_v2(format_, macros_file, xml)
- # print the settings out to the Macros file
- for key, value in sorted(macros.iteritems()):
- if key == "_COND_":
- pass
- elif key.startswith("ADD_"):
- fd.write("%s+=%s\n\n" % (key[4:], value))
- else:
- fd.write("%s:=%s\n\n" % (key, value))
+ def _write_macros_file_v2(self, build_system, output, xml=None):
+ """Write a Macros file for this machine.
- elif output_format == "cmake":
- fd.write(
-'''#
-# cmake Macros generated from $compiler_file
-#
-include(Compilers)
-set(CMAKE_C_FLAGS_RELEASE "" CACHE STRING "Flags used by c compiler." FORCE)
-set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "Flags used by c compiler." FORCE)
-set(CMAKE_Fortran_FLAGS_RELEASE "" CACHE STRING "Flags used by Fortran compiler." FORCE)
-set(CMAKE_Fortran_FLAGS_DEBUG "" CACHE STRING "Flags used by Fortran compiler." FORCE)
-set(all_build_types "None Debug Release RelWithDebInfo MinSizeRel")
-set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Choose the type of build, options are: ${all_build_types}." FORCE)
-''')
-
- # print the settings out to the Macros file, do it in
- # two passes so that path values appear first in the
- # file.
- for key, value in sorted(macros.iteritems()):
- if key == "_COND_":
- pass
- else:
- value = value.replace("(", "{").replace(")", "}")
- if key.endswith("_PATH"):
- fd.write("set(%s %s)\n" % (key, value))
- fd.write("list(APPEND CMAKE_PREFIX_PATH %s)\n\n" % value)
-
- for key, value in sorted(macros.iteritems()):
- if key == "_COND_":
- pass
- else:
- value = value.replace("(", "{").replace(")", "}")
- if "CFLAGS" in key:
- fd.write("add_flags(CMAKE_C_FLAGS %s)\n\n" % value)
- elif "FFLAGS" in key:
- fd.write("add_flags(CMAKE_Fortran_FLAGS %s)\n\n" % value)
- elif "CPPDEFS" in key:
- fd.write("list(APPEND COMPILE_DEFINITIONS %s)\n\n" % value)
- elif "SLIBS" in key or "LDFLAGS" in key:
- fd.write("add_flags(CMAKE_EXE_LINKER_FLAGS %s)\n\n" % value)
-
- # Recursively print the conditionals, combining tests to avoid repetition
- _parse_hash(macros["_COND_"], fd, 0, output_format)
-
-
-def _parse_hash(macros, fd, depth, output_format, cmakedebug=""):
- width = 2 * depth
- for key, value in macros.iteritems():
- if type(value) is dict:
- if output_format == "make" or "DEBUG" in key:
- for key2, value2 in value.iteritems():
- if output_format == "make":
- fd.write("%sifeq ($(%s), %s) \n" % (" " * width, key, key2))
-
- _parse_hash(value2, fd, depth + 1, output_format, key2)
+ Arguments:
+ build_system - Format of the file to be written. Currently the only
+ valid values are "Makefile" and "CMake".
+ output - Text I/O object (inheriting from io.TextIOBase) that
+ output should be written to. Typically, this will be the
+ Macros file, opened for writing.
+ """
+ # Set up writer for this build system.
+ if build_system == "Makefile":
+ writer = MakeMacroWriter(output)
+ elif build_system == "CMake":
+ writer = CMakeMacroWriter(output)
else:
- if output_format == "make":
- if key.startswith("ADD_"):
- fd.write("%s %s += %s\n" % (" " * width, key[4:], value))
- else:
- fd.write("%s %s += %s\n" % (" " * width, key, value))
+ expect(False,
+ "Unrecognized build system provided to write_macros: " +
+ build_system)
+
+ # Start processing the file.
+ value_lists = dict()
+ node_list = []
+ if xml is None:
+ node_list = self.get_nodes("compiler")
+ else:
+ node_list = ET.parse(xml).findall("compiler")
+
+ for compiler_elem in node_list:
+ block = CompilerBlock(writer, compiler_elem, self._machobj)
+ # If this block matches machine settings, use it.
+ if block.matches_machine():
+ block.add_settings_to_lists(self.flag_vars, value_lists)
+ # Now that we've scanned through the input, output the variable
+ # settings.
+ vars_written = set()
+ while value_lists:
+ # Variables that are ready to be written.
+ ready_variables = [
+ var_name for var_name in value_lists.keys()
+ if value_lists[var_name].depends <= vars_written
+ ]
+ expect(len(ready_variables) > 0,
+ "The config_build XML has bad references. "
+ "Check for circular references or variables that "
+ "are in a tag but not actually defined.")
+ big_normal_tree = None
+ big_append_tree = None
+ for var_name in ready_variables:
+ # Note that we're writing this variable.
+ vars_written.add(var_name)
+ # Make the conditional trees and write them out.
+ normal_tree, append_tree = \
+ value_lists[var_name].to_cond_trees()
+ big_normal_tree = merge_optional_trees(normal_tree,
+ big_normal_tree)
+ big_append_tree = merge_optional_trees(append_tree,
+ big_append_tree)
+ # Remove this variable from the list of variables to handle
+ # next iteration.
+ del value_lists[var_name]
+ if big_normal_tree is not None:
+ big_normal_tree.write_out(writer)
+ if big_append_tree is not None:
+ big_append_tree.write_out(writer)
+
- else:
- value = value.replace("(", "{").replace(")", "}")
- release = "DEBUG" if "TRUE" in cmakedebug else "RELEASE"
- if "CFLAGS" in key:
- fd.write("add_flags(CMAKE_C_FLAGS_%s %s)\n\n" % (release, value))
- elif "FFLAGS" in key:
- fd.write("add_flags(CMAKE_Fortran_FLAGS_%s %s)\n\n" % (release, value))
- elif "CPPDEF" in key:
- fd.write("add_config_definitions(%s %s)\n\n" % (release, value))
- elif "SLIBS" in key or "LDFLAGS" in key:
- fd.write("add_flags(CMAKE_EXE_LINKER_FLAGS_%s %s)\n\n" % (release, value))
-
- width -= 2
- if output_format == "make" and depth > 0:
- fd.write("%sendif\n\n" % (" " * width))
def _add_to_macros(node, macros):
for child in node:
diff --git a/utils/python/CIME/XML/env_mach_specific.py b/utils/python/CIME/XML/env_mach_specific.py
index 0504447eeea..03b71a07bab 100644
--- a/utils/python/CIME/XML/env_mach_specific.py
+++ b/utils/python/CIME/XML/env_mach_specific.py
@@ -158,7 +158,6 @@ def list_modules(self):
def make_env_mach_specific_file(self, compiler, debug, mpilib, shell):
modules_to_load = self._get_modules_for_case(compiler, debug, mpilib)
envs_to_set = self._get_envs_for_case(compiler, debug, mpilib)
-
filename = ".env_mach_specific.%s" % shell
lines = []
if modules_to_load is not None:
@@ -245,7 +244,7 @@ def _load_module_modules(self, modules_to_load):
for cmd in self._get_module_commands(modules_to_load, "python"):
logger.debug("module command is %s"%cmd)
stat, py_module_code, errout = run_cmd(cmd)
- expect(stat==0 and len(errout) == 0,
+ expect(stat==0 and len(errout) == 0,
"module command %s failed with message:\n%s"%(cmd,errout))
exec(py_module_code)
@@ -416,4 +415,3 @@ def get_mpirun(self, case, attribs, check_members=None, job="case.run"):
executable = exec_node.text
return executable, args
-
diff --git a/utils/python/CIME/case.py b/utils/python/CIME/case.py
index e45fc10c21f..4dde1f94901 100644
--- a/utils/python/CIME/case.py
+++ b/utils/python/CIME/case.py
@@ -11,7 +11,6 @@
from CIME.utils import expect, get_cime_root, append_status
from CIME.utils import convert_to_type, get_model, get_project
from CIME.utils import get_build_threaded, get_current_commit
-from CIME.XML.build import Build
from CIME.XML.machines import Machines
from CIME.XML.pes import Pes
from CIME.XML.files import Files
@@ -812,42 +811,6 @@ def _create_caseroot_tools(self):
except Exception as e:
logger.warning("FAILED to set up toolfiles: %s %s %s" % (str(e), toolfile, destfile))
- # Create Macros file.
- machine = self.get_value("MACH")
- files = Files()
- # Use config_build if the environment variable is set, or if there is no
- # config_compilers file.
- if os.getenv("CIME_USE_CONFIG_BUILD") == "TRUE" or \
- files.get_value("COMPILERS_SPEC_FILE") is None:
- build_file = files.get_value("BUILD_SPEC_FILE")
- machobj = Machines(machine=machine, files=files)
- macro_maker = Build(machobj)
- macros_path = os.path.join(self._caseroot, "Macros")
- with open(macros_path, "w") as macros_file:
- macro_maker.write_macros('Makefile', build_file, macros_file)
-
- # Copy any system or compiler Depends files to the case.
- compiler = self.get_value("COMPILER")
- for dep in (machine, compiler):
- dfile = "Depends.%s"%dep
- if os.path.isfile(os.path.join(machines_dir,dfile)):
- shutil.copyfile(os.path.join(machines_dir,dfile), os.path.join(self._caseroot,dfile))
- dfile = "Depends.%s.%s"%(machine,compiler)
- if os.path.isfile(os.path.join(machines_dir,dfile)):
- shutil.copyfile(os.path.join(machines_dir,dfile), os.path.join(self._caseroot, dfile))
- # set up infon files
- # infofiles = os.path.join(os.path.join(toolsdir, README.post_process")
- #FIXME - the following does not work
- # print "DEBUG: infofiles are ",infofiles
- # try:
- # for infofile in infofiles:
- # print "DEBUG: infofile is %s, %s" %(infofile, os.path.basename(infofile))
- # dst_file = caseroot + "/" + os.path.basename(infofile)
- # shutil.copyfile(infofile, dst_file)
- # os.chmod(dst_file, os.stat(dst_file).st_mode | stat.S_IXUSR | stat.S_IXGRP)
- # except Exception as e:
- # logger.warning("FAILED to set up infofiles: %s" % str(e))
-
def _create_caseroot_sourcemods(self):
components = self.get_compset_components()
for component in components:
diff --git a/utils/python/CIME/case_setup.py b/utils/python/CIME/case_setup.py
index 57b3aa8fb5b..d5bab5e6b50 100644
--- a/utils/python/CIME/case_setup.py
+++ b/utils/python/CIME/case_setup.py
@@ -7,7 +7,8 @@
from CIME.check_lockedfiles import check_lockedfiles
from CIME.preview_namelists import create_dirs, create_namelists
from CIME.XML.env_mach_pes import EnvMachPes
-from CIME.XML.compilers import Compilers
+from CIME.XML.machines import Machines
+from CIME.BuildTools.configure import configure
from CIME.utils import append_status, get_cime_root
from CIME.test_status import *
@@ -145,18 +146,17 @@ def _case_setup_impl(case, caseroot, clean=False, test_mode=False, reset=False):
case.load_env()
models = case.get_values("COMP_CLASSES")
-
- mach, compiler, debug, mpilib = \
- case.get_value("MACH"), case.get_value("COMPILER"), case.get_value("DEBUG"), case.get_value("MPILIB")
+ mach = case.get_value("MACH")
+ compiler = case.get_value("COMPILER")
+ debug = case.get_value("DEBUG")
+ mpilib = case.get_value("MPILIB")
+ sysos = case.get_value("OS")
expect(mach is not None, "xml variable MACH is not set")
- # Create Macros file only if it does not exist
- if not os.path.exists("Macros"):
- logger.debug("Creating Macros file for %s" % mach)
- compilers = Compilers(compiler=compiler, machine=mach, os_=case.get_value("OS"), mpilib=mpilib)
- compilers.write_macros_file()
- else:
- logger.debug("Macros script already created ...skipping")
+ # creates the Macros.make, Depends.compiler, Depends.machine, Depends.machine.compiler
+ # and env_mach_specific.xml if they don't already exist.
+ if not os.path.isfile("Macros.make") or not os.path.isfile("env_mach_specific.xml"):
+ configure(Machines(machine=mach), caseroot, ["Makefile"], compiler, mpilib, debug, sysos)
# Set tasks to 1 if mpi-serial library
if mpilib == "mpi-serial":
diff --git a/utils/python/CIME/macros_writers.py b/utils/python/CIME/macros_writers.py
deleted file mode 100644
index 78cc2f03a69..00000000000
--- a/utils/python/CIME/macros_writers.py
+++ /dev/null
@@ -1,326 +0,0 @@
-"""Classes used to write build system files.
-
-The classes here are used to write out settings for use by Makefile and CMake
-build systems. The two relevant classes are CMakeMacroWriter and
-MakeMacroWriter, which encapsulate the information necessary to write CMake and
-Makefile formatted text, respectively. See the docstrings for those classes for
-more.
-"""
-
-# This is not the most useful check.
-# pylint: disable=invalid-name
-
-from abc import ABCMeta, abstractmethod
-
-__all__ = ["CMakeMacroWriter", "MakeMacroWriter"]
-
-class MacroWriterBase(object):
-
- """Abstract base class for macro file writers.
-
- The methods here come in three flavors:
- 1. indent_left/indent_right change the level of indent used internally by
- the class.
- 2. The various methods ending in "_string" return strings relevant to the
- build system.
- 3. The other methods write information to the file handle associated with
- an individual writer instance.
-
- Public attributes:
- indent_increment - Number of spaces to indent if blocks (does not apply
- to format-specific indentation, e.g. cases where
- Makefiles must use tabs).
- output - File-like object that output is written to.
-
- Public methods:
- indent_string
- indent_left
- indent_right
- write_line
- environment_variable_string
- shell_command_string
- variable_string
- set_variable
- append_variable
- start_ifeq
- end_ifeq
- """
-
- __metaclass__ = ABCMeta
-
- indent_increment = 2
-
- def __init__(self, output):
- """Initialize a macro writer.
-
- Arguments:
- output - File-like object (probably an io.TextIOWrapper), which
- will be written to.
- """
- self.output = output
- self._indent_num = 0
-
- def indent_string(self):
- """Return an appropriate number of spaces for the indent."""
- return ' ' * self._indent_num
-
- def indent_left(self):
- """Decrease the amount of line indent."""
- self._indent_num -= 2
-
- def indent_right(self):
- """Increase the amount of line indent."""
- self._indent_num += 2
-
- def write_line(self, line):
- """Write a single line of output, appropriately indented.
-
- A trailing newline is added, whether or not the input has one.
- """
- self.output.write(unicode(self.indent_string() + line + "\n"))
-
- @abstractmethod
- def environment_variable_string(self, name):
- """Return an environment variable reference."""
- pass
-
- @abstractmethod
- def shell_command_strings(self, command):
- """Return strings used to get the output of a shell command.
-
- Implementations should return a tuple of three strings:
- 1. A line that is needed to get the output of the command (or None,
- if a command can be run inline).
- 2. A string that can be used within a line to refer to the output.
- 3. A line that does any cleanup of temporary variables (or None, if
- no cleanup is necessary).
-
- Example usage:
-
- # Get strings and write initial command.
- (pre, var, post) = writer.shell_command_strings(command)
- if pre is not None:
- writer.write(pre)
-
- # Use the variable to write an if block.
- writer.start_ifeq(var, "TRUE")
- writer.set_variable("foo", "bar")
- writer.end_ifeq()
-
- # Cleanup
- if post is not None:
- writer.write(post)
- """
- pass
-
- @abstractmethod
- def variable_string(self, name):
- """Return a string to refer to a variable with the given name."""
- pass
-
- @abstractmethod
- def set_variable(self, name, value):
- """Write out a statement setting a variable to some value."""
- pass
-
- def append_variable(self, name, value):
- """Write out a statement appending a value to a string variable."""
- var_string = self.variable_string(name)
- self.set_variable(name, var_string + " " + value)
-
- @abstractmethod
- def start_ifeq(self, left, right):
- """Write out a statement to start a conditional block.
-
- The arguments to this method are compared, and the block is entered
- only if they are equal.
- """
- pass
-
- @abstractmethod
- def end_ifeq(self):
- """Write out a statement to end a block started with start_ifeq."""
- pass
-
-
-class MakeMacroWriter(MacroWriterBase):
-
- """Macro writer for the Makefile format.
-
- For details on the provided methods, see MacroWriterBase, which this
- class inherits from.
- """
-
- def environment_variable_string(self, name):
- """Return an environment variable reference.
-
- >>> import io
- >>> s = io.StringIO()
- >>> MakeMacroWriter(s).environment_variable_string("foo")
- '$(foo)'
- """
- return "$(" + name + ")"
-
- def shell_command_strings(self, command):
- """Return strings used to get the output of a shell command.
-
- >>> import io
- >>> s = io.StringIO()
- >>> MakeMacroWriter(s).shell_command_strings("echo bar")
- (None, '$(shell echo bar)', None)
- """
- return (None, "$(shell " + command + ")", None)
-
- def variable_string(self, name):
- """Return a string to refer to a variable with the given name.
-
- >>> import io
- >>> s = io.StringIO()
- >>> MakeMacroWriter(s).variable_string("foo")
- '$(foo)'
- """
- return "$(" + name + ")"
-
- def set_variable(self, name, value):
- """Write out a statement setting a variable to some value.
-
- >>> import io
- >>> s = io.StringIO()
- >>> MakeMacroWriter(s).set_variable("foo", "bar")
- >>> s.getvalue()
- u'foo := bar\\n'
- """
- # Note that ":=" is used so that we can control the behavior for
- # both Makefile and CMake variables similarly.
- self.write_line(name + " := " + value)
-
- def start_ifeq(self, left, right):
- """Write out a statement to start a conditional block.
-
- >>> import io
- >>> s = io.StringIO()
- >>> MakeMacroWriter(s).start_ifeq("foo", "bar")
- >>> s.getvalue()
- u'ifeq (foo,bar)\\n'
- """
- self.write_line("ifeq (" + left + "," + right + ")")
- self.indent_right()
-
- def end_ifeq(self):
- """Write out a statement to end a block started with start_ifeq.
-
- >>> import io
- >>> s = io.StringIO()
- >>> writer = MakeMacroWriter(s)
- >>> writer.start_ifeq("foo", "bar")
- >>> writer.set_variable("foo2", "bar2")
- >>> writer.end_ifeq()
- >>> s.getvalue()
- u'ifeq (foo,bar)\\n foo2 := bar2\\nendif\\n'
- """
- self.indent_left()
- self.write_line("endif")
-
-
-class CMakeMacroWriter(MacroWriterBase):
-
- """Macro writer for the CMake format.
-
- For details on the provided methods, see MacroWriterBase, which this
- class inherits from.
- """
-
- def __init__(self, output):
- """Initialize a CMake macro writer.
-
- Arguments:
- output - File-like object (probably an io.TextIOWrapper), which
- will be written to.
- """
- super(CMakeMacroWriter, self).__init__(output)
- # This counter is for avoiding name conflicts in temporary
- # variables used for shell commands.
- self._var_num = 0
-
- def environment_variable_string(self, name):
- """Return an environment variable reference.
-
- >>> import io
- >>> s = io.StringIO()
- >>> CMakeMacroWriter(s).environment_variable_string("foo")
- '$ENV{foo}'
- """
- return "$ENV{" + name + "}"
-
- def shell_command_strings(self, command):
- # pylint: disable=line-too-long
- """Return strings used to get the output of a shell command.
-
- >>> import io
- >>> s = io.StringIO()
- >>> set_up, inline, tear_down = CMakeMacroWriter(s).shell_command_strings("echo bar")
- >>> set_up
- 'execute_process(COMMAND echo bar OUTPUT_VARIABLE CIME_TEMP_SHELL0 OUTPUT_STRIP_TRAILING_WHITESPACE)'
- >>> inline
- '${CIME_TEMP_SHELL0}'
- >>> tear_down
- 'unset(CIME_TEMP_SHELL0)'
- """
- # pylint: enable=line-too-long
- # Create a unique variable name, then increment variable number
- # counter so that we get a different value next time.
- var_name = "CIME_TEMP_SHELL" + str(self._var_num)
- self._var_num += 1
- set_up = "execute_process(COMMAND " + command + \
- " OUTPUT_VARIABLE " + var_name + \
- " OUTPUT_STRIP_TRAILING_WHITESPACE)"
- tear_down = "unset(" + var_name + ")"
- return (set_up, "${" + var_name + "}", tear_down)
-
- def variable_string(self, name):
- """Return a string to refer to a variable with the given name.
-
- >>> import io
- >>> s = io.StringIO()
- >>> CMakeMacroWriter(s).variable_string("foo")
- '${CIME_foo}'
- """
- return "${CIME_" + name + "}"
-
- def set_variable(self, name, value):
- """Write out a statement setting a variable to some value.
-
- >>> import io
- >>> s = io.StringIO()
- >>> CMakeMacroWriter(s).set_variable("foo", "bar")
- >>> s.getvalue()
- u'set(CIME_foo "bar")\\n'
- """
- self.write_line("set(CIME_" + name + ' "' + value + '")')
-
- def start_ifeq(self, left, right):
- """Write out a statement to start a conditional block.
-
- >>> import io
- >>> s = io.StringIO()
- >>> CMakeMacroWriter(s).start_ifeq("foo", "bar")
- >>> s.getvalue()
- u'if("foo" STREQUAL "bar")\\n'
- """
- self.write_line('if("' + left + '" STREQUAL "' + right + '")')
- self.indent_right()
-
- def end_ifeq(self):
- """Write out a statement to end a block started with start_ifeq.
-
- >>> import io
- >>> s = io.StringIO()
- >>> writer = CMakeMacroWriter(s)
- >>> writer.start_ifeq("foo", "bar")
- >>> writer.set_variable("foo2", "bar2")
- >>> writer.end_ifeq()
- >>> s.getvalue()
- u'if("foo" STREQUAL "bar")\\n set(CIME_foo2 "bar2")\\nendif()\\n'
- """
- self.indent_left()
- self.write_line("endif()")
diff --git a/utils/python/CIME/provenance.py b/utils/python/CIME/provenance.py
index 26db6093b10..eb419c257df 100644
--- a/utils/python/CIME/provenance.py
+++ b/utils/python/CIME/provenance.py
@@ -18,7 +18,7 @@ def _get_batch_job_id_for_syslog(case):
mach = case.get_value("MACH")
if mach == 'titan':
return os.environ["PBS_JOBID"]
- elif mach in ['edison', 'corip1', 'cori-haswell', 'cori-knl']:
+ elif mach in ['edison', 'cori-haswell', 'cori-knl']:
return os.environ["SLURM_JOB_ID"]
elif mach == 'mira':
return os.environ["COBALT_JOBID"]
@@ -118,7 +118,7 @@ def save_prerun_provenance_acme(case, lid=None):
filename = "%s.%s" % (filename, lid)
run_cmd_no_fail("%s > %s" % (cmd, filename), from_dir=full_timing_dir)
gzip_existing_file(os.path.join(full_timing_dir, filename))
- elif mach in ["edison", "corip1", "cori-haswell", "cori-knl"]:
+ elif mach in ["edison", "cori-haswell", "cori-knl"]:
for cmd, filename in [("sqs -f", "sqsf"), ("sqs -w -a", "sqsw"), ("sqs -f %s" % job_id, "sqsf_jobid"), ("squeue", "squeuef")]:
filename = "%s.%s" % (filename, lid)
run_cmd_no_fail("%s > %s" % (cmd, filename), from_dir=full_timing_dir)
@@ -248,7 +248,7 @@ def save_postrun_provenance_acme(case, lid):
elif mach == "mira":
globs_to_copy.append("%s*output" % job_id)
globs_to_copy.append("%s*cobaltlog" % job_id)
- elif mach in ["edison", "corip1", "cori-haswell", "cori-knl"]:
+ elif mach in ["edison", "cori-haswell", "cori-knl"]:
globs_to_copy.append("%s" % case.get_value("CASE"))
globs_to_copy.append("logs/acme.log.%s.gz" % lid)
diff --git a/utils/python/tests/scripts_regression_tests.py b/utils/python/tests/scripts_regression_tests.py
index 1e59da5a9f7..6938b844ab7 100755
--- a/utils/python/tests/scripts_regression_tests.py
+++ b/utils/python/tests/scripts_regression_tests.py
@@ -15,7 +15,7 @@
import update_acme_tests
import CIME.test_scheduler, CIME.wait_for_tests
from CIME.test_scheduler import TestScheduler
-from CIME.XML.build import Build
+from CIME.XML.compilers import Compilers
from CIME.XML.machines import Machines
from CIME.XML.files import Files
from CIME.case import Case
@@ -1252,6 +1252,12 @@ def is_valid_MPIlib(self, _):
"""Assume all MPILIB settings are valid."""
return True
+ def get_default_MPIlib(self):
+ return "mpich2"
+
+ def get_default_compiler(self):
+ return "intel"
+
def get_macros(macro_maker, build_xml, build_system):
"""Generate build system ("Macros" file) output from config_build XML.
@@ -1267,7 +1273,16 @@ def get_macros(macro_maker, build_xml, build_system):
# we need to wrap the strings in StringIO objects.
xml = io.StringIO(unicode(build_xml))
output = io.StringIO()
- macro_maker.write_macros(build_system, xml, output)
+ output_format = None
+ if build_system == "Makefile":
+ output_format = "make"
+ elif build_system == "CMake":
+ output_format = "cmake"
+ else:
+ output_format = build_system
+
+ macro_maker.write_macros_file(macros_file=output,
+ output_format=output_format, xml=xml)
return str(output.getvalue())
@@ -1488,19 +1503,19 @@ class G_TestMacrosBasic(unittest.TestCase):
def test_script_is_callable(self):
"""The test script can be called on valid output without dying."""
# This is really more a smoke test of this script than anything else.
- maker = Build(MockMachines("mymachine", "SomeOS"))
+ maker = Compilers(MockMachines("mymachine", "SomeOS"))
test_xml = _wrap_config_build_xml("FALSE")
get_macros(maker, test_xml, "Makefile")
def test_script_rejects_bad_xml(self):
"""The macro writer rejects input that's not valid XML."""
- maker = Build(MockMachines("mymachine", "SomeOS"))
+ maker = Compilers(MockMachines("mymachine", "SomeOS"))
with self.assertRaises(ParseError):
get_macros(maker, "This is not valid XML.", "Makefile")
def test_script_rejects_bad_build_system(self):
"""The macro writer rejects a bad build system string."""
- maker = Build(MockMachines("mymachine", "SomeOS"))
+ maker = Compilers(MockMachines("mymachine", "SomeOS"))
bad_string = "argle-bargle."
with self.assertRaisesRegexp(
SystemExit,
@@ -1524,7 +1539,7 @@ class H_TestMakeMacros(unittest.TestCase):
test_machine = "mymachine"
def setUp(self):
- self._maker = Build(MockMachines(self.test_machine, self.test_os))
+ self._maker = Compilers(MockMachines(self.test_machine, self.test_os))
def xml_to_tester(self, xml_string):
"""Helper that directly converts an XML string to a MakefileTester."""