summaryrefslogtreecommitdiff
path: root/src/logic/slbt_exec_link.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2021-05-03 02:50:18 +0000
committermidipix <writeonce@midipix.org>2021-05-03 02:50:18 +0000
commit26354e5fca8a27ce476970f7ddb91171dba0912d (patch)
tree68be71212c7a3f391f55d74a77a3ba9849d0e20f /src/logic/slbt_exec_link.c
parent1f2c01c19d001c0e9b8cabc2522ae91e79f70944 (diff)
downloadslibtool-26354e5fca8a27ce476970f7ddb91171dba0912d.tar.bz2
slibtool-26354e5fca8a27ce476970f7ddb91171dba0912d.tar.xz
link mode: slbt_exec_link(): properly support non-default shared-object suffix.
Diffstat (limited to 'src/logic/slbt_exec_link.c')
-rw-r--r--src/logic/slbt_exec_link.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c
index ea5dccf..949ca07 100644
--- a/src/logic/slbt_exec_link.c
+++ b/src/logic/slbt_exec_link.c
@@ -1997,6 +1997,11 @@ int slbt_exec_link(
/* dynamic library */
if (dot && !strcmp(dot,".la") && dctx->cctx->rpath && !fstaticonly) {
+ const struct slbt_flavor_settings * dflavor;
+
+ if (slbt_get_flavor_settings("default",&dflavor) < 0)
+ return SLBT_CUSTOM_ERROR(dctx,SLBT_ERR_LINK_FLOW);
+
/* -shrext support */
if (dctx->cctx->shrext) {
strcpy(target,ectx->lafilename);
@@ -2016,8 +2021,29 @@ int slbt_exec_link(
target,lnkname,
SLBT_SYMLINK_DEFAULT))
return SLBT_NESTED_ERROR(dctx);
- }
+ /* non-default shared-object suffix support */
+ } else if (strcmp(dctx->cctx->settings.dsosuffix,dflavor->dsosuffix)) {
+ strcpy(target,ectx->lafilename);
+ sprintf(lnkname,"%s.shrext%s",
+ ectx->lafilename,
+ dctx->cctx->settings.dsosuffix);
+
+ if (slbt_create_symlink(
+ dctx,ectx,
+ target,lnkname,
+ SLBT_SYMLINK_DEFAULT))
+ return SLBT_NESTED_ERROR(dctx);
+
+ strcpy(target,lnkname);
+ sprintf(lnkname,"%s.shrext",ectx->lafilename);
+
+ if (slbt_create_symlink(
+ dctx,ectx,
+ target,lnkname,
+ SLBT_SYMLINK_DEFAULT))
+ return SLBT_NESTED_ERROR(dctx);
+ }
/* linking: libfoo.so.x.y.z */
if (slbt_exec_link_create_library(