Index: /issm/trunk-jpl/configs/config-ios-armv7.sh
===================================================================
--- /issm/trunk-jpl/configs/config-ios-armv7.sh	(revision 18228)
+++ /issm/trunk-jpl/configs/config-ios-armv7.sh	(revision 18228)
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -eu
+
+export DEVROOT=`xcode-select --print-path`
+export SDKROOT="$DEVROOT/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk"
+export CLANG="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
+export CLANGXX="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+export CC=$CLANG
+export LD=$DEVROOT/usr/bin/ld
+export CPPFLAGS="-isysroot $SDKROOT/usr/include"
+export CXX=$CLANGXX
+export CXXFLAGS="-O -arch armv7 -isysroot $SDKROOT -I$SDKROOT/usr/include" 
+export CFLAGS="-O -arch armv7 -isysroot $SDKROOT -I$SDKROOT/usr/include"
+export AR=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+export AS=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/as
+export LDFLAGS="-lstdc++ -arch armv7 -isysroot $SDKROOT" 
+export LIBTOOL=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
+export STRIP=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+export RANLIB=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+./configure                                                        \
+	--prefix=$ISSM_DIR                                              \
+   --build="i386-apple-darwin13.1.0"                               \
+   --host="armv7-apple-darwin14.0.0"                               \
+   --enable-shared                                                 \
+   --with-ios=yes                                                  \
+   --with-Gia=no                                                   \
+   --without-fortran                                               \
+	--without-wrappers                                              \
+	--without-kriging                                               \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install           \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
Index: /issm/trunk-jpl/configs/config-ios-armv7s.sh
===================================================================
--- /issm/trunk-jpl/configs/config-ios-armv7s.sh	(revision 18228)
+++ /issm/trunk-jpl/configs/config-ios-armv7s.sh	(revision 18228)
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -eu
+
+export DEVROOT=`xcode-select --print-path`
+export SDKROOT="$DEVROOT/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk"
+export CLANG="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
+export CLANGXX="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+export CC=$CLANG
+export LD=$DEVROOT/usr/bin/ld
+export CPPFLAGS="-isysroot $SDKROOT/usr/include"
+export CXX=$CLANGXX
+export CXXFLAGS="-O -arch armv7s -isysroot $SDKROOT -I$SDKROOT/usr/include" 
+export CFLAGS="-O -arch armv7s -isysroot $SDKROOT -I$SDKROOT/usr/include"
+export AR=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+export AS=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/as
+export LDFLAGS="-lstdc++ -arch armv7s -isysroot $SDKROOT" 
+export LIBTOOL=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
+export STRIP=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+export RANLIB=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+./configure                                                        \
+	--prefix=$ISSM_DIR                                              \
+   --build="i386-apple-darwin13.1.0"                               \
+   --host="armv7s-apple-darwin14.0.0"                               \
+   --enable-shared                                                 \
+   --with-ios=yes                                                  \
+   --with-Gia=no                                                   \
+   --without-fortran                                               \
+	--without-wrappers                                              \
+	--without-kriging                                               \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install           \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
Index: /issm/trunk-jpl/configs/config-ios-simulator.sh
===================================================================
--- /issm/trunk-jpl/configs/config-ios-simulator.sh	(revision 18228)
+++ /issm/trunk-jpl/configs/config-ios-simulator.sh	(revision 18228)
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -eu
+
+export DEVROOT=`xcode-select --print-path`
+export SDKROOT="$DEVROOT/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk"
+export CLANG="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
+export CLANGXX="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+export CC=$CLANG
+export CXX=$CLANGXX
+export LD=$DEVROOT/usr/bin/ld
+export CPPFLAGS="-isysroot $SDKROOT/usr/include"
+export CXXFLAGS="-O -arch i386 -miphoneos-version-min=7.1 -isysroot $SDKROOT -I$SDKROOT/usr/include"
+export CFLAGS="-O -arch i386 -miphoneos-version-min=7.1  -isysroot $SDKROOT -I$SDKROOT/usr/include"
+export AR=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+export AS=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/as
+export LDFLAGS="-lstdc++ -arch i386 -isysroot $SDKROOT" 
+export LIBTOOL=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
+export STRIP=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+export RANLIB=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+./configure                                                        \
+	--prefix=$ISSM_DIR                                              \
+   --target="i386-apple-darwin13.1.0"                              \
+   --enable-shared                                                 \
+   --with-ios=yes                                                  \
+   --with-Gia=no                                                   \
+   --without-fortran                                               \
+	--without-wrappers                                              \
+	--without-kriging                                               \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install           \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
Index: /issm/trunk-jpl/externalpackages/gsl/finite.patch
===================================================================
--- /issm/trunk-jpl/externalpackages/gsl/finite.patch	(revision 18228)
+++ /issm/trunk-jpl/externalpackages/gsl/finite.patch	(revision 18228)
@@ -0,0 +1,354 @@
+diff -ruN src/gsl_math.h src-mod/gsl_math.h
+--- src/gsl_math.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/gsl_math.h	2014-05-27 18:47:26.000000000 -0700
+@@ -116,7 +116,7 @@
+ #define GSL_SIGN(x)    ((x) >= 0.0 ? 1 : -1)
+ 
+ /* Return nonzero if x is a real number, i.e. non NaN or infinite. */
+-#define GSL_IS_REAL(x) (gsl_finite(x))
++#define GSL_IS_REAL(x) (isfinite(x))
+ 
+ /* Definition of an arbitrary function with parameters */
+ 
+diff -ruN src/integration/cquad.c src-mod/integration/cquad.c
+--- src/integration/cquad.c	2011-05-01 11:46:28.000000000 -0700
++++ src-mod/integration/cquad.c	2014-05-27 18:47:26.000000000 -0700
+@@ -235,7 +235,7 @@
+     {
+       iv->fx[i] = GSL_FN_EVAL (f, m + xi[i] * h);
+       neval++;
+-      if (!finite (iv->fx[i]))
++      if (!isfinite (iv->fx[i]))
+ 	{
+ 	  nans[nnans++] = i;
+ 	  iv->fx[i] = 0.0;
+@@ -319,7 +319,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[d])
+ 	    {
+-	      if (!finite (iv->fx[i]))
++	      if (!isfinite (iv->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  iv->fx[i] = 0.0;
+@@ -444,7 +444,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[0])
+ 	    {
+-	      if (!finite (ivl->fx[i]))
++	      if (!isfinite (ivl->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  ivl->fx[i] = 0.0;
+@@ -510,7 +510,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[0])
+ 	    {
+-	      if (!finite (ivr->fx[i]))
++	      if (!isfinite (ivr->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  ivr->fx[i] = 0.0;
+diff -ruN src/linalg/balance.c src-mod/linalg/balance.c
+--- src/linalg/balance.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/linalg/balance.c	2014-05-27 18:47:27.000000000 -0700
+@@ -54,7 +54,7 @@
+       
+       double f = 1.0;
+       
+-      if (s == 0.0 || !gsl_finite(s))
++      if (s == 0.0 || !isfinite(s))
+         {
+           gsl_vector_set (D, j, f);
+           continue;
+diff -ruN src/min/min.h src-mod/min/min.h
+--- src/min/min.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/min/min.h	2014-05-27 18:47:27.000000000 -0700
+@@ -20,6 +20,6 @@
+ #define SAFE_FUNC_CALL(f, x, yp) \
+ do { \
+   *yp = GSL_FN_EVAL(f,x); \
+-  if (!gsl_finite(*yp)) \
++  if (!isfinite(*yp)) \
+     GSL_ERROR("computed function value is infinite or NaN", GSL_EBADFUNC); \
+ } while (0)
+diff -ruN src/multimin/simplex.c src-mod/multimin/simplex.c
+--- src/multimin/simplex.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/multimin/simplex.c	2014-05-27 18:47:27.000000000 -0700
+@@ -122,7 +122,7 @@
+ 	     we finish the contraction (and do not abort) to allow the user
+ 	     to handle the situation */
+ 
+-          if(!gsl_finite(newval))
++          if(!isfinite(newval))
+ 	    {
+ 	      status = GSL_EBADFUNC;
+ 	    }
+@@ -260,7 +260,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+   
+-  if (!gsl_finite(val))
++  if (!isfinite(val))
+     {
+       GSL_ERROR("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -283,7 +283,7 @@
+       gsl_vector_set (xtemp, i, val);
+       val = GSL_MULTIMIN_FN_EVAL (f, xtemp);
+   
+-      if (!gsl_finite(val))
++      if (!isfinite(val))
+         {
+           GSL_ERROR("non-finite function value encountered", GSL_EBADFUNC);
+         }
+@@ -374,14 +374,14 @@
+ 
+   val = nmsimplex_move_corner (-1.0, state, hi, xc, f);
+ 
+-  if (gsl_finite(val) && val < gsl_vector_get (y1, lo))
++  if (isfinite(val) && val < gsl_vector_get (y1, lo))
+     {
+ 
+       /* reflected point becomes lowest point, try expansion */
+ 
+       val2 = nmsimplex_move_corner (-2.0, state, hi, xc2, f);
+ 
+-      if (gsl_finite(val2) && val2 < gsl_vector_get (y1, lo))
++      if (isfinite(val2) && val2 < gsl_vector_get (y1, lo))
+         {
+           gsl_matrix_set_row (x1, hi, xc2);
+           gsl_vector_set (y1, hi, val2);
+@@ -397,9 +397,9 @@
+      or
+      we got a non-finite (illegal) function value */
+ 
+-  else if (!gsl_finite(val) || val > gsl_vector_get (y1, s_hi))
++  else if (!isfinite(val) || val > gsl_vector_get (y1, s_hi))
+     {
+-      if (gsl_finite(val) && val <= gsl_vector_get (y1, hi))
++      if (isfinite(val) && val <= gsl_vector_get (y1, hi))
+         {
+ 
+           /* if trial point is better than highest point, replace 
+@@ -413,7 +413,7 @@
+ 
+       val2 = nmsimplex_move_corner (0.5, state, hi, xc2, f);
+ 
+-      if (gsl_finite(val2) && val2 <= gsl_vector_get (y1, hi))
++      if (isfinite(val2) && val2 <= gsl_vector_get (y1, hi))
+         {
+           gsl_matrix_set_row (state->x1, hi, xc2);
+           gsl_vector_set (y1, hi, val2);
+diff -ruN src/multimin/simplex2.c src-mod/multimin/simplex2.c
+--- src/multimin/simplex2.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/multimin/simplex2.c	2014-05-27 18:47:27.000000000 -0700
+@@ -171,7 +171,7 @@
+ 	     we finish the contraction (and do not abort) to allow the user
+ 	     to handle the situation */
+ 
+-	  if (!gsl_finite (newval))
++	  if (!isfinite (newval))
+ 	    {
+ 	      status = GSL_EBADFUNC;
+ 	    }
+@@ -367,7 +367,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+ 
+-  if (!gsl_finite (val))
++  if (!isfinite (val))
+     {
+       GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -394,7 +394,7 @@
+ 	val = GSL_MULTIMIN_FN_EVAL (f, xtemp);
+       }
+ 
+-      if (!gsl_finite (val))
++      if (!isfinite (val))
+ 	{
+ 	  GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+ 	}
+@@ -477,13 +477,13 @@
+ 
+   val = try_corner_move (-1.0, state, hi, xc, f);
+ 
+-  if (gsl_finite (val) && val < gsl_vector_get (y1, lo))
++  if (isfinite (val) && val < gsl_vector_get (y1, lo))
+     {
+       /* reflected point is lowest, try expansion */
+ 
+       val2 = try_corner_move (-2.0, state, hi, xc2, f);
+ 
+-      if (gsl_finite (val2) && val2 < gsl_vector_get (y1, lo))
++      if (isfinite (val2) && val2 < gsl_vector_get (y1, lo))
+ 	{
+ 	  update_point (state, hi, xc2, val2);
+ 	}
+@@ -492,12 +492,12 @@
+ 	  update_point (state, hi, xc, val);
+ 	}
+     }
+-  else if (!gsl_finite (val) || val > gsl_vector_get (y1, s_hi))
++  else if (!isfinite (val) || val > gsl_vector_get (y1, s_hi))
+     {
+       /* reflection does not improve things enough, or we got a
+          non-finite function value */
+ 
+-      if (gsl_finite (val) && val <= gsl_vector_get (y1, hi))
++      if (isfinite (val) && val <= gsl_vector_get (y1, hi))
+ 	{
+ 	  /* if trial point is better than highest point, replace
+ 	     highest point */
+@@ -509,7 +509,7 @@
+ 
+       val2 = try_corner_move (0.5, state, hi, xc2, f);
+ 
+-      if (gsl_finite (val2) && val2 <= gsl_vector_get (y1, hi))
++      if (isfinite (val2) && val2 <= gsl_vector_get (y1, hi))
+ 	{
+ 	  update_point (state, hi, xc2, val2);
+ 	}
+@@ -605,7 +605,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+ 
+-  if (!gsl_finite (val))
++  if (!isfinite (val))
+     {
+       GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -669,7 +669,7 @@
+ 
+ 	val = GSL_MULTIMIN_FN_EVAL (f, &r_i.vector);
+ 
+-	if (!gsl_finite (val))
++	if (!isfinite (val))
+ 	  {
+ 	    GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+ 	  }
+diff -ruN src/roots/newton.c src-mod/roots/newton.c
+--- src/roots/newton.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/newton.c	2014-05-27 18:47:27.000000000 -0700
+@@ -83,12 +83,12 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite(f_new))
++  if (!isfinite(f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/roots/roots.h src-mod/roots/roots.h
+--- src/roots/roots.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/roots.h	2014-05-27 18:47:27.000000000 -0700
+@@ -28,7 +28,7 @@
+ #define SAFE_FUNC_CALL(f, x, yp) \
+ do { \
+   *yp = GSL_FN_EVAL(f,x); \
+-  if (!gsl_finite(*yp)) \
++  if (!isfinite(*yp)) \
+     GSL_ERROR("function value is not finite", GSL_EBADFUNC); \
+ } while (0)
+ 
+diff -ruN src/roots/secant.c src-mod/roots/secant.c
+--- src/roots/secant.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/secant.c	2014-05-27 18:47:27.000000000 -0700
+@@ -94,12 +94,12 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite (f_new))
++  if (!isfinite (f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/roots/steffenson.c src-mod/roots/steffenson.c
+--- src/roots/steffenson.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/steffenson.c	2014-05-27 18:47:27.000000000 -0700
+@@ -105,7 +105,7 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite (f_new))
++  if (!isfinite (f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+@@ -126,7 +126,7 @@
+         *root = x_1 - u * u / v ;  /* accelerated value */
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/specfunc/hyperg_U.c src-mod/specfunc/hyperg_U.c
+--- src/specfunc/hyperg_U.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/specfunc/hyperg_U.c	2014-05-27 18:47:28.000000000 -0700
+@@ -524,7 +524,7 @@
+         t_err = a0_err + b0_err;
+         dchu_val += t_val;
+         dchu_err += t_err;
+-        if(!finite(t_val) || fabs(t_val) < EPS*fabs(dchu_val)) break;
++        if(!isfinite(t_val) || fabs(t_val) < EPS*fabs(dchu_val)) break;
+       }
+ 
+       result->val  = dchu_val;
+diff -ruN src/sys/ldfrexp.c src-mod/sys/ldfrexp.c
+--- src/sys/ldfrexp.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/sys/ldfrexp.c	2014-05-27 18:47:28.000000000 -0700
+@@ -60,7 +60,7 @@
+       *e = 0;
+       return 0.0;
+     }
+-  else if (!finite (x))
++  else if (!isfinite (x))
+     {
+       *e = 0;
+       return x;
+@@ -85,7 +85,7 @@
+ 
+       f = x * pow (2.0, -ei);
+ 
+-      if (!finite (f))
++      if (!isfinite (f))
+         {
+           /* This should not happen */
+           *e = 0;
+diff -ruN src/test/results.c src-mod/test/results.c
+--- src/test/results.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/test/results.c	2014-05-27 18:47:28.000000000 -0700
+@@ -24,7 +24,10 @@
+ #include <stdlib.h>
+ #include <gsl/gsl_sys.h>
+ #include <gsl/gsl_machine.h>
++#include <stdarg.h>
++#define STDC_HEADERS
+ 
++/*
+ #if HAVE_VPRINTF
+ #ifdef STDC_HEADERS
+ #include <stdarg.h>
+@@ -32,6 +35,7 @@
+ #include <varargs.h>
+ #endif
+ #endif
++*/
+ 
+ #include <gsl/gsl_test.h>
+ 
Index: /issm/trunk-jpl/externalpackages/triangle/configs/ios/configure.make
===================================================================
--- /issm/trunk-jpl/externalpackages/triangle/configs/ios/configure.make	(revision 18228)
+++ /issm/trunk-jpl/externalpackages/triangle/configs/ios/configure.make	(revision 18228)
@@ -0,0 +1,7 @@
+CC=${host_triplet}-clang
+AR=${host-triplet}-ar
+RANLIB=${host-triplet}-ranlib
+CSWITCHES = $(CFLAGS) -DNO_TIMER
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/trunk-jpl/externalpackages/triangle/install-iosarmv7.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/triangle/install-iosarmv7.sh	(revision 18228)
+++ /issm/trunk-jpl/externalpackages/triangle/install-iosarmv7.sh	(revision 18228)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="armv7-apple-darwin14.0.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/trunk-jpl/externalpackages/triangle/install-iosarmv7s.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/triangle/install-iosarmv7s.sh	(revision 18228)
+++ /issm/trunk-jpl/externalpackages/triangle/install-iosarmv7s.sh	(revision 18228)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="armv7s-apple-darwin14.0.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/trunk-jpl/externalpackages/triangle/install-iosi386.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/triangle/install-iosi386.sh	(revision 18228)
+++ /issm/trunk-jpl/externalpackages/triangle/install-iosi386.sh	(revision 18228)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="i386-apple-darwin13.1.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
