From 0c24891cf3ee3795761f5c71f589792b50393e12 Mon Sep 17 00:00:00 2001 From: midipix Date: Sat, 23 Apr 2016 10:47:31 -0400 Subject: utility: support hard-coded static-only and shared-only flavors via symlinks. --- src/slibtool.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/slibtool.c') diff --git a/src/slibtool.c b/src/slibtool.c index 229686d..328fc24 100644 --- a/src/slibtool.c +++ b/src/slibtool.c @@ -6,6 +6,7 @@ #include #include +#include #include #include "slibtool_version.h" #include "slibtool_driver_impl.h" @@ -50,9 +51,12 @@ static int slibtool_exit(struct slbt_driver_ctx * dctx, int nerrors) int slibtool_main(int argc, char ** argv, char ** envp) { int ret; + uint64_t flags; struct slbt_driver_ctx * dctx; struct slbt_unit_ctx * uctx; const char ** unit; + char * program; + char * dash; char * sargv[5]; /* --version only? */ @@ -69,7 +73,28 @@ int slibtool_main(int argc, char ** argv, char ** envp) : slibtool_exit(dctx,0); } - if ((ret = slbt_get_driver_ctx(argv,envp,SLBT_DRIVER_FLAGS,&dctx))) + /* program */ + if ((program = strrchr(argv[0],'/'))) + program++; + else + program = argv[0]; + + /* dash */ + if ((dash = strrchr(program,'-'))) + dash++; + + /* flags */ + if (dash == 0) + flags = SLBT_DRIVER_FLAGS; + + else if (!(strcmp(dash,"shared"))) + flags = SLBT_DRIVER_FLAGS | SLBT_DRIVER_DISABLE_STATIC; + + else if (!(strcmp(dash,"static"))) + flags = SLBT_DRIVER_FLAGS | SLBT_DRIVER_DISABLE_SHARED; + + /* driver context */ + if ((ret = slbt_get_driver_ctx(argv,envp,flags,&dctx))) return (ret == SLBT_USAGE) ? !--argc : 2; if (dctx->cctx->drvflags & SLBT_DRIVER_VERSION) -- cgit v1.2.3