From 27c287ac284ebb0b19551e8b6519e4e42596e57c Mon Sep 17 00:00:00 2001
From: Kasper Marstal <kaspermarstal@gmail.com>
Date: Fri, 4 Sep 2015 15:29:24 +0200
Subject: [PATCH] COMP: ELASTIX-10 Add Boost to SuperBuild

---
 SuperBuild/CMakeLists.txt      |  5 +++--
 SuperBuild/ExternalBoost.cmake | 39 ++++++++++++++++++++++++++++++++++
 SuperBuild/ExternalITK.cmake   | 10 ++++-----
 Testing/Unit/CMakeLists.txt    |  1 +
 4 files changed, 48 insertions(+), 7 deletions(-)
 create mode 100644 SuperBuild/ExternalBoost.cmake

diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt
index 8ba451e1..0eb91de3 100644
--- a/SuperBuild/CMakeLists.txt
+++ b/SuperBuild/CMakeLists.txt
@@ -61,11 +61,12 @@ endif()
 # Boost Graph Library
 
 mark_as_advanced( USE_SYSTEM_BOOST )
-option( USE_SYSTEM_BOOST "Use an installed version of BOOST" ON )
+option( USE_SYSTEM_BOOST "Use an installed version of BOOST" OFF )
 if( USE_SYSTEM_BOOST )
   find_package( BOOST REQUIRED graph )
 else()
-  message( FATAL_ERROR "BOOST is not yet integrated with the SuperBuild. Install BOOST on your system, set USE_SYSTEM_BOOST to ON and re-run CMake." )
+  include( ExternalBoost )
+  list( APPEND ELASTIX_DEPENDENCIES BOOST )
 endif()
 
 # ---------------------------------------------------------------------
diff --git a/SuperBuild/ExternalBoost.cmake b/SuperBuild/ExternalBoost.cmake
new file mode 100644
index 00000000..e1f1286e
--- /dev/null
+++ b/SuperBuild/ExternalBoost.cmake
@@ -0,0 +1,39 @@
+set( PROJECT BOOST )
+
+# Note: It IS important to download different files on different OS's:
+# on Unix-like systems, we need the file persmissions (only available in the .tar.gz),
+# while on Windows, we need CR/LF line feeds (only available in the .zip)
+
+set( BOOST_CONFIGURE_COMMAND )
+if( UNIX )
+  set( BOOST_URL "http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz")
+  set( BOOST_MD5 51528a0e3b33d9e10aaa311d9eb451e3 )
+  set( BOOST_CONFIGURE_COMMAND ./bootstrap.sh )
+  set( BOOST_BUILD_COMMAND ./b2 )
+else()
+  if( WIN32 )
+    set( BOOST_URL "http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.zip")
+    set( BOOST_MD5 08d29a2d85db3ebc8c6fdfa3a1f2b83c )
+    set( BOOST_CONFIGURE_COMMAND cmd /C bootstrap.bat msvc )
+    set( BOOST_BUILD_COMMAND b2.exe )
+  endif()
+endif()
+
+set( BOOST_BUILD_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT}-build/" )
+
+ExternalProject_Add( BOOST
+  BUILD_IN_SOURCE 1
+  URL "${BOOST_URL}"
+  URL_MD5 ${BOOST_MD5}
+  UPDATE_COMMAND ""
+  CONFIGURE_COMMAND ${BOOST_CONFIGURE_COMMAND} 
+    --prefix=${BOOST_BUILD_DIR}/lib
+  BUILD_COMMAND ${BOOST_BUILD_COMMAND} install 
+    --prefix=${BOOST_BUILD_DIR}
+    --with-graph
+    --variant=release
+    --jobs=4
+  INSTALL_COMMAND ""
+)
+
+set( BOOST_ROOT ${BOOST_BUILD_DIR} )
diff --git a/SuperBuild/ExternalITK.cmake b/SuperBuild/ExternalITK.cmake
index 206e83a6..0ee77aff 100644
--- a/SuperBuild/ExternalITK.cmake
+++ b/SuperBuild/ExternalITK.cmake
@@ -1,13 +1,13 @@
-set( proj ITK )
+set( PROJECT ITK )
 set( ITK_REPOSITORY https://github.com/InsightSoftwareConsortium/ITK.git )
 set( ITK_TAG "v${ITK_VERSION_STRING}")
 
-ExternalProject_Add( ${proj}
+ExternalProject_Add( ${PROJECT}
   GIT_REPOSITORY ${ITK_REPOSITORY}
   GIT_TAG ${ITK_TAG}
   UPDATE_COMMAND ""
-  SOURCE_DIR ${proj}
-  BINARY_DIR ${proj}-build
+  SOURCE_DIR ${PROJECT}
+  BINARY_DIR ${PROJECT}-build
   CMAKE_ARGS
     --no-warn-unused-cli
     -DBUILD_EXAMPLES:BOOL=OFF
@@ -21,4 +21,4 @@ ExternalProject_Add( ${proj}
 )
 
 ExternalProject_Get_Property( ITK install_dir )
-set( ITK_DIR "${install_dir}/lib/cmake/ITK-${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}" )
\ No newline at end of file
+set( ITK_DIR "${install_dir}/lib/cmake/ITK-${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}" )
diff --git a/Testing/Unit/CMakeLists.txt b/Testing/Unit/CMakeLists.txt
index 15246366..b7bd9cc7 100644
--- a/Testing/Unit/CMakeLists.txt
+++ b/Testing/Unit/CMakeLists.txt
@@ -5,6 +5,7 @@
 
 set( ElastixUnitTestFilenames
   elxExampleUnitTest.cxx
+  elxBluePrintTest.cxx
   itkRegistration.cxx
 )
 
-- 
GitLab