]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10725: [Build-System] Add DownloadPackageTask in order to use in props instead...
authorAndrey Volk <andywolk@gmail.com>
Tue, 17 Oct 2017 18:40:08 +0000 (21:40 +0300)
committerAndrey Volk <andywolk@gmail.com>
Tue, 17 Oct 2017 20:13:27 +0000 (23:13 +0300)
Freeswitch.2015.sln
libs/win32/Download V8.2015.vcxproj [deleted file]
libs/win32/v8/libv8.2015.vcxproj
w32/downloadpackage.task [new file with mode: 0644]
w32/v8-version.props
w32/v8.props

index 3d9fcd39791ea3ad4989d5458170a201c3b902a6..53df084d54c7eb75d3c1eca0763576fd43aa4584 100644 (file)
@@ -564,8 +564,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcbt", "libs\win32\libcbt
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_cielab_luts", "libs\spandsp\src\msvc\make_cielab_luts.2015.vcxproj", "{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download V8", "libs\win32\Download V8.2015.vcxproj", "{13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}"\r
-EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libv8", "libs\win32\v8\libv8.2015.vcxproj", "{AB03E82B-48B1-4374-B32A-A1AF83DDC6C2}"\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OPUS", "libs\win32\Download OPUS.2015.vcxproj", "{092124C9-09ED-43C7-BD6D-4AE5D6B3C547}"\r
@@ -2528,17 +2526,6 @@ Global
                {85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.Release|Win32.Build.0 = All|Win32\r
                {85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.Release|x64.ActiveCfg = All|Win32\r
                {85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.Release|x64.Build.0 = All|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.All|Win32.ActiveCfg = Release|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.All|Win32.Build.0 = Release|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.All|x64.ActiveCfg = Release|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.Debug|Win32.ActiveCfg = Debug|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.Debug|Win32.Build.0 = Debug|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.Debug|x64.ActiveCfg = Debug|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.Debug|x64.Build.0 = Debug|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.Release|Win32.ActiveCfg = Release|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.Release|Win32.Build.0 = Release|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.Release|x64.ActiveCfg = Release|Win32\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}.Release|x64.Build.0 = Release|Win32\r
                {AB03E82B-48B1-4374-B32A-A1AF83DDC6C2}.All|Win32.ActiveCfg = Debug|x64\r
                {AB03E82B-48B1-4374-B32A-A1AF83DDC6C2}.All|x64.ActiveCfg = Debug|x64\r
                {AB03E82B-48B1-4374-B32A-A1AF83DDC6C2}.All|x64.Build.0 = Debug|x64\r
@@ -3228,7 +3215,6 @@ Global
                {2386B892-35F5-46CF-A0F0-10394D2FBF9B} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
                {77BC1DD2-C9A1-44D7-BFFA-1320370CACB9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
                {85F0CF8C-C7AB-48F6-BA19-CC94CF87F981} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
                {AB03E82B-48B1-4374-B32A-A1AF83DDC6C2} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
                {092124C9-09ED-43C7-BD6D-4AE5D6B3C547} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
                {ED2CA8B5-8E91-4296-A120-02BB0B674652} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
diff --git a/libs/win32/Download V8.2015.vcxproj b/libs/win32/Download V8.2015.vcxproj
deleted file mode 100644 (file)
index 64ede7f..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectName>Download V8</ProjectName>\r
-    <ProjectGuid>{13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}</ProjectGuid>\r
-    <RootNamespace>Download V8</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Utility</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Utility</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <Import Project="$(SolutionDir)\w32\extdll.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="..\..\w32\v8-version.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="..\..\w32\v8-version.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\V8\$(Configuration)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\V8\$(Configuration)\</IntDir>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <BuildLog>\r
-      <Path>$(IntDir)BuildLog $(ProjectName).htm</Path>\r
-    </BuildLog>\r
-    <PreBuildEvent>\r
-      <Command>\r
-      </Command>\r
-    </PreBuildEvent>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <BuildLog>\r
-      <Path>$(IntDir)BuildLog $(ProjectName).htm</Path>\r
-    </BuildLog>\r
-    <PreBuildEvent>\r
-      <Command>\r
-      </Command>\r
-    </PreBuildEvent>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <CustomBuild Include="cleancount">\r
-      <FileType>Document</FileType>\r
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Downloading V8.</Message>\r
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">if not exist "$(ProjectDir)..\v8-$(V8Version)" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/v8-$(V8Version).tar.bz2 "$(ProjectDir).."\r
-if not exist "$(ProjectDir)..\v8-$(V8Version)\third_party\cygwin" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/v8-$(V8Version)-win.tar.bz2 "$(ProjectDir).."\r
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\v8-$(V8Version);%(Outputs)</Outputs>\r
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Downloading V8.</Message>\r
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">if not exist "$(ProjectDir)..\v8-$(V8Version)" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/v8-$(V8Version).tar.bz2 "$(ProjectDir).."\r
-if not exist "$(ProjectDir)..\v8-$(V8Version)\third_party\cygwin" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/v8-$(V8Version)-win.tar.bz2 "$(ProjectDir).."\r
-</Command>\r
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)..\v8-$(V8Version);%(Outputs)</Outputs>\r
-    </CustomBuild>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
index d4ccafc66e77ed9b2f90072286a3285826d00cbe..7d9848badd036794450a71a8287ff9dd238074ef 100644 (file)
     <CLRSupport>false</CLRSupport>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <Import Project="$(SolutionDir)\w32\v8.props" />\r
   <Import Project="$(SolutionDir)\w32\extdll.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="..\..\..\w32\v8-version.props" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="..\..\..\w32\v8-version.props" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="..\..\..\w32\v8-version.props" />\r
   </ImportGroup>\r
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="..\..\..\w32\v8-version.props" />\r
   </ImportGroup>\r
   <PropertyGroup Label="UserMacros" />\r
   <PropertyGroup>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)..\..\v8-$(V8Version);%(Outputs)</Outputs>\r
     </CustomBuild>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\Download V8.2015.vcxproj">\r
-      <Project>{13077E43-E5DF-4EF6-9EB1-2A0B22E8DFAF}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
diff --git a/w32/downloadpackage.task b/w32/downloadpackage.task
new file mode 100644 (file)
index 0000000..ccc5812
--- /dev/null
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ImportGroup Label="PropertySheets">
+    <Import Project="basedir.props" Condition=" '$(BaseDirImported)' == ''"/>
+  </ImportGroup>
+
+  <UsingTask TaskName="DownloadPackageTask" 
+             TaskFactory="CodeTaskFactory"  
+             AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >  
+             <ParameterGroup>  
+                <package Required="true" />   
+                <expectfileordirectory Required="true" />   
+                <outputfolder />   
+                <outputfilename />   
+                <extractto />   
+             </ParameterGroup>  
+             <Task>  
+                <Reference Include="Microsoft.Build" />
+                <Reference Include="Microsoft.Build.Framework" />
+                <Reference Include="Microsoft.Build.Utilities.Core" />
+                <Code Type="Class" Language="cs">
+<![CDATA[  
+using System;
+using System.IO;
+using System.Threading;
+using Microsoft.Build.Framework;
+using System.Reflection;
+using Microsoft.Build.Execution;
+using System.Net;
+using System.ComponentModel;
+using System.Diagnostics;
+
+    public class DownloadPackageTask : Microsoft.Build.Utilities.Task, Microsoft.Build.Framework.ICancelableTask
+    {
+        public class State
+        {
+            public string filename;
+            public int progress;
+        }
+
+        protected ManualResetEvent TaskCanceled { get; private set; }
+        public void Cancel()
+        {
+            TaskCanceled.Set();
+        }
+
+        private string basedir;
+
+        [Required]
+        public string package { get; set; }
+        [Required]
+        public string expectfileordirectory { get; set; }
+
+        public string outputfolder { get; set; }
+        public string outputfilename { get; set; }
+        public string extractto { get; set; }
+
+        internal static bool FileOrDirectoryExists(string name)
+        {
+            return (Directory.Exists(name) || File.Exists(name));
+        }
+
+        public override bool Execute()
+        {
+            basedir = Path.GetFullPath(@"$(BaseDir)");
+
+            TaskCanceled = new ManualResetEvent(false);
+
+            Log.LogMessage(MessageImportance.High,
+                 "Checking for package \"" + package + "\".");          
+
+            //Log.LogMessage(MessageImportance.High,
+            //    "BaseDir \"" + basedir + "\"");
+
+            //Log.LogMessage(MessageImportance.High,
+            //    "expectfileordirectory \"" + expectfileordirectory + "\"");
+            
+            string librarypath = Path.Combine(basedir, "libs");
+
+            Mutex m = new Mutex(false, Path.Combine(librarypath, package).Replace(":", "/").Replace("\\","/"));
+
+            m.WaitOne();
+
+            if (FileOrDirectoryExists(expectfileordirectory))
+            {
+                Log.LogMessage(MessageImportance.High,
+                    "Package \"" + package + "\" exists. Do nothing.");
+            }
+            else
+            {               
+                Log.LogMessage(MessageImportance.High,
+                    "Start downloading package \"" + package + "\".");
+
+                using (var client = new System.Net.WebClient())
+                {
+                    Uri uri = new Uri(package);
+                    string urifilename = Path.GetFileName(uri.LocalPath);
+                    string output = Path.Combine(outputfolder ?? librarypath, (outputfilename ?? urifilename));
+
+                    //if (!File.Exists(output)) // Uncomment to skip download if exists
+                    {
+                        var syncObject = new State
+                        {
+                            filename = urifilename,
+                            progress = -1
+                        };
+                        lock (syncObject)
+                        {
+                            client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
+                            client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
+                            client.DownloadFileAsync(uri, output, syncObject);
+
+                            while (!Monitor.Wait(syncObject, 1000))
+                            {
+                                if (TaskCanceled.WaitOne(0))
+                                {
+                                    client.CancelAsync();
+                                    Monitor.Wait(syncObject);
+
+                                    if (File.Exists(output))
+                                    {
+                                        Log.LogMessage(MessageImportance.High,
+                                            "Deleting incomplete file " + output + " for package \"" + package + "\".");
+                                        File.Delete(output);
+                                    }
+
+                                    Log.LogMessage(MessageImportance.High,
+                                            "Downloading canceled for package \"" + package + "\".");
+
+                                    break;
+                                }
+                            }
+                        }
+                    }
+
+                    if (File.Exists(output))
+                    {
+                        // Successful download.
+                        if (Path.GetExtension(output) != ".exe")
+                        {
+                            Extract(output);
+                            string filename = Path.Combine(Path.GetDirectoryName(output), Path.GetFileNameWithoutExtension(output));
+                            Log.LogMessage(MessageImportance.High,
+                                "Filename \"" + filename + "\".");
+
+                            if (File.Exists(filename))
+                            {
+                                Extract(filename);
+                                File.Delete(filename);
+                            }
+                        }
+                    }
+                }
+
+                if (!TaskCanceled.WaitOne(0))
+                {
+                    Log.LogMessage(MessageImportance.High,
+                        "Downloading finished for package \"" + package + "\".");
+                }
+            }
+
+            m.ReleaseMutex();
+
+            return true;
+        }
+
+        private void Extract(string filename)
+        {
+            string extracttofolder = Path.GetFullPath((extractto ?? Path.GetDirectoryName(filename)) + "/");
+
+            string arctool = Path.Combine(new string[] { basedir, "libs", "win32", "7za1701.exe" });
+            string args = " x \"" + filename + "\" -y -o\"" + extracttofolder + "\"";
+
+            Log.LogMessage(MessageImportance.High,
+                  "arctool : " + arctool);
+            Log.LogMessage(MessageImportance.High,
+                  "args : " + args);
+            Log.LogMessage(MessageImportance.High,
+                  "WorkingDirectory : " + Path.GetDirectoryName(arctool));                    
+
+            var proc = new Process
+            {
+                StartInfo = new ProcessStartInfo
+                {
+                    FileName = arctool,
+                    Arguments = args,
+                    UseShellExecute = false,
+                    RedirectStandardOutput = true,
+                    CreateNoWindow = true,
+                    WorkingDirectory = Path.GetDirectoryName(arctool)
+                }
+            };
+
+            proc.Start();
+
+            while (!proc.StandardOutput.EndOfStream)
+            {
+                string line = proc.StandardOutput.ReadLine();
+
+                Log.LogMessage(MessageImportance.High,
+                    Path.GetFileName(filename) + " : " + line);
+
+                if (TaskCanceled.WaitOne(0))
+                {
+                    proc.Kill();
+                    break;
+                }
+            }
+
+            proc.WaitForExit();
+        }
+
+        private void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
+        {
+            lock (e.UserState)
+            {
+                //releases blocked thread
+                Monitor.Pulse(e.UserState);
+            }
+        }
+
+        private string humanSize(double len)
+        {
+            string[] sizes = { "B", "KB", "MB", "GB", "TB" };
+            int order = 0;
+
+            while (len >= 1024 && order < sizes.Length - 1)
+            {
+                order++;
+                len = len / 1024;
+            }
+
+            return String.Format("{0:0.##} {1}", len, sizes[order]);
+        }
+
+        private void DownloadProgressCallback(object sender, DownloadProgressChangedEventArgs e)
+        {
+            if (((State)e.UserState).progress < e.ProgressPercentage)
+            {
+                ((State)e.UserState).progress = e.ProgressPercentage;
+
+                // Displays the transfer progress.
+                Log.LogMessage(MessageImportance.High, ((State)e.UserState).filename + " : downloaded " + humanSize(e.BytesReceived) + " of " + humanSize(e.TotalBytesToReceive) + " " + e.ProgressPercentage + " % complete...");
+            }
+        }
+    }
+]]>  
+                </Code>  
+             </Task>  
+  </UsingTask>  
+
+  <Target Name="7za" BeforeTargets="Build">  
+      <DownloadPackageTask 
+          package="http://files.freeswitch.org/downloads/win32/7za1701.exe" 
+          expectfileordirectory="$(BaseDir)libs/win32/7za1701.exe" 
+          outputfolder="$(BaseDir)libs/win32/" 
+          outputfilename="7za1701.exe"
+          extractto=""
+      />
+  </Target> 
+
+  <PropertyGroup>
+    <downloadpackagetask_Imported>true</downloadpackagetask_Imported>
+  </PropertyGroup>
+
+</Project>
\ No newline at end of file
index be5059ff9df75869c7f6123e4d2032d6b58fc6d4..a0b442cd5bf2ade4ff22eda7e0b128f140fd2df8 100644 (file)
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ImportGroup Label="PropertySheets" />\r
+  <ImportGroup Label="PropertySheets">\r
+    <Import Project="basedir.props" Condition=" '$(BaseDirImported)' == ''"/>\r
+  </ImportGroup>\r
   <PropertyGroup Label="UserMacros">\r
     <V8Version>5.6.326</V8Version>\r
   </PropertyGroup>\r
index 1368c703cd5238fa6f03ccbe963e267e715f71be..58449a57c15d131bf87524bcda887e91d838c54b 100644 (file)
@@ -3,7 +3,53 @@
   <ImportGroup Label="PropertySheets">\r
     <Import Project="curl.props" Condition=" '$(CurlPropsImported)' == '' "/>\r
     <Import Project="v8-version.props" Condition=" '$(V8VersionImported)' == '' "/>\r
+    <Import Project="downloadpackage.task" Condition=" '$(downloadpackagetask_Imported)' == '' " />\r
   </ImportGroup>\r
+\r
+  <PropertyGroup Label="UserMacros">\r
+    <V8libDir>$(BaseDir)libs\v8-$(V8Version)</V8libDir>\r
+  </PropertyGroup>\r
+\r
+  <!-- \r
+       Download Target.\r
+       Name must be unique. \r
+       By design, targets are executed only once per project.\r
+       \r
+       Usage:\r
+       \r
+       package: URI\r
+\r
+       expectfileordirectory: Skips the download and extraction if exists\r
+\r
+       outputfolder: Folder to store a downloaded file. \r
+                     By default "$(BaseDir)libs", if empty\r
+\r
+       outputfilename: If not empty, overrides filename from URI.\r
+                       .exe files don't get extracted\r
+\r
+       extractto: Folder to extract an archive to\r
+   -->\r
+\r
+  <Target Name="v8libTarget" BeforeTargets="CustomBuild" DependsOnTargets="7za">  \r
+      <DownloadPackageTask \r
+           package="http://files.freeswitch.org/downloads/libs/v8-$(V8Version).tar.bz2"\r
+           expectfileordirectory="$(V8libDir)\include\v8.h" \r
+           outputfolder=""\r
+           outputfilename="" \r
+           extractto="$(BaseDir)libs"\r
+      />\r
+  </Target> \r
+\r
+  <Target Name="v8libwinTarget" BeforeTargets="CustomBuild" DependsOnTargets="7za">  \r
+      <DownloadPackageTask \r
+           package="http://files.freeswitch.org/downloads/libs/v8-$(V8Version)-win.tar.bz2"\r
+           expectfileordirectory="$(V8libDir)\third_party\cygwin" \r
+           outputfolder=""\r
+           outputfilename="" \r
+           extractto="$(BaseDir)libs"\r
+      />\r
+  </Target> \r
+\r
   <ItemDefinitionGroup>\r
     <ClCompile>\r
       <WarningLevel>Level3</WarningLevel>\r