diff options
author | midipix <writeonce@midipix.org> | 2018-07-11 06:18:35 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2018-07-11 02:30:33 -0400 |
commit | 11e2771a23a1f20df8d6a371c3c889b174609576 (patch) | |
tree | 2b7b57e6f6f24b1c3fa104db51b90c92794ad8fd /src/logic | |
parent | 46aa6f554c0f2ef1affa5ae292fffec6907ff4b3 (diff) | |
download | slibtool-11e2771a23a1f20df8d6a371c3c889b174609576.tar.bz2 slibtool-11e2771a23a1f20df8d6a371c3c889b174609576.tar.xz |
compile & link modes: accommodate conceptually challenged, PICky targets.
Diffstat (limited to 'src/logic')
-rw-r--r-- | src/logic/slbt_exec_compile.c | 16 | ||||
-rw-r--r-- | src/logic/slbt_exec_link.c | 4 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/logic/slbt_exec_compile.c b/src/logic/slbt_exec_compile.c index 9e4e7a1..f3d3b48 100644 --- a/src/logic/slbt_exec_compile.c +++ b/src/logic/slbt_exec_compile.c @@ -66,10 +66,12 @@ int slbt_exec_compile( /* shared library object */ if (dctx->cctx->drvflags & SLBT_DRIVER_SHARED) { - if (!(dctx->cctx->drvflags & SLBT_DRIVER_ANTI_PIC)) { + if (!(dctx->cctx->drvflags & SLBT_DRIVER_ANTI_PIC)) *ectx->dpic = "-DPIC"; - *ectx->fpic = "-fPIC"; - } + + if (!(dctx->cctx->drvflags & SLBT_DRIVER_ANTI_PIC)) + if (dctx->cctx->settings.picswitch) + *ectx->fpic = dctx->cctx->settings.picswitch; *ectx->lout[0] = "-o"; *ectx->lout[1] = ectx->lobjname; @@ -91,10 +93,12 @@ int slbt_exec_compile( if (dctx->cctx->drvflags & SLBT_DRIVER_STATIC) { slbt_reset_placeholders(ectx); - if (dctx->cctx->drvflags & SLBT_DRIVER_PRO_PIC) { + if (dctx->cctx->drvflags & SLBT_DRIVER_PRO_PIC) *ectx->dpic = "-DPIC"; - *ectx->fpic = "-fPIC"; - } + + if (dctx->cctx->drvflags & SLBT_DRIVER_PRO_PIC) + if (dctx->cctx->settings.picswitch) + *ectx->fpic = dctx->cctx->settings.picswitch; *ectx->lout[0] = "-o"; *ectx->lout[1] = ectx->aobjname; diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c index 4f422d2..a2501b9 100644 --- a/src/logic/slbt_exec_link.c +++ b/src/logic/slbt_exec_link.c @@ -1221,9 +1221,11 @@ static int slbt_exec_link_create_library( /* shared/static */ if (dctx->cctx->drvflags & SLBT_DRIVER_ALL_STATIC) { *ectx->dpic = "-static"; + } else if (dctx->cctx->settings.picswitch) { + *ectx->dpic = "-shared"; + *ectx->fpic = dctx->cctx->settings.picswitch; } else { *ectx->dpic = "-shared"; - *ectx->fpic = "-fPIC"; } /* output */ |