aboutsummaryrefslogtreecommitdiffstats
path: root/math
diff options
context:
space:
mode:
authorjbeich <jbeich@FreeBSD.org>2016-10-16 07:53:45 +0800
committerjbeich <jbeich@FreeBSD.org>2016-10-16 07:53:45 +0800
commit1eee6f53ed4600b63ddad3f69e7572b390c1635f (patch)
treec6ebc91631843765af2374ee2d9d65dbe3bace1a /math
parentf1c8e73bb30cc50285186eb3db31c04cc9dbc0ca (diff)
downloadfreebsd-ports-gnome-1eee6f53ed4600b63ddad3f69e7572b390c1635f.tar.gz
freebsd-ports-gnome-1eee6f53ed4600b63ddad3f69e7572b390c1635f.tar.zst
freebsd-ports-gnome-1eee6f53ed4600b63ddad3f69e7572b390c1635f.zip
math/ceres-solver: add new port
Based on: Gentoo (1.11.0 ebuild) Tested on: graphics/openmvg from @outpaddling's repo (build on 10.3 amd64) Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems. It is a feature rich, mature and performant library which has been used in production at Google since 2010. Ceres Solver can solve two kinds of problems. 1. Non-linear Least Squares problems with bounds constraints. 2. General unconstrained optimization problems. http://ceres-solver.org/
Diffstat (limited to 'math')
-rw-r--r--math/Makefile1
-rw-r--r--math/ceres-solver/Makefile109
-rw-r--r--math/ceres-solver/distinfo3
-rw-r--r--math/ceres-solver/pkg-descr9
-rw-r--r--math/ceres-solver/pkg-plist52
5 files changed, 174 insertions, 0 deletions
diff --git a/math/Makefile b/math/Makefile
index bfbcf434781c..a5d07be29361 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -107,6 +107,7 @@
SUBDIR += carve
SUBDIR += cblas
SUBDIR += ccmath
+ SUBDIR += ceres-solver
SUBDIR += cgal
SUBDIR += chaco
SUBDIR += chryzodus
diff --git a/math/ceres-solver/Makefile b/math/ceres-solver/Makefile
new file mode 100644
index 000000000000..b68950171c57
--- /dev/null
+++ b/math/ceres-solver/Makefile
@@ -0,0 +1,109 @@
+# $FreeBSD$
+
+PORTNAME= ceres-solver
+DISTVERSION= 1.12.0rc1
+CATEGORIES= math
+
+MAINTAINER= jbeich@FreeBSD.org
+COMMENT= Nonlinear least squares minimizer
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= eigen>=3.2.2:math/eigen3
+LIB_DEPENDS= libglog.so:devel/glog
+RUN_DEPENDS:= ${BUILD_DEPENDS:Meigen*}
+
+USES= cmake:outsource compiler:${OPENMP}c++11-lib localbase shebangfix
+USE_GITHUB= yes
+USE_LDCONFIG= yes
+SHEBANG_FILES= examples/slam/pose_graph_*/plot_results.py \
+ scripts/make_docs.py
+CMAKE_ARGS= -DCXX11=on -DBUILD_SHARED_LIBS=on
+LDFLAGS+= -Wl,--as-needed # -lccolamd -lcholmod -lrt from suitesparse
+PLIST_SUB= VERSION=${PORTVERSION:R}
+EXAMPLESDIR= ${PREFIX}/share/examples/${PORTNAME:S/-solver//}
+DOCSDIR= ${PREFIX}/share/doc/${PORTNAME:S/-solver//}
+PORTDOCS= *
+PORTEXAMPLES= *
+
+OPTIONS_DEFINE= CUSTOM_BLAS EXAMPLES DOCS GFLAGS LAPACK OPENMP SCHUR TEST
+OPTIONS_DEFAULT=CUSTOM_BLAS NETLIB OPENMP SCHUR ${OPTIONS_GROUP_SPARSE}
+OPTIONS_RADIO= LAPACK
+OPTIONS_RADIO_LAPACK= ATLAS GOTOBLAS NETLIB OPENBLAS
+OPTIONS_GROUP= SPARSE
+OPTIONS_GROUP_SPARSE= CXSPARSE EIGENSPARSE SUITESPARSE
+
+CUSTOM_BLAS_DESC= Handcoded BLAS routines instead of Eigen
+CUSTOM_BLAS_CMAKE_BOOL= CUSTOM_BLAS
+
+DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx
+DOCS_USES= python:build
+DOCS_CMAKE_BOOL= BUILD_DOCUMENTATION
+
+EXAMPLES_CMAKE_BOOL= BUILD_EXAMPLES
+EXAMPLES_IMPLIES= GFLAGS
+
+GFLAGS_DESC= Google Flags support
+GFLAGS_LIB_DEPENDS= libgflags.so:devel/gflags
+GFLAGS_CMAKE_BOOL= GFLAGS
+
+OPENMP_USES= compiler:openmp
+OPENMP_CMAKE_BOOL= OPENMP
+OPENMP_VARS= OPENMP=gcc- # XXX ports/210337
+
+SCHUR_DESC= Fixed-size schur specializations
+SCHUR_CMAKE_BOOL= SCHUR_SPECIALIZATIONS
+
+# XXX Unbundle googletest/googlemock
+TEST_CMAKE_BOOL= BUILD_TESTING
+TEST_TEST_TARGET= test ARGS="-V"
+TEST_IMPLIES= GFLAGS
+# XXX Move to USES=cmake
+TEST_VARS= TEST_WRKSRC="${CONFIGURE_WRKSRC}"
+
+LAPACK_DESC= Linear Algebra PACKage
+LAPACK_USES= fortran # LDFLAGS
+LAPACK_CMAKE_ON= -DBLAS_LIBRARIES="${BLASLIB}" -DLAPACK_LIBRARIES="${LAPACKLIB}"
+LAPACK_CMAKE_BOOL= LAPACK
+ATLAS_USES= blaslapack:atlas
+ATLAS_CMAKE_ARGS= -DBLA_VENDOR="ATLAS"
+ATLAS_IMPLIES= LAPACK
+GOTOBLAS_DESC= Goto blas implementation
+GOTOBLAS_CMAKE_ARGS= -DBLA_VENDOR="Goto"
+GOTOBLAS_IMPLIES= LAPACK
+GOTOBLAS_USES= blaslapack:gotoblas
+NETLIB_USES= blaslapack:netlib
+NETLIB_CMAKE_ARGS= -DBLA_VENDOR="Generic"
+NETLIB_IMPLIES= LAPACK
+OPENBLAS_USES= blaslapack:openblas
+OPENBLAS_CMAKE_ARGS= -DBLA_VENDOR="OpenBLAS"
+OPENBLAS_IMPLIES= LAPACK
+
+SPARSE_DESC= Sparse linear algebra library
+CXSPARSE_DESC= CXSparse support
+CXSPARSE_LIB_DEPENDS= libcxsparse.so:math/suitesparse
+CXSPARSE_CMAKE_ON= -DCXSPARSE_INCLUDE_DIR="${LOCALBASE}/include/suitesparse"
+CXSPARSE_CMAKE_BOOL= CXSPARSE
+EIGENSPARSE_DESC= Eigen support
+EIGENSPARSE_CMAKE_BOOL= EIGENSPARSE
+SUITESPARSE_DESC= SuiteSparse support
+SUITESPARSE_LIB_DEPENDS=libspqr.so:math/suitesparse
+SUITESPARSE_CMAKE_BOOL= SUITESPARSE
+SUITESPARSE_IMPLIES= LAPACK
+
+post-patch-DOCS-on:
+ @${REINPLACE_CMD} -e 's,python,${PYTHON_CMD:T},' \
+ ${WRKSRC}/docs/source/CMakeLists.txt
+
+pre-install-TEST-on: do-test
+
+post-install-EXAMPLES-on:
+# Copy examples (stripped), their source and sample data but not tests programs
+ (cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR})
+ (cd ${WRKSRC} && ${COPYTREE_SHARE} data ${STAGEDIR}${EXAMPLESDIR})
+ (cd ${BUILD_WRKSRC} && ${COPYTREE_SHARE} bin ${STAGEDIR}${EXAMPLESDIR})
+ @${RM} -r ${STAGEDIR}${EXAMPLESDIR}/bin/*_test
+ -@${STRIP_CMD} ${STAGEDIR}${EXAMPLESDIR}/bin/* # may fail for non-root
+
+.include <bsd.port.mk>
diff --git a/math/ceres-solver/distinfo b/math/ceres-solver/distinfo
new file mode 100644
index 000000000000..e5eb361d673a
--- /dev/null
+++ b/math/ceres-solver/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1474949998
+SHA256 (ceres-solver-ceres-solver-1.12.0rc1_GH0.tar.gz) = 71c4af1d9dc434327b4af509d9a5cd4f509cc60c7f349bc0fac20ca51c02569b
+SIZE (ceres-solver-ceres-solver-1.12.0rc1_GH0.tar.gz) = 3413229
diff --git a/math/ceres-solver/pkg-descr b/math/ceres-solver/pkg-descr
new file mode 100644
index 000000000000..0a1ec54a602a
--- /dev/null
+++ b/math/ceres-solver/pkg-descr
@@ -0,0 +1,9 @@
+Ceres Solver is an open source C++ library for modeling and solving
+large, complicated optimization problems. It is a feature rich, mature
+and performant library which has been used in production at Google
+since 2010. Ceres Solver can solve two kinds of problems.
+
+1. Non-linear Least Squares problems with bounds constraints.
+2. General unconstrained optimization problems.
+
+WWW: http://ceres-solver.org/
diff --git a/math/ceres-solver/pkg-plist b/math/ceres-solver/pkg-plist
new file mode 100644
index 000000000000..54f1bceb9cba
--- /dev/null
+++ b/math/ceres-solver/pkg-plist
@@ -0,0 +1,52 @@
+include/ceres/autodiff_cost_function.h
+include/ceres/autodiff_local_parameterization.h
+include/ceres/c_api.h
+include/ceres/ceres.h
+include/ceres/conditioned_cost_function.h
+include/ceres/cost_function.h
+include/ceres/cost_function_to_functor.h
+include/ceres/covariance.h
+include/ceres/crs_matrix.h
+include/ceres/cubic_interpolation.h
+include/ceres/dynamic_autodiff_cost_function.h
+include/ceres/dynamic_cost_function_to_functor.h
+include/ceres/dynamic_numeric_diff_cost_function.h
+include/ceres/fpclassify.h
+include/ceres/gradient_checker.h
+include/ceres/gradient_problem.h
+include/ceres/gradient_problem_solver.h
+include/ceres/internal/autodiff.h
+include/ceres/internal/config.h
+include/ceres/internal/disable_warnings.h
+include/ceres/internal/eigen.h
+include/ceres/internal/fixed_array.h
+include/ceres/internal/macros.h
+include/ceres/internal/manual_constructor.h
+include/ceres/internal/numeric_diff.h
+include/ceres/internal/port.h
+include/ceres/internal/reenable_warnings.h
+include/ceres/internal/scoped_ptr.h
+include/ceres/internal/variadic_evaluate.h
+include/ceres/iteration_callback.h
+include/ceres/jet.h
+include/ceres/local_parameterization.h
+include/ceres/loss_function.h
+include/ceres/normal_prior.h
+include/ceres/numeric_diff_cost_function.h
+include/ceres/numeric_diff_options.h
+include/ceres/ordered_groups.h
+include/ceres/problem.h
+include/ceres/rotation.h
+include/ceres/sized_cost_function.h
+include/ceres/solver.h
+include/ceres/types.h
+include/ceres/version.h
+lib/cmake/Ceres/CeresConfig.cmake
+lib/cmake/Ceres/CeresConfigVersion.cmake
+lib/cmake/Ceres/CeresTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/Ceres/CeresTargets.cmake
+lib/cmake/Ceres/FindEigen.cmake
+lib/cmake/Ceres/FindGlog.cmake
+lib/libceres.so
+lib/libceres.so.1
+lib/libceres.so.%%VERSION%%