aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>2021-08-11 02:12:13 +0500
committerAnna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>2021-08-11 02:12:13 +0500
commitf7989067085a38f222241fa51792b6e86fb0a06f (patch)
treef651d6b981cbb411b562fbb6a3ed360c4ff3f575 /net-libs/kcgi
parentgames-fps/crispy-doom: Bump to version 5.10.2 (diff)
downloadguru-f7989067085a38f222241fa51792b6e86fb0a06f.tar.gz
guru-f7989067085a38f222241fa51792b6e86fb0a06f.tar.bz2
guru-f7989067085a38f222241fa51792b6e86fb0a06f.zip
net-libs/kcgi: convert static libraries to shared
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>
Diffstat (limited to 'net-libs/kcgi')
-rw-r--r--net-libs/kcgi/kcgi-0.12.5.ebuild68
1 files changed, 65 insertions, 3 deletions
diff --git a/net-libs/kcgi/kcgi-0.12.5.ebuild b/net-libs/kcgi/kcgi-0.12.5.ebuild
index 79afbe7c8..380808248 100644
--- a/net-libs/kcgi/kcgi-0.12.5.ebuild
+++ b/net-libs/kcgi/kcgi-0.12.5.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit multiprocessing toolchain-funcs
+inherit flag-o-matic multilib multiprocessing toolchain-funcs
DESCRIPTION="Minimal CGI library for web applications"
HOMEPAGE="https://kristaps.bsd.lv/kcgi/"
@@ -32,15 +32,72 @@ DEPEND="${RDEPEND}
PATCHES=( "${FILESDIR}"/${PN}-$(ver_cut 1-2)-ldflags.patch )
+_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
+}
+
src_prepare() {
default
# disable failing tests
sed -e '/\s*regress\/test-debug-.*/d' -i Makefile || die
+
+ # ld: multiple definition of `dummy'
+ local deselect=( sandbox-{capsicum,darwin,pledge,seccomp-filter}.o )
+ case ${CHOST} in
+ *-linux-*)
+ deselect=( "${deselect[@]/sandbox-seccomp-filter.o}" )
+ ;;
+ *-darwin*)
+ deselect=( "${deselect[@]/sandbox-darwin.o}" )
+ ;;
+ *-freebsd*)
+ deselect=( "${deselect[@]/sandbox-capsicum.o}" )
+ ;;
+ *-openbsd*)
+ deselect=( "${deselect[@]/sandbox-pledge.o}" )
+ ;;
+ esac
+
+ for obj in "${deselect[@]}"; do
+ # elements are not deleted completely from the array
+ if [[ -n "${obj}" ]]; then
+ sed "/${obj}/d" -i Makefile || die
+ fi
+ done
}
src_configure() {
tc-export CC AR
+ append-cflags -fPIC
# note: not an autoconf configure script
conf_args=(
@@ -56,6 +113,12 @@ src_configure() {
src_compile() {
bmake -j$(makeopts_jobs) || die
+
+ static_to_shared libkcgi.a -lz -lmd
+ static_to_shared libkcgihtml.a
+ static_to_shared libkcgijson.a -lm
+ static_to_shared libkcgiregress.a
+ static_to_shared libkcgixml.a
}
src_test() {
@@ -69,10 +132,9 @@ src_install() {
DATADIR="/usr/share/doc/${PF}/examples" \
install || die
- # kcgi does not install shared libraries
+ dolib.so lib*$(get_libname)*
if ! use static-libs; then
find "${ED}" -name '*.a' -delete || die
- find "${ED}" -name '*.pc' -delete || die
fi
einstalldocs