1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-19 03:52:17 +00:00
freebsd-ports/math/ceres-solver/Makefile
Jan Beich 6551dfcc43 math/ceres-solver: unbreak ATLAS=on after r465553
When math/suitesparse has OPENBLAS=on:
-- Found BLAS: /usr/local/lib/libopenblas.so
-- Found LAPACK library: alapack
[...]
 0x0000000000000001 NEEDED               Shared library: [libalapack.so.2]
 0x0000000000000001 NEEDED               Shared library: [libopenblas.so.0]

When math/suitesparse has ATLAS=on:
-- Found BLAS: /usr/local/lib/libf77blas.so;/usr/local/lib/libatlas.so
-- Found LAPACK library: alapack
[...]
//usr/local/lib/libalapack.so.2: undefined reference to `cblas_izamax'
//usr/local/lib/libalapack.so.2: undefined reference to `cblas_sswap'
c++: error: linker command failed with exit code 1 (use -v to see invocation)

Pointy hat to:	jbeich
2018-05-15 20:43:10 +00:00

121 lines
4.0 KiB
Makefile

# $FreeBSD$
PORTNAME= ceres-solver
DISTVERSION= 1.14.0
PORTREVISION= 4
CATEGORIES= math
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Nonlinear least squares minimizer
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
LIB_DEPENDS= libglog.so:devel/glog
RUN_DEPENDS:= ${BUILD_DEPENDS:Meigen*}
USES= cmake:outsource compiler:${OPENMP}c++11-lib eigen:3 localbase shebangfix
USE_GITHUB= yes
USE_LDCONFIG= yes
SHEBANG_FILES= examples/slam/pose_graph_*/plot_results.py \
scripts/make_docs.py
CMAKE_ON= CXX11 BUILD_SHARED_LIBS
CMAKE_OFF= BUILD_BENCHMARKS
LDFLAGS+= -Wl,--as-needed # -lccolamd -lcholmod -lrt from suitesparse
PLIST_SUB= VERSION=${DISTVERSION:C/rc.*//}
EXAMPLESDIR= ${PREFIX}/share/examples/${PORTNAME:S/-solver//}
DOCSDIR= ${PREFIX}/share/doc/${PORTNAME:S/-solver//}
PORTDOCS= *
PORTEXAMPLES= *
OPTIONS_DEFINE= CUSTOM_BLAS EXAMPLES DOCS GFLAGS LAPACK SCHUR TEST
OPTIONS_DEFAULT=CUSTOM_BLAS CXSPARSE OPENBLAS OPENMP SCHUR SUITESPARSE
OPTIONS_RADIO= LAPACK THREADS
OPTIONS_RADIO_LAPACK= ATLAS GOTOBLAS NETLIB OPENBLAS
OPTIONS_RADIO_THREADS= OPENMP TBB
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:2.7,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
# XXX ports/199603 + ports/210337
OPENMP_VARS= OPENMP=gcc-
SCHUR_DESC= Fixed-size schur specializations
SCHUR_CMAKE_BOOL= SCHUR_SPECIALIZATIONS
TBB_DESC= Intel threading building blocks
TBB_LIB_DEPENDS= libtbb.so:devel/tbb
TBB_CMAKE_BOOL= TBB
# XXX Unbundle googletest/googlemock
TEST_CMAKE_BOOL= BUILD_TESTING
TEST_TEST_TARGET= test ARGS="-V"
TEST_IMPLIES= GFLAGS
LAPACK_DESC= Linear Algebra PACKage
LAPACK_USES= fortran # LDFLAGS
LAPACK_CMAKE_BOOL= LAPACK
LAPACK_CMAKE_ON= -DCMAKE_POLICY_DEFAULT_CMP0056:STRING=NEW # USES=fortran
# Avoid conflict with Ceres threading by using single-threaded BLAS library.
# BLASLIB from USES=blaslapack cannot be used as it's multi-threaded.
# https://github.com/xianyi/OpenBLAS/wiki/faq#multi-threaded
ATLAS_USES= blaslapack:atlas
ATLAS_CMAKE_ON= -DBLA_VENDOR:STRING="ATLAS" \
-DBLAS_LIBRARIES:FILEPATH="${LOCALBASE}/lib/libcblas.so" \
-DLAPACK_LIBRARIES:FILEPATH="${LOCALBASE}/lib/libalapack.so"
ATLAS_IMPLIES= LAPACK
GOTOBLAS_DESC= Goto blas implementation
GOTOBLAS_USES= blaslapack:gotoblas
GOTOBLAS_CMAKE_ON= -DBLA_VENDOR:STRING="Goto"
GOTOBLAS_IMPLIES= LAPACK
NETLIB_USES= blaslapack:netlib
NETLIB_CMAKE_ON= -DBLA_VENDOR:STRING="Generic"
NETLIB_IMPLIES= LAPACK
OPENBLAS_USES= blaslapack:openblas
OPENBLAS_CMAKE_ON= -DBLA_VENDOR:STRING="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:PATH="${LOCALBASE}/include/suitesparse"
CXSPARSE_CMAKE_BOOL= CXSPARSE
EIGENSPARSE_DESC= Simplicial Cholesky factorization in Eigen
EIGENSPARSE_CMAKE_BOOL= EIGENSPARSE
EIGENSPARSE_VARS= LICENSE+=LGPL21+ LICENSE_COMB=multi \
LICENSE_FILE_BSD3CLAUSE="${LICENSE_FILE}"
SUITESPARSE_DESC= SuiteSparse support
SUITESPARSE_LIB_DEPENDS=libspqr.so:math/suitesparse
SUITESPARSE_CMAKE_BOOL= SUITESPARSE
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>