class Cgal < Formula desc "Computational Geometry Algorithms Library" homepage "https://www.cgal.org/" url "https://github.com/CGAL/cgal/releases/download/v6.1/CGAL-6.1.tar.xz" sha256 "618da8a8b3f5be46b4f0a47a1efb3c9e6c03d6aab0f5531d56d355d32701d79f" license "GPL-3.0-or-later" bottle do sha256 cellar: :any_skip_relocation, all: "1cb25e46dd6fd689eb3d5ca560f4f18410647f824a8e694e599eff18b7df2b84" end depends_on "cmake" => [:build, :test] depends_on "qtbase" => :test depends_on "boost" depends_on "eigen" depends_on "gmp" depends_on "mpfr" on_linux do depends_on "openssl@3" end def install system "cmake", "-S", ".", "-B", "build", *std_cmake_args system "cmake", "--build", "build" system "cmake", "--install", "build" # These cause different bottles to be built between macOS and Linux for some reason. %w[README.md readme.md].each { |file| (buildpath/file).unlink if (buildpath/file).exist? } end test do # https://doc.cgal.org/latest/Triangulation_2/Triangulation_2_2draw_triangulation_2_8cpp-example.html # https://doc.cgal.org/latest/Algebraic_foundations/Algebraic_foundations_2interoperable_8cpp-example.html (testpath/"surprise.cpp").write <<~CPP #include #include #include #include #include #include #include typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Triangulation_2 Triangulation; typedef Triangulation::Point Point; template typename CGAL::Coercion_traits::Type binary_func(const A& a , const B& b){ typedef CGAL::Coercion_traits CT; typename CT::Cast cast; return cast(a)*cast(b); } int main(int argc, char**) { std::cout<< binary_func(double(3), int(5)) << std::endl; std::cout<< binary_func(int(3), double(5)) << std::endl; std::ifstream in("data/triangulation_prog1.cin"); std::istream_iterator begin(in); std::istream_iterator end; Triangulation t; t.insert(begin, end); if(argc == 3) // do not test Qt6 at runtime CGAL::draw(t); return EXIT_SUCCESS; } CPP (testpath/"CMakeLists.txt").write <<~CMAKE cmake_minimum_required(VERSION 3.15) project(surprise) find_package(CGAL COMPONENTS Qt6) add_definitions(-DCGAL_USE_BASIC_VIEWER -DQT_NO_KEYWORDS) add_executable(surprise surprise.cpp) target_link_libraries(surprise PUBLIC CGAL::CGAL_Qt6) CMAKE system "cmake", "-S", ".", "-B", "build", *std_cmake_args system "cmake", "--build", "build" assert_equal "15\n15", shell_output("./build/surprise").chomp end end