Bug 3989

Summary: MPC - missing '&' when using 'specific' with configuration in scope
Product: MPC Reporter: Hubert Talbot <hubert.talbot64>
Component: MPCAssignee: Chris Cleeland <cleeland_c>
Status: NEW ---    
Severity: normal    
Priority: P3    
Version: unspecified   
Hardware: x86   
OS: Windows XP   

Description Hubert Talbot 2011-10-03 03:29:27 CDT
MPC version (using mwc.pl -version): v3.9.27

Perl version (using perl --version):

     This is perl 5, version 12, subversion 4 (v5.12.4) built for MSWin32-x64-multi-thread
     (with 9 registered patches, see perl -V for more detail)

Operating System and Shell: Windows XP (32) / Windows 7 (64)

ACE or TAO version (if using either):

The contents of default.features (if any):

MPC command line options:

Problem description (please be as detailed as possible):

   Here is my mpc file:

     project {
         specific(prop:microsoft) {
             postbuild += if exist ..\lib\$(ConfigurationName)\*.dll \
                             (xcopy /Q /S /I /Y  ..\lib\$(ConfigurationName)\*.dll ..\bin\$(ConfigurationName))
         } else {
             postbuild += mkdir -p $(MY1_ROOT)/bin/$(ConfigurationName)
             postbuild += if [ -e $(MY1_ROOT)/lib/$(ConfigurationName)/*.so ]; \
                             then \
                                 ln -sf $(MY1_ROOT)/lib/$(ConfigurationName)/*.so  $(MY1_ROOT)/bin/$(ConfigurationName); \
                          fi
         }

         specific(prop:microsoft) {
             postbuild += call postbuild.pl
         } else {
             postbuild += ./postbuild.pl
         }
     }

     mpc.pl -type vc9 my1.mpc =>

        <PostBuildEvent>
          <Command>if exist ..\lib\$(ConfigurationName)\*.dll (xcopy /Q /S /I /Y  ..\lib\$(ConfigurationName)\*.dll ..\bin\$(ConfigurationName))&amp; call postbuild.pl</Command>
        </PostBuildEvent>


   Since vc10 has no more "ConfigurationName" but "Configuration" instead, I changed my1.mpc for:

     project {
         specific(prop:microsoft) {
             Debug::postbuild += if exist ..\lib\Debug\*.dll \
                             (xcopy /Q /S /I /Y  ..\lib\Debug\*.dll ..\bin\Debug)
             Release::postbuild += if exist ..\lib\Release\*.dll \
                             (xcopy /Q /S /I /Y  ..\lib\Release\*.dll ..\bin\Release)

         } else {
             postbuild += mkdir -p $(MY1_ROOT)/bin/$(Configuration)
             postbuild += if [ -e $(MY1_ROOT)/lib/$(Configuration)/*.so ]; \
                             then \
                                 ln -sf $(MY1_ROOT)/lib/$(Configuration)/*.so  $(MY1_ROOT)/bin/$(Configuration); \
                          fi
         }

         specific(prop:microsoft) {
             postbuild += call postbuild.pl
         } else {
             postbuild += ./postbuild.pl
         }
     }

     mpc.pl -type vc10 my1.mpc  (same outcome with vc9) =>

        <PostBuildEvent>
          <Command>if exist ..\lib\Debug\*.dll (xcopy /Q /S /I /Y ..\lib\Debug\*.dll ..\bin\Debug) call postbuild.pl</Command>
        </PostBuildEvent>

     The "&amp;" has disappeared.