Index: /issm/trunk-jpl/CMakeLists.txt
===================================================================
--- /issm/trunk-jpl/CMakeLists.txt	(revision 15479)
+++ /issm/trunk-jpl/CMakeLists.txt	(revision 15480)
@@ -16,26 +16,4 @@
 include(CheckLanguage)
 include(./m4/issm_options.cmake)
-# }}}
-
-# Environment Variables {{{
-# Out of source build can be done here.
-set(CMAKE_BINARY_DIR ${ISSM_DIR})
-# }}}
-
-# Install Targets {{{
-# Install 'issm.exe'
-#install(TARGETS issm RUNTIME)
-
-# Install 'libISSMCore.a' and 'libISSMOverload.a'
-# install(TARGETS ISSMCore
-#                ISSMOverload
-#        ARCHIVE)
-# }}}
-# Optional Install {{{
-#if(${SHARED_LIBS} IS ON)
-#   install(TARGETS ISSMCore
-#                   ISSMOverload
-#           LIBRARY)
-#endif(${SHARED_LIBS} IS ON)
 # }}}
 
Index: /issm/trunk-jpl/m4/issm_options.cmake
===================================================================
--- /issm/trunk-jpl/m4/issm_options.cmake	(revision 15479)
+++ /issm/trunk-jpl/m4/issm_options.cmake	(revision 15480)
@@ -1,1 +1,37 @@
-option(threed "Compile with 3D capabilities (Default is yes)." ON)
+# ISSM Options {{{
+option(DAKOTA "DAKOTA" OFF)
+option(PETSC "PETSC" OFF)
+option(MUMPS "MUMPS" OFF)
+#option(GSL "GSL" OFF)
+option(TRANSIENT "TRANSIENT" ON)
+option(STEADYSTATE "STEADYSTATE" ON)
+option(PROGNOSTIC "PROGNOSTIC" ON)
+option(THERMAL "THERMAL" ON)
+option(GIA "GIA" OFF)
+option(CONTROL "CONTROL" ON)
+option(HYDROLOGY "HYDROLOGY" ON)
+option(DIAGNOSTIC "DIAGNOSTIC" ON)
+option(BALANCED "BALANCED" ON)
+option(SLOPE "SLOPE" ON)
+option(GROUNDINGLINE "GROUNDINGLINE" ON)
+option(RIFTS "RIFTS" ON)
+option(ANDROID "ANDROID" OFF)
+option(THREED "THREED" ON)
+option(MPI "MPI" OFF)
+option(METIS "METIS" OFF)
+option(KRIGING "KRIGING" OFF)
+# }}}
+
+if(NOT GSL_DIR)
+    message(FATAL_ERROR "Non GSL build not supported")
+else(NOT GSL_DIR)
+    find_path(GSL lib ${GSL_DIR})
+
+    if(GSL)
+        message("Found GSL: ${GSL_DIR}")
+        set(GSL_INC_DIR ${GSL_DIR}/include)
+        set(GSL_LIB_DIR ${GSL_DIR}/lib)
+    else(GSL)
+        message(FATAL_ERROR "GSL installation directory not found!")
+    endif(GSL)
+endif(NOT GSL_DIR)
Index: /issm/trunk-jpl/src/c/CMakeLists.txt
===================================================================
--- /issm/trunk-jpl/src/c/CMakeLists.txt	(revision 15479)
+++ /issm/trunk-jpl/src/c/CMakeLists.txt	(revision 15480)
@@ -1,2 +1,5 @@
+# config.h {{{
+set(CPP_FLAGS -DHAVE_CONFIG_H)
+# }}}
 # Include Directory {{{
 include_directories(AFTER $ENV{ISSM_DIR}/ 
@@ -78,5 +81,5 @@
 
 # Core Sources {{{
-set(core_sources    ./datastructures/DataSet.cpp
+set(core_sources   	./datastructures/DataSet.cpp
 					./classes/gauss/GaussTria.cpp
 					./classes/FemModel.cpp
@@ -174,4 +177,5 @@
 					./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
 					./modules/ModelProcessorx/NodesPartitioning.cpp
+					./modules/ModelProcessorx/EdgesPartitioning.cpp
 					./modules/ModelProcessorx/SortDataSets.cpp
 					./modules/ModelProcessorx/UpdateCounters.cpp
@@ -179,7 +183,10 @@
 					./modules/ModelProcessorx/CreateParameters.cpp
 					./modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
+					./modules/ModelProcessorx/CreateEdges.cpp
+					./modules/ModelProcessorx/CreateElementToEdgeConnectivity.cpp
 					./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
 					./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
 					./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
+					./modules/ModelProcessorx/CreateNodes.cpp
 					./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp
 					./modules/NodesDofx/NodesDofx.cpp
@@ -229,9 +236,10 @@
 					./solutionsequences/convergence.cpp
 					./classes/Options/Options.cpp
-					./classes/Options/OptionUtilities.cpp)
+					./classes/Options/OptionUtilities.cpp
+					./classes/RiftStruct.cpp)
 set(issm_sources ${core_sources})
 # }}}
 
-#DAKOTA sources  {{{
+# DAKOTA sources  {{{
 set(dakota_sources 				  ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
 					  				  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp
@@ -538,4 +546,15 @@
 set(metis_sources 				./toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp)
 #}}}
+
+# API Print {{{
+if(NOT PYTHON AND NOT MATLAB)
+    add_library(ISSMOverload STATIC ./shared/String/stricmp.cpp
+            ./shared/String/ApiPrintf.cpp)
+    list(APPEND issm_deps ISSMOverload)
+else(NOT PYTHON AND NOT MATLAB)
+    message(FATAL_ERROR "Python and Matlab are not supported yet.")
+endif(NOT PYTHON AND NOT MATLAB)
+# }}}
+
 # Modules Sources {{{
 set(modules_sources ./shared/Threads/LaunchThread.cpp
@@ -579,100 +598,147 @@
 #ISSM sources are a combination of core sources and sources related to specific capabilities.
 
-if DAKOTA
-issm_sources  +=  $(dakota_sources)
-endif
-
-if PETSC
-issm_sources  +=  $(petsc_sources)
-endif
-
-if MUMPS
-issm_sources  +=  $(mumps_sources)
-endif
-
-if GSL
-issm_sources  +=  $(gsl_sources)
-endif
-
-if TRANSIENT
-issm_sources  +=  $(transient_sources)
-endif
-
-if STEADYSTATE
-issm_sources  +=  $(steadystate_sources)
-endif
-
-if PROGNOSTIC
-issm_sources  +=  $(prognostic_sources)
-endif
-
-if THERMAL
-issm_sources  +=  $(thermal_sources)
-endif
-
-if GIA
-issm_sources  +=  $(gia_sources)
-endif
-
-if CONTROL
-issm_sources  +=  $(control_sources)
-endif
-
-if HYDROLOGY
-issm_sources  +=  $(hydrology_sources)
-endif
-
-if DIAGNOSTIC
-issm_sources  +=  $(diagnostic_sources)
-endif
-
-if BALANCED
-issm_sources  +=  $(balanced_sources)
-endif
-
-if SLOPE
-issm_sources  +=  $(slope_sources)
-endif
-
-if GROUNDINGLINE
-issm_sources +=  $(groundingline_sources)
-endif
-
-if RIFTS
-issm_sources +=  $(rifts_sources)
-endif
-
-if ANDROID
-issm_sources +=  $(android_sources)
-endif
-
-if THREED
-issm_sources +=  $(threed_sources)
-endif
-
-if MPI
-issm_sources +=  $(mpi_sources)
-endif
-
-if METIS
-issm_sources +=  $(metis_sources)
-endif
-
-if KRIGING
-issm_sources +=  $(pkriging_sources)
-endif
+if(DAKOTA)
+list(APPEND CPP_FLAGS '-D_HAVE_DAKOTA_')
+list(APPEND issm_sources ${dakota_sources})
+endif(DAKOTA)
+
+if(PETSC)
+list(APPEND CPP_FLAGS '-D_HAVE_PETSC_')
+list(APPEND issm_sources ${petsc_sources})
+endif(PETSC)
+
+if(MUMPS)
+list(APPEND CPP_FLAGS '-D_HAVE_MUMPS_')
+list(APPEND issm_sources ${mumps_sources})
+endif(MUMPS)
+
+if(GSL)
+list(APPEND CPP_FLAGS '-D_HAVE_GSL_')
+list(APPEND issm_sources ${gsl_sources})
+list(APPEND issm_deps gsl gslcblas)
+list(APPEND issm_lib_paths ${GSL_LIB_DIR})
+include_directories(AFTER ${GSL_INC_DIR})
+message("GSL_INC: ${GSL_INC_DIR}")
+message("GSL_LIB: ${GSL_LIB_DIR}")
+endif(GSL)
+
+if(TRANSIENT)
+list(APPEND CPP_FLAGS '-D_HAVE_TRANSIENT_')
+list(APPEND issm_sources ${transient_sources})
+endif(TRANSIENT)
+
+if(STEADYSTATE)
+list(APPEND CPP_FLAGS '-D_HAVE_STEADYSTATE_')
+list(APPEND issm_sources ${steadystate_sources})
+endif(STEADYSTATE)
+
+if(PROGNOSTIC)
+list(APPEND CPP_FLAGS '-D_HAVE_PROGNOSTIC_')
+list(APPEND issm_sources ${prognostic_sources})
+endif(PROGNOSTIC)
+
+if(THERMAL)
+list(APPEND CPP_FLAGS '-D_HAVE_THERMAL_')
+list(APPEND issm_sources ${thermal_sources})
+endif(THERMAL)
+
+if(GIA)
+list(APPEND CPP_FLAGS '-D_HAVE_GIA_')
+list(APPEND issm_sources ${gia_sources})
+endif(GIA)
+
+if(CONTROL)
+list(APPEND CPP_FLAGS '-D_HAVE_CONTROL_')
+list(APPEND issm_sources ${control_sources})
+endif(CONTROL)
+
+if(HYDROLOGY)
+list(APPEND CPP_FLAGS '-D_HAVE_HYDROLOGY_')
+list(APPEND issm_sources ${hydrology_sources})
+endif(HYDROLOGY)
+
+if(DIAGNOSTIC)
+list(APPEND CPP_FLAGS '-D_HAVE_DIAGNOSTIC_')
+list(APPEND issm_sources ${diagnostic_sources})
+endif(DIAGNOSTIC)
+
+if(BALANCED)
+list(APPEND CPP_FLAGS '-D_HAVE_BALANCED_')
+list(APPEND issm_sources ${balanced_sources})
+endif(BALANCED)
+
+if(SLOPE)
+list(APPEND CPP_FLAGS '-D_HAVE_SLOPE_')
+list(APPEND issm_sources ${slope_sources})
+endif(SLOPE)
+
+if(GROUNDINGLINE)
+list(APPEND CPP_FLAGS '-D_HAVE_GROUNDINGLINE_')
+list(APPEND issm_sources ${groundingline_sources})
+endif(GROUNDINGLINE)
+
+if(RIFTS)
+list(APPEND CPP_FLAGS '-D_HAVE_RIFTS_')
+list(APPEND issm_sources ${rifts_sources})
+endif(RIFTS)
+
+if(ANDROID)
+list(APPEND CPP_FLAGS '-D_HAVE_ANDROID_')
+list(APPEND issm_sources ${android_sources})
+endif(ANDROID)
+
+if(THREED)
+list(APPEND CPP_FLAGS '-D_HAVE_THREED_')
+list(APPEND issm_sources ${threed_sources})
+endif(THREED)
+
+if(MPI)
+list(APPEND CPP_FLAGS '-D_HAVE_MPI_')
+list(APPEND issm_sources ${mpi_sources})
+endif(MPI)
+
+if(METIS)
+list(APPEND CPP_FLAGS '-D_HAVE_METIS_')
+list(APPEND issm_sources ${metis_sources})
+endif(METIS)
+
+if(KRIGING)
+list(APPEND CPP_FLAGS '-D_HAVE_KRIGING_')
+list(APPEND issm_sources ${pkriging_sources})
+endif(KRIGING)
 #}}}
 
 add_library(ISSMCore STATIC ${issm_sources})
 add_library(ISSMModules STATIC ${modules_sources})
+
+list(INSERT issm_deps 0 ISSMCore ISSMModules)
 add_executable(issm ./main/issm.cpp)
 
 # Definitions {{{
-add_definitions(-DHAVE_CONFIG_H)
+add_definitions(${CPP_FLAGS})
 # }}}
 # Compilation Flags {{{
 # }}}
 # Linking Flags {{{
-link_directories($ENV{ISSM_DIR}/src/c)
-target_link_libraries(issm ISSMCore ISSMModules)
-# }}}
+link_directories($ENV{ISSM_DIR}/src/c )
+target_link_libraries(issm ${issm_deps})
+message("ISSM_DEPS: ${issm_deps}")
+# }}}
+
+# Install Targets {{{
+# Install 'issm.exe'
+install(TARGETS issm RUNTIME DESTINATION $ENV{ISSM_DIR}/bin)
+
+# Install 'libISSMCore.a' and 'libISSMOverload.a'
+install(TARGETS ISSMCore
+                ISSMModules
+                ISSMOverload
+        ARCHIVE DESTINATION $ENV{ISSM_DIR}/lib)
+# }}}
+# Optional Install {{{
+#if(${SHARED_LIBS} IS ON)
+#   install(TARGETS ISSMCore
+#                   ISSMOverload
+#           LIBRARY)
+#endif(${SHARED_LIBS} IS ON)
+# }}}
