You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
2.7 KiB
118 lines
2.7 KiB
# Copyright 1999-2022 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit flag-o-matic multilib toolchain-funcs
|
|
|
|
MY_PN="Csdp"
|
|
MY_P="${MY_PN}-${PV}"
|
|
|
|
DESCRIPTION="COIN-OR C Library for Semi-Definite Programming"
|
|
HOMEPAGE="https://projects.coin-or.org/Csdp/"
|
|
SRC_URI="https://www.coin-or.org/download/source/${MY_PN}/${MY_P}.tgz -> ${P}.tar.gz"
|
|
|
|
LICENSE="EPL-2.0"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
|
|
IUSE="doc examples openmp"
|
|
|
|
RDEPEND="virtual/blas
|
|
virtual/lapack"
|
|
DEPEND="${RDEPEND}"
|
|
BDEPEND="virtual/pkgconfig"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-6.2.0_toolchain-vars.patch
|
|
)
|
|
|
|
S="${WORKDIR}"/${MY_P}
|
|
|
|
_get_version_component_count() {
|
|
local cnt=( $(ver_rs 1- ' ') )
|
|
echo ${#cnt[@]} || die
|
|
}
|
|
|
|
static_to_shared() {
|
|
local libstatic=${1}
|
|
shift
|
|
local libname=$(basename ${libstatic%.a})
|
|
local soname=${libname}$(get_libname $(ver_cut 1-2))
|
|
local libdir=$(dirname ${libstatic})
|
|
|
|
einfo "Making ${soname} from ${libstatic}"
|
|
if [[ ${CHOST} == *-darwin* ]] ; then
|
|
${LINK:-$(tc-getCC)} ${LDFLAGS} \
|
|
-dynamiclib -install_name "${EPREFIX}"/usr/lib/"${soname}" \
|
|
-Wl,-all_load -Wl,${libstatic} \
|
|
"$@" -o ${libdir}/${soname} || die "${soname} failed"
|
|
else
|
|
${LINK:-$(tc-getCC)} ${LDFLAGS} \
|
|
-shared -Wl,-soname=${soname} \
|
|
-Wl,--whole-archive ${libstatic} -Wl,--no-whole-archive \
|
|
"$@" -o ${libdir}/${soname} || die "${soname} failed"
|
|
|
|
if [[ $(_get_version_component_count) -ge 1 ]] ; then
|
|
ln -s ${soname} ${libdir}/${libname}$(get_libname $(ver_cut 1)) || die
|
|
fi
|
|
|
|
ln -s ${soname} ${libdir}/${libname}$(get_libname) || die
|
|
fi
|
|
}
|
|
|
|
pkg_pretend() {
|
|
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
|
}
|
|
|
|
pkg_setup() {
|
|
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
append-cflags -DNOSHORTS -DUSEGETTIME -I../include
|
|
|
|
if use openmp; then
|
|
append-cflags -DUSEOPENMP
|
|
|
|
if [[ $(tc-getCC) == *icc* ]]; then
|
|
append-cflags -openmp
|
|
else
|
|
append-cflags -fopenmp
|
|
append-ldflags -fopenmp
|
|
fi
|
|
fi
|
|
|
|
use amd64 && append-cflags -DBIT64
|
|
|
|
[[ $($(tc-getPKG_CONFIG) --libs blas) =~ atlas ]] && append-cflags -DUSEATLAS
|
|
|
|
tc-export CC
|
|
}
|
|
|
|
src_compile() {
|
|
emake CFLAGS="${CFLAGS} -fPIC" -C lib
|
|
local libs="$($(tc-getPKG_CONFIG) --libs blas lapack)" || die
|
|
static_to_shared lib/libsdp.a ${libs}
|
|
emake -C solver LIBS="${libs} -L../lib -lsdp -lm"
|
|
emake -C theta LIBS="${libs} -L../lib -lsdp -lm"
|
|
}
|
|
|
|
src_test() {
|
|
LD_LIBRARY_PATH="${S}/lib" emake -C test
|
|
}
|
|
|
|
src_install() {
|
|
dobin solver/csdp theta/{theta,graphtoprob,complement,rand_graph}
|
|
dolib.so lib/libsdp$(get_libname)*
|
|
insinto /usr/include/${PN}
|
|
doins include/*
|
|
dodoc AUTHORS README
|
|
use doc && dodoc doc/csdpuser.pdf
|
|
if use examples; then
|
|
docinto examples
|
|
dodoc example/*
|
|
fi
|
|
}
|