Index: /issm/trunk-jpl/etc/environment.sh
===================================================================
--- /issm/trunk-jpl/etc/environment.sh	(revision 28137)
+++ /issm/trunk-jpl/etc/environment.sh	(revision 28138)
@@ -186,6 +186,29 @@
 #######################
 
+OS_NAME=$(uname -s)
+
+## macOS
+#
+if [[ ${OS_NAME} == "Darwin" ]]; then
+	BUILD_TOOL_PATH=$(xcode-select -p)
+
+	if [[ ${BUILD_TOOL_PATH} == "/Applications/Xcode.app/Contents/Developer" ]]; then
+		BUILD_TOOL_VER=$(xcodebuild -version | /usr/bin/grep "Xcode" | sed -e 's/Xcode //' | cut -d. -f1)
+	elif [[ ${BUILD_TOOL_PATH} == "/Library/Developer/CommandLineTools" ]]; then
+		BUILD_TOOL_VER=$(pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | /usr/bin/grep "version" | sed -e 's/version: //' | cut -d. -f1)
+	else
+		echo "Error: On macOS, either Xcode or the Command Line Tools must be installed!"
+		exit 1
+	fi
+
+	if [[ ${BUILD_TOOL_VER} -ge 15 ]]; then
+		export LDFLAGS="-Wl,-ld_classic"
+	fi
+fi
+
+## Windows
+#
 MINGW=0
-if [[ $(uname -s) == MINGW* ]]; then
+if [[ ${OS_NAME} == MINGW* ]]; then
 	MINGW=1
 	MSMPI_ROOT="${ISSM_EXT_DIR}/msmpi/install"
@@ -205,8 +228,8 @@
 fi
 
-# Windows compilers
-if [[ "${ISSM_ARCH}" == "cygwin-intel" ]]; then
-	source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
-fi
+# # Windows compilers
+# if [[ "${ISSM_ARCH}" == "cygwin-intel" ]]; then
+# 	source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
+# fi
 
 #########################
Index: /issm/trunk-jpl/externalpackages/chaco/chaco.patch
===================================================================
--- /issm/trunk-jpl/externalpackages/chaco/chaco.patch	(revision 28137)
+++ /issm/trunk-jpl/externalpackages/chaco/chaco.patch	(revision 28138)
@@ -1,12 +1,12 @@
 Only in src/code/assign: assign.o
 diff -rc src/code/assign/assign_out.c old/code/assign/assign_out.c
-*** src/code/assign/assign_out.c	2010-07-16 16:28:47.352242454 -0700
---- old/code/assign/assign_out.c	1995-08-08 14:32:10.000000000 -0700
+*** src/code/assign/assign_out.c  2010-07-16 16:28:47.352242454 -0700
+--- old/code/assign/assign_out.c  1995-08-08 14:32:10.000000000 -0700
 ***************
 *** 3,9 ****
    * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
   
-  #include	<stdio.h>
-- #include	"defs.h"
+  #include  <stdio.h>
+- #include  "defs.h"
   
   static void assign_out_normal(), assign_out_inv();
@@ -54,6 +54,6 @@
 Only in src/code/eigen: eigensolve.o
 diff -rc src/code/eigen/get_extval.c old/code/eigen/get_extval.c
-*** src/code/eigen/get_extval.c	2010-07-16 16:28:47.353242463 -0700
---- old/code/eigen/get_extval.c	1995-08-08 14:32:20.000000000 -0700
+*** src/code/eigen/get_extval.c 2010-07-16 16:28:47.353242463 -0700
+--- old/code/eigen/get_extval.c 1995-08-08 14:32:20.000000000 -0700
 ***************
 *** 4,10 ****
@@ -143,6 +143,6 @@
 Only in src/code/klvspiff: make_sep_list.o
 diff -rc src/code/klvspiff/matching.c old/code/klvspiff/matching.c
-*** src/code/klvspiff/matching.c	2010-07-16 16:28:47.356242493 -0700
---- old/code/klvspiff/matching.c	1996-03-11 10:24:25.000000000 -0800
+*** src/code/klvspiff/matching.c  2010-07-16 16:28:47.356242493 -0700
+--- old/code/klvspiff/matching.c  1996-03-11 10:24:25.000000000 -0800
 ***************
 *** 6,12 ****
@@ -158,6 +158,6 @@
 Only in src/code/klvspiff: nway_klv.o
 diff -rc src/code/main/defs.h old/code/main/defs.h
-*** src/code/main/defs.h	2010-07-16 16:28:47.359242522 -0700
---- old/code/main/defs.h	1995-08-08 14:32:41.000000000 -0700
+*** src/code/main/defs.h  2010-07-16 16:28:47.359242522 -0700
+--- old/code/main/defs.h  1995-08-08 14:32:41.000000000 -0700
 ***************
 *** 1,39 ****
@@ -165,36 +165,36 @@
 ! #define _CHACO_DEFS_H_
 ! 
-  #define TRUE		1
-  #define FALSE		0
+  #define TRUE    1
+  #define FALSE   0
   
 ! #ifndef _HAVE_CHACO_ //protect ISSM compilation. This symbol is defined when we compile ISSM
 ! 
-! 	#define	max(A, B)	((A) > (B) ? (A) : (B))
-! 	#define	min(A, B)	((A) < (B) ? (A) : (B))
-! 	#define sign(A)		((A) <  0  ? -1  :  1)
-! 	#define absval(A)	((A) <  0  ? -(A): (A))
-! 
-! 	/* Define constants that are needed in various places */
-! 	#define	PI	3.141592653589793
-! 	#define	TWOPI	6.283185307179586
-! 	#define HALFPI  1.570796326794896
+!   #define max(A, B) ((A) > (B) ? (A) : (B))
+!   #define min(A, B) ((A) < (B) ? (A) : (B))
+!   #define sign(A)   ((A) <  0  ? -1  :  1)
+!   #define absval(A) ((A) <  0  ? -(A): (A))
+! 
+!   /* Define constants that are needed in various places */
+!   #define PI  3.141592653589793
+!   #define TWOPI 6.283185307179586
+!   #define HALFPI  1.570796326794896
 ! 
 !     #define check_graph chaco_check_graph
 ! 
 ! 
-! 	#ifdef MATLAB
-! 		#include "mat.h"
-! 		#include "mex.h"
-! 		#include "matrix.h"
-! 	   
-! 		#define printf mexPrintf
-! 		#define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
-! 		#define malloc mxMalloc
-! 		#define calloc mxCalloc
-! 		#define realloc mxRealloc
-! 		#define free mxFree
-! 		#define exit(status) mexErrMsgTxt("exit=" #status)
-! 
-! 	#endif
+!   #ifdef MATLAB
+!     #include "mat.h"
+!     #include "mex.h"
+!     #include "matrix.h"
+!      
+!     #define printf mexPrintf
+!     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+!     #define malloc mxMalloc
+!     #define calloc mxCalloc
+!     #define realloc mxRealloc
+!     #define free mxFree
+!     #define exit(status) mexErrMsgTxt("exit=" #status)
+! 
+!   #endif
 ! 
 ! #endif  //#ifndef _HAVE_CHACO_ 
@@ -202,20 +202,20 @@
 ! #endif //ifndef _CHACO_DEFS_H_
 --- 1,11 ----
-! #define	max(A, B)	((A) > (B) ? (A) : (B))
-! #define	min(A, B)	((A) < (B) ? (A) : (B))
-! #define sign(A)		((A) <  0  ? -1  :  1)
-! #define absval(A)	((A) <  0  ? -(A): (A))
-  #define TRUE		1
-  #define FALSE		0
+! #define max(A, B) ((A) > (B) ? (A) : (B))
+! #define min(A, B) ((A) < (B) ? (A) : (B))
+! #define sign(A)   ((A) <  0  ? -1  :  1)
+! #define absval(A) ((A) <  0  ? -(A): (A))
+  #define TRUE    1
+  #define FALSE   0
   
 ! /* Define constants that are needed in various places */
-! #define	PI	3.141592653589793
-! #define	TWOPI	6.283185307179586
+! #define PI  3.141592653589793
+! #define TWOPI 6.283185307179586
 ! #define HALFPI  1.570796326794896
 Only in src/code/main: interface.o
 Only in src/code/main: main.o
 diff -rc src/code/main/params.h old/code/main/params.h
-*** src/code/main/params.h	2010-07-16 16:28:47.361242541 -0700
---- old/code/main/params.h	1995-08-08 14:32:43.000000000 -0700
+*** src/code/main/params.h  2010-07-16 16:28:47.361242541 -0700
+--- old/code/main/params.h  1995-08-08 14:32:43.000000000 -0700
 ***************
 *** 1,12 ****
@@ -224,9 +224,9 @@
 - 
 - 
-  #define NAME_LENGTH	80	/* Maximum length of file name */
-  #define LINE_LENGTH	200	/* Length of input files read at once */
-  
-  #define MAXDIMS		3	/* Most cuts allowed at one time */
-  #define MAXSETS		8	/* 2^MAXDIMS */
+  #define NAME_LENGTH 80  /* Maximum length of file name */
+  #define LINE_LENGTH 200 /* Length of input files read at once */
+  
+  #define MAXDIMS   3 /* Most cuts allowed at one time */
+  #define MAXSETS   8 /* 2^MAXDIMS */
 - 
 - 
@@ -234,150 +234,4 @@
 --- 1,5 ----
 Only in src/code/main: user_params.o
-diff -rc src/code/Makefile old/code/Makefile
-*** src/code/Makefile	2010-07-21 18:22:19.909939194 -0700
---- old/code/Makefile	1997-10-02 10:23:22.000000000 -0700
-***************
-*** 2,18 ****
-  DEST=		${DEST_DIR}/chaco
-  CC = 		gcc
-  IFLAG =		-Imain
-! #IFLAG =		-Imain -I/usr/local/pkgs/matlab-7.6/extern/include
-! #CFLAGS =	-O2
-! #OFLAGS =	-O2
-! #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
-! CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
-! #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
-! OFLAGS =	-O2 
-! #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
-! AR =             /usr/bin/ar rcv
-! #RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
-! RANLIB =         /usr/bin/ranlib
-  
-  FILES.c=	main/user_params.c main/interface.c main/main.c \
-  		submain/balance.c submain/divide.c submain/submain.c \
---- 2,9 ----
-  DEST=		${DEST_DIR}/chaco
-  CC = 		gcc
-  IFLAG =		-Imain
-! CFLAGS =	-O2
-! OFLAGS =	-O2
-  
-  FILES.c=	main/user_params.c main/interface.c main/main.c \
-  		submain/balance.c submain/divide.c submain/submain.c \
-***************
-*** 96,196 ****
-  		util/update.c  util/vecout.c util/vecran.c \
-                  util/vecscale.c 
-  
-- 
-- FILESMINUSBLAS.c=	main/user_params.c main/interface.c main/main.c \
-- 		submain/balance.c submain/divide.c submain/submain.c \
-- 		input/input_assign.c \
-- 		input/check_input.c input/input.c input/input_geom.c \
-- 		input/input_graph.c input/read_params.c input/reflect_input.c \
-- 		input/read_val.c \
-- 		graph/check_graph.c graph/free_graph.c \
-- 		graph/reformat.c graph/subgraph.c graph/graph_out.c \
-- 		inertial/eigenvec2.c inertial/eigenvec3.c inertial/inertial.c \
-- 		inertial/inertial1d.c inertial/inertial2d.c \
-- 		inertial/inertial3d.c inertial/make_subgeom.c \
-- 		klspiff/buckets.c klspiff/buckets_bi.c klspiff/buckets1.c \
-- 		klspiff/bilistops.c klspiff/coarsen_kl.c klspiff/count_weights.c \
-- 		klspiff/compress_ewgts.c klspiff/kl_init.c klspiff/kl_output.c \
-- 		klspiff/klspiff.c klspiff/make_bndy_list.c \
-- 		klspiff/make_kl_list.c klspiff/nway_kl.c \
-- 		klvspiff/bpm_improve.c klvspiff/bucketsv.c \
-- 		klvspiff/clear_dvals.c klvspiff/coarsen_klv.c \
-- 		klvspiff/countup_vtx_sep.c klvspiff/find_bndy.c klvspiff/flow.c \
-- 		klvspiff/klv_init.c klvspiff/klvspiff.c klvspiff/make_bpgraph.c \
-- 		klvspiff/make_sep_list.c klvspiff/matching.c klvspiff/nway_klv.c \
-- 		klvspiff/flatten.c \
-- 		coarsen/coarsen.c coarsen/interpolate.c coarsen/makefgraph.c \
-- 		coarsen/makeccoords.c \
-- 		coarsen/coarsen1.c coarsen/makev2cv.c \
-- 		coarsen/maxmatch.c coarsen/maxmatch1.c coarsen/maxmatch2.c \
-- 		coarsen/maxmatch3.c coarsen/maxmatch4.c coarsen/maxmatch5.c \
-- 		connect/add_edges.c connect/connected.c connect/find_edges.c \
-- 		eigen/bidir.c eigen/bisect.c eigen/checkeig.c \
-- 		eigen/checkeig_ext.c \
-- 		eigen/checkorth.c eigen/cksturmcnt.c eigen/mkeigvecs.c\
-- 		eigen/eigensolve.c eigen/get_extval.c eigen/get_ritzvals.c \
-- 		eigen/lanczos_FO.c eigen/lanczos_SO.c eigen/lanczos_SO_float.c \
-- 		eigen/lanczos_ext.c eigen/lanczos_ext_float.c eigen/lanc_seconds.c\
-- 		eigen/lanpause.c eigen/makeorthlnk.c eigen/mkscanlist.c \
-- 		eigen/orthog1.c eigen/orthogonalize.c eigen/orthogvec.c \
-- 		eigen/ql.c eigen/rqi.c eigen/rqi_ext.c eigen/scale_diag.c \
-- 		eigen/scanmax.c eigen/scanmin.c eigen/solistout.c \
--                 eigen/sorthog.c eigen/splarax.c eigen/sturmcnt.c \
-- 		eigen/Tevec.c eigen/tri_solve.c eigen/warnings.c \
-- 		symmlq/aprod.c symmlq/msolve.c symmlq/pow_dd.c \
-- 		symmlq/symmlq.c  \
-- 		tinvit/tinvit.c tinvit/pythag.c tinvit/epslon.c \
-- 		optimize/determinant.c optimize/func2d.c \
-- 		optimize/func3d.c optimize/opt2d.c optimize/opt3d.c \
-- 		assign/assign.c assign/assign_out.c assign/mapper.c \
-- 		assign/median.c assign/merge_assign.c \
-- 		assign/rec_median.c assign/rotate.c assign/y2x.c \
-- 		bpmatch/checkbp.c bpmatch/inits2d.c bpmatch/inits3d.c \
-- 		bpmatch/genvals2d.c bpmatch/genvals3d.c bpmatch/map2d.c \
-- 		bpmatch/map3d.c bpmatch/movevtxs.c \
-- 		bpmatch/sorts2d.c bpmatch/sorts3d.c \
-- 		refine_map/compute_cube_edata.c refine_map/compute_cube_vdata.c \
-- 		refine_map/refine_cube.c refine_map/update_cube_edata.c \
-- 		refine_map/update_cube_vdata.c refine_map/find_edge_cube.c \
-- 		refine_map/init_cube_edata.c refine_map/compute_mesh_edata.c \
-- 		refine_map/compute_mesh_vdata.c refine_map/find_edge_mesh.c \
-- 		refine_map/init_mesh_edata.c refine_map/refine_mesh.c \
-- 		refine_map/update_mesh_edata.c refine_map/update_mesh_vdata.c \
-- 		refine_map/refine_map.c refine_map/make_comm_graph.c \
-- 		refine_part/refine_part.c refine_part/kl_refine.c \
-- 		refine_part/make_maps_ref.c refine_part/make_terms_ref.c \
-- 		internal/force_internal.c internal/improve_internal.c \
-- 		internal/check_internal.c \
-- 		misc/define_subcubes.c misc/define_submeshes.c \
-- 		misc/divide_procs.c misc/merge_goals.c misc/make_term_props.c \
-- 		misc/count.c misc/countup.c misc/countup_cube.c \
-- 		misc/countup_mesh.c misc/make_subgoal.c \
-- 		misc/find_maxdeg.c misc/make_maps.c misc/make_setlists.c \
-- 		misc/sequence.c misc/perturb.c misc/simple_part.c \
-- 		misc/time_kernels.c misc/timing.c \
-- 		util/affirm.c util/array_alloc_2D.c util/bit_reverse.c \
-- 		util/checkpnt.c util/cpvec.c util/dot.c \
-- 		util/doubleout.c util/input_int.c util/gray.c \
-- 		util/machine_params.c util/makevwsqrt.c util/mkvec.c util/norm.c \
--                 util/normalize.c util/mergesort.c \
--                 util/randomize.c util/smalloc.c util/bail.c \
-- 		util/scadd.c util/seconds.c util/setvec.c util/shell_sort.c \
-- 		util/strout.c util/tri_prod.c util/true_or_false.c \
-- 		util/update.c  util/vecout.c util/vecran.c \
--                 util/vecscale.c 
-- 
-  FILES.o=	$(FILES.c:.c=.o) 
-- FILESMINUSBLAS.o=	$(FILESMINUSBLAS.c:.c=.o) 
-- 
-- 
-- ${DEST}:	${FILES.c} chaco.a Makefile
-- 		${CC} ${OFLAGS} chaco.a -lm -o ${DEST}
-  
-- chaco.a:	${FILES.o}
-- 		${AR} chaco.a ${FILES.o} ; ${RANLIB} chaco.a
-  
-! chacominusblas.a:	${FILESMINUSBLAS.o}
-! 		${AR} chacominusblas.a ${FILESMINUSBLAS.o} ; ${RANLIB} chacominusblas.a
-  
-  lint:
-  		lint ${IFLAG} ${FILES.c} -lm
---- 87,97 ----
-  		util/update.c  util/vecout.c util/vecran.c \
-                  util/vecscale.c 
-  
-  FILES.o=	$(FILES.c:.c=.o) 
-  
-  
-! ${DEST}:	${FILES.o} Makefile
-! 		${CC} ${OFLAGS} ${FILES.o} -lm -o ${DEST}
-  
-  lint:
-  		lint ${IFLAG} ${FILES.c} -lm
 Only in src/code/misc: count.o
 Only in src/code/misc: countup_cube.o
@@ -398,6 +252,6 @@
 Only in src/code/misc: time_kernels.o
 diff -rc src/code/misc/timing.c old/code/misc/timing.c
-*** src/code/misc/timing.c	2010-07-16 16:28:47.366242590 -0700
---- old/code/misc/timing.c	1997-01-03 09:10:52.000000000 -0800
+*** src/code/misc/timing.c  2010-07-16 16:28:47.366242590 -0700
+--- old/code/misc/timing.c  1997-01-03 09:10:52.000000000 -0800
 ***************
 *** 3,9 ****
@@ -443,6 +297,6 @@
 Only in src/code/symmlq: pow_dd.o
 diff -rc src/code/symmlq/symmlqblas.f old/code/symmlq/symmlqblas.f
-*** src/code/symmlq/symmlqblas.f	2010-07-21 18:09:10.370123273 -0700
---- old/code/symmlq/symmlqblas.f	2010-07-21 14:02:09.633743650 -0700
+*** src/code/symmlq/symmlqblas.f  2010-07-21 18:09:10.370123273 -0700
+--- old/code/symmlq/symmlqblas.f  2010-07-21 14:02:09.633743650 -0700
 ***************
 *** 16,22 ****
@@ -470,12 +324,12 @@
 Only in src/code/util: array_alloc_2D.o
 diff -rc src/code/util/bail.c old/code/util/bail.c
-*** src/code/util/bail.c	2010-07-16 16:28:47.368242609 -0700
---- old/code/util/bail.c	1995-08-08 14:33:01.000000000 -0700
+*** src/code/util/bail.c  2010-07-16 16:28:47.368242609 -0700
+--- old/code/util/bail.c  1995-08-08 14:33:01.000000000 -0700
 ***************
 *** 4,10 ****
   
-  #include	<stdio.h>
-  #include	<string.h>
-- #include	"defs.h"
+  #include  <stdio.h>
+  #include  <string.h>
+- #include  "defs.h"
   
   /* Wrapper for exit() - print message and exit with status code. Exit code
@@ -487,5 +341,5 @@
   int       status;
   {
-      extern FILE *Output_File;		/* Output file or NULL */
+      extern FILE *Output_File;   /* Output file or NULL */
 +     void      exit();
   
@@ -495,12 +349,12 @@
 Only in src/code/util: bit_reverse.o
 diff -rc src/code/util/checkpnt.c old/code/util/checkpnt.c
-*** src/code/util/checkpnt.c	2010-07-16 16:28:47.370242629 -0700
---- old/code/util/checkpnt.c	1995-08-08 14:33:01.000000000 -0700
+*** src/code/util/checkpnt.c  2010-07-16 16:28:47.370242629 -0700
+--- old/code/util/checkpnt.c  1995-08-08 14:33:01.000000000 -0700
 ***************
 *** 4,10 ****
   
-  #include	<stdio.h>
-  #include	<string.h>
-- #include	"defs.h"
+  #include  <stdio.h>
+  #include  <string.h>
+- #include  "defs.h"
   
   /* Debug break point. */
@@ -511,6 +365,6 @@
 Only in src/code/util: dot.o
 diff -rc src/code/util/doubleout.c old/code/util/doubleout.c
-*** src/code/util/doubleout.c	2010-07-16 16:28:47.372242648 -0700
---- old/code/util/doubleout.c	1995-08-08 14:33:02.000000000 -0700
+*** src/code/util/doubleout.c 2010-07-16 16:28:47.372242648 -0700
+--- old/code/util/doubleout.c 1995-08-08 14:33:02.000000000 -0700
 ***************
 *** 3,9 ****
@@ -538,6 +392,6 @@
 Only in src/code/util: shell_sort.o
 diff -rc src/code/util/smalloc.c old/code/util/smalloc.c
-*** src/code/util/smalloc.c	2010-07-16 16:28:47.375242677 -0700
---- old/code/util/smalloc.c	1996-03-11 10:44:07.000000000 -0800
+*** src/code/util/smalloc.c 2010-07-16 16:28:47.375242677 -0700
+--- old/code/util/smalloc.c 1996-03-11 10:44:07.000000000 -0800
 ***************
 *** 4,10 ****
@@ -547,17 +401,17 @@
 - #include "defs.h"
   
-  static int nmalloc = 0;		/* number of calls to malloc */
-  static int nfree = 0;		/* number of calls to free */
+  static int nmalloc = 0;   /* number of calls to malloc */
+  static int nfree = 0;   /* number of calls to free */
 --- 4,9 ----
 Only in src/code/util: smalloc.o
 diff -rc src/code/util/strout.c old/code/util/strout.c
-*** src/code/util/strout.c	2010-07-16 16:28:47.377242697 -0700
---- old/code/util/strout.c	1995-08-08 14:33:05.000000000 -0700
+*** src/code/util/strout.c  2010-07-16 16:28:47.377242697 -0700
+--- old/code/util/strout.c  1995-08-08 14:33:05.000000000 -0700
 ***************
 *** 4,10 ****
   
-  #include	<stdio.h>
-  #include	<string.h>
-- #include	"defs.h"
+  #include  <stdio.h>
+  #include  <string.h>
+- #include  "defs.h"
   
   /* Wrapper for a printf statement with a string as only arg.
Index: sm/trunk-jpl/externalpackages/chaco/patches/Makefile.mac-sierra.patch
===================================================================
--- /issm/trunk-jpl/externalpackages/chaco/patches/Makefile.mac-sierra.patch	(revision 28137)
+++ 	(revision )
@@ -1,11 +1,0 @@
---- ./src/code/Makefile	2016-02-16 19:39:30.000000000 -0800
-+++ ./Makefile	2016-02-16 19:37:49.000000000 -0800
-@@ -6,7 +6,7 @@
- #CFLAGS =	-O2
- #OFLAGS =	-O2
- #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
--CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
-+CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g -I/usr/local/include/ -Wno-implicit-function-declaration 
- #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
- OFLAGS =	-O2 
- #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
Index: /issm/trunk-jpl/externalpackages/chaco/patches/Makefile.patch
===================================================================
--- /issm/trunk-jpl/externalpackages/chaco/patches/Makefile.patch	(revision 28137)
+++ /issm/trunk-jpl/externalpackages/chaco/patches/Makefile.patch	(revision 28138)
@@ -1,22 +1,213 @@
-cat Makefile.patch 
---- Makefile.bak	2023-12-16 14:13:20.545167957 -0500
-+++ src/code/Makefile	2023-12-16 14:15:23.204795093 -0500
-@@ -6,13 +6,15 @@
- #CFLAGS =	-O2
- #OFLAGS =	-O2
- #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
--CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
-+CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g -I/usr/include/malloc -Wno-implicit-function-declaration
- #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
- OFLAGS =	-O2 
- #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
--AR =             /usr/bin/ar rcv
-+#AR =             /usr/bin/ar rcv
+--- ./src/code/Makefile	1997-10-02 10:23:22
++++ ./Makefile	2024-03-12 14:07:55
+@@ -1,106 +1,117 @@
+-DEST_DIR = 	../exec
+-DEST=		${DEST_DIR}/chaco
+-CC = 		gcc
++DEST_DIR =	../exec
++DEST =		${DEST_DIR}/chaco
++CC =		gcc
+ IFLAG =		-Imain
+-CFLAGS =	-O2
+-OFLAGS =	-O2
++CFLAGS =	-fPIC -pthread -fexceptions -g -I/usr/include/malloc -w -Wno-error=implicit-int -Wno-error=implicit-function-declaration
++OFLAGS =	-O2 -fno-omit-frame-pointer
 +AR =		ar rcv
- #RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
--RANLIB =         /usr/bin/ranlib
-+#RANLIB =         /usr/bin/ranlib
 +RANLIB =	ranlib
  
- FILES.c=	main/user_params.c main/interface.c main/main.c \
- 		submain/balance.c submain/divide.c submain/submain.c \
+-FILES.c=	main/user_params.c main/interface.c main/main.c \
+-		submain/balance.c submain/divide.c submain/submain.c \
+-		input/input_assign.c \
+-		input/check_input.c input/input.c input/input_geom.c \
+-		input/input_graph.c input/read_params.c input/reflect_input.c \
+-		input/read_val.c \
+-		graph/check_graph.c graph/free_graph.c \
+-		graph/reformat.c graph/subgraph.c graph/graph_out.c \
+-		inertial/eigenvec2.c inertial/eigenvec3.c inertial/inertial.c \
+-		inertial/inertial1d.c inertial/inertial2d.c \
+-		inertial/inertial3d.c inertial/make_subgeom.c \
+-		klspiff/buckets.c klspiff/buckets_bi.c klspiff/buckets1.c \
+-		klspiff/bilistops.c klspiff/coarsen_kl.c klspiff/count_weights.c \
+-		klspiff/compress_ewgts.c klspiff/kl_init.c klspiff/kl_output.c \
+-		klspiff/klspiff.c klspiff/make_bndy_list.c \
+-		klspiff/make_kl_list.c klspiff/nway_kl.c \
+-		klvspiff/bpm_improve.c klvspiff/bucketsv.c \
+-		klvspiff/clear_dvals.c klvspiff/coarsen_klv.c \
+-		klvspiff/countup_vtx_sep.c klvspiff/find_bndy.c klvspiff/flow.c \
+-		klvspiff/klv_init.c klvspiff/klvspiff.c klvspiff/make_bpgraph.c \
+-		klvspiff/make_sep_list.c klvspiff/matching.c klvspiff/nway_klv.c \
+-		klvspiff/flatten.c \
+-		coarsen/coarsen.c coarsen/interpolate.c coarsen/makefgraph.c \
+-		coarsen/makeccoords.c \
+-		coarsen/coarsen1.c coarsen/makev2cv.c \
+-		coarsen/maxmatch.c coarsen/maxmatch1.c coarsen/maxmatch2.c \
+-		coarsen/maxmatch3.c coarsen/maxmatch4.c coarsen/maxmatch5.c \
+-		connect/add_edges.c connect/connected.c connect/find_edges.c \
+-		eigen/bidir.c eigen/bisect.c eigen/checkeig.c \
+-		eigen/checkeig_ext.c \
+-		eigen/checkorth.c eigen/cksturmcnt.c eigen/mkeigvecs.c\
+-		eigen/eigensolve.c eigen/get_extval.c eigen/get_ritzvals.c \
+-		eigen/lanczos_FO.c eigen/lanczos_SO.c eigen/lanczos_SO_float.c \
+-		eigen/lanczos_ext.c eigen/lanczos_ext_float.c eigen/lanc_seconds.c\
+-		eigen/lanpause.c eigen/makeorthlnk.c eigen/mkscanlist.c \
+-		eigen/orthog1.c eigen/orthogonalize.c eigen/orthogvec.c \
+-		eigen/ql.c eigen/rqi.c eigen/rqi_ext.c eigen/scale_diag.c \
+-		eigen/scanmax.c eigen/scanmin.c eigen/solistout.c \
+-                eigen/sorthog.c eigen/splarax.c eigen/sturmcnt.c \
+-		eigen/Tevec.c eigen/tri_solve.c eigen/warnings.c \
+-		symmlq/aprod.c symmlq/msolve.c symmlq/pow_dd.c \
+-		symmlq/symmlq.c symmlq/symmlqblas.c \
+-		tinvit/tinvit.c tinvit/pythag.c tinvit/epslon.c \
+-		optimize/determinant.c optimize/func2d.c \
+-		optimize/func3d.c optimize/opt2d.c optimize/opt3d.c \
+-		assign/assign.c assign/assign_out.c assign/mapper.c \
+-		assign/median.c assign/merge_assign.c \
+-		assign/rec_median.c assign/rotate.c assign/y2x.c \
+-		bpmatch/checkbp.c bpmatch/inits2d.c bpmatch/inits3d.c \
+-		bpmatch/genvals2d.c bpmatch/genvals3d.c bpmatch/map2d.c \
+-		bpmatch/map3d.c bpmatch/movevtxs.c \
+-		bpmatch/sorts2d.c bpmatch/sorts3d.c \
+-		refine_map/compute_cube_edata.c refine_map/compute_cube_vdata.c \
+-		refine_map/refine_cube.c refine_map/update_cube_edata.c \
+-		refine_map/update_cube_vdata.c refine_map/find_edge_cube.c \
+-		refine_map/init_cube_edata.c refine_map/compute_mesh_edata.c \
+-		refine_map/compute_mesh_vdata.c refine_map/find_edge_mesh.c \
+-		refine_map/init_mesh_edata.c refine_map/refine_mesh.c \
+-		refine_map/update_mesh_edata.c refine_map/update_mesh_vdata.c \
+-		refine_map/refine_map.c refine_map/make_comm_graph.c \
+-		refine_part/refine_part.c refine_part/kl_refine.c \
+-		refine_part/make_maps_ref.c refine_part/make_terms_ref.c \
+-		internal/force_internal.c internal/improve_internal.c \
+-		internal/check_internal.c \
+-		misc/define_subcubes.c misc/define_submeshes.c \
+-		misc/divide_procs.c misc/merge_goals.c misc/make_term_props.c \
+-		misc/count.c misc/countup.c misc/countup_cube.c \
+-		misc/countup_mesh.c misc/make_subgoal.c \
+-		misc/find_maxdeg.c misc/make_maps.c misc/make_setlists.c \
+-		misc/sequence.c misc/perturb.c misc/simple_part.c \
+-		misc/time_kernels.c misc/timing.c \
+-		util/affirm.c util/array_alloc_2D.c util/bit_reverse.c \
+-		util/checkpnt.c util/cpvec.c util/dot.c \
+-		util/doubleout.c util/input_int.c util/gray.c \
+-		util/machine_params.c util/makevwsqrt.c util/mkvec.c util/norm.c \
+-                util/normalize.c util/mergesort.c \
+-                util/randomize.c util/smalloc.c util/bail.c \
+-		util/scadd.c util/seconds.c util/setvec.c util/shell_sort.c \
+-		util/strout.c util/tri_prod.c util/true_or_false.c \
+-		util/update.c  util/vecout.c util/vecran.c \
+-                util/vecscale.c 
++FILESMINUSBLAS.c = \
++	main/user_params.c main/interface.c main/main.c \
++	submain/balance.c submain/divide.c submain/submain.c \
++	input/input_assign.c \
++	input/check_input.c input/input.c input/input_geom.c \
++	input/input_graph.c input/read_params.c input/reflect_input.c \
++	input/read_val.c \
++	graph/check_graph.c graph/free_graph.c \
++	graph/reformat.c graph/subgraph.c graph/graph_out.c \
++	inertial/eigenvec2.c inertial/eigenvec3.c inertial/inertial.c \
++	inertial/inertial1d.c inertial/inertial2d.c \
++	inertial/inertial3d.c inertial/make_subgeom.c \
++	klspiff/buckets.c klspiff/buckets_bi.c klspiff/buckets1.c \
++	klspiff/bilistops.c klspiff/coarsen_kl.c klspiff/count_weights.c \
++	klspiff/compress_ewgts.c klspiff/kl_init.c klspiff/kl_output.c \
++	klspiff/klspiff.c klspiff/make_bndy_list.c \
++	klspiff/make_kl_list.c klspiff/nway_kl.c \
++	klvspiff/bpm_improve.c klvspiff/bucketsv.c \
++	klvspiff/clear_dvals.c klvspiff/coarsen_klv.c \
++	klvspiff/countup_vtx_sep.c klvspiff/find_bndy.c klvspiff/flow.c \
++	klvspiff/klv_init.c klvspiff/klvspiff.c klvspiff/make_bpgraph.c \
++	klvspiff/make_sep_list.c klvspiff/matching.c klvspiff/nway_klv.c \
++	klvspiff/flatten.c \
++	coarsen/coarsen.c coarsen/interpolate.c coarsen/makefgraph.c \
++	coarsen/makeccoords.c \
++	coarsen/coarsen1.c coarsen/makev2cv.c \
++	coarsen/maxmatch.c coarsen/maxmatch1.c coarsen/maxmatch2.c \
++	coarsen/maxmatch3.c coarsen/maxmatch4.c coarsen/maxmatch5.c \
++	connect/add_edges.c connect/connected.c connect/find_edges.c \
++	eigen/bidir.c eigen/bisect.c eigen/checkeig.c \
++	eigen/checkeig_ext.c \
++	eigen/checkorth.c eigen/cksturmcnt.c eigen/mkeigvecs.c\
++	eigen/eigensolve.c eigen/get_extval.c eigen/get_ritzvals.c \
++	eigen/lanczos_FO.c eigen/lanczos_SO.c eigen/lanczos_SO_float.c \
++	eigen/lanczos_ext.c eigen/lanczos_ext_float.c eigen/lanc_seconds.c\
++	eigen/lanpause.c eigen/makeorthlnk.c eigen/mkscanlist.c \
++	eigen/orthog1.c eigen/orthogonalize.c eigen/orthogvec.c \
++	eigen/ql.c eigen/rqi.c eigen/rqi_ext.c eigen/scale_diag.c \
++	eigen/scanmax.c eigen/scanmin.c eigen/solistout.c \
++	eigen/sorthog.c eigen/splarax.c eigen/sturmcnt.c \
++	eigen/Tevec.c eigen/tri_solve.c eigen/warnings.c \
++	symmlq/aprod.c symmlq/msolve.c symmlq/pow_dd.c \
++	symmlq/symmlq.c \
++	tinvit/tinvit.c tinvit/pythag.c tinvit/epslon.c \
++	optimize/determinant.c optimize/func2d.c \
++	optimize/func3d.c optimize/opt2d.c optimize/opt3d.c \
++	assign/assign.c assign/assign_out.c assign/mapper.c \
++	assign/median.c assign/merge_assign.c \
++	assign/rec_median.c assign/rotate.c assign/y2x.c \
++	bpmatch/checkbp.c bpmatch/inits2d.c bpmatch/inits3d.c \
++	bpmatch/genvals2d.c bpmatch/genvals3d.c bpmatch/map2d.c \
++	bpmatch/map3d.c bpmatch/movevtxs.c \
++	bpmatch/sorts2d.c bpmatch/sorts3d.c \
++	refine_map/compute_cube_edata.c refine_map/compute_cube_vdata.c \
++	refine_map/refine_cube.c refine_map/update_cube_edata.c \
++	refine_map/update_cube_vdata.c refine_map/find_edge_cube.c \
++	refine_map/init_cube_edata.c refine_map/compute_mesh_edata.c \
++	refine_map/compute_mesh_vdata.c refine_map/find_edge_mesh.c \
++	refine_map/init_mesh_edata.c refine_map/refine_mesh.c \
++	refine_map/update_mesh_edata.c refine_map/update_mesh_vdata.c \
++	refine_map/refine_map.c refine_map/make_comm_graph.c \
++	refine_part/refine_part.c refine_part/kl_refine.c \
++	refine_part/make_maps_ref.c refine_part/make_terms_ref.c \
++	internal/force_internal.c internal/improve_internal.c \
++	internal/check_internal.c \
++	misc/define_subcubes.c misc/define_submeshes.c \
++	misc/divide_procs.c misc/merge_goals.c misc/make_term_props.c \
++	misc/count.c misc/countup.c misc/countup_cube.c \
++	misc/countup_mesh.c misc/make_subgoal.c \
++	misc/find_maxdeg.c misc/make_maps.c misc/make_setlists.c \
++	misc/sequence.c misc/perturb.c misc/simple_part.c \
++	misc/time_kernels.c misc/timing.c \
++	util/affirm.c util/array_alloc_2D.c util/bit_reverse.c \
++	util/checkpnt.c util/cpvec.c util/dot.c \
++	util/doubleout.c util/input_int.c util/gray.c \
++	util/machine_params.c util/makevwsqrt.c util/mkvec.c util/norm.c \
++	util/normalize.c util/mergesort.c \
++	util/randomize.c util/smalloc.c util/bail.c \
++	util/scadd.c util/seconds.c util/setvec.c util/shell_sort.c \
++	util/strout.c util/tri_prod.c util/true_or_false.c \
++	util/update.c util/vecout.c util/vecran.c \
++	util/vecscale.c
+ 
+-FILES.o=	$(FILES.c:.c=.o) 
++FILES.c = $(FILESMINUSBLAS.c) symmlq/symmlqblas.c
+ 
++FILES.o =			$(FILES.c:.c=.o)
++FILESMINUSBLAS.o =	$(FILESMINUSBLAS.c:.c=.o)
+ 
+-${DEST}:	${FILES.o} Makefile
+-		${CC} ${OFLAGS} ${FILES.o} -lm -o ${DEST}
++${DEST}: ${FILES.c} chaco.a Makefile
++	${CC} ${OFLAGS} chaco.a -lm -o ${DEST}
+ 
++chaco.a: ${FILES.o}
++	${AR} chaco.a ${FILES.o} ; ${RANLIB} chaco.a
++
++chacominusblas.a: ${FILESMINUSBLAS.o}
++	${AR} chacominusblas.a ${FILESMINUSBLAS.o} ; ${RANLIB} chacominusblas.a
++
+ lint:
+-		lint ${IFLAG} ${FILES.c} -lm
++	lint ${IFLAG} ${FILES.c} -lm
+ 
+ alint:
+-		alint ${IFLAG} ${FILES.c} -lm
++	alint ${IFLAG} ${FILES.c} -lm
+ 
+ clean:
+-		rm -f */*.o ${DEST_DIR}/core
++	rm -f */*.o ${DEST_DIR}/core
+ 
+ .c.o:
+-		${CC} -c ${IFLAG} ${CFLAGS} -o $*.o $*.c
++	${CC} -c ${IFLAG} ${CFLAGS} -o $*.o $*.c
Index: sm/trunk-jpl/externalpackages/cmake/install-macosx64-highsierra.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/cmake/install-macosx64-highsierra.sh	(revision 28137)
+++ 	(revision )
@@ -1,28 +1,0 @@
-#!/bin/bash
-set -eu
-VER="3.14.5"
-
-#Some cleanup
-rm -rf install cmake-$VER.tar.gz
-mkdir install
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/cmake-$VER.tar.gz" "cmake-$VER.tar.gz"
-
-#Untar
-tar -zxvf cmake-$VER.tar.gz
-
-#Move cmake into install directory
-mv cmake-$VER/* install
-rm -rf cmake-$VER
-
-#Compile cmake
-cd install
-./bootstrap --prefix=$ISSM_DIR/externalpackages/cmake/install
-
-if [ $# -eq 0 ]; then
-	make
-else
-	make -j $1;
-fi
-make install
Index: sm/trunk-jpl/externalpackages/cmake/install-macosx64-snowleopard.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/cmake/install-macosx64-snowleopard.sh	(revision 28137)
+++ 	(revision )
@@ -1,30 +1,0 @@
-#!/bin/bash
-set -eu 
-VER="2.8.11.2"
-
-#Some cleanup
-rm -rf install cmake-$VER
-mkdir install
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/cmake-$VER.tar.gz" "cmake-$VER.tar.gz"
-
-#Untar 
-tar -zxvf  cmake-$VER.tar.gz
-
-#Move cmake into install directory
-mv cmake-$VER/* install
-rm -rf cmake-$VER
-
-LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran"
-F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
-
-#Compile cmake
-cd install 
-./bootstrap --prefix=$ISSM_DIR/externalpackages/cmake/install
-if [ $# -eq 0 ]; then
-	make
-else 
-	make -j $1; 
-fi
-make install
Index: /issm/trunk-jpl/externalpackages/cmake/install.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/cmake/install.sh	(revision 28137)
+++ /issm/trunk-jpl/externalpackages/cmake/install.sh	(revision 28138)
@@ -5,5 +5,5 @@
 ## Constants
 #
-VER="3.19.3"
+VER="3.28.3"
 
 PREFIX="${ISSM_DIR}/externalpackages/cmake/install" # Set to location where external package should be installed
Index: /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 28137)
+++ /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 28138)
@@ -74,5 +74,5 @@
 	-DBUILD_STATIC_LIBS=OFF \
 	-DCMAKE_C_COMPILER=${MPI_HOME}/bin/mpicc \
-	-DCMAKE_C_FLAGS="-w" \
+	-DCMAKE_C_FLAGS="-w -Wno-error=implicit-int" \
 	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
 	-DCMAKE_CXX_FLAGS="-fdelayed-template-parsing -w" \
@@ -139,3 +139,2 @@
 install_name_tool -add_rpath ${LIBGFORTRAN_ROOT} libteuchos.dylib
 install_name_tool -add_rpath ${LIBGFORTRAN_ROOT} liboptpp.dylib
-
Index: /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/mac/CMakeLists.txt.patch
===================================================================
--- /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/mac/CMakeLists.txt.patch	(revision 28138)
+++ /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/mac/CMakeLists.txt.patch	(revision 28138)
@@ -0,0 +1,4 @@
+284c284
+<       set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
+---
+>       set(CMAKE_INSTALL_RPATH "@executable_path/../lib;${LIBGFORTRAN_ROOT}")
Index: /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/static/CMakeLists.txt.patch
===================================================================
--- /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/static/CMakeLists.txt.patch	(revision 28138)
+++ /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/static/CMakeLists.txt.patch	(revision 28138)
@@ -0,0 +1,9 @@
+858,861c860,862
+<     find_library(METIS_LIB metis PATH_SUFFIXES lib)
+<     find_path(METIS_INC "metis.h" PATH_SUFFIXES include)
+<     if(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC)
+<       message(STATUS "Using system version of METIS")
+---
+>     if(METIS_ROOT)
+>       find_library(METIS_LIB metis PATHS ${METIS_ROOT} PATH_SUFFIXES lib)
+>       find_path(METIS_INC "metis.h" PATHS ${METIS_ROOT} PATH_SUFFIXES include)
Index: /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/static/mac/CMakeLists.txt.patch
===================================================================
--- /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/static/mac/CMakeLists.txt.patch	(revision 28138)
+++ /issm/trunk-jpl/externalpackages/gmsh/configs/4.12.2/static/mac/CMakeLists.txt.patch	(revision 28138)
@@ -0,0 +1,4 @@
+207a208
+>   set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so")
+226a228
+>   set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so")
Index: /issm/trunk-jpl/externalpackages/gsl/install.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/gsl/install.sh	(revision 28137)
+++ /issm/trunk-jpl/externalpackages/gsl/install.sh	(revision 28138)
@@ -37,2 +37,3 @@
 	make -j $1 install
 fi
+
Index: /issm/trunk-jpl/externalpackages/m1qn3/install-mac.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/m1qn3/install-mac.sh	(revision 28137)
+++ /issm/trunk-jpl/externalpackages/m1qn3/install-mac.sh	(revision 28138)
@@ -1,4 +1,5 @@
 #!/bin/bash
 set -eu
+
 
 ## Constants
Index: /issm/trunk-jpl/externalpackages/petsc/install-3.20-mac-intel.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/petsc/install-3.20-mac-intel.sh	(revision 28137)
+++ /issm/trunk-jpl/externalpackages/petsc/install-3.20-mac-intel.sh	(revision 28138)
@@ -38,5 +38,4 @@
 	--PETSC_DIR="${PETSC_DIR}" \
 	--CFLAGS="-Wno-error=implicit-function-declaration" \
-	--LDFLAGS="-Wl,-ld_classic" \
 	--with-debugging=0 \
 	--with-valgrind=0 \
@@ -45,5 +44,5 @@
 	--with-pic=1 \
 	--download-fblaslapack=1 \
-	--download-mpich=1 \
+	--download-mpich="https://www.mpich.org/static/downloads/4.2.0/mpich-4.2.0.tar.gz" \
 	--download-metis=1 \
 	--download-parmetis=1 \
@@ -56,2 +55,7 @@
 make install
 
+# Need to make sure classic linker is used (should be able to remove this once MPICH fixes it)
+if [[ ${LDFLAGS} =~ "-Wl,-ld_classic" ]]; then
+	sed -i'' -e 's/-Wl,-commons,use_dylibs//g' ${PREFIX}/bin/mpicc
+	sed -i'' -e 's/-Wl,-commons,use_dylibs//g' ${PREFIX}/bin/mpicxx
+fi
Index: /issm/trunk-jpl/externalpackages/petsc/install-3.20-mac-silicon.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/petsc/install-3.20-mac-silicon.sh	(revision 28137)
+++ /issm/trunk-jpl/externalpackages/petsc/install-3.20-mac-silicon.sh	(revision 28138)
@@ -5,5 +5,5 @@
 ## Constants
 #
-VER="3.20.2"
+VER="3.20.5"
 
 PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
@@ -45,2 +45,8 @@
 make
 make install
+
+# Need to make sure classic linker is used (should be able to remove this once MPICH fixes it)
+if [[ ${LDFLAGS} =~ "-Wl,-ld_classic" ]]; then
+	sed -i'' -e 's/-Wl,-commons,use_dylibs//g' ${PREFIX}/bin/mpicc
+	sed -i'' -e 's/-Wl,-commons,use_dylibs//g' ${PREFIX}/bin/mpicxx
+fi
Index: /issm/trunk-jpl/jenkins/mac-intel-full
===================================================================
--- /issm/trunk-jpl/jenkins/mac-intel-full	(revision 28137)
+++ /issm/trunk-jpl/jenkins/mac-intel-full	(revision 28138)
@@ -24,5 +24,5 @@
 	--with-python-dir=/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9 \
 	--with-python-numpy-dir=/Library/Python/3.9/site-packages/numpy/core/include/numpy \
-	--with-fortran-lib="-L/opt/homebrew/Cellar/gcc/13.1.0/lib/gcc/13 -lgfortran" \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/13.2.0/lib/gcc/13 -lgfortran" \
 	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
 	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
@@ -51,5 +51,5 @@
 	autotools	install-mac.sh
 	cmake		install.sh
-	petsc		install-3.14-mac.sh
+	petsc		install-3.20-mac-intel.sh
 	gsl			install.sh
 	boost		install-1.7-mac.sh
@@ -91,4 +91,5 @@
 
 # Nightly run options
-MATLAB_NROPTIONS=""
-PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota'),119,216,274,423,430,433,435,441:442,448,462:464,508,517,544,546,701,702,703,808]"
+PYTHON_NROPTIONS="--exclude Dakota 119 216 274 423 430 433 435 441:442 448 462:464 508 517 544 546 702:703 808"
+
