[pjsip] Visual Studio 2010 support

Miljenko Cvjetko mcvjetko at holisticware.net
Fri Feb 10 12:21:05 EST 2012


Howdy

OK. I guess this is solved:


  Visual Studio 2010 VC++ Solution Conversion HowTo


    Perequisites - Tools

  * XSLT Trafo utility (msxsl.exe)
    For changing/replacing/deleting nodes in XML config files of Visual
    Studio
    TODO: saxon?
  * SED (MSDOS port)
    for replacements in files


    Steps old - manual what was done!

 1. Download sources or grab our zip with everything in it.
 2. Unzip sources with 01-unzip-sources.bat
 3. Backup C/C++ project files with 02-backup-vcproj-files.bat

       foreach (File f = *.vcrpoj in folders)
       {
         copy(f, f.mc++.vcproj);
       }
           

 4. Visual Studio 2010 does not support Mobile platforms (Windows Mobile
    5,6, Pocket PC and Smartphone) so remove those from
    with the help of XSLT transformation

           remove-mobile-dependencies.xslt
           requirements: c:\bin\msxsl.exe
           

 5. Prepare PJSIP for conversion and compilation
      * Conversion:
      * Compilation:

           copies
             config-site-sample.h
             to
             config-site.h
                 


    Conversion

 1. pjproject-vs8-common-defaults.vsprops - does not contain:

       <UserMacro
         Name="TargetCPU"
         Value="i386"
       />
           

    like
    pjproject-vs8-win32-common-defaults.vsprops
    Causes Wranings:

       MSB4211:
       .\PJSIP\pjproject-1.12\build\vs\pjproject-vs8-win32-common-defaults.props;
       The property "TargetCPU" is being set to a value for the first time, but it was already consumed at
       ".\PJSIP\pjproject-1.12\build\vs\pjproject-vs8-common-defaults.props".
           

 2. Well known conversion issue and Warning MSB8012 has turned out as
    non-problematic!
    http://blogs.msdn.com/b/vcblog/archive/2010/03/02/visual-studio-2010-c-project-upgrade-guide.aspx
    <http://blogs.msdn.com/b/vcblog/archive/2010/03/02/visual-studio-2010-c-project-upgrade-guide.aspx>


       MSB8012:
       $(TargetPath) ('.\PJSIP\pjproject-1.12\third_party\build\gsm\.\output\libgsmcodec--Win32-vc8-Debug\libgsmcodec.lib')
       does not match the Librarian's OutputFile property value '..\..\lib\libgsmcodec-i386-Win32-vc8-Debug.lib'
       ('.\SIP\lib\libgsmcodec-i386-Win32-vc8-Debug.lib') in project configuration 'Debug|Win32'.
       This may cause your project to build incorrectly.
       To correct this, please make sure that $(TargetPath) property value matches the value specified in %(Lib.OutputFile).
           


    Compilation and Linking

 1. DirectX SDK libray path:
     1. PJSIP 1.12
        Problem - Linker Error:

        Error  78  error LNK1181: cannot open input file 'dxguid.lib'  D:\SRC\HolisticWare\HolisticWare_VoIP\PJSIP\pjproject-1.12\pjsip-apps\build\LINK  sample_debug
        Error  79  error MSB6006: "link.exe" exited with code 1181.  C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets  275  6  sample_debug
                   

        Solution/Workaround:
        change
          * Property Pages/Linker/General/Additional Library Directories:
            from:
            to: "C:\Program Files\Microsoft DirectX SDK (March
            2009)\Lib\x86"
            For projects:
              o pjmedia_test
              o pjsua
              o pjsip_test
          * Property Pages/Configuration Properties/VC++
            Directories/Library Directories:
            from: $(LibraryPath)
            to: $(LibraryPath);"C:\Program Files\Microsoft DirectX SDK
            (March 2009)\Lib\x86"
            For projects:
              o samples
              o sample_debug
              o pjsystest
          * PJSIP 2.0 Beta
            Problem - Linker Error:

            Error  80  error LNK1104: cannot open file 'dxguid.lib'  D:\SRC\HolisticWare\HolisticWare_VoIP\PJSIP\pjproject-2.0-beta\pjsip-apps\build\LINK  samples
            Error  82  error MSB3073: The command "nmake /NOLOGO /S /f Samples-vc.mak BUILD_MODE=debug VC_VER=8 /a" exited with code 2.  C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MakeFile.Targets  43  6  samples
            Error  81  error U1077: '"c:\Program Files\Microsoft Visual Studio 10.0\VC\bin\cl.EXE"' : return code '0x2'  D:\SRC\HolisticWare\HolisticWare_VoIP\PJSIP\pjproject-2.0-beta\pjsip-apps\build\NMAKE  samples
                       

            Solution/Workaround:
            change
              o Property Pages/Linker/General/Additional Library
                Directories:
                from:
                to: "C:\Program Files\Microsoft DirectX SDK (March
                2009)\Lib\x86"
                For projects:
                  + sample_debug
              o Property Pages/Configuration Properties/VC++
                Directories/Library Directories:
                from: $(LibraryPath)
                to: $(LibraryPath);"C:\Program Files\Microsoft DirectX
                SDK (March 2009)\Lib\x86"
                For projects:
                  + samples
                  + pjsua
                  + pjsip_test
                  + pjsua
                  + pjmedia_test
                  + pjsystest


    Steps - automagic explained

File list and steps to convert (just start batch files in this order):

 1. 01-unzip-sources.bat
    Hard to say what it does

    echo off

    set ZIP=c:\bin\7za.exe x

    %ZIP% pjproject-1.12.zip
    %ZIP% pjproject-2.0-beta.zip

    pause
           

 2. 02-backup-vcproj-files.bat
    Backing up *.vcproj files before import/conversion

    @echo off

    setlocal EnableDelayedExpansion

    set SED=c:\bin\sed.exe

    FOR /F "tokens=*" %%s IN ('dir /s /b *.vcproj') DO (
       echo =======================================================================
       set FILENAME_PATH_VCPROJ=%%s
       set FILENAME=%%~ns
       set FILENAME_W_EXT=%%~nxs
       set PATH=%%~ps

       echo FILENAME_PATH_VCPROJ=%%s
       echo FILENAME=%%~ns
       echo FILENAME_W_EXT=%%~nxs
       echo PATH=%%~ps
       echo -------------------------------------------------
       set BACKUP=!FILENAME_PATH_VCPROJ:.vcproj=.vcproj.mc++.bckp!

       echo BACKUP=!BACKUP!

       echo !FILENAME_PATH_VCPROJ!
       echo !BACKUP!

       del !BACKUP!
       type !FILENAME_PATH_VCPROJ!>  !BACKUP!

    )

    dir /s /b *.vcproj

    dir /s /b *.bckp

    pause
           

 3. 03-remove-mobile-platforms-from-vcproj-files.bat
    Batch script that collects .vcproj files and applies XSLT trafo on
    them using msxsl.exe

    @echo off

    setlocal EnableDelayedExpansion

    ::TODO: saxon
    set XSLT_TRAFO_UTIL=c:\bin\msxsl.exe
    set XSLT_TRAFO=.\03-remove-mobile-platforms-from-vcproj-files.xslt


    FOR /F "tokens=*" %%s IN ('dir /s /b *.vcproj') DO (
       echo =======================================================================
       set FILENAME_PATH_VCPROJ=%%s
       set FILENAME=%%~ns
       set FILENAME_W_EXT=%%~nxs
       set PATH=%%~ps

       echo FILENAME_PATH_VCPROJ=%%s
       echo FILENAME=%%~ns
       echo FILENAME_W_EXT=%%~nxs
       echo PATH=%%~ps
       echo -------------------------------------------------

       echo !FILENAME_PATH_VCPROJ!
       !XSLT_TRAFO_UTIL! ^
         !FILENAME_PATH_VCPROJ! ^
         !XSLT_TRAFO! ^
         -o !FILENAME_PATH_VCPROJ!


    )

    pause
           

 4. 03-remove-mobile-platforms-from-vcproj-files.xslt
    Actual XSLT

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
         xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
    >
         <!--<xsl:output method="xml" indent="yes"/>-->

       <!--
       -->
       <xsl:template match="@* | node()">
           <xsl:copy>
             <xsl:apply-templates select="@* | node()"/>
           </xsl:copy>
       </xsl:template>

         <!--<xsl:template match="AA">
           <xsl:copy>
             <xsl:apply-templates select="*[. = 'bar']"/>
           </xsl:copy>
         </xsl:template>-->


       <!--
         Empty templates - swallowing nodes
       -->
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug|Windows Mobile 6 Standard SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug|Windows Mobile 6 Professional SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug|Pocket PC 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug|Smartphone 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)']"/>

       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release|Windows Mobile 6 Standard SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release|Windows Mobile 6 Professional SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release|Pocket PC 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release|Smartphone 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)']"/>

       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Static|Pocket PC 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Static|Smartphone 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)']"/>

       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Dynamic|Pocket PC 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Dynamic|Smartphone 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)']"/>

       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Dynamic|Pocket PC 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Dynamic|Smartphone 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)']"/>

       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Static|Pocket PC 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Static|Smartphone 2003 (ARMV4)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)']"/>
       <xsl:template match="/VisualStudioProject/Configurations/Configuration[@Name='Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)']"/>
    </xsl:stylesheet>
           

 5. 04-pjsip-prepare.bat
    Modifying (sedding with SED) .vsprops files (inserting xml needed to
    silence some warnings)
    Creating new Solutions that will be modified
    Preparing for test compilation config_site.h

    @echo off


    set SED=c:\bin\sed.exe

    echo============================================================================
    echo sed - inserting into pjproject-vs8-common-defaults.vsprops
    echo to silence VS conversion warning MSB4211
    :: -i.bak backup extension for inline replacement
    %SED% -f 04-pjsip-prepare-pjproject-vs8-common-defaults.vsprops.sed ^
       .\pjproject-1.12\build\vs\pjproject-vs8-common-defaults.vsprops ^
       >.\pjproject-1.12\build\vs\pjproject-vs8-common-defaults.vsprops.new

    %SED% -f 04-pjsip-prepare-pjproject-vs8-common-defaults.vsprops.sed ^
       .\pjproject-2.0-beta\build\vs\pjproject-vs8-common-defaults.vsprops ^
       >.\pjproject-2.0-beta\build\vs\pjproject-vs8-common-defaults.vsprops.new


    echo copying backups etc...
    type ^
       .\pjproject-1.12\build\vs\pjproject-vs8-common-defaults.vsprops ^
       >.\pjproject-1.12\build\vs\pjproject-vs8-common-defaults.vsprops.bak

    type ^
       .\pjproject-2.0-beta\build\vs\pjproject-vs8-common-defaults.vsprops ^
       >.\pjproject-2.0-beta\build\vs\pjproject-vs8-common-defaults.vsprops.bak

    type ^
       .\pjproject-1.12\build\vs\pjproject-vs8-common-defaults.vsprops.new ^
       >.\pjproject-1.12\build\vs\pjproject-vs8-common-defaults.vsprops

    type ^
       .\pjproject-2.0-beta\build\vs\pjproject-vs8-common-defaults.vsprops.new ^
       >.\pjproject-2.0-beta\build\vs\pjproject-vs8-common-defaults.vsprops

    echo============================================================================
    type ^
       .\pjproject-1.12\build\vs\pjproject-vs8-common-defaults.vsprops

    echo============================================================================
    echo Creating new Soultions
    type ^
       pjproject-1.12\pjproject-vs8.sln ^
       >>pjproject-1.12\pjproject-vs10.sln

    type ^
       pjproject-2.0-beta\pjproject-vs8.sln ^
       >>pjproject-2.0-beta\pjproject-vs10.sln

    echo============================================================================
    echo Preparing files for Compilation (config_site.h)
    type ^
       pjproject-2.0-beta\pjlib\include\pj\config_site_sample.h ^
       >>pjproject-2.0-beta\pjlib\include\pj\config_site.h

    type ^
       pjproject-1.12\pjlib\include\pj\config_site_sample.h  ^
       >>pjproject-1.12\pjlib\include\pj\config_site.h

    echo============================================================================

    set DEVENV="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"
    ::%DEVENV% pjproject-1.12\pjproject-vs10.sln
    ::%DEVENV% pjproject-2.0-beta\pjproject-vs10.sln

    pause
           

 6. 04-pjsip-prepare-pjproject-vs8-common-defaults.vsprops.sed


Screenshots and zipped code:
http://www.holisticware.net/HolisticWare/Know-How/development/visual-studio/visual-studio-2010-vcpp-solution-conversion-howto.aspx

let me know if something is unclear or wrong....

regards

mel

On 2012.02.07 06:19, Jörg Schwarzenberg wrote:
> Hi!
>
>> How far is support for Visual Studio 2010?
>
> On Sat, 22 Oct 2011 ruiyun.wen at gmail.com posted his vs2010 project 
> files for 1.10 in this mailing list.
>
> He said: "No completed test, but build fine."
>
> For the 2.x branch nothing has been posted yet.
>
>
> Best Regards
> Jörg
>
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org


-- 
Miljenko Cvjetko dipl.ing. ET
	Direktor/CEO
	Projektant rjes(enja/Solution Architect	
	Razvojni programer/Senior developer
	Voditelj projekta/Project Manager

IX juz(na obala 13
Kajzerica Zagreb
T: 385 1 7775555
M: 385 91 557 447 3
F: 385 1 7779556
e: mcvjetko at holisticware.net
w: http://www.holisticware.net

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20120210/197fbd26/attachment-0001.html>


More information about the pjsip mailing list