78 lines
2.8 KiB
Ruby
78 lines
2.8 KiB
Ruby
class Ppl < Formula
|
|
desc "Parma Polyhedra Library: numerical abstractions for analysis, verification"
|
|
homepage "https://bugseng.com/ppl"
|
|
url "https://www.bugseng.com/products/ppl/download/ftp/releases/1.2/ppl-1.2.tar.xz"
|
|
mirror "https://deb.debian.org/debian/pool/main/p/ppl/ppl_1.2.orig.tar.xz"
|
|
sha256 "691f0d5a4fb0e206f4e132fc9132c71d6e33cdda168470d40ac3cf62340e9a60"
|
|
license "GPL-3.0"
|
|
revision 1
|
|
|
|
bottle do
|
|
sha256 "65aa31c0201a860d32e874ab34cbdea7132101fc6461510e06641a11ca762e82" => :catalina
|
|
sha256 "253714635b8718e7822853e1385c546b665450b7059e8067e4008ed865eae261" => :mojave
|
|
sha256 "7a9b9ceabcf71bf31ed8185caaa6e78c065511ba3e6cf805be13402983c2a7e1" => :high_sierra
|
|
end
|
|
|
|
depends_on "gmp"
|
|
|
|
# Fix build failure with clang 5+.
|
|
# https://www.cs.unipr.it/mantis/view.php?id=2128
|
|
# http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=c39f6a07b51f89e365b05ba4147aa2aa448febd7
|
|
# since 401 error on the `www.cs.unipr.it` links adopt the patch from macports
|
|
# patch reference, https://github.com/macports/macports-ports/commit/e5de9cc65a8e91fcbb9a3d90911569169f0ccf88
|
|
patch :DATA
|
|
|
|
def install
|
|
system "./configure", "--disable-dependency-tracking",
|
|
"--disable-silent-rules",
|
|
"--with-gmp=#{Formula["gmp"].opt_prefix}",
|
|
"--prefix=#{prefix}"
|
|
system "make", "install"
|
|
end
|
|
|
|
test do
|
|
(testpath/"test.c").write <<~EOS
|
|
#include <ppl_c.h>
|
|
#ifndef PPL_VERSION_MAJOR
|
|
#error "No PPL header"
|
|
#endif
|
|
int main() {
|
|
ppl_initialize();
|
|
return ppl_finalize();
|
|
}
|
|
EOS
|
|
system ENV.cc, "test.c", "-L#{lib}", "-lppl_c", "-lppl", "-o", "test"
|
|
system "./test"
|
|
end
|
|
end
|
|
|
|
__END__
|
|
diff --git a/src/Determinate_inlines.hh b/src/Determinate_inlines.hh
|
|
index c918b23..de672a0 100644
|
|
--- a/src/Determinate_inlines.hh
|
|
+++ b/src/Determinate_inlines.hh
|
|
@@ -289,8 +289,8 @@ operator()(Determinate& x, const Determinate& y) const {
|
|
|
|
template <typename PSET>
|
|
template <typename Binary_Operator_Assign>
|
|
-inline
|
|
-Determinate<PSET>::Binary_Operator_Assign_Lifter<Binary_Operator_Assign>
|
|
+inline typename
|
|
+Determinate<PSET>::template Binary_Operator_Assign_Lifter<Binary_Operator_Assign>
|
|
Determinate<PSET>::lift_op_assign(Binary_Operator_Assign op_assign) {
|
|
return Binary_Operator_Assign_Lifter<Binary_Operator_Assign>(op_assign);
|
|
}
|
|
diff --git a/src/OR_Matrix_inlines.hh b/src/OR_Matrix_inlines.hh
|
|
index a5f2856..560f8d6 100644
|
|
--- a/src/OR_Matrix_inlines.hh
|
|
+++ b/src/OR_Matrix_inlines.hh
|
|
@@ -97,7 +97,7 @@ OR_Matrix<T>::Pseudo_Row<U>::Pseudo_Row(const Pseudo_Row<V>& y)
|
|
|
|
template <typename T>
|
|
template <typename U>
|
|
-inline OR_Matrix<T>::Pseudo_Row<U>&
|
|
+inline typename OR_Matrix<T>::template Pseudo_Row<U>&
|
|
OR_Matrix<T>::Pseudo_Row<U>::operator=(const Pseudo_Row& y) {
|
|
first = y.first;
|
|
#if PPL_OR_MATRIX_EXTRA_DEBUG
|