From 7e289848e4d973abb8976bf8f69fb0ede54c6478 Mon Sep 17 00:00:00 2001
From: Bhatu <prbhatu@microsoft.com>
Date: Mon, 11 Jan 2021 02:30:15 +0530
Subject: [PATCH] Always checkout Eigen3 and SEAL while building SCI

Locally check them out in extern/ directory so that programs can be linked
against SCI without manually putting them in the networks directory and
modifying the CMake file.

See CompileTFGraph.py for seeing how to build and link programs directly.
---
 SCI/src/LinearHE/CMakeLists.txt | 55 +++++++++++++++------------------
 1 file changed, 25 insertions(+), 30 deletions(-)

diff --git a/SCI/src/LinearHE/CMakeLists.txt b/SCI/src/LinearHE/CMakeLists.txt
index cf1f91f..775b7c1 100644
--- a/SCI/src/LinearHE/CMakeLists.txt
+++ b/SCI/src/LinearHE/CMakeLists.txt
@@ -1,15 +1,13 @@
 find_package(OpenMP REQUIRED)
 # set(CMAKE_FIND_DEBUG_MODE 1)
 
-find_package(SEAL 3.3.2 EXACT QUIET)
-if (NOT SEAL_FOUND)
-    message(STATUS "SEAL 3.3.2 was not found: clone and install SEAL locally")
-    if (NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/SEAL/native/src/CMakeLists.txt")
-        find_package(Git REQUIRED)
-        message(STATUS "initialize Git submodule: extern/SEAL")
-        execute_process(COMMAND git submodule update --init --recursive extern/SEAL
-                WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
-    endif ()
+message(STATUS "SEAL 3.3.2 was not found: clone and install SEAL locally")
+if (NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/SEAL/native/src/CMakeLists.txt")
+    find_package(Git REQUIRED)
+    message(STATUS "initialize Git submodule: extern/SEAL")
+    execute_process(COMMAND git submodule update --init --recursive extern/SEAL
+            WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+endif ()
 if(APPLE)
     execute_process(COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/build .
         -DCMAKE_C_COMPILER=${MAC_GCC} -DCMAKE_CXX_COMPILER=${MAC_GPP}
@@ -18,29 +16,26 @@ else ()
     execute_process(COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/build .
         WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/SEAL/native/src")
 endif()
-    execute_process(COMMAND ${CMAKE_COMMAND} --build . --target install
-        WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/SEAL/native/src")
-    find_package(SEAL 3.3.2 EXACT REQUIRED PATHS "${PROJECT_SOURCE_DIR}/build/")
-endif ()
+execute_process(COMMAND ${CMAKE_COMMAND} --build . --target install
+    WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/SEAL/native/src")
+find_package(SEAL 3.3.2 EXACT REQUIRED PATHS "${PROJECT_SOURCE_DIR}/build/")
 
-find_package(Eigen3 3.3 NO_MODULE QUIET)
-if (NOT Eigen3_FOUND)
-    message(STATUS "Eigen 3.3 was not found: clone and install Eigen3 locally")
-    if (NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/eigen/CMakeLists.txt")
-        find_package(Git REQUIRED)
-        message(STATUS "initialize Git submodule: extern/eigen")
-        execute_process(COMMAND git submodule update --init --recursive extern/eigen
-                WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
-    endif ()
-    execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory build
-        WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/eigen/")
-    execute_process(COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/build ..
-        WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/eigen/build")
-    execute_process(COMMAND ${CMAKE_COMMAND} --build .. --target install
-        WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/eigen/build")
-    message(STATUS "${PROJECT_SOURCE_DIR}")
-    find_package(Eigen3 3.3 REQUIRED NO_MODULE PATHS "${PROJECT_SOURCE_DIR}/build/")
+message(STATUS "Eigen 3.3 was not found: clone and install Eigen3 locally")
+if (NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/eigen/CMakeLists.txt")
+    find_package(Git REQUIRED)
+    message(STATUS "initialize Git submodule: extern/eigen")
+    execute_process(COMMAND git submodule update --init --recursive extern/eigen
+            WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
 endif ()
+execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory build
+    WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/eigen/")
+execute_process(COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/build ..
+    WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/eigen/build")
+execute_process(COMMAND ${CMAKE_COMMAND} --build .. --target install
+    WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/extern/eigen/build")
+message(STATUS "${PROJECT_SOURCE_DIR}")
+find_package(Eigen3 3.3 REQUIRED NO_MODULE PATHS "${PROJECT_SOURCE_DIR}/build/")
+
 
 add_library(SCI-LinearHE
     conv-field.cpp
-- 
GitLab