diff options
author | jbeich <jbeich@FreeBSD.org> | 2016-10-16 07:53:45 +0800 |
---|---|---|
committer | jbeich <jbeich@FreeBSD.org> | 2016-10-16 07:53:45 +0800 |
commit | 1eee6f53ed4600b63ddad3f69e7572b390c1635f (patch) | |
tree | c6ebc91631843765af2374ee2d9d65dbe3bace1a /math | |
parent | f1c8e73bb30cc50285186eb3db31c04cc9dbc0ca (diff) | |
download | freebsd-ports-graphics-1eee6f53ed4600b63ddad3f69e7572b390c1635f.tar.gz freebsd-ports-graphics-1eee6f53ed4600b63ddad3f69e7572b390c1635f.tar.zst freebsd-ports-graphics-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/Makefile | 1 | ||||
-rw-r--r-- | math/ceres-solver/Makefile | 109 | ||||
-rw-r--r-- | math/ceres-solver/distinfo | 3 | ||||
-rw-r--r-- | math/ceres-solver/pkg-descr | 9 | ||||
-rw-r--r-- | math/ceres-solver/pkg-plist | 52 |
5 files changed, 174 insertions, 0 deletions
diff --git a/math/Makefile b/math/Makefile index bfbcf434781..a5d07be2936 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 00000000000..b68950171c5 --- /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 00000000000..e5eb361d673 --- /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 00000000000..0a1ec54a602 --- /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 00000000000..54f1bceb9cb --- /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%% |