summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/logic/slbt_exec_link.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c
index 639d014..53724c4 100644
--- a/src/logic/slbt_exec_link.c
+++ b/src/logic/slbt_exec_link.c
@@ -24,6 +24,21 @@
/* */
/*******************************************************************/
+/*******************************************************************/
+/* */
+/* -o <ltlib> switches input result */
+/* ---------- --------------------- ----- ------ */
+/* libfoo.la -shared bar.lo libfoo.la */
+/* .libs/libfoo.a */
+/* .libs/libfoo.la (lnk) */
+/* */
+/* ar cru .libs/libfoo.a .libs/bar.o */
+/* ranlib .libs/libfoo.a */
+/* (generate libfoo.la) */
+/* ln -s ../libfoo.la .libs/libfoo.la */
+/* */
+/*******************************************************************/
+
static bool slbt_adjust_input_argument(char * arg, bool fpic)
{
char * slash;
@@ -213,6 +228,16 @@ int slbt_exec_link(
return -1;
}
+ /* pic libfoo.a */
+ if (dot && !strcmp(dot,".la"))
+ if (slbt_exec_link_create_archive(
+ dctx,ectx,
+ ectx->arfilename,
+ true)) {
+ slbt_free_exec_ctx(actx);
+ return -1;
+ }
+
/* no wrapper? */
if (!dot || strcmp(dot,".la")) {
slbt_free_exec_ctx(actx);