From 7f1a95fd74a748afc05fab554f6651f6d2cccce1 Mon Sep 17 00:00:00 2001
From: Dilawar Singh <dilawars@ncbs.res.in>
Date: Tue, 31 Oct 2017 18:08:25 +0530
Subject: [PATCH] GUI is optional.

---
 CMakeLists.txt | 106 +++++++++++++++++++++++++++++--------------------
 1 file changed, 63 insertions(+), 43 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ad7e56e1..117041c9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,10 +26,14 @@ option(WITH_DOC "Build documentation" OFF)
 option(DEBUG "Build with DEBUG support" OFF)
 option(WITH_BOOST "Use Boost libraries instead of GSL" OFF)
 option(WITH_CUDA "Use CUDA/GPU" OFF)
-option(WITH_MPI "Use MPI" OFF)
+option(WITH_MPI "Use MPI (experimental)" OFF)
+option(WITH_GUI "Install moose-gui. Works only with python2." ON )
 
 # Required packages.
 find_package(PythonInterp REQUIRED)
+if(PYTHON_VERSION_MAJOR VERSION_EQUAL 3)
+    set(WITH_GUI OFF)
+endif( )
 
 add_custom_target(moose ALL)
 
@@ -38,8 +42,10 @@ set(PYMOOSE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/moose-core")
 set(PYMOOSE_BUILD_DIR ${CMAKE_BINARY_DIR}/__moose-core_build)
 set(PYMOOSE_INSTALL_DIR ${CMAKE_BINARY_DIR}/__moose-core_install)
 
-set(MOOSE_GUI_DIR ${CMAKE_SOURCE_DIR}/moose-gui)
-set(MOOSE_GUI_INSTALL_DIR ${CMAKE_BINARY_DIR}/__moose-gui_install)
+if(WITH_GUI)
+    set(MOOSE_GUI_DIR ${CMAKE_SOURCE_DIR}/moose-gui)
+    set(MOOSE_GUI_INSTALL_DIR ${CMAKE_BINARY_DIR}/__moose-gui_install)
+endif()
 
 set(MOOSE_EXAMPLE_DIR ${CMAKE_SOURCE_DIR}/moose-examples)
 set(MOOSE_EXAMPLE_INSTALL_DIR ${CMAKE_BINARY_DIR}/__moose-examples_install)
@@ -60,23 +66,29 @@ add_custom_command( OUTPUT ${OUTPUT_MOOSEBIN}
     VERBATIM
     )
 
-# Now build moose-gui and moose-examples.
-# Make sure each script is compilable. Else report an error.
-add_custom_target( gui ALL 
-    COMMAND ${CMAKE_COMMAND} -E copy_directory ${MOOSE_GUI_DIR} ${MOOSE_GUI_INSTALL_DIR} 
-    COMMAND ${PYTHON_EXECUTABLE} -m compileall -q ${MOOSE_GUI_INSTALL_DIR}
-    COMMENT "Building moose-gui"
-    VERBATIM
-    )
+if(WITH_GUI)
+    # Now build moose-gui and moose-examples.
+    # Make sure each script is compilable. Else report an error.
+    add_custom_target( gui ALL 
+        COMMAND ${CMAKE_COMMAND} -E copy_directory ${MOOSE_GUI_DIR} ${MOOSE_GUI_INSTALL_DIR} 
+        COMMAND ${PYTHON_EXECUTABLE} -m compileall -q ${MOOSE_GUI_INSTALL_DIR}
+        COMMENT "Building moose-gui"
+        VERBATIM
+        )
 
-add_custom_target( examples ALL 
-    COMMAND ${CMAKE_COMMAND} -E copy_directory ${MOOSE_EXAMPLE_DIR} ${MOOSE_EXAMPLE_INSTALL_DIR}
-    COMMAND ${PYTHON_EXECUTABLE} -m compileall -q ${MOOSE_EXAMPLE_INSTALL_DIR}
-    VERBATIM
-    )
+    add_custom_target( examples ALL 
+        COMMAND ${CMAKE_COMMAND} -E copy_directory ${MOOSE_EXAMPLE_DIR} ${MOOSE_EXAMPLE_INSTALL_DIR}
+        COMMAND ${PYTHON_EXECUTABLE} -m compileall -q ${MOOSE_EXAMPLE_INSTALL_DIR}
+        VERBATIM
+        )
+endif()
+
+add_dependencies(moose moose-core)
 
-add_dependencies(moose moose-core gui examples)
-add_dependencies(examples  gui)
+if(WITH_GUI)
+    add_dependencies(moose gui examples)
+    add_dependencies(examples  gui)
+endif()
 
 
 ## moose-gui
@@ -89,27 +101,30 @@ install(DIRECTORY ${PYMOOSE_INSTALL_DIR}/
     PATTERN "*.pyc" EXCLUDE
     )
 
-install(DIRECTORY ${MOOSE_GUI_INSTALL_DIR}/
-    DESTINATION lib/moose/gui
-    PATTERN ".git*" EXCLUDE
-    PATTERN "*.pyc" EXCLUDE
-    )
-
-install(DIRECTORY ${MOOSE_EXAMPLE_DIR}/
-    DESTINATION lib/moose/moose-examples
-    PATTERN ".git*" EXCLUDE 
-    PATTERN "_travis*" EXCLUDE
-    PATTERN ".travis*" EXCLUDE
-    PATTERN "*.pyc" EXCLUDE
-    )
+if(WITH_GUI)
+    install(DIRECTORY ${MOOSE_GUI_INSTALL_DIR}/
+        DESTINATION lib/moose/gui
+        PATTERN ".git*" EXCLUDE
+        PATTERN "*.pyc" EXCLUDE
+        )
+
+    install(DIRECTORY ${MOOSE_EXAMPLE_DIR}/
+        DESTINATION lib/moose/moose-examples
+        PATTERN ".git*" EXCLUDE 
+        PATTERN "_travis*" EXCLUDE
+        PATTERN ".travis*" EXCLUDE
+        PATTERN "*.pyc" EXCLUDE
+        )
+endif()
 
 configure_file( ${CMAKE_SOURCE_DIR}/cmake/moose.in ${CMAKE_BINARY_DIR}/moose )
 install(PROGRAMS ${CMAKE_BINARY_DIR}/moose DESTINATION bin)
 
 ## UNINSTALL
-add_custom_target(uninstall 
-    DEPENDS __uninstall_moose-core__ __uninstall_moose-gui__
-    )
+add_custom_target(uninstall DEPENDS __uninstall_moose-core__ )
+if(WITH_GUI)
+    add_dependencies( uninstall __uninstall_moose-gui__ )
+endif( )
 
 add_custom_command(OUTPUT __uninstall_moose-core__
     COMMAND xargs rm -rf < install_manifest.txt
@@ -117,11 +132,13 @@ add_custom_command(OUTPUT __uninstall_moose-core__
     COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_INSTALL_PREFIX}/bin/moose.bin
     )
 
-add_custom_command(OUTPUT  __uninstall_moose-gui__
-    COMMAND ${CMAKE_COMMAND} -E remove_directory
-    ${CMAKE_INSTALL_PREFIX}/lib/moose/gui
-    COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_INSTALL_PREFIX}/bin/moose
-    )
+if(WITH_GUI)
+    add_custom_command(OUTPUT  __uninstall_moose-gui__
+        COMMAND ${CMAKE_COMMAND} -E remove_directory
+        ${CMAKE_INSTALL_PREFIX}/lib/moose/gui
+        COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_INSTALL_PREFIX}/bin/moose
+        )
+endif()
 
 ################################################################################
 # CTEST 
@@ -130,10 +147,13 @@ enable_testing( )
 add_test( NAME test_pymoose_sanity 
     COMMAND ${PYTHON_EXECUTABLE} -c "import moose"
     )
-add_test( NAME test_gui_sanity 
-    COMMAND ${PYTHON_EXECUTABLE} ${MOOSE_GUI_INSTALL_DIR}/mgui.py 
-    WORKING_DIRECTORY ${MOOSE_GUI_INSTALL_DIR}
-    )
+
+if(WITH_GUI)
+    add_test( NAME test_gui_sanity 
+        COMMAND ${PYTHON_EXECUTABLE} ${MOOSE_GUI_INSTALL_DIR}/mgui.py 
+        WORKING_DIRECTORY ${MOOSE_GUI_INSTALL_DIR}
+        )
+endif()
 
 set_tests_properties( test_pymoose_sanity 
     PROPERTIES ENVIRONMENT "PYTHONPATH=${PYMOOSE_BUILD_DIR}/python"
-- 
GitLab