From c15a2308d0c37ece01eaf8d9938899928a6f8983 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Mon, 11 Sep 2017 20:52:53 +0200
Subject: [PATCH] [CMake] Added option OGS_CONAN_BUILD to control local lib
 builds.

Possible values: missing (default), all, never, list of lib names

Examples:

cmake . -DOGS_CONAN_BUILD="Eigen3;Boost" -> Builds Eigen and Boost locally
cmake . -DOGS_CONAN_BUILD=all            -> Builds all libs locally

This basically reimplements all functionality we had with ExternalProject.
---
 CMakeLists.txt                  | 5 ++++-
 scripts/cmake/ConanSetup.cmake  | 2 +-
 scripts/cmake/conan/conan.cmake | 7 ++++++-
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7dbea09e222..77f1e81912a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,11 +23,14 @@ list(APPEND CMAKE_PREFIX_PATH
 option(BUILD_SHARED_LIBS "Create shared libraries?" OFF)
 set(CMAKE_LIBRARY_SEARCH_PATH "" CACHE PATH
     "Additional library installation path, e.g. /opt/local or C:/libs")
-set(OGS_CPU_ARCHITECTURE "native" CACHE STRING "Processor architecture, defaults to native (*nix) / blend (MSVC).")
+set(OGS_CPU_ARCHITECTURE "native" CACHE STRING "Processor architecture, \
+    defaults to native (*nix) / blend (MSVC).")
 option(OGS_ENABLE_AVX2 "Enable the use of AVX2 instructions" OFF)
 option(OGS_BUILD_TESTS "Should the test executables be built?" ON)
 option(OGS_USE_PCH "Should pre-compiled headers be used?" ON)
 option(OGS_USE_CONAN "Should Conan package manager be used?" OFF)
+set(OGS_CONAN_BUILD "missing" CACHE STRING "Possible values: all, missing, \
+    never or list of libs to build" )
 
 ### CMake includes ###
 include(scripts/cmake/PreFind.cmake)
diff --git a/scripts/cmake/ConanSetup.cmake b/scripts/cmake/ConanSetup.cmake
index 726188adc78..5e158fa66b9 100644
--- a/scripts/cmake/ConanSetup.cmake
+++ b/scripts/cmake/ConanSetup.cmake
@@ -73,5 +73,5 @@ conan_cmake_run(REQUIRES ${CONAN_REQUIRES}
                 OPTIONS ${CONAN_OPTIONS}
                 BASIC_SETUP
                 UPDATE
-                BUILD missing
+                BUILD ${OGS_CONAN_BUILD}
 )
diff --git a/scripts/cmake/conan/conan.cmake b/scripts/cmake/conan/conan.cmake
index cb55621bc77..6edbbc71686 100644
--- a/scripts/cmake/conan/conan.cmake
+++ b/scripts/cmake/conan/conan.cmake
@@ -209,7 +209,12 @@ function(conan_cmake_install)
 
     set(CONAN_BUILD_POLICY "")
     foreach(ARG ${ARGUMENTS_BUILD})
-        set(CONAN_BUILD_POLICY ${CONAN_BUILD_POLICY} --build=${ARG})
+        if(${ARG} STREQUAL "all")
+            set(CONAN_BUILD_POLICY ${CONAN_BUILD_POLICY} --build)
+            break()
+        else()
+            set(CONAN_BUILD_POLICY ${CONAN_BUILD_POLICY} --build=${ARG})
+        endif()
     endforeach()
     if(ARGUMENTS_CONAN_COMMAND)
        set(conan_command ${ARGUMENTS_CONAN_COMMAND})
-- 
GitLab