Commits

Anonymous committed 5636a28

CWS-TOOLING: integrate CWS buildverbosity
2009-10-13 15:51:48 +0200 fs r276867 : allow building with 'nodep'==''
2009-10-11 22:39:56 +0200 fs r276820 : silence a compiler warning in a file only used when VERBOSE!=""
2009-10-09 14:37:43 +0200 fs r276807 : let not override the non-presence of $VERBOSE the given command line arguments
2009-10-09 14:36:25 +0200 fs r276806 : also deliver spirit/home/classic/debug/impl
2009-10-08 13:38:07 +0200 fs r276789 : not that many line feeds in --show mode
2009-10-08 13:13:01 +0200 fs r276788 : minor adjustments requested by hjs:
- replaced space/tab mixes at beginning of lines with mere tab
- made "nothing to update" message for the ZIPALLTARGET target more prominent
- removed useless "echo > /dev/nul" statements
2009-10-07 13:32:12 +0200 fs r276753 : #i105585#
2009-10-07 11:31:59 +0200 fs r276742 : #i10000# missing dependency between stoc/security and stoc/util
2009-10-06 22:59:59 +0200 fs r276729 : CWS-TOOLING: rebase CWS buildverbosity to trunk@276699 (milestone: DEV300:m61)
2009-09-29 12:04:58 +0200 fs r276518 : #i10000#
2009-09-29 12:04:25 +0200 fs r276517 : oops
2009-09-29 12:01:07 +0200 fs r276516 : #i84497# removed some more (non-diagnostic) 'echo ------' directives
2009-09-29 11:59:29 +0200 fs r276515 : #i84497# removed some more (non-diagnostic) 'echo ------' directives
2009-09-29 11:52:32 +0200 fs r276514 : #i84497# removed the various 'echo ------------' directives from verbose mode, as per hjs' request
2009-09-29 11:44:16 +0200 fs r276513 : do not duplicate IDLC call commands with different verbosity switches
2009-09-28 21:43:50 +0200 thb r276502 : #i84497# fixed potential recursive macro def + extra ls
* solenv/inc/settings.mk: now setting via VERBOSE!:=, removes warning
and my spurious "recursive macro definition" error
* solenv/inc/tg_app.mk: one extra ls silenced for app target (and
quiet mode, that goes without saying)
2009-09-23 08:57:01 +0200 fs r276366 : use ULFEX_VERBOSITY instead of duplicating the ULFEX call
2009-09-21 11:42:26 +0200 fs r276320 : ignore output paths
2009-09-21 11:04:27 +0200 fs r276318 : silence another compiler warning, which only hits us when actually using this (debug) file, which is the case only when slideshow is compiled with a env variable VERBOSE, thus came up in CWS buildverbosity
2009-09-21 10:30:14 +0200 fs r276313 : make some output depend on VERBOSE==TRUE, not COMMAND_ECHO=""
While both are equivalent at the moment, COMMAND_ECHO finally is an implementation
default of the VERBOSE flag only, so better rely on VERBOSE as the primary verbosity flag
2009-09-21 09:56:57 +0200 fs r276311 : forgot to re-generate from tg_zip before committing
2009-09-21 09:52:11 +0200 fs r276310 : #i84497# even less verbosity
2009-09-17 11:02:47 +0200 fs r276232 : #i84497# verbose implies VERBOSE nowadays, and VERBOSE==FALSE should not lead to -DVERBOSE
2009-09-15 22:59:37 +0200 fs r276189 : #i105022# copy fix for this P1 into this CWS
2009-09-15 11:56:35 +0200 fs r276165 : CWS-TOOLING: rebase CWS buildverbosity to trunk@276043 (milestone: DEV300:m58)
2009-09-14 17:45:10 +0200 fs r276137 : #i84497# don't duplicate zip lines w/ and w/o -q switch, use a variable instead (maintenance)
2009-09-14 15:01:33 +0200 fs r276124 : #i10000#
2009-09-11 23:58:46 +0200 thb r276083 : #i84497#: More quiet-build fine tuning
- silenced rsc for real (properly filtering options for
cpp, and a pretty brutal amputation of the tool blurp,
which would have needed cmd opt parser duplication)
- silenced deliver.pl
- silenced checkdll.sh
- silenced zip via -q (in quiet mode)
- silenced various idl, resource, transex whatever tool,
passing appropriate options down to them '-QQ' sometimes
- silenced dmake, pointless blurb that something does *not*
need update removed
- silenced the old starview idl compiler, to not output
tool's name & progress chars in quiet mode
2009-09-11 21:13:59 +0200 thb r276081 : #i84497#: More bits on the quiet mode of the build.
The bulk of the changes is disabling those annoying
"echo ------------------" lines for the quiet build,
which has the stretch goal of outputting *exactly*
one line per file compiled/linked/processed.
Apart from that, silenced a few especialy annoying
module-specific makefiles (basically adding
$(COMMAND_ECHO) in front of a gazillion rules).
Additionally, slightly tweaked what idlc regards
verbose, normal, and quiet mode; this was to have it
echo exactly one line per idl file processed (the
fact that quiet mode did not echo *anything* for idl
files was a bit too much for my taste)
2009-09-04 09:14:35 +0200 fs r275777 : don't emit the link parameters if VERBOSE!=TRUE
2009-09-02 10:31:15 +0200 fs r275700 : #i10000#
2009-09-02 08:44:14 +0200 fs r275697 : update svn:ignore to ignore the output paths
2009-09-02 08:40:54 +0200 fs r275695 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given
2009-09-02 08:40:28 +0200 fs r275694 : GRAPHITE is missing in the BUILD_TYPE
2009-09-02 08:40:05 +0200 fs r275693 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given
2009-09-02 08:39:25 +0200 fs r275692 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given
2009-09-02 08:39:02 +0200 fs r275691 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given
2009-09-02 08:38:09 +0200 fs r275690 : #i84497# less verbose output during build
2009-09-02 08:37:06 +0200 fs r275689 : #i84497# don't emit that much noise, unless a '-verbose' switch is given

  • Participants
  • Parent commits d6ed53b

Comments (0)

Files changed (77)

boost/boost_1_39_0.patch

          }
  
          template <typename ScannerT>
+--- misc/boost_1_39_0/boost/spirit/home/classic/debug/impl/parser_names.ipp	2008-06-22 17:05:38.000000000 +0200
++++ misc/build/boost_1_39_0/boost/spirit/home/classic/debug/impl/parser_names.ipp	2009-10-11 22:34:54.867381817 +0200
+@@ -395,13 +395,13 @@
+             }
+ 
+             bool register_node(void const *r, char const *name_to_register,
+-                bool trace_node)
++                bool _trace_node)
+             {
+                 if (infos.find(r) != infos.end())
+                     return false;
+ 
+                 return infos.insert(rule_infos::value_type(r,
+-                    rule_info(std::string(name_to_register), trace_node))
++                    rule_info(std::string(name_to_register), _trace_node))
+                 ).second;
+             }
+ 
 mkdir: %_DEST%\inc%_EXT%\boost\spirit\home\classic\actor
 mkdir: %_DEST%\inc%_EXT%\boost\spirit\home\classic\actor\impl
 mkdir: %_DEST%\inc%_EXT%\boost\spirit\home\classic\debug
+mkdir: %_DEST%\inc%_EXT%\boost\spirit\home\classic\debug\impl
 mkdir: %_DEST%\inc%_EXT%\boost\spirit\home\classic\meta
 mkdir: %_DEST%\inc%_EXT%\boost\spirit\home\classic\meta\impl
 mkdir: %_DEST%\inc%_EXT%\boost\spirit\home\classic\core
 ..\%__SRC%\inc\boost\spirit\home\classic\actor\* %_DEST%\inc%_EXT%\boost\spirit\home\classic\actor
 ..\%__SRC%\inc\boost\spirit\home\classic\actor\impl\* %_DEST%\inc%_EXT%\boost\spirit\home\classic\actor\impl
 ..\%__SRC%\inc\boost\spirit\home\classic\debug\* %_DEST%\inc%_EXT%\boost\spirit\home\classic\debug
+..\%__SRC%\inc\boost\spirit\home\classic\debug\impl\* %_DEST%\inc%_EXT%\boost\spirit\home\classic\debug\impl
 ..\%__SRC%\inc\boost\spirit\home\classic\meta\* %_DEST%\inc%_EXT%\boost\spirit\home\classic\meta
 ..\%__SRC%\inc\boost\spirit\home\classic\meta\impl\* %_DEST%\inc%_EXT%\boost\spirit\home\classic\meta\impl
 ..\%__SRC%\inc\boost\spirit\home\classic\core\* %_DEST%\inc%_EXT%\boost\spirit\home\classic\core
 
    for( lp = Targets->ce_prq; lp != NIL(LINK); lp = lp->cl_next ) {
       CELLPTR tgt = lp->cl_prq;
-      if( !(tgt->ce_attr & A_UPDATED) )
-	 printf( "`%s' is up to date\n", tgt->CE_NAME );
+      if( !(tgt->ce_attr & A_UPDATED) 
+          && (Verbose & V_MAKE) )
+          printf( "`%s' is up to date\n", tgt->CE_NAME );
    }
 
    DB_RETURN( 0 );

dmake/tests/misc-13

 
 EOT
 
-output=`eval ${DMAKEPROG} -r -f $file1`
+output=`eval ${DMAKEPROG} -vm -r -f $file1`
 result=$?
 
 if echo "$output" | grep -v ".target' is up to date"  > /dev/null 2>&1 ; then

dmake/tests/misc-15

 
 EOT
 
-output=`eval ${DMAKEPROG} -r -f $file1`
+output=`eval ${DMAKEPROG} -vm -r -f $file1`
 result=$?
 
 if echo "$output" | grep "target.abc' is up to date"  > /dev/null 2>&1 ; then

dmake/tests/targets-28

 
 # This tests that aa.x is not build as the dependency chain is intact with
 # the virtual target aa.y having the same time stamp as aa.z.
-output3=`eval ${DMAKEPROG} -rf $file1 2>&1`
+output3=`eval ${DMAKEPROG} -vm -rf $file1 2>&1`
 result3=$?
 
-if test $result3 = 0 -a "$output3" = "\`aa.x' is up to date" ; then
+if test $result3 = 0 && echo "$output3" | grep "aa.x' is up to date"  > /dev/null 2>&1 ; then
   echo "Subtest 3: OK"
   result3=0
 else

idl/inc/command.hxx

     String      aCSVFile;
     String      aExportFile;
     String      aDocuFile;
+    UINT32      nVerbosity;
     UINT32      nFlags;
 
                 SvCommand( int argc, char ** argv );

idl/inc/database.hxx

 /*************************************************************************
 *************************************************************************/
 
+class SvCommand;
+
 #ifdef IDL_COMPILER
 /******************** class SvIdlError ***********************************/
 class SvIdlError
 	BOOL  						bExport;
     String                      aExportFile;
 	sal_uInt32					nUniqueId;
+    sal_uInt32                  nVerbosity;
     String                      aDataBaseFile;
     SvFileStream *              pStm;
     BOOL                        bIsModified;
 								}
 #endif
 public:
-                SvIdlDataBase();
+                explicit SvIdlDataBase( const SvCommand& rCmd );
                 ~SvIdlDataBase();
     static BOOL IsBinaryFormat( SvStream & rInStm );
 
 class SvIdlWorkingBase : public SvIdlDataBase
 {
 public:
-                SvIdlWorkingBase();
+                explicit SvIdlWorkingBase( const SvCommand& rCmd );
 
     BOOL        ReadSvIdl( SvTokenStream &, BOOL bImported, const String & rPath );
     BOOL        WriteSvIdl( SvStream & );

idl/source/prj/command.cxx

 |*	  Beschreibung
 *************************************************************************/
 SvCommand::SvCommand( int argc, char ** argv )
-	: nFlags( 0 )
+	: nVerbosity(1), nFlags( 0 )
 {
 	StringList aList;
 
 			{ // Hilfe
                 printf( "%s", CommandLineSyntax );
 			}
+            else if( aParam.EqualsIgnoreCaseAscii( "quiet" ) )
+            {
+                nVerbosity = 0;
+            }
+            else if( aParam.EqualsIgnoreCaseAscii( "verbose" ) )
+            {
+                nVerbosity = 2;
+            }
             else if( aParam.EqualsIgnoreCaseAscii( "syntax" ) )
 			{ // Hilfe
 				int j = 0;

idl/source/prj/database.cxx

 }
 */
 
-SvIdlDataBase::SvIdlDataBase()
+SvIdlDataBase::SvIdlDataBase( const SvCommand& rCmd )
 	: bExport( FALSE )
 	, nUniqueId( 0 )
+    , nVerbosity( rCmd.nVerbosity )
     , bIsModified( FALSE )
     , aPersStream( *IDLAPP->pClassMgr, NULL )
     , pIdTable( NULL )
 void SvIdlDataBase::Write( const ByteString & rText )
 {
 #ifndef W31
+    if( nVerbosity != 0 )
         fprintf( stdout, "%s", rText.GetBuffer() );
 #endif
 }
 |*
 |*    Beschreibung
 *************************************************************************/
-SvIdlWorkingBase::SvIdlWorkingBase()
+SvIdlWorkingBase::SvIdlWorkingBase(const SvCommand& rCmd) : SvIdlDataBase(rCmd)
 {
 }
 

idl/source/prj/svidl.cxx

 {
 #endif
 
-	printf( "StarView Interface Definition Language (IDL) Compiler 3.0\n" );
-
 /*
     pStr = ::ResponseFile( &aCmdLine, argv, argc );
 	if( pStr )
     String aTmpDocuFile;
 
 	SvCommand aCommand( argc, argv );
+
+    if( aCommand.nVerbosity != 0 )
+        printf( "StarView Interface Definition Language (IDL) Compiler 3.0\n" );
+
 	Init();
-	SvIdlWorkingBase * pDataBase = new SvIdlWorkingBase();
+	SvIdlWorkingBase * pDataBase = new SvIdlWorkingBase(aCommand);
 
 	int nExit = 0;
 	if( aCommand.aExportFile.Len() )

idlc/inc/idlc/options.hxx

 
 	const StringVector& getInputFiles() const { return m_inputFiles; }
     bool readStdin() const { return m_stdin; }
+    bool verbose() const { return m_verbose; }
+    bool quiet() const { return m_quiet; }
 
 protected:
 	::rtl::OString 	m_program;
 	StringVector	m_inputFiles;
     bool            m_stdin;
+    bool            m_verbose;
+    bool            m_quiet;
 	OptionMap		m_options;
 };
 	

idlc/source/idlcmain.cxx

 
     sal_Int32 nErrors = 0;
     if (options.readStdin()) {
-        fprintf(
-            stdout, "%s: compile stdin...\n",
-            options.getProgramName().getStr());
+        if ( !options.quiet() )
+            fprintf(
+                stdout, "%s: Compiling stdin\n",
+                options.getProgramName().getStr());
         nErrors = compileFile(0);
-        if (idlc()->getWarningCount() > 0) {
+        if ( ( idlc()->getWarningCount() > 0 ) && !options.quiet() ) {
             fprintf(
                 stdout, "%s: detected %lu warnings compiling stdin\n",
                 options.getProgramName().getStr(),
         idlc()->reset();
     }
     StringVector const & files = options.getInputFiles();
+    if ( options.verbose() )
+    {
+        fprintf( stdout, "%s: compiling %i source files ... \n",
+            options.getProgramName().getStr(), (int)files.size() );
+        fflush( stdout );
+    }
     for (StringVector::const_iterator i(files.begin());
          i != files.end() && nErrors == 0; ++i)
     {
         OString sysFileName( convertToAbsoluteSystemPath(*i) );
 
-        fprintf(stdout, "%s: compile '%s' ... \n",
-            options.getProgramName().getStr(), (*i).getStr());
+        if ( !options.quiet() )
+            fprintf(stdout, "Compiling: %s\n",
+                (*i).getStr());
         nErrors = compileFile(&sysFileName);
 
-        if ( idlc()->getWarningCount() )
+        if ( idlc()->getWarningCount() && !options.quiet() )
             fprintf(stdout, "%s: detected %lu warnings compiling file '%s'\n",
                     options.getProgramName().getStr(),
                     sal::static_int_cast< unsigned long >(
 
     if ( nErrors > 0 )
     {
-        fprintf(stdout, "%s: detected %ld errors%s",
+        fprintf(stderr, "%s: detected %ld errors%s",
             options.getProgramName().getStr(),
             sal::static_int_cast< long >(nErrors), 
             options.prepareVersion().getStr());
     } else
     {
-        fprintf(stdout, "%s: returned successful%s",
-            options.getProgramName().getStr(),
-            options.prepareVersion().getStr());
+        if ( options.verbose() )
+            fprintf(stdout, "%s: returned successful%s",
+                options.getProgramName().getStr(),
+                options.prepareVersion().getStr());
     }
     return nErrors;
 }

idlc/source/options.cxx

 
 using namespace rtl;
 
-Options::Options(): m_stdin(false)
+Options::Options(): m_stdin(false), m_verbose(false), m_quiet(false)
 {
 }	
 
                 } else
                     throw IllegalArgument(OString(av[j]) + ", please check your input");
                 break;
+            case 'v':
+                if ( 0 == strcmp( &av[j][1], "verbose" ) )
+                {
+                    m_verbose = true;
+                }
+                else
+                    throw IllegalArgument(OString(av[j]) + ", please check your input");
+                break;
+            case 'q':
+                if ( 0 == strcmp( &av[j][1], "quiet" ) )
+                {
+                    m_quiet = true;
+                }
+                else
+                    throw IllegalArgument(OString(av[j]) + ", please check your input");
+                break;
             case 'w':
                 if (av[j][2] == 'e' && av[j][3] == '\0') {
                     if (m_options.count("-we") == 0)

offapi/util/makefile.mk

        $(UNOTYPE_STATISTICS)
 
 $(UCR)$/types.db : $(UCR)$/offapi.db $(SOLARBINDIR)$/udkapi.rdb
-    -$(RM) $(REGISTRYCHECKFLAG)
-    $(GNUCOPY) -f $(UCR)$/offapi.db $@
-    $(REGMERGE) $@ / $(SOLARBINDIR)$/udkapi.rdb
+    @-$(RM) $(REGISTRYCHECKFLAG)
+    @$(GNUCOPY) -f $(UCR)$/offapi.db $@
+    $(COMMAND_ECHO)$(REGMERGE) $@ / $(SOLARBINDIR)$/udkapi.rdb
 
 $(OUT)$/ucrdoc$/types_doc.db : $(OUT)$/ucrdoc$/offapi_doc.db $(SOLARBINDIR)$/udkapi_doc.rdb
-    -$(RM) $(REGISTRYCHECKFLAG)
-    $(GNUCOPY) -f $(OUT)$/ucrdoc$/offapi_doc.db $@
-    $(REGMERGE) $@ / $(SOLARBINDIR)$/udkapi_doc.rdb
+    @-$(RM) $(REGISTRYCHECKFLAG)
+    @$(GNUCOPY) -f $(OUT)$/ucrdoc$/offapi_doc.db $@
+    $(COMMAND_ECHO)$(REGMERGE) $@ / $(SOLARBINDIR)$/udkapi_doc.rdb
 
 #JSC: The type library has changed, all temporary not checked types are removed
 #     and will be check from now on.

offapi/util/target.pmk

 #*************************************************************************
 
 $(OUT)$/misc$/$(TARGET).idls: makefile.mk
-	-$(RM) $@
-	$(TYPE) $(mktmp $(foreach,i,$(IDLFILES) $(PACKAGE)$/$i)) >>$@
+	$(COMMAND_ECHO)-$(RM) $@
+	$(COMMAND_ECHO)$(TYPE) $(mktmp $(foreach,i,$(IDLFILES) $(PACKAGE)$/$i)) >>$@
 
 ALLTAR: $(OUT)$/misc$/$(TARGET).idls
 

rsc/inc/rscerror.h

 class RscId;
 class RscTop;
 
+enum RscVerbosity
+{
+    RscVerbositySilent = 0,
+    RscVerbosityNormal = 1,
+    RscVerbosityVerbose = 2
+};
+
 class RscError
 {
 	FILE *	fListing;
+    RscVerbosity m_verbosity;
 
 	void WriteError( const ERRTYPE& rError, const char * pMessage );
 	void StdLstOut( const char * pStr );
 					  const RscId & aId );
 public:
 	sal_uInt32	nErrors;// Anzahl der Fehler
-					RscError(){
+					RscError( RscVerbosity _verbosity ) {
 						fListing = NULL;
 						nErrors = 0;
+                        m_verbosity = _verbosity;
 					};
 	void			SetListFile( FILE * fList ){
 						fListing = fList;
 	FILE *			GetListFile(){
 						return fListing;
 					};
-	virtual void	StdOut( const char * );
+    RscVerbosity    GetVerbosity() const { return m_verbosity; }
+	virtual void	StdOut( const char *, const RscVerbosity _verbosityLevel = RscVerbosityNormal );
 	virtual void	StdErr( const char * );
 	virtual void	LstOut( const char * );
 	virtual void	Error( const ERRTYPE& rError, RscTop* pClass, const RscId &aId,

rsc/source/parser/erscerr.cxx

 |*	  Letzte Aenderung	MM 06.05.91
 |*
 *************************************************************************/
-void RscError::StdOut( const char * pStr )
+void RscError::StdOut( const char * pStr, const RscVerbosity _verbosityLevel )
 {
-#ifndef WIN
-	if( pStr ){
-		printf( "%s", pStr );
-		fflush( stdout );
-	}
-#endif
+    if ( m_verbosity >= _verbosityLevel )
+    {
+	    if( pStr ){
+		    printf( "%s", pStr );
+		    fflush( stdout );
+	    }
+    }
 }
 
 /*************************************************************************

rsc/source/parser/rscyacc.cxx

 
 			ObjNode * pNode = new ObjNode( aName1, S.Top().pData,
 										   pFI->GetFileIndex() );
-			pTC->pEH->StdOut( "." );
+			pTC->pEH->StdOut( ".", RscVerbosityVerbose );
 
 			if( !aName1.IsId() )
 				pTC->pEH->Error( ERR_IDEXPECTED, pHeader->pClass, aName1 );

rsc/source/prj/gui.cxx

 		delete pRscCompiler;
 }
 
+RscVerbosity lcl_determineVerbosity( int argc, char ** argv )
+{
+    for ( int i = 0; i < argc; ++i )
+    {
+        if ( argv[i] == NULL )
+            continue;
+        if ( rsc_stricmp( argv[i], "-verbose" ) == 0 )
+            return RscVerbosityVerbose;
+        if ( rsc_stricmp( argv[i], "-quiet" ) == 0 )
+            return RscVerbositySilent;
+    }
+    return RscVerbosityNormal;
+}
+
 #if defined( UNX ) || ( defined( OS2 ) && ( defined( CSET ) || defined ( GCC ))) || defined (WTC) || defined(ICC) || defined(__MINGW32__)
 int main ( int argc, char ** argv) {
 #else
 	ERRTYPE 	aError;
 
 	InitRscCompiler();
-	RscError*	pErrHdl    = new RscError();
+	RscError*	pErrHdl    = new RscError( lcl_determineVerbosity( argc, argv ) );
 #ifdef MTW
 	RscCmdLine* pCmdLine   = new RscCmdLine( argc, (char **)argv, pErrHdl );
 #else

rsc/source/prj/start.cxx

 
 #endif // UNX
 #include <rsctools.hxx>
+#include <rscerror.h>
 #include <tools/fsys.hxx>
 
 /*************** C O D E ************************************************/
 
 	if( !fRspFile )
 		aNewCmdL.Append( rsc_strdup( rPrePro.GetBuffer() ) );
-	for( i = 1; i < int(pCmdLine->GetCount() -1); i++ ){
-		if( !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ), "-u", 2 )
-		  || !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ), "-i", 2 )
-		  || !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ), "-d", 2 ) )
+
+    bool bVerbose = false;
+	for( i = 1; i < int(pCmdLine->GetCount() -1); i++ )
+    {
+        if ( 0 == rsc_stricmp( (char *)pCmdLine->GetEntry( i ), "-verbose" ) )
+        {
+            bVerbose = true;
+            continue;
+        }
+		if  (   !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ), "-u", 2 )
+		    ||  !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ), "-i", 2 )
+		    ||  !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ), "-d", 2 )
+            )
 		{
 			aNewCmdL.Append( rsc_strdup( (char *)pCmdLine->GetEntry( i ) ) );
 		}
-	};
+	}
+
 	aNewCmdL.Append( rsc_strdup( rInput.GetBuffer() ) );
 	aNewCmdL.Append( rsc_strdup( rOutput.GetBuffer() ) );
 	aNewCmdL.Append( (void *)0 );
 
-	printf( "Preprocessor commandline: " );
-	for( i = 0; i < (int)(pCmdL->GetCount() -1); i++ )
-	{
-		printf( " " );
-		printf( "%s", (const char *)pCmdL->GetEntry( i ) );
-	}
-	printf( "\n" );
+    if ( bVerbose )
+    {
+	    printf( "Preprocessor commandline: " );
+	    for( i = 0; i < (int)(pCmdL->GetCount() -1); i++ )
+	    {
+		    printf( " " );
+		    printf( "%s", (const char *)pCmdL->GetEntry( i ) );
+	    }
+	    printf( "\n" );
+    }
 
 	if( fRspFile )
 	{
 		}
 		fclose( fRspFile );
 
-		printf( "Preprocessor startline: " );
-		for( i = 0; i < (int)(pCmdL->GetCount() -1); i++ )
-		{
-			printf( " " );
-			printf( "%s", (const char *)pCmdL->GetEntry( i ) );
-		}
-		printf( "\n" );
+        if ( bVerbose )
+        {
+		    printf( "Preprocessor startline: " );
+		    for( i = 0; i < (int)(pCmdL->GetCount() -1); i++ )
+		    {
+			    printf( " " );
+			    printf( "%s", (const char *)pCmdL->GetEntry( i ) );
+		    }
+		    printf( "\n" );
+        }
 	}
 
 #if ((defined OS2 || defined WNT) && (defined TCPP || defined tcpp)) || defined UNX || defined OS2
 					  ByteString aSrsName,
 					  RscPtrPtr * pCmdLine )
 {
-	RscPtrPtr		aNewCmdL;		// Kommandozeile
 	int 			i, nExit;
 	ByteString* 	pString;
 	ByteString		aRspFileName;	// Response-Datei
 	aRspFileName = ::GetTmpFileName();
 	fRspFile = fopen( aRspFileName.GetBuffer(), "w" );
 
-	printf( "Rsc2 commandline: " );
-	aNewCmdL.Append( rsc_strdup( aRsc2Name.GetBuffer() ) );
-	printf( "%s", (const char *)aNewCmdL.GetEntry( aNewCmdL.GetCount() -1 ) );
-	printf( " " );
-	ByteString aTmpStr( '@' );
-	aTmpStr += aRspFileName;
-	aNewCmdL.Append( rsc_strdup( aTmpStr.GetBuffer() ) );
-	printf( "%s", (const char *)aNewCmdL.GetEntry( aNewCmdL.GetCount() -1 ) );
-	aNewCmdL.Append( (void *)0 );
-	printf( "\n" );
-
+    RscVerbosity eVerbosity = RscVerbosityNormal;
 	if( fRspFile )
 	{
 		for( i = 1; i < (int)(pCmdLine->GetCount() -1); i++ )
 		{
+			if ( !rsc_stricmp( (char *)pCmdLine->GetEntry( i ), "-verbose" ) )
+            {
+                eVerbosity = RscVerbosityVerbose;
+                continue;
+            }
+			if ( !rsc_stricmp( (char *)pCmdLine->GetEntry( i ), "-quiet" ) )
+            {
+                eVerbosity = RscVerbositySilent;
+                continue;
+            }
 			if( !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ),  "-fp=", 4 )
 			  || !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ), "-fo=", 4 )
 			  || !rsc_strnicmp( (char *)pCmdLine->GetEntry( i ), "-pp=", 4 )
 		fclose( fRspFile );
 	};
 
+	RscPtrPtr		aNewCmdL;		// Kommandozeile
+	aNewCmdL.Append( rsc_strdup( aRsc2Name.GetBuffer() ) );
+	ByteString aTmpStr( '@' );
+	aTmpStr += aRspFileName;
+	aNewCmdL.Append( rsc_strdup( aTmpStr.GetBuffer() ) );
+	aNewCmdL.Append( (void *)0 );
+
+    if ( eVerbosity >= RscVerbosityVerbose )
+    {
+	    printf( "Rsc2 commandline: " );
+	    printf( "%s", (const char *)aNewCmdL.GetEntry( 0 ) );
+	    printf( " " );
+	    printf( "%s", (const char *)aNewCmdL.GetEntry( 1 ) );
+	    printf( "\n" );
+    }
+
 #if ((defined OS2 || defined WNT) && (defined TCPP || defined tcpp)) || defined UNX || defined OS2
 	nExit = spawnvp( P_WAIT, aRsc2Name.GetBuffer(), (char* const*)aNewCmdL.GetBlock() );
 #elif defined CSET
 	aRsc2Name += aDelim;
 	aRsc2Name += ByteString("rsc2");
 
-	printf( "VCL Resource Compiler 3.0\n" );
-
 	pStr = ::ResponseFile( &aCmdLine, argv, argc );
 	if( pStr )
 	{

rsc/source/rsc/rsc.cxx

 		}
 	};
 
-	pTC->pEH->StdOut( "Files: " );
-	pFName = pTC->aFileTab.First();
-	while( pFName )
-	{
-		pTC->pEH->StdOut( pFName->aFileName.GetBuffer() );
-		pTC->pEH->StdOut( " " );
-		pFName = pTC->aFileTab.Next();
-	};
-	pTC->pEH->StdOut( "\n" );
+    if ( pTC->pEH->GetVerbosity() >= RscVerbosityVerbose )
+    {
+	    pTC->pEH->StdOut( "Files: " );
+	    pFName = pTC->aFileTab.First();
+	    while( pFName )
+	    {
+		    pTC->pEH->StdOut( pFName->aFileName.GetBuffer() );
+		    pTC->pEH->StdOut( " " );
+		    pFName = pTC->aFileTab.Next();
+	    };
+	    pTC->pEH->StdOut( "\n" );
+    }
 
 	if( aError.IsOk() )
 		aError = Link();
 {
 	if( pCL->aOutputSrs.Len() && (pCL->nCommands & NOLINK_FLAG) )
 	{
-		pTC->pEH->StdOut( "Writing file " );
-		pTC->pEH->StdOut( pCL->aOutputSrs.GetBuffer() );
-		pTC->pEH->StdOut( ".\n" );
+		pTC->pEH->StdOut( "Writing file ", RscVerbosityVerbose );
+		pTC->pEH->StdOut( pCL->aOutputSrs.GetBuffer(), RscVerbosityVerbose );
+		pTC->pEH->StdOut( ".\n", RscVerbosityVerbose );
 
 		// kopiere von TMP auf richtigen Namen
 		unlink( pCL->aOutputSrs.GetBuffer() );	 // Zieldatei loeschen
 
 	if ( aTmpOutputHxx.Len() )
 	{
-		pTC->pEH->StdOut( "Writing file " );
-		pTC->pEH->StdOut( pCL->aOutputHxx.GetBuffer() );
-		pTC->pEH->StdOut( ".\n" );
+		pTC->pEH->StdOut( "Writing file ", RscVerbosityVerbose );
+		pTC->pEH->StdOut( pCL->aOutputHxx.GetBuffer(), RscVerbosityVerbose );
+		pTC->pEH->StdOut( ".\n", RscVerbosityVerbose );
 
 		// kopiere von TMP auf richtigen Namen
 		unlink( pCL->aOutputHxx.GetBuffer() );	 // Zieldatei loeschen
 
 	if( aTmpOutputCxx.Len() )
 	{
-		pTC->pEH->StdOut( "Writing file " );
-		pTC->pEH->StdOut( pCL->aOutputCxx.GetBuffer() );
-		pTC->pEH->StdOut( ".\n" );
+		pTC->pEH->StdOut( "Writing file ", RscVerbosityVerbose );
+		pTC->pEH->StdOut( pCL->aOutputCxx.GetBuffer(), RscVerbosityVerbose );
+		pTC->pEH->StdOut( ".\n", RscVerbosityVerbose );
 
 		// kopiere von TMP auf richtigen Namen
 		unlink( pCL->aOutputCxx.GetBuffer() );	 // Zieldatei loeschen
 
 	if( aTmpOutputRcCtor.Len() )
 	{
-		pTC->pEH->StdOut( "Writing file " );
-		pTC->pEH->StdOut( pCL->aOutputRcCtor.GetBuffer() );
-		pTC->pEH->StdOut( ".\n" );
+		pTC->pEH->StdOut( "Writing file ", RscVerbosityVerbose );
+		pTC->pEH->StdOut( pCL->aOutputRcCtor.GetBuffer(), RscVerbosityVerbose );
+		pTC->pEH->StdOut( ".\n", RscVerbosityVerbose );
 
 		// kopiere von TMP auf richtigen Namen
 		unlink( pCL->aOutputRcCtor.GetBuffer() );	// Zieldatei loeschen
 			{
 				RscFileInst aFileInst( pTC, lFileKey, lFileKey, finput );
 				
-				pTC->pEH->StdOut( "reading file " );
-				pTC->pEH->StdOut( aParseFile.GetBuffer() );
-				pTC->pEH->StdOut( " " );
+				pTC->pEH->StdOut( "reading file ", RscVerbosityVerbose );
+				pTC->pEH->StdOut( aParseFile.GetBuffer(), RscVerbosityVerbose );
+				pTC->pEH->StdOut( " ", RscVerbosityVerbose );
 				
 				aError = ::parser( &aFileInst );
 				if( aError.IsError() )
 					pTC->Delete( lFileKey );//Resourceobjekte loeschen
-				pTC->pEH->StdOut( "\n" );
+				pTC->pEH->StdOut( "\n", RscVerbosityVerbose );
 				fclose( finput );
 			};
 			

scp2/macros/makefile.mk

 	@echo ------------------------------
 	@echo Making: $@  
 	@@-$(RENAME) $@ $@.tmp
-	$(PERL) macro.pl -o $@.tmp && $(RENAME:s/+//) $@.tmp $@
+	$(COMMAND_ECHO)$(PERL) macro.pl $(VERBOSITY) -o $@.tmp && $(RENAME:s/+//) $@.tmp $@

scp2/source/templates/makefile.mk

 .ENDIF			# "$(LAST_COMPLETELANGISO_VAR)"!="$(COMPLETELANGISO_VAR)"
 $(INCCOM)$/alllangmodules%.inc $(PHONYTEMPL) : module_langpack%.sct
 	@@-$(RENAME) $@ $@.tmp
-	$(PERL) -w modules.pl -i $< -o $@.tmp && $(RENAME:s/+//) $@.tmp $@
+	$(COMMAND_ECHO)$(PERL) -w modules.pl -i $< -o $@.tmp && $(RENAME:s/+//) $@.tmp $@
 	@echo LAST_COMPLETELANGISO_VAR=$(COMPLETELANGISO_VAR) > $(MISC)$/$(TARGET)_lang_track.mk

scp2/source/templates/modules.pl

 my @infile = ();
 my $globalcounter = 0;
 my $globallinecounter = 0;
+my $verbose = 0;
 
 if ( !defined $completelangiso_var) {
 	print STDERR "ERROR: No language defined!\n";
 
 sub check_counter
 {
-	print STDERR "Wrote modules for $globalcounter languages ($globallinecounter lines)!\n";
+	print STDERR "Wrote modules for $globalcounter languages ($globallinecounter lines)!\n" if $verbose;
 	if ( $globalcounter == 0 )
 	{
 		print STDERR "ERROR: No languages found!\n";
 sub startup_check
 {
 	my $i;
+
+    if ( $#ARGV >= 0 )
+    {
+        if ( $ARGV[0] eq "-verbose" )
+        {
+            $verbose = 1;
+            shift @ARGV;
+        }
+        elsif ( $ARGV[0] eq "-quiet" )
+        {
+            # no special quiet flag/mode
+            shift @ARGV;
+        }
+    }
+
     for ( $i=0; $i <= $#ARGV; $i++) {
         if ( "$ARGV[$i]" eq "-o" ) {
             if ( defined $ARGV[ $i + 1] ) {
 		open INFILE, "$infile" or die "$0 - ERROR: $infile exists but isn't readable.\n";
 		@infile = <INFILE>;
 		close( INFILE );
-		print STDERR "Reading template file: $infile\n";
+		print STDERR "Reading template file: $infile\n" if $verbose;
 		my $num = $#infile + 1;
 		# print STDERR "Number of lines: $num\n";
     } else {
 sub usage
 {
     print STDERR "Generate language modules from language script particle template (*.sct file)\n";
-    print STDERR "perl $0 -o outputfile -i inputfile\n";
+    print STDERR "perl $0 [-verbose] -o outputfile -i inputfile\n";
     exit  1;
 }

slideshow/util/makefile.mk

 
 # --- Common ----------------------------------------------------------
 
-.IF "$(verbose)"!="" || "$(VERBOSE)"!=""
-CDEFS+= -DVERBOSE
+.IF "$(VERBOSE)"=="TRUE"
+CDEFS+=-DVERBOSE
 .ENDIF
 
 SHL1DLLPRE=

slideshow/util/makefile.pmk

 #
 #*************************************************************************
 
-.IF "$(verbose)"!="" || "$(VERBOSE)"!=""
-CDEFS+= -DVERBOSE
+.IF "$(VERBOSE)"=="TRUE"
+CDEFS+=-DVERBOSE
 .ENDIF
 
 .IF "$(debug)"!="" || "$(DEBUG)"!=""

solenv/bin/build.pl

         require GenInfoParser; import GenInfoParser;
         require IO::Handle; import IO::Handle;
     };
+    my $verbose_mode = 0;
+    if (defined $ENV{verbose} || defined $ENV{VERBOSE}) {
+        $verbose_mode = ($ENV{verbose} =~ /^t\S*$/i);
+    }
     my $enable_multiprocessing = 1;
     my $cygwin = 0;
     $cygwin++ if ($^O eq 'cygwin');
             print "$dmake\n";
             print $check_error_string;
         } else {
-            print "$BuildDir\n";
+            print "\n" if ( ! $show );
+            print "Entering $BuildDir\n";
         };
         RemoveFromDependencies($BuildDir, \%LocalDepsHash) if (!$child);
         return if ($cmd_file || $show);
     # Default build modes(for OpenOffice.org)
     $ENV{BUILD_TYPE} = 'OOo EXT' if (!defined $ENV{BUILD_TYPE});
     @ARGV = @dmake_args;
+	foreach $arg (@dmake_args) {
+        $arg =~ /^verbose=(\S+)$/i and $verbose_mode = ($1 =~ /^t\S*$/i);
+	}
 };
 
 sub get_module_and_buildlist_paths {
     html_store_job_info($folders_hashes{$child_nick}, $child_nick, $error_code);
     $running_children{$folders_hashes{$child_nick}}--;
     delete $processes_hash{$pid};
-    print 'Running processes: ' . children_number() . "\n";
+    $verbose_mode && print 'Running processes: ' . children_number() . "\n";
 };
 
 #
         select $oldfh;
         $processes_hash{$pid} = $job_dir;
         $children_running = children_number();
-        print 'Running processes: ', $children_running, "\n";
+        $verbose_mode && print 'Running processes: ', $children_running, "\n";
         $maximal_processes = $children_running if ($children_running > $maximal_processes);
         $folders_hashes{$job_dir} = $dependencies_hash;
         store_pid($dependencies_hash, $pid);
             delete $clients_times{$pid};
             clear_from_child($pid);
             delete $clients_jobs{$pid};
-            print 'Running processes: ', children_number(), "\n";
+            $verbose_mode && print 'Running processes: ', children_number(), "\n";
             # Actually, next 3 strings are only for even distribution 
             # of clients if there are more than one build server running
     	    print $new_socket_obj 'No job';
             $clients_jobs{$pid} = $job_string;
             $clients_times{$pid} = time;
             $children_running = children_number();
-            print 'Running processes: ', $children_running, "\n";
+            $verbose_mode && print 'Running processes: ', $children_running, "\n";
             $maximal_processes = $children_running if ($children_running > $maximal_processes);
         } else {
     	    print $new_socket_obj 'No job';

solenv/bin/checkdll.sh

         export LD_LIBRARY_PATH;;
     esac
 
-    $checkdll "$*"
+    $checkdll "$@"
     if [ $? -ne 0 ]; then exit 1 ; fi
 
     for parameter in $*; do

solenv/bin/deliver.pl

 {
     my $arg;
     my $dontdeletecommon = 0;
-    $opt_silent = 1 if ( defined $ENV{VERBOSE} && $ENV{VERBOSE} eq 'FALSE');
-    $opt_verbose = 1 if ( defined $ENV{VERBOSE} && $ENV{VERBOSE} eq 'TRUE');
     while ( $arg = shift @ARGV ) {
         $arg =~ /^-force$/      and $opt_force  = 1  and next;
         $arg =~ /^-minor$/      and $opt_minor  = 1  and next;
         }
         $dest = $arg;
     }
+    $opt_silent = 1 if ( !defined $ENV{VERBOSE} || (defined $ENV{VERBOSE} && $ENV{VERBOSE} eq 'FALSE')) && ( ! $opt_verbose );
+    $opt_verbose = 1 if ( defined $ENV{VERBOSE} && $ENV{VERBOSE} eq 'TRUE') && ( ! $opt_silent );
     # $dest and $opt_zip or $opt_delete are mutually exclusive
     if ( $dest and ($opt_zip || $opt_delete) ) {
         usage(1);
     }
     # $opt_silent and $opt_check or $opt_verbose are mutually exclusive
     if ( ($opt_check or $opt_verbose) and $opt_silent ) {
-        print STDERR "Error on command line: options '-check' and '-quiet' are mutually exclusive.\n";
+        print STDERR "Error on command line: options '-check'/'-verbose' and '-quiet' are mutually exclusive.\n";
         usage(1);
     }
     if ($dontdeletecommon) {

solenv/bin/mhids.pl

 my $prjname;
 my $defs;
 my $solarincludes;
+my $verbose = 0;
 
 my $debug = 0;
 my $filebase;
     	$preprocess_flag = "-E"; # preprocess to stdout
     } elsif ( "$whichcom" eq "MSC" ) {
     	$appext = ".exe"; # windows for now
-	    $compiler = "cl";
+	    $compiler = "cl -nologo";
     	$outbin_flag = "-Fe";
         $outobj_flag = "-Fo";
 	    $objext = ".obj";
 }
 
 #---------------------------------------------------
-$filename = shift @ARGV;
-$srs = shift @ARGV;
-$prjname = shift @ARGV;
+$filename = undef;
+$srs = undef;
+$prjname = undef;
+
+my @expectedArgs = ( \$filename, \$srs, \$prjname );
+my $expectedArgsIndex = 0;
+while ( ( $#ARGV >= 0 ) && ( $expectedArgsIndex < 3 ) )
+{
+    $_ = shift @ARGV;
+    if ( /^-verbose$/ )
+    {
+        $verbose = 1;
+        next;
+    }
+    ${$expectedArgs[ $expectedArgsIndex ]} = $_;
+    ++$expectedArgsIndex;
+}
+
 $defs = join " ",@ARGV if ($#ARGV);
 
 if ( !defined $prjname ) { die "ERROR - check usage\n"; }
 # now get $workfile ready for shell usage...
 $shell_workfile = $workfile;
 
-print "workfile: $workfile\n";
+print "workfile: $workfile\n" if $verbose;
 
 #remove old objects which remained in place by a former bug
 unlink "$workfile.obj";
 #echo "perl5 -p -e "s/=[ \t]*\".*\"/=\"\"/go; s/\".*\"[ \t]*;/\"\" ;/go ; s/(\".*)\/\/(.*\")/$1\/\\\/$2/go ;" < %filename% > %srs%\%workfile%.c0"
 #call  perl5 -p -e "s/=[ \t]*\".*\"/=\"\"/go; s/\".*\"[ \t]*;/\"\" ;/go ; s/(\".*)\/\/(.*\")/$1\/\\\/$2/go ;" < %filename% > %srs%\%workfile%.c0
 
-print  "$ENV{SOLARBINDIR}/hidc $filename ${shell_workfile}.c1 $prjname \n";
-$ret = system "$ENV{SOLARBINDIR}/hidc $filename ${shell_workfile}.c1 $prjname";
+my $verboseSwitch = $verbose ? "-verbose" : "";
+print         "$ENV{SOLARBINDIR}/hidc $verboseSwitch $filename ${shell_workfile}.c1 $prjname\n" if $verbose;
+$ret = system "$ENV{SOLARBINDIR}/hidc $verboseSwitch $filename ${shell_workfile}.c1 $prjname";
 if ( $ret ) {
 	push @cleanuplist, ".c1";
 	cleandie("ERROR - calling \"hidc\" failed");
 }
 push @cleanuplist, ".c1";
 
-print         "$compiler $solarincludes $defs $preprocess_flag ${shell_workfile}.c1 > ${shell_workfile}.c2\n";
+print         "$compiler $solarincludes $defs $preprocess_flag ${shell_workfile}.c1 > ${shell_workfile}.c2\n" if $verbose;
 $ret = system "$compiler $solarincludes $defs $preprocess_flag ${shell_workfile}.c1 > ${shell_workfile}.c2";
 if ( $ret ) {
 	push @cleanuplist, ".c2";
 {
     $outobj_param = "$outobj_flag${shell_workfile}$objext";
 }
-print         "$compiler $solarincludes $defs ${shell_workfile}.c $outobj_param $outbin_flag${shell_workfile}$appext \n";
+print         "$compiler $solarincludes $defs ${shell_workfile}.c $outobj_param $outbin_flag${shell_workfile}$appext \n" if $verbose;
 $ret = system "$compiler $solarincludes $defs ${shell_workfile}.c $outobj_param $outbin_flag${shell_workfile}$appext";
 if ( $ret ) {
 	push @cleanuplist, "$appext";

solenv/inc/_tg_app.mk

 	$(APP1RES) \
 	$(APP1IMP_ORD) \
 	$(APP1ICON) $(APP1DEPN) $(USE_APP1DEF)
-	@echo ------------------------------
-	@echo Making: $@
+	@echo "Making:   " $(@:f)
 .IF "$(GUI)"=="UNX"
 .IF "$(OS)"=="MACOSX"
 	@echo unx
     @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
         `cat $(MISC)/$(TARGET).$(@:b)_1.cmd` \
         >> $(MISC)/$(TARGET).$(@:b)_1.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@cat $(MISC)/$(TARGET).$(@:b)_1.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_1.cmd
 # Need to strip __objcInit symbol to avoid duplicate symbols when loading
 # libraries at runtime
     @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
         app $(APP1RPATH) $@
 .IF "$(TARGETTYPE)"=="GUI"
-	@echo "Making: $@.app"
+	@echo "Making:   " $(@:f).app
 	@macosx-create-bundle $@
 .ENDIF		# "$(TARGETTYPE)"=="GUI"
 .ELSE		# "$(OS)"=="MACOSX"
 	$(APP1OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_1.cmd
 	@cat $(mktmp /dev/null $(APP1LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_1.cmd
 	@echo $(APP1LINKTYPEFLAG) $(APP1LIBSALCPPRT) $(APP1STDLIBS) $(APP1STDLIB) $(STDLIB1) -o $@ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
-	cat $(MISC)/$(TARGET).$(@:b)_1.cmd
+  .IF "$(VERBOSE)" == "TRUE"
+	@cat $(MISC)/$(TARGET).$(@:b)_1.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_1.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@ls -l $@
+  .ENDIF
 .ENDIF		# "$(OS)"=="MACOSX"
 .ENDIF
 .IF "$(GUI)" == "WNT"
 	@-echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP1LINKRES:b).rc
 	@-echo $(EMQ)#include  $(EMQ)"$(APP1VERINFO)$(EMQ)" >> $(MISC)/$(APP1LINKRES:b).rc
 .ENDIF		# "$(APP1VERINFO)" != ""
-	$(RC) -DWIN32 $(APP1PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP1LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -DWIN32 $(APP1PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP1LINKRES:b).rc
 .ENDIF			# "$(APP1LINKRES)" != ""
 .IF "$(COM)" == "GCC"
 	@echo mingw
 		$(APP_LINKTYPE) $(APP1LIBSALCPPRT) \
 		-Wl,--start-group $(APP1STDLIBS) -Wl,--end-group $(APP1STDLIB) \
 		$(STDLIB1) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_1.cmd
+  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
+  .IF "$(VERBOSE)" == "TRUE"
 	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_1.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_1.cmd
 	@ls -l $@
 .ELSE	# "$(COM)" == "GCC"
 .IF "$(linkinc)" == ""
-	$(APP1LINKER) @$(mktmp \
+	$(COMMAND_ECHO)$(APP1LINKER) @$(mktmp \
 		$(APP1LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP1BASEX) \
 		$(APP1STACKN) \
 		)
 	@-echo linking $@.manifest ...
 .IF "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
 .ELSE
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
 .ENDIF # "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
-	$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
 .ELSE
-		-$(RM) $(MISC)\$(APP1TARGET).lnk
-		-$(RM) $(MISC)\$(APP1TARGET).lst
-		-$(RM) $(MISC)\linkobj.lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP1TARGET).lnk
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP1TARGET).lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
 		for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
 	type $(mktmp,$(MISC)\$(APP1TARGET).lst
 		$(APP1LINKFLAGS) \
 		$(APP1LIBS) \
 		$(APP1STDLIBS) \
 		$(APP1STDLIB) $(STDLIB1))
-		$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP1TARGETN:b)_linkobj.lst >> $(MISC)\$(APP1TARGET).lst
-		$(IFEXIST) $(MISC)/$(APP1TARGET).lst $(THEN) type $(MISC)/$(APP1TARGET).lst  >> $(MISC)/$(APP1TARGET).lnk $(FI)
-		$(APP1LINKER) @$(MISC)\$(APP1TARGET).lnk
+		$(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP1TARGETN:b)_linkobj.lst >> $(MISC)\$(APP1TARGET).lst
+		$(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP1TARGET).lst $(THEN) type $(MISC)/$(APP1TARGET).lst  >> $(MISC)/$(APP1TARGET).lnk $(FI)
+		$(COMMAND_ECHO)$(SED)$(APP1LINKER) @$(MISC)\$(APP1TARGET).lnk
 .ENDIF		# "$(linkinc)" == ""
 .ENDIF		# "$(COM)" == "GCC"
 .IF "$(APP1TARGET)" == "loader"
-	$(PERL) loader.pl $@
-	$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	$(RM) $@
-	$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)$(PERL) loader.pl $@
+	$(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)$(RM) $@
+	$(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "WNT"
 	@-+echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP1LINKRES:b).rc
 	@-+echo $(EMQ)#include  $(EMQ)"$(APP1VERINFO)$(EMQ)" >> $(MISC)/$(APP1LINKRES:b).rc
 .ENDIF		# "$(APP1VERINFO)" != ""
-	$(RC) -r -DOS2 $(APP1PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP1LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -r -DOS2 $(APP1PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP1LINKRES:b).rc
 .ENDIF			# "$(APP1LINKRES)" != ""
 
 .IF "$(TARGETTYPE)" == "GUI" 
 	@echo NAME $(APP1TARGET) WINDOWAPI > $(MISC)/$(APP1TARGET).def
 .ENDIF
 
+  .IF "$(VERBOSE)" == "TRUE"
 	@+echo	$(APP1LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP1BASEX) \
 		$(APP1STACKN) \
 		$(APP1LIBS) \
 		$(APP1STDLIBS:^"-l") \
 		$(APP1STDLIB:^"-l") $(STDLIB1:^"-l") 
-	$(APP1LINKER) -v \
+  .ENDIF
+	$(COMMAND_ECHO)$(APP1LINKER) -v \
 		$(APP1LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP1BASEX) \
 		$(APP1STACKN) \
 
 
 .IF "$(APP1TARGET)" == "loader"
-	+$(PERL) loader.pl $@
-	+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	+$(RM) $@
-	+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)+$(PERL) loader.pl $@
+	$(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)+$(RM) $@
+	$(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "OS2"
 	$(APP2RES) \
 	$(APP2IMP_ORD) \
 	$(APP2ICON) $(APP2DEPN) $(USE_APP2DEF)
-	@echo ------------------------------
-	@echo Making: $@
+	@echo "Making:   " $(@:f)
 .IF "$(GUI)"=="UNX"
 .IF "$(OS)"=="MACOSX"
 	@echo unx
     @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
         `cat $(MISC)/$(TARGET).$(@:b)_2.cmd` \
         >> $(MISC)/$(TARGET).$(@:b)_2.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@cat $(MISC)/$(TARGET).$(@:b)_2.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_2.cmd
 # Need to strip __objcInit symbol to avoid duplicate symbols when loading
 # libraries at runtime
     @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
         app $(APP2RPATH) $@
 .IF "$(TARGETTYPE)"=="GUI"
-	@echo "Making: $@.app"
+	@echo "Making:   " $(@:f).app
 	@macosx-create-bundle $@
 .ENDIF		# "$(TARGETTYPE)"=="GUI"
 .ELSE		# "$(OS)"=="MACOSX"
 	$(APP2OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_2.cmd
 	@cat $(mktmp /dev/null $(APP2LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_2.cmd
 	@echo $(APP2LINKTYPEFLAG) $(APP2LIBSALCPPRT) $(APP2STDLIBS) $(APP2STDLIB) $(STDLIB2) -o $@ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
-	cat $(MISC)/$(TARGET).$(@:b)_2.cmd
+  .IF "$(VERBOSE)" == "TRUE"
+	@cat $(MISC)/$(TARGET).$(@:b)_2.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_2.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@ls -l $@
+  .ENDIF
 .ENDIF		# "$(OS)"=="MACOSX"
 .ENDIF
 .IF "$(GUI)" == "WNT"
 	@-echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP2LINKRES:b).rc
 	@-echo $(EMQ)#include  $(EMQ)"$(APP2VERINFO)$(EMQ)" >> $(MISC)/$(APP2LINKRES:b).rc
 .ENDIF		# "$(APP2VERINFO)" != ""
-	$(RC) -DWIN32 $(APP2PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP2LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -DWIN32 $(APP2PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP2LINKRES:b).rc
 .ENDIF			# "$(APP2LINKRES)" != ""
 .IF "$(COM)" == "GCC"
 	@echo mingw
 		$(APP_LINKTYPE) $(APP2LIBSALCPPRT) \
 		-Wl,--start-group $(APP2STDLIBS) -Wl,--end-group $(APP2STDLIB) \
 		$(STDLIB2) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_2.cmd
+  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
+  .IF "$(VERBOSE)" == "TRUE"
 	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_2.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_2.cmd
 	@ls -l $@
 .ELSE	# "$(COM)" == "GCC"
 .IF "$(linkinc)" == ""
-	$(APP2LINKER) @$(mktmp \
+	$(COMMAND_ECHO)$(APP2LINKER) @$(mktmp \
 		$(APP2LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP2BASEX) \
 		$(APP2STACKN) \
 		)
 	@-echo linking $@.manifest ...
 .IF "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
 .ELSE
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
 .ENDIF # "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
-	$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
 .ELSE
-		-$(RM) $(MISC)\$(APP2TARGET).lnk
-		-$(RM) $(MISC)\$(APP2TARGET).lst
-		-$(RM) $(MISC)\linkobj.lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP2TARGET).lnk
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP2TARGET).lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
 		for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
 	type $(mktmp,$(MISC)\$(APP2TARGET).lst
 		$(APP2LINKFLAGS) \
 		$(APP2LIBS) \
 		$(APP2STDLIBS) \
 		$(APP2STDLIB) $(STDLIB2))
-		$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP2TARGETN:b)_linkobj.lst >> $(MISC)\$(APP2TARGET).lst
-		$(IFEXIST) $(MISC)/$(APP2TARGET).lst $(THEN) type $(MISC)/$(APP2TARGET).lst  >> $(MISC)/$(APP2TARGET).lnk $(FI)
-		$(APP2LINKER) @$(MISC)\$(APP2TARGET).lnk
+		$(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP2TARGETN:b)_linkobj.lst >> $(MISC)\$(APP2TARGET).lst
+		$(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP2TARGET).lst $(THEN) type $(MISC)/$(APP2TARGET).lst  >> $(MISC)/$(APP2TARGET).lnk $(FI)
+		$(COMMAND_ECHO)$(SED)$(APP2LINKER) @$(MISC)\$(APP2TARGET).lnk
 .ENDIF		# "$(linkinc)" == ""
 .ENDIF		# "$(COM)" == "GCC"
 .IF "$(APP2TARGET)" == "loader"
-	$(PERL) loader.pl $@
-	$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	$(RM) $@
-	$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)$(PERL) loader.pl $@
+	$(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)$(RM) $@
+	$(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "WNT"
 	@-+echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP2LINKRES:b).rc
 	@-+echo $(EMQ)#include  $(EMQ)"$(APP2VERINFO)$(EMQ)" >> $(MISC)/$(APP2LINKRES:b).rc
 .ENDIF		# "$(APP2VERINFO)" != ""
-	$(RC) -r -DOS2 $(APP2PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP2LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -r -DOS2 $(APP2PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP2LINKRES:b).rc
 .ENDIF			# "$(APP2LINKRES)" != ""
 
 .IF "$(TARGETTYPE)" == "GUI" 
 	@echo NAME $(APP2TARGET) WINDOWAPI > $(MISC)/$(APP2TARGET).def
 .ENDIF
 
+  .IF "$(VERBOSE)" == "TRUE"
 	@+echo	$(APP2LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP2BASEX) \
 		$(APP2STACKN) \
 		$(APP2LIBS) \
 		$(APP2STDLIBS:^"-l") \
 		$(APP2STDLIB:^"-l") $(STDLIB2:^"-l") 
-	$(APP2LINKER) -v \
+  .ENDIF
+	$(COMMAND_ECHO)$(APP2LINKER) -v \
 		$(APP2LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP2BASEX) \
 		$(APP2STACKN) \
 
 
 .IF "$(APP2TARGET)" == "loader"
-	+$(PERL) loader.pl $@
-	+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	+$(RM) $@
-	+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)+$(PERL) loader.pl $@
+	$(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)+$(RM) $@
+	$(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "OS2"
 	$(APP3RES) \
 	$(APP3IMP_ORD) \
 	$(APP3ICON) $(APP3DEPN) $(USE_APP3DEF)
-	@echo ------------------------------
-	@echo Making: $@
+	@echo "Making:   " $(@:f)
 .IF "$(GUI)"=="UNX"
 .IF "$(OS)"=="MACOSX"
 	@echo unx
     @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
         `cat $(MISC)/$(TARGET).$(@:b)_3.cmd` \
         >> $(MISC)/$(TARGET).$(@:b)_3.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@cat $(MISC)/$(TARGET).$(@:b)_3.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_3.cmd
 # Need to strip __objcInit symbol to avoid duplicate symbols when loading
 # libraries at runtime
     @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
         app $(APP3RPATH) $@
 .IF "$(TARGETTYPE)"=="GUI"
-	@echo "Making: $@.app"
+	@echo "Making:   " $(@:f).app
 	@macosx-create-bundle $@
 .ENDIF		# "$(TARGETTYPE)"=="GUI"
 .ELSE		# "$(OS)"=="MACOSX"
 	$(APP3OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_3.cmd
 	@cat $(mktmp /dev/null $(APP3LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_3.cmd
 	@echo $(APP3LINKTYPEFLAG) $(APP3LIBSALCPPRT) $(APP3STDLIBS) $(APP3STDLIB) $(STDLIB3) -o $@ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
-	cat $(MISC)/$(TARGET).$(@:b)_3.cmd
+  .IF "$(VERBOSE)" == "TRUE"
+	@cat $(MISC)/$(TARGET).$(@:b)_3.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_3.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@ls -l $@
+  .ENDIF
 .ENDIF		# "$(OS)"=="MACOSX"
 .ENDIF
 .IF "$(GUI)" == "WNT"
 	@-echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP3LINKRES:b).rc
 	@-echo $(EMQ)#include  $(EMQ)"$(APP3VERINFO)$(EMQ)" >> $(MISC)/$(APP3LINKRES:b).rc
 .ENDIF		# "$(APP3VERINFO)" != ""
-	$(RC) -DWIN32 $(APP3PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP3LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -DWIN32 $(APP3PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP3LINKRES:b).rc
 .ENDIF			# "$(APP3LINKRES)" != ""
 .IF "$(COM)" == "GCC"
 	@echo mingw
 		$(APP_LINKTYPE) $(APP3LIBSALCPPRT) \
 		-Wl,--start-group $(APP3STDLIBS) -Wl,--end-group $(APP3STDLIB) \
 		$(STDLIB3) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_3.cmd
+  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
+  .IF "$(VERBOSE)" == "TRUE"
 	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_3.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_3.cmd
 	@ls -l $@
 .ELSE	# "$(COM)" == "GCC"
 .IF "$(linkinc)" == ""
-	$(APP3LINKER) @$(mktmp \
+	$(COMMAND_ECHO)$(APP3LINKER) @$(mktmp \
 		$(APP3LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP3BASEX) \
 		$(APP3STACKN) \
 		)
 	@-echo linking $@.manifest ...
 .IF "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
 .ELSE
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
 .ENDIF # "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
-	$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
 .ELSE
-		-$(RM) $(MISC)\$(APP3TARGET).lnk
-		-$(RM) $(MISC)\$(APP3TARGET).lst
-		-$(RM) $(MISC)\linkobj.lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP3TARGET).lnk
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP3TARGET).lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
 		for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
 	type $(mktmp,$(MISC)\$(APP3TARGET).lst
 		$(APP3LINKFLAGS) \
 		$(APP3LIBS) \
 		$(APP3STDLIBS) \
 		$(APP3STDLIB) $(STDLIB3))
-		$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP3TARGETN:b)_linkobj.lst >> $(MISC)\$(APP3TARGET).lst
-		$(IFEXIST) $(MISC)/$(APP3TARGET).lst $(THEN) type $(MISC)/$(APP3TARGET).lst  >> $(MISC)/$(APP3TARGET).lnk $(FI)
-		$(APP3LINKER) @$(MISC)\$(APP3TARGET).lnk
+		$(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP3TARGETN:b)_linkobj.lst >> $(MISC)\$(APP3TARGET).lst
+		$(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP3TARGET).lst $(THEN) type $(MISC)/$(APP3TARGET).lst  >> $(MISC)/$(APP3TARGET).lnk $(FI)
+		$(COMMAND_ECHO)$(SED)$(APP3LINKER) @$(MISC)\$(APP3TARGET).lnk
 .ENDIF		# "$(linkinc)" == ""
 .ENDIF		# "$(COM)" == "GCC"
 .IF "$(APP3TARGET)" == "loader"
-	$(PERL) loader.pl $@
-	$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	$(RM) $@
-	$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)$(PERL) loader.pl $@
+	$(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)$(RM) $@
+	$(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "WNT"
 	@-+echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP3LINKRES:b).rc
 	@-+echo $(EMQ)#include  $(EMQ)"$(APP3VERINFO)$(EMQ)" >> $(MISC)/$(APP3LINKRES:b).rc
 .ENDIF		# "$(APP3VERINFO)" != ""
-	$(RC) -r -DOS2 $(APP3PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP3LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -r -DOS2 $(APP3PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP3LINKRES:b).rc
 .ENDIF			# "$(APP3LINKRES)" != ""
 
 .IF "$(TARGETTYPE)" == "GUI" 
 	@echo NAME $(APP3TARGET) WINDOWAPI > $(MISC)/$(APP3TARGET).def
 .ENDIF
 
+  .IF "$(VERBOSE)" == "TRUE"
 	@+echo	$(APP3LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP3BASEX) \
 		$(APP3STACKN) \
 		$(APP3LIBS) \
 		$(APP3STDLIBS:^"-l") \
 		$(APP3STDLIB:^"-l") $(STDLIB3:^"-l") 
-	$(APP3LINKER) -v \
+  .ENDIF
+	$(COMMAND_ECHO)$(APP3LINKER) -v \
 		$(APP3LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP3BASEX) \
 		$(APP3STACKN) \
 
 
 .IF "$(APP3TARGET)" == "loader"
-	+$(PERL) loader.pl $@
-	+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	+$(RM) $@
-	+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)+$(PERL) loader.pl $@
+	$(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)+$(RM) $@
+	$(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "OS2"
 	$(APP4RES) \
 	$(APP4IMP_ORD) \
 	$(APP4ICON) $(APP4DEPN) $(USE_APP4DEF)
-	@echo ------------------------------
-	@echo Making: $@
+	@echo "Making:   " $(@:f)
 .IF "$(GUI)"=="UNX"
 .IF "$(OS)"=="MACOSX"
 	@echo unx
     @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
         `cat $(MISC)/$(TARGET).$(@:b)_4.cmd` \
         >> $(MISC)/$(TARGET).$(@:b)_4.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@cat $(MISC)/$(TARGET).$(@:b)_4.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_4.cmd
 # Need to strip __objcInit symbol to avoid duplicate symbols when loading
 # libraries at runtime
     @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
         app $(APP4RPATH) $@
 .IF "$(TARGETTYPE)"=="GUI"
-	@echo "Making: $@.app"
+	@echo "Making:   " $(@:f).app
 	@macosx-create-bundle $@
 .ENDIF		# "$(TARGETTYPE)"=="GUI"
 .ELSE		# "$(OS)"=="MACOSX"
 	$(APP4OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_4.cmd
 	@cat $(mktmp /dev/null $(APP4LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_4.cmd
 	@echo $(APP4LINKTYPEFLAG) $(APP4LIBSALCPPRT) $(APP4STDLIBS) $(APP4STDLIB) $(STDLIB4) -o $@ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
-	cat $(MISC)/$(TARGET).$(@:b)_4.cmd
+  .IF "$(VERBOSE)" == "TRUE"
+	@cat $(MISC)/$(TARGET).$(@:b)_4.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_4.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@ls -l $@
+  .ENDIF
 .ENDIF		# "$(OS)"=="MACOSX"
 .ENDIF
 .IF "$(GUI)" == "WNT"
 	@-echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP4LINKRES:b).rc
 	@-echo $(EMQ)#include  $(EMQ)"$(APP4VERINFO)$(EMQ)" >> $(MISC)/$(APP4LINKRES:b).rc
 .ENDIF		# "$(APP4VERINFO)" != ""
-	$(RC) -DWIN32 $(APP4PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP4LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -DWIN32 $(APP4PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP4LINKRES:b).rc
 .ENDIF			# "$(APP4LINKRES)" != ""
 .IF "$(COM)" == "GCC"
 	@echo mingw
 		$(APP_LINKTYPE) $(APP4LIBSALCPPRT) \
 		-Wl,--start-group $(APP4STDLIBS) -Wl,--end-group $(APP4STDLIB) \
 		$(STDLIB4) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_4.cmd
+  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
+  .IF "$(VERBOSE)" == "TRUE"
 	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_4.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_4.cmd
 	@ls -l $@
 .ELSE	# "$(COM)" == "GCC"
 .IF "$(linkinc)" == ""
-	$(APP4LINKER) @$(mktmp \
+	$(COMMAND_ECHO)$(APP4LINKER) @$(mktmp \
 		$(APP4LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP4BASEX) \
 		$(APP4STACKN) \
 		)
 	@-echo linking $@.manifest ...
 .IF "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
 .ELSE
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
 .ENDIF # "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
-	$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
 .ELSE
-		-$(RM) $(MISC)\$(APP4TARGET).lnk
-		-$(RM) $(MISC)\$(APP4TARGET).lst
-		-$(RM) $(MISC)\linkobj.lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP4TARGET).lnk
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP4TARGET).lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
 		for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
 	type $(mktmp,$(MISC)\$(APP4TARGET).lst
 		$(APP4LINKFLAGS) \
 		$(APP4LIBS) \
 		$(APP4STDLIBS) \
 		$(APP4STDLIB) $(STDLIB4))
-		$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP4TARGETN:b)_linkobj.lst >> $(MISC)\$(APP4TARGET).lst
-		$(IFEXIST) $(MISC)/$(APP4TARGET).lst $(THEN) type $(MISC)/$(APP4TARGET).lst  >> $(MISC)/$(APP4TARGET).lnk $(FI)
-		$(APP4LINKER) @$(MISC)\$(APP4TARGET).lnk
+		$(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP4TARGETN:b)_linkobj.lst >> $(MISC)\$(APP4TARGET).lst
+		$(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP4TARGET).lst $(THEN) type $(MISC)/$(APP4TARGET).lst  >> $(MISC)/$(APP4TARGET).lnk $(FI)
+		$(COMMAND_ECHO)$(SED)$(APP4LINKER) @$(MISC)\$(APP4TARGET).lnk
 .ENDIF		# "$(linkinc)" == ""
 .ENDIF		# "$(COM)" == "GCC"
 .IF "$(APP4TARGET)" == "loader"
-	$(PERL) loader.pl $@
-	$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	$(RM) $@
-	$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)$(PERL) loader.pl $@
+	$(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)$(RM) $@
+	$(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "WNT"
 	@-+echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP4LINKRES:b).rc
 	@-+echo $(EMQ)#include  $(EMQ)"$(APP4VERINFO)$(EMQ)" >> $(MISC)/$(APP4LINKRES:b).rc
 .ENDIF		# "$(APP4VERINFO)" != ""
-	$(RC) -r -DOS2 $(APP4PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP4LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -r -DOS2 $(APP4PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP4LINKRES:b).rc
 .ENDIF			# "$(APP4LINKRES)" != ""
 
 .IF "$(TARGETTYPE)" == "GUI" 
 	@echo NAME $(APP4TARGET) WINDOWAPI > $(MISC)/$(APP4TARGET).def
 .ENDIF
 
+  .IF "$(VERBOSE)" == "TRUE"
 	@+echo	$(APP4LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP4BASEX) \
 		$(APP4STACKN) \
 		$(APP4LIBS) \
 		$(APP4STDLIBS:^"-l") \
 		$(APP4STDLIB:^"-l") $(STDLIB4:^"-l") 
-	$(APP4LINKER) -v \
+  .ENDIF
+	$(COMMAND_ECHO)$(APP4LINKER) -v \
 		$(APP4LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP4BASEX) \
 		$(APP4STACKN) \
 
 
 .IF "$(APP4TARGET)" == "loader"
-	+$(PERL) loader.pl $@
-	+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	+$(RM) $@
-	+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)+$(PERL) loader.pl $@
+	$(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)+$(RM) $@
+	$(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "OS2"
 	$(APP5RES) \
 	$(APP5IMP_ORD) \
 	$(APP5ICON) $(APP5DEPN) $(USE_APP5DEF)
-	@echo ------------------------------
-	@echo Making: $@
+	@echo "Making:   " $(@:f)
 .IF "$(GUI)"=="UNX"
 .IF "$(OS)"=="MACOSX"
 	@echo unx
     @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
         `cat $(MISC)/$(TARGET).$(@:b)_5.cmd` \
         >> $(MISC)/$(TARGET).$(@:b)_5.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@cat $(MISC)/$(TARGET).$(@:b)_5.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_5.cmd
 # Need to strip __objcInit symbol to avoid duplicate symbols when loading
 # libraries at runtime
     @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
         app $(APP5RPATH) $@
 .IF "$(TARGETTYPE)"=="GUI"
-	@echo "Making: $@.app"
+	@echo "Making:   " $(@:f).app
 	@macosx-create-bundle $@
 .ENDIF		# "$(TARGETTYPE)"=="GUI"
 .ELSE		# "$(OS)"=="MACOSX"
 	$(APP5OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_5.cmd
 	@cat $(mktmp /dev/null $(APP5LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_5.cmd
 	@echo $(APP5LINKTYPEFLAG) $(APP5LIBSALCPPRT) $(APP5STDLIBS) $(APP5STDLIB) $(STDLIB5) -o $@ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
-	cat $(MISC)/$(TARGET).$(@:b)_5.cmd
+  .IF "$(VERBOSE)" == "TRUE"
+	@cat $(MISC)/$(TARGET).$(@:b)_5.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_5.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@ls -l $@
+  .ENDIF
 .ENDIF		# "$(OS)"=="MACOSX"
 .ENDIF
 .IF "$(GUI)" == "WNT"
 	@-echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP5LINKRES:b).rc
 	@-echo $(EMQ)#include  $(EMQ)"$(APP5VERINFO)$(EMQ)" >> $(MISC)/$(APP5LINKRES:b).rc
 .ENDIF		# "$(APP5VERINFO)" != ""
-	$(RC) -DWIN32 $(APP5PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP5LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -DWIN32 $(APP5PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP5LINKRES:b).rc
 .ENDIF			# "$(APP5LINKRES)" != ""
 .IF "$(COM)" == "GCC"
 	@echo mingw
 		$(APP_LINKTYPE) $(APP5LIBSALCPPRT) \
 		-Wl,--start-group $(APP5STDLIBS) -Wl,--end-group $(APP5STDLIB) \
 		$(STDLIB5) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_5.cmd
+  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
+  .IF "$(VERBOSE)" == "TRUE"
 	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_5.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_5.cmd
 	@ls -l $@
 .ELSE	# "$(COM)" == "GCC"
 .IF "$(linkinc)" == ""
-	$(APP5LINKER) @$(mktmp \
+	$(COMMAND_ECHO)$(APP5LINKER) @$(mktmp \
 		$(APP5LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP5BASEX) \
 		$(APP5STACKN) \
 		)
 	@-echo linking $@.manifest ...
 .IF "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
 .ELSE
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
 .ENDIF # "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
-	$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
 .ELSE
-		-$(RM) $(MISC)\$(APP5TARGET).lnk
-		-$(RM) $(MISC)\$(APP5TARGET).lst
-		-$(RM) $(MISC)\linkobj.lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP5TARGET).lnk
+		$(COMMAND_ECHO)-$(RM) $(MISC)\$(APP5TARGET).lst
+		$(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
 		for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
 	type $(mktmp,$(MISC)\$(APP5TARGET).lst
 		$(APP5LINKFLAGS) \
 		$(APP5LIBS) \
 		$(APP5STDLIBS) \
 		$(APP5STDLIB) $(STDLIB5))
-		$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP5TARGETN:b)_linkobj.lst >> $(MISC)\$(APP5TARGET).lst
-		$(IFEXIST) $(MISC)/$(APP5TARGET).lst $(THEN) type $(MISC)/$(APP5TARGET).lst  >> $(MISC)/$(APP5TARGET).lnk $(FI)
-		$(APP5LINKER) @$(MISC)\$(APP5TARGET).lnk
+		$(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP5TARGETN:b)_linkobj.lst >> $(MISC)\$(APP5TARGET).lst
+		$(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP5TARGET).lst $(THEN) type $(MISC)/$(APP5TARGET).lst  >> $(MISC)/$(APP5TARGET).lnk $(FI)
+		$(COMMAND_ECHO)$(SED)$(APP5LINKER) @$(MISC)\$(APP5TARGET).lnk
 .ENDIF		# "$(linkinc)" == ""
 .ENDIF		# "$(COM)" == "GCC"
 .IF "$(APP5TARGET)" == "loader"
-	$(PERL) loader.pl $@
-	$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	$(RM) $@
-	$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)$(PERL) loader.pl $@
+	$(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)$(RM) $@
+	$(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "WNT"
 	@-+echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP5LINKRES:b).rc
 	@-+echo $(EMQ)#include  $(EMQ)"$(APP5VERINFO)$(EMQ)" >> $(MISC)/$(APP5LINKRES:b).rc
 .ENDIF		# "$(APP5VERINFO)" != ""
-	$(RC) -r -DOS2 $(APP5PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP5LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -r -DOS2 $(APP5PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP5LINKRES:b).rc
 .ENDIF			# "$(APP5LINKRES)" != ""
 
 .IF "$(TARGETTYPE)" == "GUI" 
 	@echo NAME $(APP5TARGET) WINDOWAPI > $(MISC)/$(APP5TARGET).def
 .ENDIF
 
+  .IF "$(VERBOSE)" == "TRUE"
 	@+echo	$(APP5LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP5BASEX) \
 		$(APP5STACKN) \
 		$(APP5LIBS) \
 		$(APP5STDLIBS:^"-l") \
 		$(APP5STDLIB:^"-l") $(STDLIB5:^"-l") 
-	$(APP5LINKER) -v \
+  .ENDIF
+	$(COMMAND_ECHO)$(APP5LINKER) -v \
 		$(APP5LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP5BASEX) \
 		$(APP5STACKN) \
 
 
 .IF "$(APP5TARGET)" == "loader"
-	+$(PERL) loader.pl $@
-	+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
-	+$(RM) $@
-	+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
+	$(COMMAND_ECHO)+$(PERL) loader.pl $@
+	$(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
+	$(COMMAND_ECHO)+$(RM) $@
+	$(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
 .ENDIF			# "$(TARGET)" == "setup"
 
 .ENDIF			# "$(GUI)" == "OS2"
 	$(APP6RES) \
 	$(APP6IMP_ORD) \
 	$(APP6ICON) $(APP6DEPN) $(USE_APP6DEF)
-	@echo ------------------------------
-	@echo Making: $@
+	@echo "Making:   " $(@:f)
 .IF "$(GUI)"=="UNX"
 .IF "$(OS)"=="MACOSX"
 	@echo unx
     @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
         `cat $(MISC)/$(TARGET).$(@:b)_6.cmd` \
         >> $(MISC)/$(TARGET).$(@:b)_6.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@cat $(MISC)/$(TARGET).$(@:b)_6.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_6.cmd
 # Need to strip __objcInit symbol to avoid duplicate symbols when loading
 # libraries at runtime
     @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
         app $(APP6RPATH) $@
 .IF "$(TARGETTYPE)"=="GUI"
-	@echo "Making: $@.app"
+	@echo "Making:   " $(@:f).app
 	@macosx-create-bundle $@
 .ENDIF		# "$(TARGETTYPE)"=="GUI"
 .ELSE		# "$(OS)"=="MACOSX"
 	$(APP6OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_6.cmd
 	@cat $(mktmp /dev/null $(APP6LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_6.cmd
 	@echo $(APP6LINKTYPEFLAG) $(APP6LIBSALCPPRT) $(APP6STDLIBS) $(APP6STDLIB) $(STDLIB6) -o $@ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
-	cat $(MISC)/$(TARGET).$(@:b)_6.cmd
+  .IF "$(VERBOSE)" == "TRUE"
+	@cat $(MISC)/$(TARGET).$(@:b)_6.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_6.cmd
+  .IF "$(VERBOSE)" == "TRUE"
 	@ls -l $@
+  .ENDIF
 .ENDIF		# "$(OS)"=="MACOSX"
 .ENDIF
 .IF "$(GUI)" == "WNT"
 	@-echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(APP6LINKRES:b).rc
 	@-echo $(EMQ)#include  $(EMQ)"$(APP6VERINFO)$(EMQ)" >> $(MISC)/$(APP6LINKRES:b).rc
 .ENDIF		# "$(APP6VERINFO)" != ""
-	$(RC) -DWIN32 $(APP6PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP6LINKRES:b).rc
+	$(COMMAND_ECHO)$(RC) -DWIN32 $(APP6PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP6LINKRES:b).rc
 .ENDIF			# "$(APP6LINKRES)" != ""
 .IF "$(COM)" == "GCC"
 	@echo mingw
 		$(APP_LINKTYPE) $(APP6LIBSALCPPRT) \
 		-Wl,--start-group $(APP6STDLIBS) -Wl,--end-group $(APP6STDLIB) \
 		$(STDLIB6) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_6.cmd
+  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
+  .IF "$(VERBOSE)" == "TRUE"
 	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_6.cmd
+  .ENDIF
 	@+source $(MISC)/$(TARGET).$(@:b)_6.cmd
 	@ls -l $@
 .ELSE	# "$(COM)" == "GCC"
 .IF "$(linkinc)" == ""
-	$(APP6LINKER) @$(mktmp \
+	$(COMMAND_ECHO)$(APP6LINKER) @$(mktmp \
 		$(APP6LINKFLAGS) \
 		$(LINKFLAGSAPP) $(APP6BASEX) \
 		$(APP6STACKN) \
 		)
 	@-echo linking $@.manifest ...
 .IF "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
 .ELSE
-	$(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
 .ENDIF # "$(VISTA_MANIFEST)"!=""
-	$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
-	$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
+	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)