diff options
Diffstat (limited to 'src/logic')
-rw-r--r-- | src/logic/slbt_exec_install.c | 21 |
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)) |