diff --git a/include/slibtool/slibtool.h b/include/slibtool/slibtool.h index 153a202..cd3b3c4 100644 --- a/include/slibtool/slibtool.h +++ b/include/slibtool/slibtool.h @@ -84,6 +84,10 @@ extern "C" { #define SLBT_DRIVER_PREFER_SHARED SLBT_DRIVER_XFLAG(0x100000) #define SLBT_DRIVER_PREFER_STATIC SLBT_DRIVER_XFLAG(0x200000) +#define SLBT_DRIVER_STOOLIE_COPY SLBT_DRIVER_XFLAG(0x01000000) +#define SLBT_DRIVER_STOOLIE_FORCE SLBT_DRIVER_XFLAG(0x02000000) +#define SLBT_DRIVER_STOOLIE_INSTALL SLBT_DRIVER_XFLAG(0x04000000) + #define SLBT_DRIVER_DLOPEN_SELF SLBT_DRIVER_XFLAG(0x10000000) #define SLBT_DRIVER_DLOPEN_FORCE SLBT_DRIVER_XFLAG(0x20000000) #define SLBT_DRIVER_DLPREOPEN_SELF SLBT_DRIVER_XFLAG(0x40000000) diff --git a/src/driver/slbt_driver_ctx.c b/src/driver/slbt_driver_ctx.c index 956c435..85c75d2 100644 --- a/src/driver/slbt_driver_ctx.c +++ b/src/driver/slbt_driver_ctx.c @@ -23,6 +23,7 @@ #include "slibtool_errinfo_impl.h" #include "slibtool_lconf_impl.h" #include "slibtool_txtline_impl.h" +#include "slibtool_stoolie_impl.h" #include "slibtool_ar_impl.h" #include "argv/argv.h" @@ -416,10 +417,15 @@ int slbt_lib_get_driver_ctx( const char * cfgmeta_ranlib; const char * cfgmeta_dlltool; - if (flags & SLBT_DRIVER_MODE_AR) + if (flags & SLBT_DRIVER_MODE_AR) { argv_optv_init(slbt_ar_options,optv); - else + + } else if (flags & SLBT_DRIVER_MODE_STOOLIE) { + argv_optv_init(slbt_stoolie_options,optv); + + } else { argv_optv_init(slbt_default_options,optv); + } if (!fdctx) fdctx = &slbt_default_fdctx; diff --git a/src/internal/slibtool_driver_impl.h b/src/internal/slibtool_driver_impl.h index 458f74f..b726f32 100644 --- a/src/internal/slibtool_driver_impl.h +++ b/src/internal/slibtool_driver_impl.h @@ -105,6 +105,9 @@ enum app_tags { /* slibtoolize (stoolie) mode */ TAG_STLE_VERSION, TAG_STLE_HELP, + TAG_STLE_COPY, + TAG_STLE_FORCE, + TAG_STLE_INSTALL, }; struct slbt_split_vector { diff --git a/src/logic/slbt_exec_stoolie.c b/src/logic/slbt_exec_stoolie.c index 6b2f883..99b1ca1 100644 --- a/src/logic/slbt_exec_stoolie.c +++ b/src/logic/slbt_exec_stoolie.c @@ -145,6 +145,18 @@ int slbt_exec_stoolie(const struct slbt_driver_ctx * dctx) case TAG_STLE_VERSION: ictx->cctx.drvflags |= SLBT_DRIVER_VERSION; break; + + case TAG_STLE_COPY: + ictx->cctx.drvflags |= SLBT_DRIVER_STOOLIE_COPY; + break; + + case TAG_STLE_FORCE: + ictx->cctx.drvflags |= SLBT_DRIVER_STOOLIE_FORCE; + break; + + case TAG_STLE_INSTALL: + ictx->cctx.drvflags |= SLBT_DRIVER_STOOLIE_INSTALL; + break; } if (entry->fval) { diff --git a/src/skin/slbt_skin_stoolie.c b/src/skin/slbt_skin_stoolie.c index c4a10b8..be417e5 100644 --- a/src/skin/slbt_skin_stoolie.c +++ b/src/skin/slbt_skin_stoolie.c @@ -9,5 +9,17 @@ const slbt_hidden struct argv_option slbt_stoolie_options[] = { {"help", 'h',TAG_STLE_HELP,ARGV_OPTARG_NONE,0,0,0, "display slibtoolize (stoolie) mode help"}, + {"copy", 'c',TAG_STLE_COPY,ARGV_OPTARG_NONE,0,0,0, + "copy build-auxiliary m4 files " + "(create symbolic links otherwise."}, + + {"force", 'f',TAG_STLE_FORCE,ARGV_OPTARG_NONE,0,0,0, + "replace existing build-auxiliary and m4 " + "files and/or symbolic links."}, + + {"install", 'i',TAG_STLE_INSTALL,ARGV_OPTARG_NONE,0,0,0, + "create symbolic links to, or otherwise copy " + "missing build-auxiliary and m4 files."}, + {0,0,0,0,0,0,0,0} };