From a881fe86daae72ca0c4c7b20edf2d23e70160aee Mon Sep 17 00:00:00 2001
From: Kasper Marstal <kaspermarstal@gmail.com>
Date: Thu, 13 Aug 2015 15:03:07 +0200
Subject: [PATCH] STYLE: ELASTIX-1 Improve build system naming conventions

---
 CMake/elxCompilerFlags.cmake                  |  2 +-
 ...ules.cmake => elxITKRequiredModules.cmake} |  0
 CMake/elxWinConfig.cmake                      |  2 ++
 ...fig.cmake => elxWinConfigGoogleTest.cmake} |  3 ++-
 CMakeLists.txt                                | 23 ++++++++++++-------
 SuperBuild/CMakeLists.txt                     |  9 +++++---
 SuperBuild/Elastix.cmake                      |  2 +-
 7 files changed, 27 insertions(+), 14 deletions(-)
 rename CMake/{elxRequiredITKModules.cmake => elxITKRequiredModules.cmake} (100%)
 rename CMake/{elxGoogleTestWinConfig.cmake => elxWinConfigGoogleTest.cmake} (72%)

diff --git a/CMake/elxCompilerFlags.cmake b/CMake/elxCompilerFlags.cmake
index 171a36b1..8728ded6 100644
--- a/CMake/elxCompilerFlags.cmake
+++ b/CMake/elxCompilerFlags.cmake
@@ -9,4 +9,4 @@ set( CompilerFlags
   CMAKE_C_FLAGS_MINSIZEREL
   CMAKE_C_FLAGS_RELEASE
   CMAKE_C_FLAGS_RELWITHDEBINFO
-)
+)
\ No newline at end of file
diff --git a/CMake/elxRequiredITKModules.cmake b/CMake/elxITKRequiredModules.cmake
similarity index 100%
rename from CMake/elxRequiredITKModules.cmake
rename to CMake/elxITKRequiredModules.cmake
diff --git a/CMake/elxWinConfig.cmake b/CMake/elxWinConfig.cmake
index 35dab0a3..c9a8eb73 100644
--- a/CMake/elxWinConfig.cmake
+++ b/CMake/elxWinConfig.cmake
@@ -1,3 +1,5 @@
+# Visual Studio complains if paths are too long
+
 string( LENGTH "${CMAKE_CURRENT_SOURCE_DIR}" n )
 if( n GREATER 50 )
 message(
diff --git a/CMake/elxGoogleTestWinConfig.cmake b/CMake/elxWinConfigGoogleTest.cmake
similarity index 72%
rename from CMake/elxGoogleTestWinConfig.cmake
rename to CMake/elxWinConfigGoogleTest.cmake
index 4b119803..75a5ac06 100644
--- a/CMake/elxGoogleTestWinConfig.cmake
+++ b/CMake/elxWinConfigGoogleTest.cmake
@@ -1,5 +1,6 @@
 # GoogleTest needs static linking
-include( ${CMAKE_SOURCE_DIR}/CMake/elxCompilerFlags.cmake )
+
+include( elxCompilerFlags.cmake )
 foreach( CompilerFlag ${CompilerFlags} )
   string( REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}" )
 endforeach()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d15c9c47..c5a3e96f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,10 @@
 cmake_minimum_required( VERSION 2.8 )
 
+# Include SuperElastix CMake scripts
+list( APPEND CMAKE_MODULE_PATH 
+  "${CMAKE_CURRENT_SOURCE_DIR}/CMake"
+)
+
 if( CMAKE_HOST_WIN32 )
   include( elxWinConfig.cmake )
 endif()
@@ -13,7 +18,7 @@ project( Elastix )
 find_package( ITK REQUIRED )
 set( ITK_NO_IO_FACTORY_REGISTER_MANAGER 1 )
 include( ${ITK_USE_FILE} )
-include( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/elxRequiredITKModules.cmake" )
+include( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/elxITKRequiredModules.cmake" )
 
 #---------------------------------------------------------------------
 # Build Elastix
@@ -21,14 +26,16 @@ include( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/elxRequiredITKModules.cmake" )
 #---------------------------------------------------------------------
 # Testing
 
-# Do not build tests by default since this requires GoogleTest submodule
-# to be initialized. Otherwise users may see FATAL_ERRORs out of the box.
-# The SuperBuild will correctly initialize the GoogleTest submodule and 
-# build tests by default.
-option( ELASTIX_BUILD_TESTING "Enable building tests." OFF )
+# Build tests by default
+option( ELASTIX_BUILD_TESTING "Enable building tests." ON )
+
+# ExternalData module requires newer CMake versions
+if( CMAKE_VERSION VERSION_LESS 2.8.11 )
+  set( ELASTIX_BUILD_TESTING OFF FORCE )
+  message( STATUS "ELASTIX_BUILD_TESTING was set to OFF because CMake version is less than 2.8.11")
+endif()
 
 if( ELASTIX_BUILD_TESTING )
-  option( ELASTIX_BUILD_BENCHMARKING "Enable building benchmarks." OFF )
   enable_testing()
   add_subdirectory( Testing )
 endif()
@@ -40,5 +47,5 @@ mark_as_advanced( ELASTIX_BUILD_DOXYGEN )
 option( ELASTIX_BUILD_DOXYGEN "Enable building Doxygen documentation." OFF )
 
 mark_as_advanced( ELASTIX_BUILD_READTHEDOCS )
-option( ELASTX_BUILD_READTHEDOCS "Enable building readthedocs.org documentation." OFF )
+option( ELASTIX_BUILD_READTHEDOCS "Enable building readthedocs.org documentation." OFF )
 
diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt
index 15dd3d89..cff7bb5a 100644
--- a/SuperBuild/CMakeLists.txt
+++ b/SuperBuild/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required( VERSION 2.8 )
 
 #---------------------------------------------------------------------
-project( elastixSuperBuild )
+project( ElastixSuperBuild )
 
 find_package( Git REQUIRED )
 
@@ -13,6 +13,8 @@ set( CMAKE_MODULE_PATH
   ${CMAKE_MODULE_PATH}
 )
 
+set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "SuperBuild install directory" FORCE)
+
 #---------------------------------------------------------------------
 # Elastix SuperBuild configuration
 
@@ -30,10 +32,11 @@ option( ELASTIX_BUILD_TESTING "Enable building tests." ON )
 
 if( ELASTIX_BUILD_TESTING )
   option( ELASTIX_BUILD_BENCHMARKING "Enable building benchmarks." ON )
+  option( ELASTIX_BUILD_DASHBOARD "Enable building benchmarks." ON )
 endif()
 
 #---------------------------------------------------------------------
-# Build ITK as external project
+# Build ITK
 
 set( ITK_VERSION_MAJOR "4" )
 set( ITK_VERSION_MINOR "7" )
@@ -52,7 +55,7 @@ else()
 endif()
 
 #---------------------------------------------------------------------
-# Build Elastix as an external project
+# Build Elastix
 
 include( Elastix )
 
diff --git a/SuperBuild/Elastix.cmake b/SuperBuild/Elastix.cmake
index 6afad940..d6bf5517 100644
--- a/SuperBuild/Elastix.cmake
+++ b/SuperBuild/Elastix.cmake
@@ -4,11 +4,11 @@ ExternalProject_Add( ${proj}
   DOWNLOAD_COMMAND ""
   SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..
   BINARY_DIR ${proj}-build
-  INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
   CMAKE_ARGS
     --no-warn-unused-cli
     -DELASTIX_BUILD_TESTING:BOOL=${ELASTIX_BUILD_TESTING}
     -DELASTIX_BUILD_BENCHMARKING:BOOL=${ELASTIX_BUILD_BENCHMARKING}
+    -DELASTIX_BUILD_DASHBOARD:BOOL=${ELASTIX_BUILD_DASHBOARD}
     -DITK_DIR:PATH=${ITK_DIR}
   DEPENDS ${ELASTIX_DEPENDENCIES}
   INSTALL_COMMAND ""
-- 
GitLab