aboutsummaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorHorodniceanu Andrei <a.horodniceanu@proton.me>2023-11-30 15:34:14 +0200
committerHorodniceanu Andrei <a.horodniceanu@proton.me>2023-12-09 20:13:15 +0200
commitc6ab2690ead707fa368813014edd75509b07727b (patch)
treeeee26fef4d916ef133ff4cfb452b1886cb0f219d /eclass
parentdev-lang/dmd: add 2.106.0 (diff)
downloaddlang-c6ab2690ead707fa368813014edd75509b07727b.tar.gz
dlang-c6ab2690ead707fa368813014edd75509b07727b.tar.bz2
dlang-c6ab2690ead707fa368813014edd75509b07727b.zip
dlang.eclass: Properly set LIBDIR_$ABI for single type packages
Previously, only packages that set DLANG_PACKAGE_TYPE to multi received a valid value in LIBDIR_$ABI, the path to the compiler specific directory for libraries, in order to know where to install their libraries. Now, both types of packages will have this value set properly, alowing single type packages to know the exact path to the compiler library directory for easy access to auxiliary files like pkg-config files. Signed-off-by: Horodniceanu Andrei <a.horodniceanu@proton.me>
Diffstat (limited to 'eclass')
-rw-r--r--eclass/dlang.eclass11
-rw-r--r--eclass/dmd.eclass18
2 files changed, 26 insertions, 3 deletions
diff --git a/eclass/dlang.eclass b/eclass/dlang.eclass
index 385a458..2817779 100644
--- a/eclass/dlang.eclass
+++ b/eclass/dlang.eclass
@@ -584,7 +584,7 @@ _dlang_build_configurations() {
variants="${variants} ${abi}-${version_component}"
done
else
- variants="default-${version_component}"
+ variants="${DEFAULT_ABI:-default}-${version_component}"
fi
;;
selfhost)
@@ -647,10 +647,15 @@ _dlang_use_build_vars() {
# gcc's SLOT is its major version component.
export DC="/usr/${CHOST_default}/gcc-bin/${DC_VERSION}/${CHOST_default}-gdc"
export DMD="/usr/${CHOST_default}/gcc-bin/${DC_VERSION}/gdmd"
- if [[ "${DLANG_PACKAGE_TYPE}" == "multi" ]] && multilib_is_native_abi; then
+ if [[ ${DLANG_PACKAGE_TYPE} != multi ]]; then
+ # Both single and dmd enter this branch
export LIBDIR_${ABI}="lib/gcc/${CHOST_default}/${DC_VERSION}"
else
- export LIBDIR_${ABI}="lib/gcc/${CHOST_default}/${DC_VERSION}/${MODEL}"
+ if multilib_is_native_abi; then
+ export LIBDIR_${ABI}="lib/gcc/${CHOST_default}/${DC_VERSION}"
+ else
+ export LIBDIR_${ABI}="lib/gcc/${CHOST_default}/${DC_VERSION}/${MODEL}"
+ fi
fi
export DCFLAGS="${GDCFLAGS} -shared-libphobos"
export DLANG_LINKER_FLAG="-Xlinker "
diff --git a/eclass/dmd.eclass b/eclass/dmd.eclass
index 7d9e1f5..2292e12 100644
--- a/eclass/dmd.eclass
+++ b/eclass/dmd.eclass
@@ -295,8 +295,26 @@ EOF
fi
# Install shared lib.
+ # dlang.eclass will set LIBDIR_$ABI to the path of the host compiler
+ # library direcory (if not selfhosting). We don't care about that
+ # location, however, and we instead want to have it point
+ # to the path where this package is supposed to install the libraries
+ # to, i.e. the system library directory. We can use $LIBDIR_HOST
+ # to restore that value to the correct one but only if the ABI
+ # this function is running into is the same as the one set
+ # by dlang.eclass. Since dlang.eclass treats dmd as a 'single'
+ # type package, it will only treat the case where $ABI is the
+ # native one.
+ if ! use selfhost && multilib_is_native_abi; then
+ # We aren't going to use LIBDIR_$ABI for this ABI anymore
+ # so just overwrite it, don't bother saving it.
+ export LIBDIR_${ABI}="${LIBDIR_HOST}"
+ fi
+
+ # We are installing the real file into the system libdir.
dolib.so phobos/generated/linux/release/${MODEL}/"${SONAME}"
dosym "${SONAME}" /usr/"$(get_libdir)"/"${SONAME_SYM}"
+ # We create an additional symlink in this package's specific libdir.
dosym ../../../../../usr/"$(get_libdir)"/"${SONAME}" /usr/"${libdir}"/libphobos2.so
# Install static lib if requested.