From 891045f9b97879a8f147a74c953b9e26beaaffaa Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 6 May 2013 20:15:39 +0000
Subject: [PATCH] prepare dynamic builds

---
 CMakeLists.txt                                | 36 ++++++++++++-------
 utils/misc/package_gmsh_getdp.sh              |  4 +++
 utils/nightly/gmsh.ctest                      | 11 +++---
 utils/nightly/gmsh_linux64.ctest              | 12 +++++--
 .../gmsh_linux64_dynamic_nightly.ctest        | 10 ++++++
 .../gmsh_linux64_dynamic_nightly.ctest~       |  9 +++++
 utils/nightly/gmsh_mac.ctest                  | 12 +++++--
 utils/nightly/gmsh_mac_dynamic_nightly.ctest  | 10 ++++++
 utils/nightly/gmsh_mac_dynamic_nightly.ctest~ |  9 +++++
 utils/nightly/gmsh_mac_nightly.sh             |  1 +
 utils/nightly/gmsh_win64.ctest                | 12 +++++--
 .../nightly/gmsh_win64_dynamic_nightly.ctest  | 10 ++++++
 .../nightly/gmsh_win64_dynamic_nightly.ctest~ |  9 +++++
 utils/nightly/gmsh_win64_nightly.bat          |  1 +
 14 files changed, 123 insertions(+), 23 deletions(-)
 create mode 100644 utils/nightly/gmsh_linux64_dynamic_nightly.ctest
 create mode 100644 utils/nightly/gmsh_linux64_dynamic_nightly.ctest~
 create mode 100644 utils/nightly/gmsh_mac_dynamic_nightly.ctest
 create mode 100644 utils/nightly/gmsh_mac_dynamic_nightly.ctest~
 create mode 100644 utils/nightly/gmsh_win64_dynamic_nightly.ctest
 create mode 100644 utils/nightly/gmsh_win64_dynamic_nightly.ctest~

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 072b617f5d..5345de72a9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,6 +30,7 @@ option(ENABLE_BLAS_LAPACK "Use BLAS and Lapack for linear algebra" ON)
 option(ENABLE_BLOSSOM "Enable Blossom algo (based on MATCH and concorde97)" ${DEFAULT})
 option(ENABLE_BUILD_LIB "Build static Gmsh library" OFF)
 option(ENABLE_BUILD_SHARED "Build shared Gmsh library" OFF)
+option(ENABLE_BUILD_DYNAMIC "Build dynamically linked Gmsh binary" OFF)
 option(ENABLE_BUILD_ANDROID "Build Gmsh library for Android NDK" OFF)
 option(ENABLE_BUILD_IOS "Build Gmsh library for iOS" OFF)
 option(ENABLE_CGNS "Enable CGNS mesh export" OFF)
@@ -461,7 +462,6 @@ if(ENABLE_BUILD_ANDROID)
   target_link_libraries(androidGmsh  ${LINK_LIBRARIES})
 endif(ENABLE_BUILD_ANDROID)
 
-
 if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS)
   if(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB)
     message(SEND_ERROR "Cannot compile GUI without Mesh, Post, Plugin or OneLab")
@@ -1101,12 +1101,13 @@ if(ENABLE_BUILD_LIB)
 endif(ENABLE_BUILD_LIB)
 
 # shared library target
-if(ENABLE_BUILD_SHARED OR ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
+if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC OR 
+   ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
   add_library(shared SHARED ${GMSH_SRC})
   set_target_properties(shared PROPERTIES OUTPUT_NAME Gmsh)
   set_target_properties(shared PROPERTIES 
-                        VERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}
-                        SOVERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION})
+    VERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}
+    SOVERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION})
   if(HAVE_LAPACK AND LAPACK_FLAGS)
     set_target_properties(shared PROPERTIES LINK_FLAGS ${LAPACK_FLAGS})
   endif(HAVE_LAPACK AND LAPACK_FLAGS)
@@ -1115,20 +1116,27 @@ if(ENABLE_BUILD_SHARED OR ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
             "won't link. In MSVC change /MT to /MD in the shared project properties")
   endif(MSVC AND ENABLE_MSVC_STATIC_RUNTIME)		  
   target_link_libraries(shared ${LINK_LIBRARIES})
-endif(ENABLE_BUILD_SHARED OR ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
+endif(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC OR 
+      ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
 
 # binary targets
 if(HAVE_FLTK)
-  add_executable(gmsh WIN32 Fltk/Main.cpp ${GMSH_SRC})
-  add_executable(gmsh_dynamic EXCLUDE_FROM_ALL Fltk/Main.cpp)
-  target_link_libraries(gmsh_dynamic shared)
+  if(ENABLE_BUILD_DYNAMIC)
+    add_executable(gmsh WIN32 Fltk/Main.cpp)
+    target_link_libraries(gmsh shared)
+  else(ENABLE_BUILD_DYNAMIC)
+    add_executable(gmsh WIN32 Fltk/Main.cpp ${GMSH_SRC})
+  endif(ENABLE_BUILD_DYNAMIC)
 elseif(HAVE_QT)
   qt4_wrap_cpp(GMSH_MOC_SRC ${GMSH_MOC_HDR})
   add_executable(gmsh WIN32 Qt/Main.cpp ${GMSH_SRC} ${GMSH_MOC_SRC})
 else(HAVE_FLTK)
-  add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
-  add_executable(gmsh_dynamic EXCLUDE_FROM_ALL Common/Main.cpp)
-  target_link_libraries(gmsh_dynamic shared)
+  if(ENABLE_BUILD_DYNAMIC)
+    add_executable(gmsh Common/Main.cpp)
+    target_link_libraries(gmsh shared)
+  else(ENABLE_BUILD_DYNAMIC)
+    add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
+  endif(ENABLE_BUILD_DYNAMIC)
 endif(HAVE_FLTK)
 target_link_libraries(gmsh ${LINK_LIBRARIES})
 
@@ -1175,6 +1183,7 @@ endif(UNIX)
 set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt)
 set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/LICENSE.txt)
 set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/CREDITS.txt)
+set(ONELAB_PY ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab/python/onelab.py)
 file(GLOB TUTORIAL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/?*.*)
 file(GLOB DEMO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/demos/?*.*)
 set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo)
@@ -1237,13 +1246,14 @@ install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL)
 if(ENABLE_BUILD_LIB)
   install(TARGETS lib DESTINATION lib OPTIONAL)
 endif(ENABLE_BUILD_LIB)
-if(ENABLE_BUILD_SHARED)
+if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
   install(TARGETS shared DESTINATION lib OPTIONAL)
-endif(ENABLE_BUILD_SHARED)
+endif(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
 if(ENABLE_BUILD_ANDROID)
   install(TARGETS androidGmsh DESTINATION lib OPTIONAL)
 endif(ENABLE_BUILD_ANDROID)
 
+install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN})
 install(FILES ${GMSH_API} DESTINATION include/gmsh)
 install(FILES ${WELCOME_FILE} DESTINATION ${GMSH_DOC} RENAME README.txt)
 install(FILES ${LICENSE_FILE} DESTINATION ${GMSH_DOC})
diff --git a/utils/misc/package_gmsh_getdp.sh b/utils/misc/package_gmsh_getdp.sh
index 2862d6534b..8796a2f758 100755
--- a/utils/misc/package_gmsh_getdp.sh
+++ b/utils/misc/package_gmsh_getdp.sh
@@ -21,6 +21,7 @@ unzip -q -o /tmp/gmsh-svn-Windows64.zip -d /tmp
 unzip -q -o /tmp/getdp-svn-Windows64c.zip -d /tmp
 cp /tmp/README.txt gmsh-getdp-Windows64
 mv /tmp/gmsh-*-svn-Windows/gmsh.exe gmsh-getdp-Windows64
+mv /tmp/gmsh-*-svn-Windows/onelab.py gmsh-getdp-Windows64
 mv /tmp/getdp-*-svn-Windows/getdp.exe gmsh-getdp-Windows64
 mv /tmp/gmsh-*-svn-Windows/LICENSE.txt gmsh-getdp-Windows64/LICENSE_Gmsh.txt
 mv /tmp/getdp-*-svn-Windows/LICENSE.txt gmsh-getdp-Windows64/LICENSE_GetDP.txt
@@ -41,6 +42,7 @@ unzip -q -o /tmp/gmsh-svn-Windows.zip -d /tmp
 unzip -q -o /tmp/getdp-svn-Windows32c.zip -d /tmp
 cp /tmp/README.txt gmsh-getdp-Windows32
 mv /tmp/gmsh-*-svn-Windows/gmsh.exe gmsh-getdp-Windows32
+mv /tmp/gmsh-*-svn-Windows/onelab.py gmsh-getdp-Windows32
 mv /tmp/getdp-*-svn-Windows/getdp.exe gmsh-getdp-Windows32
 mv /tmp/gmsh-*-svn-Windows/LICENSE.txt gmsh-getdp-Windows32/LICENSE_Gmsh.txt
 mv /tmp/getdp-*-svn-Windows/LICENSE.txt gmsh-getdp-Windows32/LICENSE_GetDP.txt
@@ -61,6 +63,7 @@ tar zxvf /tmp/gmsh-svn-Linux.tgz -C /tmp
 tar zxvf /tmp/getdp-svn-Linux32c.tgz -C /tmp
 cp /tmp/README.txt gmsh-getdp-Linux32
 mv /tmp/gmsh-*-svn-Linux/bin/gmsh gmsh-getdp-Linux32
+mv /tmp/gmsh-*-svn-Linux/bin/onelab.py gmsh-getdp-Linux32
 mv /tmp/getdp-*-svn-Linux/bin/getdp gmsh-getdp-Linux32
 mv /tmp/gmsh-*-svn-Linux/share/doc/gmsh/LICENSE.txt gmsh-getdp-Linux32/LICENSE_Gmsh.txt
 mv /tmp/getdp-*-svn-Linux/share/doc/getdp/LICENSE.txt gmsh-getdp-Linux32/LICENSE_GetDP.txt
@@ -81,6 +84,7 @@ tar zxvf /tmp/gmsh-svn-Linux64.tgz -C /tmp
 tar zxvf /tmp/getdp-svn-Linux64c.tgz -C /tmp
 cp /tmp/README.txt gmsh-getdp-Linux64
 mv /tmp/gmsh-*-svn-Linux/bin/gmsh gmsh-getdp-Linux64
+mv /tmp/gmsh-*-svn-Linux/bin/onelab.py gmsh-getdp-Linux64
 mv /tmp/getdp-*-svn-Linux/bin/getdp gmsh-getdp-Linux64
 mv /tmp/gmsh-*-svn-Linux/share/doc/gmsh/LICENSE.txt gmsh-getdp-Linux64/LICENSE_Gmsh.txt
 mv /tmp/getdp-*-svn-Linux/share/doc/getdp/LICENSE.txt gmsh-getdp-Linux64/LICENSE_GetDP.txt
diff --git a/utils/nightly/gmsh.ctest b/utils/nightly/gmsh.ctest
index 4e9fc60b44..9d4f564e08 100644
--- a/utils/nightly/gmsh.ctest
+++ b/utils/nightly/gmsh.ctest
@@ -28,6 +28,9 @@ set(CTEST_UPDATE_COMMAND "${CTEST_SVN_COMMAND}")
 set(CTEST_CONFIGURE_COMMAND 
     "${CTEST_CMAKE_COMMAND} -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION}")
 set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} ${CTEST_BUILD_OPTIONS}")
+if(BUILD_DYNAMIC)
+  set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} -DENABLE_BUILD_DYNAMIC=1")
+endif(BUILD_DYNAMIC)
 set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} \"-G${CTEST_CMAKE_GENERATOR}\"")
 set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} \"${CTEST_SOURCE_DIRECTORY}\"")
 
@@ -54,12 +57,12 @@ set(ENV{GMSH_BUILD_ERRORS} ${ERR})
 if(WITH_TEST)
   ctest_test()
 endif(WITH_TEST)
-if (WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
+if(WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
   ctest_coverage()
-endif (WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
-if (WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND)
+endif(WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
+if(WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND)
   ctest_memcheck()
-endif (WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND)
+endif(WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND)
 ctest_submit()
 
 macro(upload_package WEB ARCH EXTRA EXT1 EXT2)
diff --git a/utils/nightly/gmsh_linux64.ctest b/utils/nightly/gmsh_linux64.ctest
index 233da33b6d..d3dd66b30b 100644
--- a/utils/nightly/gmsh_linux64.ctest
+++ b/utils/nightly/gmsh_linux64.ctest
@@ -12,7 +12,11 @@ set(WITH_COVERAGE FALSE) # check code coverage?
 set(WITH_MEMCHECK FALSE) # check memory with valgrind?
 
 #################################################################################
-set(CTEST_BUILD_NAME "Linux64")
+if(BUILD_DYNAMIC)
+  set(CTEST_BUILD_NAME "Linux64-dynamic")
+else(BUILD_DYNAMIC)
+  set(CTEST_BUILD_NAME "Linux64")
+endif(BUILD_DYNAMIC)
 set(OPT "-DGMSH_EXTRA_VERSION=${EXTRA_VERSION}")
 set(OPT "${OPT} -DCMAKE_PREFIX_PATH:path=/usr/local/opencascade;/usr/local")
 set(OPT "${OPT} -DENABLE_NATIVE_FILE_CHOOSER:bool=FALSE")
@@ -21,4 +25,8 @@ set(OPT "${OPT} -DPETSC_DIR=$ENV{HOME}/src/petsc-3.1-p8")
 set(OPT "${OPT} -DSLEPC_DIR=$ENV{HOME}/src/slepc-3.1-p4")
 set(CTEST_BUILD_OPTIONS ${OPT})
 include(gmsh.ctest)
-upload_package(${WEB_BIN} Linux 64 .tar.gz .tgz)
+if(BUILD_DYNAMIC)
+  upload_package(${WEB_BIN} Linux 64-dynamic .tar.gz .tgz)
+else(BUILD_DYNAMIC)
+  upload_package(${WEB_BIN} Linux 64 .tar.gz .tgz)
+end(BUILD_DYNAMIC)
diff --git a/utils/nightly/gmsh_linux64_dynamic_nightly.ctest b/utils/nightly/gmsh_linux64_dynamic_nightly.ctest
new file mode 100644
index 0000000000..2d687151e8
--- /dev/null
+++ b/utils/nightly/gmsh_linux64_dynamic_nightly.ctest
@@ -0,0 +1,10 @@
+# Gmsh - Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@geuz.org>.
+
+set(CTEST_NIGHTLY_START_TIME "22:00:00 UTC")
+set(CDASH_MODEL "Nightly")
+set(EXTRA_VERSION "-dynamic-svn")
+set(BUILD_DYNAMIC true)
+include(gmsh_linux64.ctest)
diff --git a/utils/nightly/gmsh_linux64_dynamic_nightly.ctest~ b/utils/nightly/gmsh_linux64_dynamic_nightly.ctest~
new file mode 100644
index 0000000000..7a40d1fcf3
--- /dev/null
+++ b/utils/nightly/gmsh_linux64_dynamic_nightly.ctest~
@@ -0,0 +1,9 @@
+# Gmsh - Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@geuz.org>.
+
+set(CTEST_NIGHTLY_START_TIME "22:00:00 UTC")
+set(CDASH_MODEL "Nightly")
+set(EXTRA_VERSION "-svn")
+include(gmsh_linux64.ctest)
diff --git a/utils/nightly/gmsh_mac.ctest b/utils/nightly/gmsh_mac.ctest
index 5a72259dc6..9febf90d0e 100644
--- a/utils/nightly/gmsh_mac.ctest
+++ b/utils/nightly/gmsh_mac.ctest
@@ -12,7 +12,11 @@ set(WITH_COVERAGE FALSE) # check code coverage?
 set(WITH_MEMCHECK FALSE) # check memory with valgrind?
 
 #################################################################################
-set(CTEST_BUILD_NAME "MacOSX64")
+if(BUILD_DYNAMIC)
+  set(CTEST_BUILD_NAME "MacOSX64-dynamic")
+else(BUILD_DYNAMIC)
+  set(CTEST_BUILD_NAME "MacOSX64")
+endif(BUILD_DYNAMIC)
 set(OPT "-DGMSH_EXTRA_VERSION=${EXTRA_VERSION}")
 set(OPT "${OPT} -DCMAKE_PREFIX_PATH:path=/usr/local/opencascade;/usr/local")
 set(OPT "${OPT} -DCMAKE_CXX_FLAGS=-mmacosx-version-min=10.5")
@@ -21,4 +25,8 @@ set(OPT "${OPT} -DPETSC_DIR=$ENV{HOME}/src/petsc-3.1-p8")
 set(OPT "${OPT} -DSLEPC_DIR=$ENV{HOME}/src/slepc-3.1-p6")
 set(CTEST_BUILD_OPTIONS ${OPT})
 include(gmsh.ctest)
-upload_package(${WEB_BIN} MacOSX "" .dmg .dmg)
+if(BUILD_DYNAMIC)
+  upload_package(${WEB_BIN} MacOSX -dynamic .dmg .dmg)
+else(BUILD_DYNAMIC)
+  upload_package(${WEB_BIN} MacOSX "" .dmg .dmg)
+endif(BUILD_DYNAMIC)
diff --git a/utils/nightly/gmsh_mac_dynamic_nightly.ctest b/utils/nightly/gmsh_mac_dynamic_nightly.ctest
new file mode 100644
index 0000000000..ff30a111bf
--- /dev/null
+++ b/utils/nightly/gmsh_mac_dynamic_nightly.ctest
@@ -0,0 +1,10 @@
+# Gmsh - Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@geuz.org>.
+
+set(CTEST_NIGHTLY_START_TIME "22:00:00 UTC")
+set(CDASH_MODEL "Nightly")
+set(EXTRA_VERSION "-dynamic-svn")
+set(BUILD_DYNAMIC true)
+include(gmsh_mac.ctest)
diff --git a/utils/nightly/gmsh_mac_dynamic_nightly.ctest~ b/utils/nightly/gmsh_mac_dynamic_nightly.ctest~
new file mode 100644
index 0000000000..6469ca8d05
--- /dev/null
+++ b/utils/nightly/gmsh_mac_dynamic_nightly.ctest~
@@ -0,0 +1,9 @@
+# Gmsh - Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@geuz.org>.
+
+set(CTEST_NIGHTLY_START_TIME "22:00:00 UTC")
+set(CDASH_MODEL "Nightly")
+set(EXTRA_VERSION "-svn")
+include(gmsh_mac.ctest)
diff --git a/utils/nightly/gmsh_mac_nightly.sh b/utils/nightly/gmsh_mac_nightly.sh
index 032f0b9dd6..6c6bc3f9f8 100755
--- a/utils/nightly/gmsh_mac_nightly.sh
+++ b/utils/nightly/gmsh_mac_nightly.sh
@@ -5,3 +5,4 @@
 #  * launchctl load ~/Library/LaunchAgents/org.geuz.gmsh.nightly.plist
 
 cd ${HOME}/src/gmsh/utils/nightly && /usr/local/bin/ctest -S gmsh_mac_nightly.ctest -VV > ${HOME}/src/gmsh/nightly.log 2>&1
+cd ${HOME}/src/gmsh/utils/nightly && /usr/local/bin/ctest -S gmsh_mac_dynamic_nightly.ctest -VV > ${HOME}/src/gmsh/nightly_dynamic.log 2>&1
diff --git a/utils/nightly/gmsh_win64.ctest b/utils/nightly/gmsh_win64.ctest
index 0225852759..7dc785d658 100644
--- a/utils/nightly/gmsh_win64.ctest
+++ b/utils/nightly/gmsh_win64.ctest
@@ -12,7 +12,11 @@ set(WITH_COVERAGE FALSE) # check code coverage?
 set(WITH_MEMCHECK FALSE) # check memory with valgrind?
 
 #################################################################################
-set(CTEST_BUILD_NAME "Win64")
+if(BUILD_DYNAMIC)
+  set(CTEST_BUILD_NAME "Win64-dynamic")
+else(BUILD_DYNAMIC)
+  set(CTEST_BUILD_NAME "Win64")
+endif(BUILD_DYNAMIC)
 set(OPT "-DGMSH_EXTRA_VERSION=${EXTRA_VERSION}")
 set(OPT "${OPT} -DCMAKE_PREFIX_PATH:path=/usr/local/opencascade;/usr/local;/usr/x86_64-w64-mingw32/sys-root/mingw")
 set(OPT "${OPT} -DCMAKE_C_COMPILER=/usr/bin/x86_64-w64-mingw32-gcc.exe")
@@ -23,4 +27,8 @@ set(OPT "${OPT} -DPETSC_DIR=$ENV{HOME}/src/petsc-3.1-p8")
 set(OPT "${OPT} -DSLEPC_DIR=$ENV{HOME}/src/slepc-3.1-p6")
 set(CTEST_BUILD_OPTIONS ${OPT})
 include(gmsh.ctest)
-upload_package(${WEB_BIN} Windows 64 .zip .zip)
+if(BUILD_DYNAMIC)
+  upload_package(${WEB_BIN} Windows 64-dynamic .zip .zip)
+else(BUILD_DYNAMIC)
+  upload_package(${WEB_BIN} Windows 64 .zip .zip)
+endif(BUILD_DYNAMIC)
diff --git a/utils/nightly/gmsh_win64_dynamic_nightly.ctest b/utils/nightly/gmsh_win64_dynamic_nightly.ctest
new file mode 100644
index 0000000000..3cf2e9d4a4
--- /dev/null
+++ b/utils/nightly/gmsh_win64_dynamic_nightly.ctest
@@ -0,0 +1,10 @@
+# Gmsh - Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@geuz.org>.
+
+set(CTEST_NIGHTLY_START_TIME "22:00:00 UTC")
+set(CDASH_MODEL "Nightly")
+set(EXTRA_VERSION "-dynamic-svn")
+set(BUILD_DYNAMIC true)
+include(gmsh_win64.ctest)
diff --git a/utils/nightly/gmsh_win64_dynamic_nightly.ctest~ b/utils/nightly/gmsh_win64_dynamic_nightly.ctest~
new file mode 100644
index 0000000000..a543477960
--- /dev/null
+++ b/utils/nightly/gmsh_win64_dynamic_nightly.ctest~
@@ -0,0 +1,9 @@
+# Gmsh - Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@geuz.org>.
+
+set(CTEST_NIGHTLY_START_TIME "22:00:00 UTC")
+set(CDASH_MODEL "Nightly")
+set(EXTRA_VERSION "-svn")
+include(gmsh_win64.ctest)
diff --git a/utils/nightly/gmsh_win64_nightly.bat b/utils/nightly/gmsh_win64_nightly.bat
index 5e2e2995c2..2d0c65abec 100755
--- a/utils/nightly/gmsh_win64_nightly.bat
+++ b/utils/nightly/gmsh_win64_nightly.bat
@@ -4,3 +4,4 @@ C:
 chdir C:\cygwin\bin
 
 bash --login -c "cd ${HOME}/src/gmsh/utils/nightly && ctest -S gmsh_win64_nightly.ctest -VV > ${HOME}/src/gmsh/nightly.log 2>&1"
+bash --login -c "cd ${HOME}/src/gmsh/utils/nightly && ctest -S gmsh_win64_dynamic_nightly.ctest -VV > ${HOME}/src/gmsh/nightly_dynamic.log 2>&1"
-- 
GitLab