diff --git a/build/windows10/liblinphone-tester/App.xaml b/build/windows10/liblinphone-tester/App.xaml new file mode 100644 index 000000000..8ed2e3f95 --- /dev/null +++ b/build/windows10/liblinphone-tester/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/build/windows10/liblinphone-tester/App.xaml.cs b/build/windows10/liblinphone-tester/App.xaml.cs new file mode 100644 index 000000000..e80598ed7 --- /dev/null +++ b/build/windows10/liblinphone-tester/App.xaml.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.ApplicationModel; +using Windows.ApplicationModel.Activation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409 + +namespace liblinphone_tester +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + sealed partial class App : Application + { + /// + /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service. + /// + public static Microsoft.ApplicationInsights.TelemetryClient TelemetryClient; + + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + TelemetryClient = new Microsoft.ApplicationInsights.TelemetryClient(); + + this.InitializeComponent(); + this.Suspending += OnSuspending; + } + + /// + /// Invoked when the application is launched normally by the end user. Other entry points + /// will be used such as when the application is launched to open a specific file. + /// + /// Details about the launch request and process. + protected override void OnLaunched(LaunchActivatedEventArgs e) + { + +#if DEBUG + if (System.Diagnostics.Debugger.IsAttached) + { + this.DebugSettings.EnableFrameRateCounter = true; + } +#endif + + Frame rootFrame = Window.Current.Content as Frame; + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (rootFrame == null) + { + // Create a Frame to act as the navigation context and navigate to the first page + rootFrame = new Frame(); + + rootFrame.NavigationFailed += OnNavigationFailed; + + if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) + { + //TODO: Load state from previously suspended application + } + + // Place the frame in the current Window + Window.Current.Content = rootFrame; + } + + if (rootFrame.Content == null) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + rootFrame.Navigate(typeof(MainPage), e.Arguments); + } + // Ensure the current window is active + Window.Current.Activate(); + } + + /// + /// Invoked when Navigation to a certain page fails + /// + /// The Frame which failed navigation + /// Details about the navigation failure + void OnNavigationFailed(object sender, NavigationFailedEventArgs e) + { + throw new Exception("Failed to load Page " + e.SourcePageType.FullName); + } + + /// + /// Invoked when application execution is being suspended. Application state is saved + /// without knowing whether the application will be terminated or resumed with the contents + /// of memory still intact. + /// + /// The source of the suspend request. + /// Details about the suspend request. + private void OnSuspending(object sender, SuspendingEventArgs e) + { + var deferral = e.SuspendingOperation.GetDeferral(); + //TODO: Save application state and stop any background activity + deferral.Complete(); + } + } +} diff --git a/build/windows10/liblinphone-tester/ApplicationInsights.config b/build/windows10/liblinphone-tester/ApplicationInsights.config new file mode 100644 index 000000000..8a6452a34 --- /dev/null +++ b/build/windows10/liblinphone-tester/ApplicationInsights.config @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/windows10/liblinphone-tester/Assets/Logo.png b/build/windows10/liblinphone-tester/Assets/Logo.png new file mode 100644 index 000000000..ecfbad551 Binary files /dev/null and b/build/windows10/liblinphone-tester/Assets/Logo.png differ diff --git a/build/windows10/liblinphone-tester/Assets/SmallLogo.png b/build/windows10/liblinphone-tester/Assets/SmallLogo.png new file mode 100644 index 000000000..ecfbad551 Binary files /dev/null and b/build/windows10/liblinphone-tester/Assets/SmallLogo.png differ diff --git a/build/windows10/liblinphone-tester/Assets/SplashScreen.png b/build/windows10/liblinphone-tester/Assets/SplashScreen.png new file mode 100644 index 000000000..0d83a7980 Binary files /dev/null and b/build/windows10/liblinphone-tester/Assets/SplashScreen.png differ diff --git a/build/windows10/liblinphone-tester/Assets/WideLogo.scale-100.png b/build/windows10/liblinphone-tester/Assets/WideLogo.scale-100.png new file mode 100644 index 000000000..85fd4db8f Binary files /dev/null and b/build/windows10/liblinphone-tester/Assets/WideLogo.scale-100.png differ diff --git a/build/windows10/liblinphone-tester/DataModel/UnitTestDataSource.cs b/build/windows10/liblinphone-tester/DataModel/UnitTestDataSource.cs new file mode 100644 index 000000000..a5bc5bdc3 --- /dev/null +++ b/build/windows10/liblinphone-tester/DataModel/UnitTestDataSource.cs @@ -0,0 +1,251 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using liblinphone_tester_runtime_component; +using System.Collections.ObjectModel; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Media; +using System.ComponentModel; +using Windows.UI; +using Windows.UI.Xaml.Documents; +using Windows.UI.Core; + +namespace liblinphone_tester.DataModel +{ + public class OutputTrace + { + public OutputTrace(String lev, String msg) + { + Level = lev; + Msg = msg; + } + + public String Level { get; private set; } + public String Msg { get; private set; } + } + + public class UnitTestSuite + { + public UnitTestSuite(string name) + { + Name = name; + Cases = new ObservableCollection(); + Selected = false; + } + + public string Name { get; private set; } + public bool Selected + { + get { return Cases.All(x => x.Selected); } + set + { + foreach (UnitTestCase c in Cases) + { + c.Selected = value; + } + } + } + public ObservableCollection Cases { get; private set; } + } + + public enum UnitTestCaseState + { + NotRun, + Success, + Failure + } + + public class UnitTestCase : INotifyPropertyChanged + { + public UnitTestCase(UnitTestSuite suite, string name) + { + _suite = new WeakReference(suite); + Name = name; + Selected = false; + State = UnitTestCaseState.NotRun; + Traces = new ObservableCollection(); + } + + public UnitTestSuite Suite + { + get { return _suite.Target as UnitTestSuite; } + } + public string Name { get; private set; } + public bool Selected + { + get { return _selected; } + set + { + _selected = value; + RaisePropertyChanged("Selected"); + } + } + public UnitTestCaseState State + { + get { return _state; } + set + { + _state = value; + RaisePropertyChanged("State"); + } + } + public ObservableCollection Traces + { + get { return _traces; } + set + { + _traces = value; + RaisePropertyChanged("Traces"); + } + } + public CoreDispatcher Dispatcher { get; set; } + + public event PropertyChangedEventHandler PropertyChanged; + + protected void RaisePropertyChanged(string name) + { + if (PropertyChanged != null) + { + PropertyChanged(this, new PropertyChangedEventArgs(name)); + } + } + + private WeakReference _suite; + private bool _selected; + private UnitTestCaseState _state; + private ObservableCollection _traces; + } + + public sealed class UnitTestDataSource + { + private static UnitTestDataSource _unitTestDataSource = new UnitTestDataSource(); + private ObservableCollection _suites = new ObservableCollection(); + + public ObservableCollection Suites + { + get { return this._suites; } + } + + public static IEnumerable GetSuites(LibLinphoneTester tester) + { + return _unitTestDataSource.FillSuites(tester); + } + + private IEnumerable FillSuites(LibLinphoneTester tester) + { + if (this.Suites.Count != 0) return this.Suites; + for (int i = 0; i < tester.nbTestSuites(); i++) + { + UnitTestSuite suite = new UnitTestSuite(tester.testSuiteName(i)); + for (int j = 0; j < tester.nbTests(suite.Name); j++) + { + suite.Cases.Add(new UnitTestCase(suite, tester.testName(suite.Name, j))); + } + this.Suites.Add(suite); + } + return this.Suites; + } + } + + public sealed class UnitTestCaseStateToSymbolConverter : IValueConverter + { + object IValueConverter.Convert(object value, Type targetType, object parametr, string language) + { + if (!value.GetType().Equals(typeof(UnitTestCaseState))) + { + throw new ArgumentException("Only UnitTestCaseState is supported"); + } + if (targetType.Equals(typeof(Symbol))) + { + switch ((UnitTestCaseState)value) + { + case UnitTestCaseState.Success: + return Symbol.Like; + case UnitTestCaseState.Failure: + return Symbol.Dislike; + case UnitTestCaseState.NotRun: + default: + return Symbol.Help; + } + } + else + { + throw new ArgumentException(string.Format("Unsupported type {0}", targetType.FullName)); + } + } + + object IValueConverter.ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } + } + + public sealed class UnitTestCaseStateToSymbolColorConverter : IValueConverter + { + object IValueConverter.Convert(object value, Type targetType, object parameter, string language) + { + if (!value.GetType().Equals(typeof(UnitTestCaseState))) + { + throw new ArgumentException("Only UnitTestCaseState is supported"); + } + if (targetType.Equals(typeof(Brush))) + { + switch ((UnitTestCaseState)value) + { + case UnitTestCaseState.Success: + return new SolidColorBrush(Colors.ForestGreen); + case UnitTestCaseState.Failure: + return new SolidColorBrush(Colors.IndianRed); + case UnitTestCaseState.NotRun: + default: + return new SolidColorBrush(Colors.LightGray); + } + } + else + { + throw new ArgumentException(string.Format("Unsupported format {0}", targetType.FullName)); + } + } + + object IValueConverter.ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } + } + + public sealed class OutputTraceLevelToColorConverter : IValueConverter + { + object IValueConverter.Convert(object value, Type targetType, object parameter, string language) + { + if (!value.GetType().Equals(typeof(String))) + { + throw new ArgumentException("Only String is supported"); + } + if (targetType.Equals(typeof(Brush))) + { + if ((String)value == "Error") + { + return new SolidColorBrush(Colors.IndianRed); + } + else if ((String)value == "Warning") + { + return new SolidColorBrush(Colors.Orange); + } + return new SolidColorBrush(Colors.Black); + } + else + { + throw new ArgumentException(string.Format("Unsupported format {0}", targetType.FullName)); + } + } + + object IValueConverter.ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } + } +} diff --git a/build/windows10/liblinphone-tester/MainPage.xaml b/build/windows10/liblinphone-tester/MainPage.xaml new file mode 100644 index 000000000..2cdea219c --- /dev/null +++ b/build/windows10/liblinphone-tester/MainPage.xaml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/windows10/liblinphone-tester/MainPage.xaml.cs b/build/windows10/liblinphone-tester/MainPage.xaml.cs new file mode 100644 index 000000000..043713796 --- /dev/null +++ b/build/windows10/liblinphone-tester/MainPage.xaml.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; +using liblinphone_tester.DataModel; +using liblinphone_tester_runtime_component; +using System.Threading.Tasks; +using Windows.UI.Core; +using Windows.UI.Xaml.Documents; +using Windows.Storage; + +// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 + +namespace liblinphone_tester +{ + /// + /// An empty page that can be used on its own or navigated to within a Frame. + /// + public sealed partial class MainPage : Page, OutputTraceListener + { + public MainPage() + { + this.InitializeComponent(); + } + + protected override void OnNavigatedTo(NavigationEventArgs e) + { + base.OnNavigatedTo(e); + _suites = UnitTestDataSource.GetSuites(LibLinphoneTester.Instance); + TryAutoLaunch(); + } + + public IEnumerable Suites + { + get { return _suites; } + } + + private IEnumerable _suites; + + private void SelectAll_Click(object sender, RoutedEventArgs e) + { + bool allSelected = Suites.All(x => x.Selected); + foreach (UnitTestSuite suite in Suites) + { + suite.Selected = !allSelected; + } + } + + private void RunSelected_Click(object sender, RoutedEventArgs e) + { + int nbCases = 0; + foreach (UnitTestSuite suite in Suites) + { + foreach (UnitTestCase c in suite.Cases) + { + if (c.Selected) nbCases++; + } + } + if (nbCases == 0) return; + + PrepareRun(nbCases); + + var tup = new Tuple, bool?>(Suites, Verbose.IsChecked); + var t = Task.Factory.StartNew(async (object parameters) => + { + var p = parameters as Tuple, bool?>; + IEnumerable suites = p.Item1; + bool verbose = p.Item2 != null ? (bool)p.Item2 : false; + foreach (UnitTestSuite suite in suites) + { + foreach (UnitTestCase c in suite.Cases) + { + if (c.Selected) + { + await RunUnitTestCase(c, verbose); + } + } + } + }, tup); + } + + private void RunSingle_Click(object sender, RoutedEventArgs e) + { + PrepareRun(1); + + var tup = new Tuple(DisplayedTestCase, Verbose.IsChecked); + var t = Task.Factory.StartNew(async (object parameters) => + { + var p = parameters as Tuple; + UnitTestCase c = p.Item1; + bool verbose = p.Item2 != null ? (bool)p.Item2 : false; + await RunUnitTestCase(c, verbose); + }, tup); + } + + private void PrepareRun(int nbCases) + { + CommandBar.IsEnabled = false; + ProgressIndicator.IsEnabled = true; + ProgressIndicator.Minimum = 0; + ProgressIndicator.Maximum = nbCases; + ProgressIndicator.Value = 0; + LibLinphoneTester.Instance.setOutputTraceListener(this); + } + + private async Task RunUnitTestCase(UnitTestCase c, bool verbose) + { + UnitTestCaseState newState = UnitTestCaseState.NotRun; + await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => + { + RunningTestCase = c; + }); + await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => + { + c.Traces.Clear(); + }); + c.Dispatcher = Dispatcher; + if (LibLinphoneTester.Instance.run(c.Suite.Name, c.Name, verbose)) + { + newState = UnitTestCaseState.Failure; + } + else + { + newState = UnitTestCaseState.Success; + } + await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => + { + c.State = newState; + ProgressIndicator.Value += 1; + if (ProgressIndicator.Value == ProgressIndicator.Maximum) + { + UnprepareRun(); + } + }); + } + + private void UnprepareRun() + { + LibLinphoneTester.Instance.setOutputTraceListener(null); + RunningTestCase = null; + ProgressIndicator.IsEnabled = false; + CommandBar.IsEnabled = true; + } + + private void UnitTestCase_Click(object sender, ItemClickEventArgs e) + { + DisplayedTestCase = (e.ClickedItem as UnitTestCase); + TestResultPage.DataContext = DisplayedTestCase; + TestResultState.Visibility = Visibility.Visible; + TestResultRun.Visibility = Visibility.Visible; + } + + public async void outputTrace(String lev, String msg) + { + await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => + { + if (RunningTestCase != null) + { + RunningTestCase.Traces.Add(new OutputTrace(lev, msg)); + } + }); + } + + private async void TryAutoLaunch() + { + try + { + await ApplicationData.Current.LocalFolder.GetFileAsync("autolaunch"); + CommandBar.IsEnabled = false; + ProgressIndicator.IsIndeterminate = true; + ProgressIndicator.IsEnabled = true; + LibLinphoneTester.Instance.runAllToXml(); + if (LibLinphoneTester.Instance.AsyncAction != null) + { + LibLinphoneTester.Instance.AsyncAction.Completed += (asyncInfo, asyncStatus) => { + App.Current.Exit(); + }; + } + } + catch (Exception) { } + } + + private UnitTestCase RunningTestCase; + private UnitTestCase DisplayedTestCase; + } +} diff --git a/build/windows10/liblinphone-tester/Package.appxmanifest b/build/windows10/liblinphone-tester/Package.appxmanifest new file mode 100644 index 000000000..15b79a967 --- /dev/null +++ b/build/windows10/liblinphone-tester/Package.appxmanifest @@ -0,0 +1,48 @@ + + + + + + + + + + liblinphone-tester + Belledonne Communications + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/windows10/liblinphone-tester/Properties/AssemblyInfo.cs b/build/windows10/liblinphone-tester/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..d4b2a0c81 --- /dev/null +++ b/build/windows10/liblinphone-tester/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("liblinphone-tester")] +[assembly: AssemblyDescription("LibLinphone tester for Windows 10")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Belledonne Communications")] +[assembly: AssemblyProduct("liblinphone-tester-windows10")] +[assembly: AssemblyCopyright("Copyright © 2015 Belledonne Communications")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/build/windows10/liblinphone-tester/Properties/Default.rd.xml b/build/windows10/liblinphone-tester/Properties/Default.rd.xml new file mode 100644 index 000000000..80a960ce3 --- /dev/null +++ b/build/windows10/liblinphone-tester/Properties/Default.rd.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/windows10/liblinphone-tester/liblinphone-tester-runtime-component/liblinphone-tester-runtime-component.vcxproj b/build/windows10/liblinphone-tester/liblinphone-tester-runtime-component/liblinphone-tester-runtime-component.vcxproj new file mode 100644 index 000000000..be2267db5 --- /dev/null +++ b/build/windows10/liblinphone-tester/liblinphone-tester-runtime-component/liblinphone-tester-runtime-component.vcxproj @@ -0,0 +1,121 @@ + + + + + Debug + ARM + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + Win32 + + + Release + x64 + + + + + + + + + + + {8c1bc968-c5c8-4d4b-9ef3-d6a065fc7c97} + + + {6a18bbb9-08d1-41a8-be57-17fc992cc36f} + + + {b84d5c3b-6de5-49c8-b3dd-5eb67b01a527} + + + {266b769a-c04e-424c-9033-7209f0425bc0} + + + {878cf9d3-9761-479e-a715-a1de9f99cb78} + + + {9eb3fe8d-2d91-4d29-a3bb-98ddb51d45b7} + + + + {1ce10f06-8fad-437f-b3d7-3b7a8909a190} + WindowsRuntimeComponent + liblinphone-tester-runtime-component + liblinphone_tester_runtime_component + en-US + 14.0 + true + Windows Store + 8.2 + + + + DynamicLibrary + true + v140 + + + DynamicLibrary + false + true + v140 + + + + + + + + + + + + false + + + + NotUsing + IN_LINPHONE;_WINRT_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + $(ProjectDir)..\..\..\..\coreapi;$(ProjectDir)..\..\..\..\tester\common;$(ProjectDir)..\..\..\..\mediastreamer2\include;$(ProjectDir)..\..\..\..\oRTP\include;%(AdditionalIncludeDirectories) + + + Console + false + + + + + NotUsing + IN_LINPHONE;_WINRT_DLL;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + $(ProjectDir)..\..\..\..\coreapi;$(ProjectDir)..\..\..\..\tester\common;$(ProjectDir)..\..\..\..\mediastreamer2\include;$(ProjectDir)..\..\..\..\oRTP\include;%(AdditionalIncludeDirectories) + + + Console + false + + + + + + \ No newline at end of file diff --git a/build/windows10/liblinphone-tester/liblinphone-tester-static/liblinphone-tester-static.vcxproj b/build/windows10/liblinphone-tester/liblinphone-tester-static/liblinphone-tester-static.vcxproj new file mode 100644 index 000000000..08ad38958 --- /dev/null +++ b/build/windows10/liblinphone-tester/liblinphone-tester-static/liblinphone-tester-static.vcxproj @@ -0,0 +1,127 @@ + + + + + Debug + ARM + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + Win32 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {b6cdf482-7da3-43d4-9b12-70150106c191} + + + {025e28a8-9dfb-4015-ad56-19896aa6cc9b} + + + {88e3c241-eb6f-4c84-80dc-89b8961daf80} + + + {2e56b851-9d8d-40e5-84bb-e4ee63b71d25} + + + {c7139899-d8bc-48a3-a437-6844a8baabef} + + + + {9eb3fe8d-2d91-4d29-a3bb-98ddb51d45b7} + StaticLibrary + liblinphone-tester-static + liblinphone_tester_static + en-US + 14.0 + true + Windows Store + 8.2 + + + + StaticLibrary + true + v140 + + + StaticLibrary + false + true + v140 + + + + + + + + + + + + false + + + + NotUsing + false + true + $(SolutionDir)$(Platform)\$(Configuration)\include;$(ProjectDir)..\..\..\..\tester;$(ProjectDir)..\..\..\..\tester\common;$(ProjectDir)..\..\liblinphone;$(ProjectDir)..\..\..\..\coreapi;$(ProjectDir)..\..\..\..\include;$(ProjectDir)..\..\..\..\mediastreamer2\include;$(ProjectDir)..\..\..\..\oRTP\include;$(ProjectDir)..\..\..\..\..\belle-sip\include;$(ProjectDir)..\..\..\..\..\cunit\build\windows10\cunit\$(Platform)\$(Configuration);%(AdditionalIncludeDirectories) + BC_CONFIG_FILE="config.h";IN_LINPHONE;VIDEO_ENABLED;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions) + + + Console + false + false + + + + + + \ No newline at end of file diff --git a/build/windows10/liblinphone-tester/liblinphone-tester.csproj b/build/windows10/liblinphone-tester/liblinphone-tester.csproj new file mode 100644 index 000000000..7bb05da84 --- /dev/null +++ b/build/windows10/liblinphone-tester/liblinphone-tester.csproj @@ -0,0 +1,177 @@ + + + + + Debug + x86 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5} + AppContainerExe + Properties + liblinphone_tester + liblinphone-tester + en-US + UAP + 10.0.10069.0 + 10.0.10069.0 + 14 + true + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + liblinphone-tester_TemporaryKey.pfx + + + + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_UAP + true + ;2008 + pdbonly + ARM + false + prompt + true + true + + + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP + ;2008 + full + x64 + false + prompt + true + + + bin\x64\Release\ + TRACE;NETFX_CORE;WINDOWS_UAP + true + ;2008 + pdbonly + x64 + false + prompt + true + true + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_UAP + true + ;2008 + pdbonly + x86 + false + prompt + true + true + + + + App.xaml + + + + MainPage.xaml + + + + + + Designer + + + + + + + + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + + + packages\Microsoft.ApplicationInsights.0.14.3-build00177\lib\portable-win81+wpa81\Microsoft.ApplicationInsights.dll + True + + + packages\Microsoft.ApplicationInsights.WindowsApps.0.14.3-build00177\lib\win81\Microsoft.ApplicationInsights.Extensibility.Windows.dll + True + + + packages\Microsoft.ApplicationInsights.PersistenceChannel.0.14.3-build00177\lib\portable-win81+wpa81\Microsoft.ApplicationInsights.PersistenceChannel.dll + True + + + packages\System.Numerics.Vectors.4.0.0\lib\win8\System.Numerics.Vectors.dll + True + + + packages\System.Numerics.Vectors.4.0.0\lib\win8\System.Numerics.Vectors.WindowsRuntime.dll + True + + + + + {1ce10f06-8fad-437f-b3d7-3b7a8909a190} + liblinphone-tester-runtime-component + + + + + 14.0 + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + \ No newline at end of file diff --git a/build/windows10/liblinphone-tester/liblinphone-tester.sln b/build/windows10/liblinphone-tester/liblinphone-tester.sln new file mode 100644 index 000000000..dda1be3a9 --- /dev/null +++ b/build/windows10/liblinphone-tester/liblinphone-tester.sln @@ -0,0 +1,432 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.22823.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "liblinphone-tester", "liblinphone-tester.csproj", "{EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblinphone-tester-static", "liblinphone-tester-static\liblinphone-tester-static.vcxproj", "{9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblinphone", "..\liblinphone\liblinphone.vcxproj", "{C7139899-D8BC-48A3-A437-6844A8BAABEF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mediastreamer2", "..\..\..\mediastreamer2\build\windows10\mediastreamer2\mediastreamer2.vcxproj", "{88E3C241-EB6F-4C84-80DC-89B8961DAF80}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ortp", "..\..\..\oRTP\build\windows10\ortp\ortp.vcxproj", "{2E56B851-9D8D-40E5-84BB-E4EE63B71D25}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "srtp", "..\..\..\..\srtp\build\windows10\srtp\srtp.vcxproj", "{59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml2", "..\..\..\..\build\xml2\xml2.vcxproj", "{2B04DE79-4D33-4405-AC01-C89E0593A71D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "polarssl", "..\..\..\..\polarssl\build\windows10\polarssl\polarssl.vcxproj", "{88768DD9-5110-4AC8-8B0E-41CD7713E1A2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "speex", "..\..\..\..\speex\build\windows10\speex\speex.vcxproj", "{971DD379-1C2D-44D2-9285-FDA556C48176}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "speexdsp", "..\..\..\..\speex\build\windows10\speexdsp\speexdsp.vcxproj", "{104BF91B-8314-4328-A996-90B8DF6052AF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opus", "..\..\..\..\opus\build\windows10\opus\opus.vcxproj", "{81AF1025-E0EE-4AD6-988D-2EF162778693}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bzrtp", "..\..\..\..\bzrtp\build\windows10\bzrtp\bzrtp.vcxproj", "{45C7723D-3107-4906-9633-F43ABE8A7147}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsm", "..\..\..\..\gsm\build\windows10\gsm\gsm.vcxproj", "{EF1103C7-8AAC-464B-BA31-86B87246FA72}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "belle-sip", "..\..\..\..\belle-sip\build\windows10\belle-sip\belle-sip.vcxproj", "{B6CDF482-7DA3-43D4-9B12-70150106C191}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "antlr3c", "..\..\..\..\antlr3\runtime\C\build\windows10\antlr3c\antlr3c.vcxproj", "{01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\..\..\..\zlib\build\windows10\zlib\zlib.vcxproj", "{A34F450D-392D-4660-9618-810BD695B3B0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite", "..\..\..\..\build\sqlite\sqlite.vcxproj", "{74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblinphone-tester-runtime-component", "liblinphone-tester-runtime-component\liblinphone-tester-runtime-component.vcxproj", "{1CE10F06-8FAD-437F-B3D7-3B7A8909A190}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cunit", "..\..\..\..\cunit\build\windows10\cunit\cunit.vcxproj", "{025E28A8-9DFB-4015-AD56-19896AA6CC9B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmsamr", "..\..\..\..\msamr\build\windows10\libmsamr\libmsamr.vcxproj", "{8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmsilbc", "..\..\..\..\msilbc\build\windows10\libmsilbc\libmsilbc.vcxproj", "{6A18BBB9-08D1-41A8-BE57-17FC992CC36F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmssilk", "..\..\..\..\mssilk\build\windows10\libmssilk\libmssilk.vcxproj", "{B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmswasapi", "..\..\..\..\mswasapi\windows10\libmswasapi\libmswasapi.vcxproj", "{266B769A-C04E-424C-9033-7209F0425BC0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmswebrtc", "..\..\..\..\mswebrtc\build\windows10\libmswebrtc\libmswebrtc.vcxproj", "{878CF9D3-9761-479E-A715-A1DE9F99CB78}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ilbc", "..\..\..\..\libilbc-rfc3951\build\windows10\ilbc\ilbc.vcxproj", "{995B01AF-C568-453E-9E5F-8AE81FB79B4B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencore_amrnb", "..\..\..\..\msamr\build\windows10\opencore_amrnb\opencore_amrnb.vcxproj", "{71A5F1C8-F76D-4297-95AA-75E1C967DC79}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencore_amrwb", "..\..\..\..\msamr\build\windows10\opencore_amrwb\opencore_amrwb.vcxproj", "{3CC91899-3E98-49FD-BED5-FA290A9A5C8E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vo-amrwbenc", "..\..\..\..\msamr\build\windows10\vo-amrwbenc\vo-amrwbenc.vcxproj", "{D829672F-3775-4718-A991-1ABC42CBA67C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "webrtc", "..\..\..\..\mswebrtc\webrtc\build\windows10\webrtc\webrtc.vcxproj", "{C5895B75-BDCF-406C-B803-9CB954E90F0C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM = Release|ARM + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|ARM.ActiveCfg = Debug|ARM + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|ARM.Build.0 = Debug|ARM + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|ARM.Deploy.0 = Debug|ARM + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x64.ActiveCfg = Debug|x64 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x64.Build.0 = Debug|x64 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x64.Deploy.0 = Debug|x64 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x86.ActiveCfg = Debug|x86 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x86.Build.0 = Debug|x86 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x86.Deploy.0 = Debug|x86 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|ARM.ActiveCfg = Release|ARM + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|ARM.Build.0 = Release|ARM + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|ARM.Deploy.0 = Release|ARM + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x64.ActiveCfg = Release|x64 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x64.Build.0 = Release|x64 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x64.Deploy.0 = Release|x64 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x86.ActiveCfg = Release|x86 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x86.Build.0 = Release|x86 + {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x86.Deploy.0 = Release|x86 + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|ARM.ActiveCfg = Debug|ARM + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|ARM.Build.0 = Debug|ARM + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|x64.ActiveCfg = Debug|x64 + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|x64.Build.0 = Debug|x64 + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|x86.ActiveCfg = Debug|Win32 + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|x86.Build.0 = Debug|Win32 + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|ARM.ActiveCfg = Release|ARM + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|ARM.Build.0 = Release|ARM + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|x64.ActiveCfg = Release|x64 + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|x64.Build.0 = Release|x64 + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|x86.ActiveCfg = Release|Win32 + {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|x86.Build.0 = Release|Win32 + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|ARM.ActiveCfg = Debug|ARM + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|ARM.Build.0 = Debug|ARM + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|x64.ActiveCfg = Debug|x64 + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|x64.Build.0 = Debug|x64 + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|x86.ActiveCfg = Debug|Win32 + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|x86.Build.0 = Debug|Win32 + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|ARM.ActiveCfg = Release|ARM + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|ARM.Build.0 = Release|ARM + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|x64.ActiveCfg = Release|x64 + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|x64.Build.0 = Release|x64 + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|x86.ActiveCfg = Release|Win32 + {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|x86.Build.0 = Release|Win32 + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|ARM.ActiveCfg = Debug|ARM + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|ARM.Build.0 = Debug|ARM + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|x64.ActiveCfg = Debug|x64 + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|x64.Build.0 = Debug|x64 + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|x86.ActiveCfg = Debug|Win32 + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|x86.Build.0 = Debug|Win32 + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|ARM.ActiveCfg = Release|ARM + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|ARM.Build.0 = Release|ARM + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|x64.ActiveCfg = Release|x64 + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|x64.Build.0 = Release|x64 + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|x86.ActiveCfg = Release|Win32 + {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|x86.Build.0 = Release|Win32 + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|ARM.ActiveCfg = Debug|ARM + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|ARM.Build.0 = Debug|ARM + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|x64.ActiveCfg = Debug|x64 + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|x64.Build.0 = Debug|x64 + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|x86.ActiveCfg = Debug|Win32 + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|x86.Build.0 = Debug|Win32 + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|ARM.ActiveCfg = Release|ARM + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|ARM.Build.0 = Release|ARM + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|x64.ActiveCfg = Release|x64 + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|x64.Build.0 = Release|x64 + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|x86.ActiveCfg = Release|Win32 + {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|x86.Build.0 = Release|Win32 + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|ARM.ActiveCfg = Debug|ARM + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|ARM.Build.0 = Debug|ARM + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|x64.ActiveCfg = Debug|x64 + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|x64.Build.0 = Debug|x64 + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|x86.ActiveCfg = Debug|Win32 + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|x86.Build.0 = Debug|Win32 + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|ARM.ActiveCfg = Release|ARM + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|ARM.Build.0 = Release|ARM + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|x64.ActiveCfg = Release|x64 + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|x64.Build.0 = Release|x64 + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|x86.ActiveCfg = Release|Win32 + {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|x86.Build.0 = Release|Win32 + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|ARM.ActiveCfg = Debug|ARM + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|ARM.Build.0 = Debug|ARM + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|x64.ActiveCfg = Debug|x64 + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|x64.Build.0 = Debug|x64 + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|x86.ActiveCfg = Debug|Win32 + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|x86.Build.0 = Debug|Win32 + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|ARM.ActiveCfg = Release|ARM + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|ARM.Build.0 = Release|ARM + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|x64.ActiveCfg = Release|x64 + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|x64.Build.0 = Release|x64 + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|x86.ActiveCfg = Release|Win32 + {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|x86.Build.0 = Release|Win32 + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|ARM.ActiveCfg = Debug|ARM + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|ARM.Build.0 = Debug|ARM + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|x64.ActiveCfg = Debug|x64 + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|x64.Build.0 = Debug|x64 + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|x86.ActiveCfg = Debug|Win32 + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|x86.Build.0 = Debug|Win32 + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|ARM.ActiveCfg = Release|ARM + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|ARM.Build.0 = Release|ARM + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|x64.ActiveCfg = Release|x64 + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|x64.Build.0 = Release|x64 + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|x86.ActiveCfg = Release|Win32 + {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|x86.Build.0 = Release|Win32 + {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|ARM.ActiveCfg = Debug|ARM + {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|ARM.Build.0 = Debug|ARM + {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|x64.ActiveCfg = Debug|x64 + {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|x64.Build.0 = Debug|x64 + {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|x86.ActiveCfg = Debug|Win32 + {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|x86.Build.0 = Debug|Win32 + {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|ARM.ActiveCfg = Release|ARM + {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|ARM.Build.0 = Release|ARM + {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|x64.ActiveCfg = Release|x64 + {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|x64.Build.0 = Release|x64 + {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|x86.ActiveCfg = Release|Win32 + {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|x86.Build.0 = Release|Win32 + {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|ARM.ActiveCfg = Debug|ARM + {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|ARM.Build.0 = Debug|ARM + {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|x64.ActiveCfg = Debug|x64 + {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|x64.Build.0 = Debug|x64 + {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|x86.ActiveCfg = Debug|Win32 + {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|x86.Build.0 = Debug|Win32 + {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|ARM.ActiveCfg = Release|ARM + {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|ARM.Build.0 = Release|ARM + {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|x64.ActiveCfg = Release|x64 + {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|x64.Build.0 = Release|x64 + {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|x86.ActiveCfg = Release|Win32 + {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|x86.Build.0 = Release|Win32 + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|ARM.ActiveCfg = Debug|ARM + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|ARM.Build.0 = Debug|ARM + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|x64.ActiveCfg = Debug|x64 + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|x64.Build.0 = Debug|x64 + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|x86.ActiveCfg = Debug|Win32 + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|x86.Build.0 = Debug|Win32 + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|ARM.ActiveCfg = Release|ARM + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|ARM.Build.0 = Release|ARM + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|x64.ActiveCfg = Release|x64 + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|x64.Build.0 = Release|x64 + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|x86.ActiveCfg = Release|Win32 + {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|x86.Build.0 = Release|Win32 + {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|ARM.ActiveCfg = Debug|ARM + {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|ARM.Build.0 = Debug|ARM + {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|x64.ActiveCfg = Debug|x64 + {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|x64.Build.0 = Debug|x64 + {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|x86.ActiveCfg = Debug|Win32 + {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|x86.Build.0 = Debug|Win32 + {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|ARM.ActiveCfg = Release|ARM + {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|ARM.Build.0 = Release|ARM + {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|x64.ActiveCfg = Release|x64 + {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|x64.Build.0 = Release|x64 + {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|x86.ActiveCfg = Release|Win32 + {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|x86.Build.0 = Release|Win32 + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|ARM.ActiveCfg = Debug|ARM + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|ARM.Build.0 = Debug|ARM + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|x64.ActiveCfg = Debug|x64 + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|x64.Build.0 = Debug|x64 + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|x86.ActiveCfg = Debug|Win32 + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|x86.Build.0 = Debug|Win32 + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|ARM.ActiveCfg = Release|ARM + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|ARM.Build.0 = Release|ARM + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|x64.ActiveCfg = Release|x64 + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|x64.Build.0 = Release|x64 + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|x86.ActiveCfg = Release|Win32 + {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|x86.Build.0 = Release|Win32 + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|ARM.ActiveCfg = Debug|ARM + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|ARM.Build.0 = Debug|ARM + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|x64.ActiveCfg = Debug|x64 + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|x64.Build.0 = Debug|x64 + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|x86.ActiveCfg = Debug|Win32 + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|x86.Build.0 = Debug|Win32 + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|ARM.ActiveCfg = Release|ARM + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|ARM.Build.0 = Release|ARM + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|x64.ActiveCfg = Release|x64 + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|x64.Build.0 = Release|x64 + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|x86.ActiveCfg = Release|Win32 + {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|x86.Build.0 = Release|Win32 + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|ARM.ActiveCfg = Debug|ARM + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|ARM.Build.0 = Debug|ARM + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|x64.ActiveCfg = Debug|x64 + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|x64.Build.0 = Debug|x64 + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|x86.ActiveCfg = Debug|Win32 + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|x86.Build.0 = Debug|Win32 + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|ARM.ActiveCfg = Release|ARM + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|ARM.Build.0 = Release|ARM + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|x64.ActiveCfg = Release|x64 + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|x64.Build.0 = Release|x64 + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|x86.ActiveCfg = Release|Win32 + {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|x86.Build.0 = Release|Win32 + {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|ARM.ActiveCfg = Debug|ARM + {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|ARM.Build.0 = Debug|ARM + {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|x64.ActiveCfg = Debug|x64 + {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|x64.Build.0 = Debug|x64 + {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|x86.ActiveCfg = Debug|Win32 + {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|x86.Build.0 = Debug|Win32 + {A34F450D-392D-4660-9618-810BD695B3B0}.Release|ARM.ActiveCfg = Release|ARM + {A34F450D-392D-4660-9618-810BD695B3B0}.Release|ARM.Build.0 = Release|ARM + {A34F450D-392D-4660-9618-810BD695B3B0}.Release|x64.ActiveCfg = Release|x64 + {A34F450D-392D-4660-9618-810BD695B3B0}.Release|x64.Build.0 = Release|x64 + {A34F450D-392D-4660-9618-810BD695B3B0}.Release|x86.ActiveCfg = Release|Win32 + {A34F450D-392D-4660-9618-810BD695B3B0}.Release|x86.Build.0 = Release|Win32 + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|ARM.ActiveCfg = Debug|ARM + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|ARM.Build.0 = Debug|ARM + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|x64.ActiveCfg = Debug|x64 + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|x64.Build.0 = Debug|x64 + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|x86.ActiveCfg = Debug|Win32 + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|x86.Build.0 = Debug|Win32 + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|ARM.ActiveCfg = Release|ARM + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|ARM.Build.0 = Release|ARM + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|x64.ActiveCfg = Release|x64 + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|x64.Build.0 = Release|x64 + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|x86.ActiveCfg = Release|Win32 + {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|x86.Build.0 = Release|Win32 + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|ARM.ActiveCfg = Debug|ARM + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|ARM.Build.0 = Debug|ARM + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|x64.ActiveCfg = Debug|x64 + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|x64.Build.0 = Debug|x64 + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|x86.ActiveCfg = Debug|Win32 + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|x86.Build.0 = Debug|Win32 + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|ARM.ActiveCfg = Release|ARM + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|ARM.Build.0 = Release|ARM + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|x64.ActiveCfg = Release|x64 + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|x64.Build.0 = Release|x64 + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|x86.ActiveCfg = Release|Win32 + {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|x86.Build.0 = Release|Win32 + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|ARM.ActiveCfg = Debug|ARM + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|ARM.Build.0 = Debug|ARM + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|x64.ActiveCfg = Debug|x64 + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|x64.Build.0 = Debug|x64 + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|x86.ActiveCfg = Debug|Win32 + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|x86.Build.0 = Debug|Win32 + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|ARM.ActiveCfg = Release|ARM + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|ARM.Build.0 = Release|ARM + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|x64.ActiveCfg = Release|x64 + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|x64.Build.0 = Release|x64 + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|x86.ActiveCfg = Release|Win32 + {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|x86.Build.0 = Release|Win32 + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|ARM.ActiveCfg = Debug|ARM + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|ARM.Build.0 = Debug|ARM + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|x64.ActiveCfg = Debug|x64 + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|x64.Build.0 = Debug|x64 + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|x86.ActiveCfg = Debug|Win32 + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|x86.Build.0 = Debug|Win32 + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|ARM.ActiveCfg = Release|ARM + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|ARM.Build.0 = Release|ARM + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|x64.ActiveCfg = Release|x64 + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|x64.Build.0 = Release|x64 + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|x86.ActiveCfg = Release|Win32 + {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|x86.Build.0 = Release|Win32 + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|ARM.ActiveCfg = Debug|ARM + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|ARM.Build.0 = Debug|ARM + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|x64.ActiveCfg = Debug|x64 + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|x64.Build.0 = Debug|x64 + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|x86.ActiveCfg = Debug|Win32 + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|x86.Build.0 = Debug|Win32 + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|ARM.ActiveCfg = Release|ARM + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|ARM.Build.0 = Release|ARM + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|x64.ActiveCfg = Release|x64 + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|x64.Build.0 = Release|x64 + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|x86.ActiveCfg = Release|Win32 + {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|x86.Build.0 = Release|Win32 + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|ARM.ActiveCfg = Debug|ARM + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|ARM.Build.0 = Debug|ARM + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|x64.ActiveCfg = Debug|x64 + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|x64.Build.0 = Debug|x64 + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|x86.ActiveCfg = Debug|Win32 + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|x86.Build.0 = Debug|Win32 + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|ARM.ActiveCfg = Release|ARM + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|ARM.Build.0 = Release|ARM + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|x64.ActiveCfg = Release|x64 + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|x64.Build.0 = Release|x64 + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|x86.ActiveCfg = Release|Win32 + {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|x86.Build.0 = Release|Win32 + {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|ARM.ActiveCfg = Debug|ARM + {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|ARM.Build.0 = Debug|ARM + {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|x64.ActiveCfg = Debug|x64 + {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|x64.Build.0 = Debug|x64 + {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|x86.ActiveCfg = Debug|Win32 + {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|x86.Build.0 = Debug|Win32 + {266B769A-C04E-424C-9033-7209F0425BC0}.Release|ARM.ActiveCfg = Release|ARM + {266B769A-C04E-424C-9033-7209F0425BC0}.Release|ARM.Build.0 = Release|ARM + {266B769A-C04E-424C-9033-7209F0425BC0}.Release|x64.ActiveCfg = Release|x64 + {266B769A-C04E-424C-9033-7209F0425BC0}.Release|x64.Build.0 = Release|x64 + {266B769A-C04E-424C-9033-7209F0425BC0}.Release|x86.ActiveCfg = Release|Win32 + {266B769A-C04E-424C-9033-7209F0425BC0}.Release|x86.Build.0 = Release|Win32 + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|ARM.ActiveCfg = Debug|ARM + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|ARM.Build.0 = Debug|ARM + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|x64.ActiveCfg = Debug|x64 + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|x64.Build.0 = Debug|x64 + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|x86.ActiveCfg = Debug|Win32 + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|x86.Build.0 = Debug|Win32 + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|ARM.ActiveCfg = Release|ARM + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|ARM.Build.0 = Release|ARM + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|x64.ActiveCfg = Release|x64 + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|x64.Build.0 = Release|x64 + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|x86.ActiveCfg = Release|Win32 + {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|x86.Build.0 = Release|Win32 + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|ARM.ActiveCfg = Debug|ARM + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|ARM.Build.0 = Debug|ARM + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|x64.ActiveCfg = Debug|x64 + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|x64.Build.0 = Debug|x64 + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|x86.ActiveCfg = Debug|Win32 + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|x86.Build.0 = Debug|Win32 + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|ARM.ActiveCfg = Release|ARM + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|ARM.Build.0 = Release|ARM + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|x64.ActiveCfg = Release|x64 + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|x64.Build.0 = Release|x64 + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|x86.ActiveCfg = Release|Win32 + {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|x86.Build.0 = Release|Win32 + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|ARM.ActiveCfg = Debug|ARM + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|ARM.Build.0 = Debug|ARM + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|x64.ActiveCfg = Debug|x64 + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|x64.Build.0 = Debug|x64 + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|x86.ActiveCfg = Debug|Win32 + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|x86.Build.0 = Debug|Win32 + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|ARM.ActiveCfg = Release|ARM + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|ARM.Build.0 = Release|ARM + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|x64.ActiveCfg = Release|x64 + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|x64.Build.0 = Release|x64 + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|x86.ActiveCfg = Release|Win32 + {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|x86.Build.0 = Release|Win32 + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|ARM.ActiveCfg = Debug|ARM + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|ARM.Build.0 = Debug|ARM + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|x64.ActiveCfg = Debug|x64 + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|x64.Build.0 = Debug|x64 + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|x86.ActiveCfg = Debug|Win32 + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|x86.Build.0 = Debug|Win32 + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|ARM.ActiveCfg = Release|ARM + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|ARM.Build.0 = Release|ARM + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|x64.ActiveCfg = Release|x64 + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|x64.Build.0 = Release|x64 + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|x86.ActiveCfg = Release|Win32 + {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|x86.Build.0 = Release|Win32 + {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|ARM.ActiveCfg = Debug|ARM + {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|ARM.Build.0 = Debug|ARM + {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|x64.ActiveCfg = Debug|x64 + {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|x64.Build.0 = Debug|x64 + {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|x86.ActiveCfg = Debug|Win32 + {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|x86.Build.0 = Debug|Win32 + {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|ARM.ActiveCfg = Release|ARM + {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|ARM.Build.0 = Release|ARM + {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|x64.ActiveCfg = Release|x64 + {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|x64.Build.0 = Release|x64 + {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|x86.ActiveCfg = Release|Win32 + {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|x86.Build.0 = Release|Win32 + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|ARM.ActiveCfg = Debug|ARM + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|ARM.Build.0 = Debug|ARM + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|x64.ActiveCfg = Debug|x64 + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|x64.Build.0 = Debug|x64 + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|x86.ActiveCfg = Debug|Win32 + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|x86.Build.0 = Debug|Win32 + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|ARM.ActiveCfg = Release|ARM + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|ARM.Build.0 = Release|ARM + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|x64.ActiveCfg = Release|x64 + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|x64.Build.0 = Release|x64 + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|x86.ActiveCfg = Release|Win32 + {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx b/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx new file mode 100644 index 000000000..19e757bfa Binary files /dev/null and b/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx differ diff --git a/build/windows10/liblinphone-tester/packages.config b/build/windows10/liblinphone-tester/packages.config new file mode 100644 index 000000000..cce808aa7 --- /dev/null +++ b/build/windows10/liblinphone-tester/packages.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/build/windows10/liblinphone/liblinphone.vcxproj b/build/windows10/liblinphone/liblinphone.vcxproj index 1cc743e47..1ac61e9b3 100644 --- a/build/windows10/liblinphone/liblinphone.vcxproj +++ b/build/windows10/liblinphone/liblinphone.vcxproj @@ -58,6 +58,7 @@ + diff --git a/tester/call_tester.c b/tester/call_tester.c index 729c52354..2356b8ed5 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -17,7 +17,7 @@ */ - #include +#include #include #include "linphonecore.h" #include "lpconfig.h" @@ -26,7 +26,7 @@ #include "mediastreamer2/msutils.h" #include "belle-sip/sipstack.h" -#ifdef WIN32 +#ifdef _WIN32 #define unlink _unlink #ifndef F_OK #define F_OK 00 /*visual studio does not define F_OK*/ diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c index cd54c8458..2ed59f314 100644 --- a/tester/liblinphone_tester.c +++ b/tester/liblinphone_tester.c @@ -129,7 +129,7 @@ static void liblinphone_tester_qnx_log_handler(OrtpLogLevel lev, const char *fmt #endif /* __QNX__ */ static void log_handler(int lev, const char *fmt, va_list args) { -#ifdef WIN32 +#ifdef _WIN32 vfprintf(lev == ORTP_ERROR ? stderr : stdout, fmt, args); fprintf(lev == ORTP_ERROR ? stderr : stdout, "\n"); #else @@ -150,7 +150,7 @@ static void log_handler(int lev, const char *fmt, va_list args) { } } -void liblinphone_tester_init(void) { +void liblinphone_tester_init(void(*ftester_printf)(int level, const char *fmt, va_list args)) { if (! log_file) { #if defined(ANDROID) linphone_core_set_log_handler(liblinphone_android_ortp_log_handler); @@ -159,7 +159,8 @@ void liblinphone_tester_init(void) { #endif } - bc_tester_init(log_handler, ORTP_MESSAGE, ORTP_ERROR); + if (ftester_printf == NULL) ftester_printf = log_handler; + bc_tester_init(ftester_printf, ORTP_MESSAGE, ORTP_ERROR); liblinphone_tester_add_suites(); } @@ -168,6 +169,8 @@ void liblinphone_tester_uninit(void) { } +#if !defined(ANDROID) && !defined(TARGET_OS_IPHONE) && !(defined(LINPHONE_WINDOWS_PHONE) || defined(LINPHONE_WINDOWS_UNIVERSAL)) + static const char* liblinphone_helper = "\t\t\t--verbose\n" "\t\t\t--silent\n" @@ -178,7 +181,6 @@ static const char* liblinphone_helper = "\t\t\t--dns-hosts \n" "\t\t\t--keep-recorded-files\n"; -#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) int main (int argc, char *argv[]) { int i; @@ -192,7 +194,7 @@ int main (int argc, char *argv[]) gdk_threads_init(); #endif - liblinphone_tester_init(); + liblinphone_tester_init(NULL); for(i = 1; i < argc; ++i) { if (strcmp(argv[i], "--verbose") == 0) { diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 63af31569..b5687e002 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -80,10 +80,6 @@ void liblinphone_tester_keep_recorded_files(int keep); */ extern void liblinphone_tester_clear_accounts(void); -#ifdef __cplusplus -}; -#endif - extern const char* test_domain; extern const char* auth_domain; @@ -332,5 +328,12 @@ int linphone_core_manager_get_max_audio_up_bw(const LinphoneCoreManager *mgr); void video_call_base_2(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy,LinphoneMediaEncryption mode, bool_t callee_video_enabled, bool_t caller_video_enabled); int liblinphone_tester_setup(); +void liblinphone_tester_init(void(*ftester_printf)(int level, const char *fmt, va_list args)); +void liblinphone_tester_uninit(void); + + +#ifdef __cplusplus +}; +#endif #endif /* LIBLINPHONE_TESTER_H_ */ diff --git a/tester/liblinphone_tester_windows.cpp b/tester/liblinphone_tester_windows.cpp new file mode 100644 index 000000000..30fab9c9a --- /dev/null +++ b/tester/liblinphone_tester_windows.cpp @@ -0,0 +1,149 @@ +#include + +#include "liblinphone_tester_windows.h" + +using namespace liblinphone_tester_runtime_component; +using namespace Platform; +using namespace Windows::Foundation; +using namespace Windows::Storage; +using namespace Windows::System::Threading; + +#define MAX_TRACE_SIZE 512 +#define MAX_SUITE_NAME_SIZE 128 +#define MAX_WRITABLE_DIR_SIZE 1024 + +static OutputTraceListener^ sTraceListener; + +LibLinphoneTester^ LibLinphoneTester::_instance = ref new LibLinphoneTester(); + +static void nativeOutputTraceHandler(int lev, const char *fmt, va_list args) +{ + if (sTraceListener) { + wchar_t wstr[MAX_TRACE_SIZE]; + std::string str; + str.resize(MAX_TRACE_SIZE); + vsnprintf((char *)str.c_str(), MAX_TRACE_SIZE, fmt, args); + mbstowcs(wstr, str.c_str(), sizeof(wstr)); + String^ msg = ref new String(wstr); + String^ l; + switch (lev) { + case ORTP_FATAL: + case ORTP_ERROR: + l = ref new String(L"Error"); + break; + case ORTP_WARNING: + l = ref new String(L"Warning"); + break; + case ORTP_MESSAGE: + l = ref new String(L"Message"); + break; + default: + l = ref new String(L"Debug"); + break; + } + sTraceListener->outputTrace(l, msg); + } +} + +static void libLinphoneNativeOutputTraceHandler(OrtpLogLevel lev, const char *fmt, va_list args) +{ + nativeOutputTraceHandler((int)lev, fmt, args); +} + + +LibLinphoneTester::LibLinphoneTester() +{ + char writable_dir[MAX_WRITABLE_DIR_SIZE]; + StorageFolder ^folder = ApplicationData::Current->LocalFolder; + const wchar_t *wwritable_dir = folder->Path->Data(); + wcstombs(writable_dir, wwritable_dir, sizeof(writable_dir)); + liblinphone_tester_init(nativeOutputTraceHandler); + bc_tester_set_resource_dir_prefix("Assets"); + bc_tester_set_writable_dir_prefix(writable_dir); +} + +LibLinphoneTester::~LibLinphoneTester() +{ + liblinphone_tester_uninit(); +} + +void LibLinphoneTester::setOutputTraceListener(OutputTraceListener^ traceListener) +{ + sTraceListener = traceListener; +} + +void LibLinphoneTester::init(bool verbose) +{ + if (verbose) { + linphone_core_set_log_level_mask((OrtpLogLevel)(ORTP_MESSAGE | ORTP_WARNING | ORTP_ERROR | ORTP_FATAL)); + } + else { + linphone_core_set_log_level_mask(ORTP_FATAL); + } +} + +bool LibLinphoneTester::run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose) +{ + std::wstring all(L"ALL"); + std::wstring wssuitename = suiteName->Data(); + std::wstring wscasename = caseName->Data(); + char csuitename[MAX_SUITE_NAME_SIZE] = { 0 }; + char ccasename[MAX_SUITE_NAME_SIZE] = { 0 }; + wcstombs(csuitename, wssuitename.c_str(), sizeof(csuitename)); + wcstombs(ccasename, wscasename.c_str(), sizeof(ccasename)); + + init(verbose); + linphone_core_set_log_handler(libLinphoneNativeOutputTraceHandler); + return bc_tester_run_tests(wssuitename == all ? 0 : csuitename, wscasename == all ? 0 : ccasename) != 0; +} + +void LibLinphoneTester::runAllToXml() +{ + auto workItem = ref new WorkItemHandler([this](IAsyncAction ^workItem) { + char *xmlFile = bc_tester_file("LibLinphoneWindows10.xml"); + char *logFile = bc_tester_file("LibLinphoneWindows10.log"); + char *args[] = { "--xml-file", xmlFile }; + bc_tester_parse_args(2, args, 0); + init(true); + FILE *f = fopen(logFile, "w"); + ortp_set_log_file(f); + bc_tester_start(); + bc_tester_uninit(); + fclose(f); + free(xmlFile); + free(logFile); + }); + _asyncAction = ThreadPool::RunAsync(workItem); +} + +unsigned int LibLinphoneTester::nbTestSuites() +{ + return bc_tester_nb_suites(); +} + +unsigned int LibLinphoneTester::nbTests(Platform::String^ suiteName) +{ + std::wstring suitename = suiteName->Data(); + char cname[MAX_SUITE_NAME_SIZE] = { 0 }; + wcstombs(cname, suitename.c_str(), sizeof(cname)); + return bc_tester_nb_tests(cname); +} + +Platform::String^ LibLinphoneTester::testSuiteName(int index) +{ + const char *cname = bc_tester_suite_name(index); + wchar_t wcname[MAX_SUITE_NAME_SIZE]; + mbstowcs(wcname, cname, sizeof(wcname)); + return ref new String(wcname); +} + +Platform::String^ LibLinphoneTester::testName(Platform::String^ suiteName, int testIndex) +{ + std::wstring suitename = suiteName->Data(); + char csuitename[MAX_SUITE_NAME_SIZE] = { 0 }; + wcstombs(csuitename, suitename.c_str(), sizeof(csuitename)); + const char *cname = bc_tester_test_name(csuitename, testIndex); + wchar_t wcname[MAX_SUITE_NAME_SIZE]; + mbstowcs(wcname, cname, sizeof(wcname)); + return ref new String(wcname); +} diff --git a/tester/liblinphone_tester_windows.h b/tester/liblinphone_tester_windows.h new file mode 100644 index 000000000..959a6d1d9 --- /dev/null +++ b/tester/liblinphone_tester_windows.h @@ -0,0 +1,41 @@ +#pragma once + +#include "linphonecore.h" +#include "liblinphone_tester.h" + +namespace liblinphone_tester_runtime_component +{ + public interface class OutputTraceListener + { + public: + void outputTrace(Platform::String^ lev, Platform::String^ msg); + }; + + public ref class LibLinphoneTester sealed + { + public: + void setOutputTraceListener(OutputTraceListener^ traceListener); + unsigned int nbTestSuites(); + unsigned int nbTests(Platform::String^ suiteName); + Platform::String^ testSuiteName(int index); + Platform::String^ testName(Platform::String^ suiteName, int testIndex); + bool run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose); + void runAllToXml(); + + static property LibLinphoneTester^ Instance + { + LibLinphoneTester^ get() { return _instance; } + } + property Windows::Foundation::IAsyncAction^ AsyncAction + { + Windows::Foundation::IAsyncAction^ get() { return _asyncAction; } + } + private: + LibLinphoneTester(); + ~LibLinphoneTester(); + void init(bool verbose); + + static LibLinphoneTester^ _instance; + Windows::Foundation::IAsyncAction^ _asyncAction; + }; +} \ No newline at end of file diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c index 9a374d110..b2a7fa1d9 100644 --- a/tester/log_collection_tester.c +++ b/tester/log_collection_tester.c @@ -30,7 +30,7 @@ /*getline is POSIX 2008, not available on many systems.*/ -#if defined(ANDROID) || defined(WIN32) +#if defined(ANDROID) || defined(_WIN32) /* This code is public domain -- Will Hartung 4/9/09 */ static size_t getline(char **lineptr, size_t *n, FILE *stream) { char *bufptr = NULL; @@ -143,14 +143,14 @@ static FILE* gzuncompress(const char* filepath) { static time_t get_current_time() { struct timeval tp; struct tm *lt; -#ifndef WIN32 +#ifndef _WIN32 struct tm tmbuf; #endif time_t tt; ortp_gettimeofday(&tp,NULL); tt = (time_t)tp.tv_sec; -#ifdef WIN32 +#ifdef _WIN32 lt = localtime(&tt); #else lt = localtime_r(&tt,&tmbuf); @@ -172,7 +172,7 @@ static time_t check_file(LinphoneCoreManager* mgr) { int line_count = 0; char *line = NULL; size_t line_size = 256; -#ifndef WIN32 +#ifndef _WIN32 struct tm tm_curr = {0}; time_t time_prev = 0; #endif @@ -192,7 +192,7 @@ static time_t check_file(LinphoneCoreManager* mgr) { while (getline(&line, &line_size, file) != -1) { // a) there should be at least 25 lines ++line_count; -#ifndef WIN32 +#ifndef _WIN32 // b) logs should be ordered by date (format: 2014-11-04 15:22:12:606) if (strlen(line) > 24) { char date[24] = {'\0'}; @@ -216,7 +216,7 @@ static time_t check_file(LinphoneCoreManager* mgr) { timediff = labs((long int)log_time - (long int)cur_time); (void)timediff; -#ifndef WIN32 +#ifndef _WIN32 BC_ASSERT_TRUE( timediff <= 1 ); if( !(timediff <= 1) ){ char buffers[2][128] = {{0}}; diff --git a/tester/multi_call_tester.c b/tester/multi_call_tester.c index 612858a1c..22db4b446 100644 --- a/tester/multi_call_tester.c +++ b/tester/multi_call_tester.c @@ -26,7 +26,7 @@ #include "mediastreamer2/msutils.h" #include "belle-sip/sipstack.h" -#ifdef WIN32 +#ifdef _WIN32 #define unlink _unlink #endif diff --git a/tester/tester.c b/tester/tester.c index 5ac0448db..106077a88 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -28,6 +28,9 @@ #ifdef HAVE_GTK #include #endif +#if _WIN32 +#define unlink _unlink +#endif static bool_t liblinphone_tester_ipv6_enabled=FALSE; static int liblinphone_tester_keep_accounts_flag = 0; @@ -184,7 +187,7 @@ bool_t wait_for_list(MSList* lcs,int* counter,int value,int timeout_ms) { #endif linphone_core_iterate((LinphoneCore*)(iterator->data)); } -#ifdef WIN32 +#ifdef LINPHONE_WINDOWS_DESKTOP { MSG msg; while (PeekMessage(&msg, NULL, 0, 0,1)){ diff --git a/tester/video_tester.c b/tester/video_tester.c index 843778884..7e7c846cd 100644 --- a/tester/video_tester.c +++ b/tester/video_tester.c @@ -28,7 +28,7 @@ #include #ifdef GDK_WINDOWING_X11 #include -#elif defined(WIN32) +#elif defined(_WIN32) #include #elif defined(__APPLE__) extern void *gdk_quartz_window_get_nswindow(GdkWindow *window); @@ -41,7 +41,7 @@ extern void *gdk_quartz_window_get_nsview(GdkWindow *window); static unsigned long get_native_handle(GdkWindow *gdkw) { #ifdef GDK_WINDOWING_X11 return (unsigned long)GDK_WINDOW_XID(gdkw); -#elif defined(WIN32) +#elif defined(_WIN32) return (unsigned long)GDK_WINDOW_HWND(gdkw); #elif defined(__APPLE__) return (unsigned long)gdk_quartz_window_get_nsview(gdkw);