summaryrefslogtreecommitdiff
path: root/src/logic
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2021-03-23 22:28:03 +0000
committermidipix <writeonce@midipix.org>2021-03-23 22:28:03 +0000
commit9a5f9681f88126c47e11ef49e7fb01c604c90986 (patch)
treef6e01e310a6fa68b73a6baeb75d2aa5a68e28692 /src/logic
parent7e54e27c804d44c9252b749927b4b06f0dca3391 (diff)
downloadslibtool-9a5f9681f88126c47e11ef49e7fb01c604c90986.tar.bz2
slibtool-9a5f9681f88126c47e11ef49e7fb01c604c90986.tar.xz
install mode: account for a libfoo.a that was created with -disable-static.
Diffstat (limited to 'src/logic')
-rw-r--r--src/logic/slbt_exec_install.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/logic/slbt_exec_install.c b/src/logic/slbt_exec_install.c
index 3cf0e12..f87db59 100644
--- a/src/logic/slbt_exec_install.c
+++ b/src/logic/slbt_exec_install.c
@@ -340,6 +340,7 @@ static int slbt_exec_install_entry(
bool fexe = false;
bool fpe;
bool frelease;
+ bool farchive;
size_t slen;
struct stat st;
@@ -419,12 +420,6 @@ static int slbt_exec_install_entry(
dot = strrchr(srcfile,'.');
strcpy(dot,dctx->cctx->settings.arsuffix);
- if (!(dctx->cctx->drvflags & SLBT_DRIVER_DISABLE_STATIC))
- if (slbt_copy_file(dctx,ectx,
- srcfile,
- dest ? (char *)dest->arg : *dst))
- return SLBT_NESTED_ERROR(dctx);
-
/* dot/suffix */
strcpy(slnkname,srcfile);
dot = strrchr(slnkname,'.');
@@ -436,6 +431,20 @@ static int slbt_exec_install_entry(
/* libfoo.a --> libfoo.so */
strcpy(dot,dsosuffix);
+ /* libfoo.a installation */
+ if (!(dctx->cctx->drvflags & SLBT_DRIVER_DISABLE_STATIC))
+ farchive = true;
+ else if (slbt_symlink_is_a_placeholder(slnkname))
+ farchive = true;
+ else
+ farchive = false;
+
+ if (farchive)
+ if (slbt_copy_file(dctx,ectx,
+ srcfile,
+ dest ? (char *)dest->arg : *dst))
+ return SLBT_NESTED_ERROR(dctx);
+
/* PE support: does .libs/libfoo.so.def exist? */
if ((size_t)snprintf(dstfile,sizeof(dstfile),"%s.def",
slnkname) >= sizeof(dstfile))