diff options
author | 2021-08-11 02:12:13 +0500 | |
---|---|---|
committer | 2021-08-11 02:12:13 +0500 | |
commit | f7989067085a38f222241fa51792b6e86fb0a06f (patch) | |
tree | f651d6b981cbb411b562fbb6a3ed360c4ff3f575 /net-libs/kcgi | |
parent | games-fps/crispy-doom: Bump to version 5.10.2 (diff) | |
download | guru-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.ebuild | 68 |
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 |