66 lines
2.1 KiB
Ruby
66 lines
2.1 KiB
Ruby
class Seal < Formula
|
|
desc "Easy-to-use homomorphic encryption library"
|
|
homepage "https://github.com/microsoft/SEAL"
|
|
url "https://github.com/microsoft/SEAL/archive/v3.5.6.tar.gz"
|
|
sha256 "13674a39a48c0d1c6ff544521cf10ee539ce1af75c02bfbe093f7621869e3406"
|
|
license "MIT"
|
|
|
|
bottle do
|
|
cellar :any
|
|
sha256 "919b018f4e7f456ac98b8c579b6250a26c26a251fc418885deea34959304941e" => :catalina
|
|
sha256 "6e993ad72fa4cc95a3ee7717f3a5c48cd168e19091edf1416aedd6568d580c92" => :mojave
|
|
sha256 "fe01202335935f13c3264f08b6fe536da382624378f9e0943d01ae7a8fae33ed" => :high_sierra
|
|
end
|
|
|
|
depends_on "cmake" => [:build, :test]
|
|
|
|
def install
|
|
system "cmake", "-DBUILD_SHARED_LIBS=ON", ".", *std_cmake_args
|
|
system "make"
|
|
system "make", "install"
|
|
pkgshare.install "native/examples"
|
|
end
|
|
|
|
test do
|
|
cp_r (pkgshare/"examples"), testpath
|
|
|
|
# remove the partial CMakeLists
|
|
File.delete testpath/"examples/CMakeLists.txt"
|
|
|
|
# Chip in a new "CMakeLists.txt" for example code tests
|
|
(testpath/"examples/CMakeLists.txt").write <<~EOS
|
|
cmake_minimum_required(VERSION 3.12)
|
|
project(SEALExamples VERSION #{version} LANGUAGES CXX)
|
|
# Executable will be in ../bin
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SEALExamples_SOURCE_DIR}/../bin)
|
|
|
|
add_executable(sealexamples examples.cpp)
|
|
target_sources(sealexamples
|
|
PRIVATE
|
|
1_bfv_basics.cpp
|
|
2_encoders.cpp
|
|
3_levels.cpp
|
|
4_ckks_basics.cpp
|
|
5_rotation.cpp
|
|
6_serialization.cpp
|
|
7_performance.cpp
|
|
)
|
|
|
|
# Import Microsoft SEAL
|
|
find_package(SEAL #{version} EXACT REQUIRED
|
|
# Providing a path so this can be built without installing Microsoft SEAL
|
|
PATHS ${SEALExamples_SOURCE_DIR}/../src/cmake
|
|
)
|
|
|
|
# Link Microsoft SEAL
|
|
target_link_libraries(sealexamples SEAL::seal)
|
|
EOS
|
|
|
|
system "cmake", "examples"
|
|
system "make"
|
|
# test examples 1-5 and exit
|
|
input = "1\n2\n3\n4\n5\n0\n"
|
|
assert_match "Correct", pipe_output("bin/sealexamples", input)
|
|
end
|
|
end
|