Index: /issm/trunk-jpl/m4/issm_options.m4
===================================================================
--- /issm/trunk-jpl/m4/issm_options.m4	(revision 23238)
+++ /issm/trunk-jpl/m4/issm_options.m4	(revision 23239)
@@ -745,4 +745,43 @@
 	AM_CONDITIONAL([ESMF], [test x$HAVE_ESMF = xyes])
 	dnl }}}
+	dnl codipack{{{
+	AC_ARG_WITH([codipack-dir],
+		AS_HELP_STRING([--with-codipack-dir=DIR], [CoDiPack root directory.]),
+		[CODIPACK_ROOT=$withval],[CODIPACK_ROOT="no"])
+
+	dnl Check whether codipack is enabled
+	AC_MSG_CHECKING([for CoDiPack])
+	if test "x$CODIPACK_ROOT" = "xno" ; then
+		HAVE_CODIPACK=no
+	else
+		HAVE_CODIPACK=yes
+		if ! test -d "$CODIPACK_ROOT"; then
+			AC_MSG_ERROR([codipack directory provided ($CODIPACK_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_CODIPACK)
+
+	dnl codipack headers and libraries
+	if test "x$HAVE_CODIPACK" == "xyes"; then
+		CODIPACKINCL="-I$CODIPACK_ROOT/include"
+		AC_DEFINE([_HAVE_CODIPACK_],[1],[with codipack in ISSM src])
+		AC_DEFINE([_HAVE_AD_],[1],[with AD in ISSM src])
+		AC_SUBST([CODIPACKINCL])
+	fi
+	AM_CONDITIONAL([CODIPACK], [test x$HAVE_CODIPACK = xyes])
+   AM_COND_IF(CODIPACK,[CXXFLAGS+=" -std=c++11"])
+	dnl }}}
+	dnl tapeallocation {{{
+	AC_ARG_ENABLE([tape-alloc], dnl feature
+		AS_HELP_STRING([--enable-tape-alloc],[turn tape allocation support on]),
+		[enable_tape_alloc=$enableval], [enable_tape_alloc=no])
+
+	dnl check whether enabled
+	AC_MSG_CHECKING(for tape memory allocation)
+	if test "x$enable_tape_alloc" = xyes; then
+		AC_DEFINE([_AD_TAPE_ALLOC_],[1],[Macro to enable a priori tape allocation for AD])
+	fi
+	AC_MSG_RESULT($enable_tape_alloc)
+	dnl }}}
 	dnl adolc{{{
 	AC_ARG_WITH([adolc-dir],
@@ -773,5 +812,5 @@
 	fi
 	AM_CONDITIONAL([ADOLC], [test x$HAVE_ADOLC = xyes])
-        AM_COND_IF(ADOLC,[CXXFLAGS+=" -std=c++11"])
+   AM_COND_IF(ADOLC,[CXXFLAGS+=" -std=c++11"])
 	dnl }}}
 	dnl adolc-version{{{
@@ -877,5 +916,5 @@
 	AM_CONDITIONAL([GSL], [test x$HAVE_GSL = xyes])
 	dnl }}}
-	dnl adjoinable-mpi{{{
+	dnl ampi (ADOLC){{{
 	AC_ARG_WITH([ampi-dir],
 	  AS_HELP_STRING([--with-ampi-dir=DIR], [adjoinable mpi root directory.]),
@@ -911,4 +950,37 @@
 	fi
 	AM_CONDITIONAL([AMPI], [test x$HAVE_AMPI = xyes])
+	dnl }}}
+	dnl adjointmpi (CoDiPack){{{
+	AC_ARG_WITH([adjointmpi-dir],
+	  AS_HELP_STRING([--with-adjointmpi-dir=DIR], [adjoinable mpi root directory.]),
+	  [ADJOINTMPI_ROOT=$withval],[ADJOINTMPI_ROOT="no"])
+
+	dnl Check whether adjointmpi is enabled
+	AC_MSG_CHECKING([for adjointmpi])
+	if test "x$ADJOINTMPI_ROOT" = "xno" ; then
+		HAVE_ADJOINTMPI=no
+	else
+		HAVE_ADJOINTMPI=yes
+		if ! test -d "$ADJOINTMPI_ROOT"; then
+			AC_MSG_ERROR([adjointmpi directory provided ($ADJOINTMPI_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_ADJOINTMPI)
+
+	dnl adjointmpi headers and libraries
+	if test "x$HAVE_ADJOINTMPI" == "xyes"; then
+		if test "x$CODIPACK_ROOT" == "xno"; then
+			AC_MSG_ERROR([cannot run adjoint mpi without CoDiPack]);
+		fi
+		ADJOINTMPIINCL="-I$ADJOINTMPI_ROOT/include"
+		ADJOINTMPILIB="-L$ADJOINTMPI_ROOT/lib  -lAMPI"
+		dnl Also set _HAVE_AMPI_, because the interface is (almost) the
+		dnl same as for adjoinable mpi...
+		AC_DEFINE([_HAVE_AMPI_],[1],[with adjoint mpi in ISSM src])
+		AC_DEFINE([_HAVE_ADJOINTMPI_],[1],[with adjoint mpi in ISSM src])
+		AC_SUBST([ADJOINTMPIINCL])
+		AC_SUBST([ADJOINTMPILIB])
+	fi
+	AM_CONDITIONAL([ADJOINTMPI], [test x$HAVE_ADJOINTMPI = xyes])
 	dnl }}}
 	dnl rose{{{
