summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/argv/argv.h23
-rw-r--r--src/internal/slibtool_driver_impl.h7
-rw-r--r--src/internal/slibtool_lconf_impl.c18
3 files changed, 43 insertions, 5 deletions
diff --git a/src/internal/argv/argv.h b/src/internal/argv/argv.h
index aa4e5f5..0b9def7 100644
--- a/src/internal/argv/argv.h
+++ b/src/internal/argv/argv.h
@@ -856,8 +856,10 @@ static void argv_show_status(
struct argv_ctx * ctx,
struct argv_meta * meta)
{
+ int i;
int argc;
char ** argv;
+ struct argv_keyval * keyv;
struct argv_entry * entry;
const struct argv_option * option;
char short_name[2] = {0};
@@ -887,6 +889,27 @@ static void argv_show_status(
else
argv_dprintf(fd,"[-%s,--%s]\n",
short_name,option->long_name);
+
+ if (entry->keyv) {
+ for (i=0,keyv=entry->keyv; keyv->keyword; i++,keyv++) {
+ switch (keyv->flags) {
+ case ARGV_KEYVAL_ASSIGN:
+ argv_dprintf(fd,"\tkeyval[%d]: <%s>=%s\n",
+ i,keyv->keyword,keyv->value);
+ break;
+
+ case ARGV_KEYVAL_OVERRIDE:
+ argv_dprintf(fd,"\tkeyval[%d]: <%s>:=%s\n",
+ i,keyv->keyword,keyv->value);
+ break;
+
+ default:
+ argv_dprintf(fd,"\tkeyval[%d]: <%s>\n",
+ i,keyv->keyword);
+ break;
+ }
+ }
+ }
} else {
argv_dprintf(fd,"<program arg> := %s\n",entry->arg);
}
diff --git a/src/internal/slibtool_driver_impl.h b/src/internal/slibtool_driver_impl.h
index 429cdc4..7b6114d 100644
--- a/src/internal/slibtool_driver_impl.h
+++ b/src/internal/slibtool_driver_impl.h
@@ -20,6 +20,11 @@
#define SLBT_OPTV_ELEMENTS 128
+#define SLBT_DRIVER_OUTPUT_MASK (SLBT_DRIVER_OUTPUT_M4_DIR \
+ | SLBT_DRIVER_OUTPUT_AUX_DIR \
+ | SLBT_DRIVER_OUTPUT_SHARED_EXT \
+ | SLBT_DRIVER_OUTPUT_STATIC_EXT)
+
extern const struct argv_option slbt_default_options[];
enum app_tags {
@@ -32,6 +37,8 @@ enum app_tags {
TAG_DUMPMACHINE,
TAG_PRINT_AUX_DIR,
TAG_PRINT_M4_DIR,
+ TAG_PRINT_SHARED_EXT,
+ TAG_PRINT_STATIC_EXT,
TAG_DEBUG,
TAG_DRY_RUN,
TAG_FEATURES,
diff --git a/src/internal/slibtool_lconf_impl.c b/src/internal/slibtool_lconf_impl.c
index ffe92b0..7f43034 100644
--- a/src/internal/slibtool_lconf_impl.c
+++ b/src/internal/slibtool_lconf_impl.c
@@ -545,6 +545,7 @@ static int slbt_lconf_open(
fdcwd = slbt_driver_fdcwd(dctx);
fdlconfdir = fdcwd;
fsilent |= (dctx->cctx->drvflags & SLBT_DRIVER_SILENT);
+ fsilent |= (dctx->cctx->drvflags & SLBT_DRIVER_OUTPUT_MASK);
if (lconf) {
mconf = 0;
@@ -629,15 +630,21 @@ static int slbt_lconf_open(
if (stparent.st_dev != stcwd.st_dev) {
trace_result(dctx,fdparent,fdparent,".",EXDEV,lconfpath);
close(fdparent);
- return SLBT_CUSTOM_ERROR(
- dctx,SLBT_ERR_LCONF_OPEN);
+
+ return (dctx->cctx->drvflags & SLBT_DRIVER_OUTPUT_MASK)
+ ? (-1)
+ : SLBT_CUSTOM_ERROR(
+ dctx,SLBT_ERR_LCONF_OPEN);
}
if (stparent.st_ino == stinode) {
trace_result(dctx,fdparent,fdparent,".",ELOOP,lconfpath);
close(fdparent);
- return SLBT_CUSTOM_ERROR(
- dctx,SLBT_ERR_LCONF_OPEN);
+
+ return (dctx->cctx->drvflags & SLBT_DRIVER_OUTPUT_MASK)
+ ? (-1)
+ : SLBT_CUSTOM_ERROR(
+ dctx,SLBT_ERR_LCONF_OPEN);
}
fdlconfdir = fdparent;
@@ -766,7 +773,8 @@ slbt_hidden int slbt_get_lconf_flags(
/* open relative libtool script */
if ((fdlconf = slbt_lconf_open(dctx,lconf,fsilent,&val)) < 0)
- return SLBT_NESTED_ERROR(dctx);
+ return (dctx->cctx->drvflags & SLBT_DRIVER_OUTPUT_MASK)
+ ? (-1) : SLBT_NESTED_ERROR(dctx);
/* cache the configuration in library friendly form) */
if (slbt_lib_get_txtfile_ctx(dctx,val,&ctx->lconfctx) < 0)