From c4a3890f7c384e13df8442aa3986be944165e5e0 Mon Sep 17 00:00:00 2001 From: midipix Date: May 01 2016 18:24:47 +0000 Subject: dry run: initial quick implementation. With the current patch, slibtool respects --dry-run by turning the various modes (compile, link, install, execute) into no-ops. For at least the compile and install mode, it should be possible to output complete information about the steps that would be performed under default operation conditions, however that is not yet implemented. --- diff --git a/src/logic/slbt_exec_compile.c b/src/logic/slbt_exec_compile.c index dcfdf29..ec19c22 100644 --- a/src/logic/slbt_exec_compile.c +++ b/src/logic/slbt_exec_compile.c @@ -38,6 +38,10 @@ int slbt_exec_compile( struct slbt_exec_ctx * actx = 0; const struct slbt_source_version * verinfo; + /* dry run */ + if (dctx->cctx->drvflags & SLBT_DRIVER_DRY_RUN) + return 0; + /* context */ if (ectx) slbt_reset_placeholders(ectx); diff --git a/src/logic/slbt_exec_execute.c b/src/logic/slbt_exec_execute.c index 04fec87..7df18b2 100644 --- a/src/logic/slbt_exec_execute.c +++ b/src/logic/slbt_exec_execute.c @@ -27,6 +27,10 @@ int slbt_exec_execute( char wrapper[PATH_MAX]; struct slbt_exec_ctx * actx = 0; + /* dry run */ + if (dctx->cctx->drvflags & SLBT_DRIVER_DRY_RUN) + return 0; + /* context */ if (ectx) slbt_disable_placeholders(ectx); diff --git a/src/logic/slbt_exec_install.c b/src/logic/slbt_exec_install.c index 66cf7f0..1546109 100644 --- a/src/logic/slbt_exec_install.c +++ b/src/logic/slbt_exec_install.c @@ -454,6 +454,10 @@ int slbt_exec_install( char dstdir[PATH_MAX]; const struct argv_option * options = slbt_install_options; + /* dry run */ + if (dctx->cctx->drvflags & SLBT_DRIVER_DRY_RUN) + return 0; + /* context */ if (ectx) actx = 0; diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c index cbd5c6f..5538d6d 100644 --- a/src/logic/slbt_exec_link.c +++ b/src/logic/slbt_exec_link.c @@ -1011,6 +1011,10 @@ int slbt_exec_link( char arname[PATH_MAX]; const struct slbt_source_version * verinfo; + /* dry run */ + if (dctx->cctx->drvflags & SLBT_DRIVER_DRY_RUN) + return 0; + /* libfoo.so.x.y.z */ if ((size_t)snprintf(soxyz,sizeof(soxyz),"%s%s%s.%d.%d.%d", dctx->cctx->settings.dsoprefix,