@ -65,25 +65,21 @@ manually with the build scripts.</p>
< ul >
< ul >
< li > .NET Core SDK 3.1.1 (< a href = "https://dotnet.microsoft.com/download/dotnet-core/3.1" > download< / a > )< / li >
< li > .NET Core SDK 3.1.1 (< a href = "https://dotnet.microsoft.com/download/dotnet-core/3.1" > download< / a > )< / li >
< / ul >
< / ul >
< h2 > < a name = "VisualStudio-or-Xamarin-Studio " class = "anchor" href = "#VisualStudio-or-Xamarin-Studio" > VisualStudio or Xamarin Studio < / a > < / h2 >
< h2 > < a name = "VisualStudio-and-other-IDEs " class = "anchor" href = "#VisualStudio-and-other-IDEs" > VisualStudio and other IDEs < / a > < / h2 >
< p > We clearly separate dependency management from the IDE, you should therefore
< p > We clearly separate dependency management from the IDE and therefore recommend to
run < code > restore.cmd< / code > or < code > restore.sh< / code > once after every git checkout in order to restore
run < code > restore.cmd< / code > or < code > restore.sh< / code > once after every git checkout in order to restore
the dependencies exactly as defined. Otherwise Visual Studio and other IDEs
the dependencies exactly as defined. Otherwise Visual Studio and other IDEs
may fail to compile or provide correct IntelliSense.< / p >
may fail to compile or provide correct IntelliSense.< / p >
< p > Tests can be run with the usual integrated NUnit test runners or ReSharper.< / p >
< p > Tests can be run with the usual integrated NUnit test runners or ReSharper.< / p >
< h2 > < a name = "Command-Line-Tools" class = "anchor" href = "#Command-Line-Tools" > Command Line Tools< / a > < / h2 >
< h2 > < a name = "Command-Line-Tools" class = "anchor" href = "#Command-Line-Tools" > Command Line Tools< / a > < / h2 >
< p > Instead of a compatible IDE you can also build the solutions directly with
< p > Instead of a compatible IDE you can also build the solutions directly with
the .NET Core SDK, with MsBuild or on Mono with XBuild . You may need to run < code > restore.cmd< / code > or
the .NET Core SDK build tools . You may need to run < code > restore.cmd< / code > or < code > restore.sh< / code >
< code > restore.sh< / code > before, once after every git checkout in order to restore the dependencies.< / p >
before, once after every git checkout in order to restore the dependencies.< / p >
< table class = "pre" > < tr > < td class = "lines" > < pre class = "fssnip" > < span class = "l" > 1: < / span >
< table class = "pre" > < tr > < td class = "lines" > < pre class = "fssnip" > < span class = "l" > 1: < / span >
< span class = "l" > 2: < / span >
< span class = "l" > 2: < / span >
< span class = "l" > 3: < / span >
< span class = "l" > 4: < / span >
< / pre > < / td >
< / pre > < / td >
< td class = "snippet" > < pre class = "fssnip highlighted" > < code lang = "fsharp" > < span class = "i" > restore< / span > < span class = "o" > .< / span > < span class = "i" > cmd< / span > (< span class = "k" > or< / span > < span class = "i" > restore< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > ) # < span class = "i" > restore< / span > < span class = "i" > dependencies< / span > (< span class = "i" > once< / span > )
< td class = "snippet" > < pre class = "fssnip highlighted" > < code lang = "fsharp" > < span class = "i" > restore< / span > < span class = "o" > .< / span > < span class = "i" > cmd< / span > (< span class = "k" > or< / span > < span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > restore< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > )
< span class = "i" > dotnet< / span > < span class = "i" > build< / span > < span class = "i" > MathNet< / span > < span class = "o" > .< / span > < span class = "i" > Numerics< / span > < span class = "o" > .< / span > < span class = "i" > sln< / span > # < span class = "k" > with< / span > < span class = "o" > .< / span > < span class = "i" > NET< / span > < span class = "i" > Core< / span > < span class = "i" > SDK< / span >
< span class = "i" > dotnet< / span > < span class = "i" > build< / span > < span class = "i" > MathNet< / span > < span class = "o" > .< / span > < span class = "i" > Numerics< / span > < span class = "o" > .< / span > < span class = "i" > sln< / span >
< span class = "i" > msbuild< / span > < span class = "i" > MathNet< / span > < span class = "o" > .< / span > < span class = "i" > Numerics< / span > < span class = "o" > .< / span > < span class = "i" > sln< / span > # < span class = "k" > with< / span > < span class = "i" > MsBuild< / span >
< span class = "i" > xbuild< / span > < span class = "i" > MathNet< / span > < span class = "o" > .< / span > < span class = "i" > Numerics< / span > < span class = "o" > .< / span > < span class = "i" > sln< / span > # < span class = "k" > with< / span > < span class = "i" > Mono< / span >
< / code > < / pre > < / td >
< / code > < / pre > < / td >
< / tr >
< / tr >
< / table >
< / table >
@ -92,7 +88,7 @@ the .NET Core SDK, with MsBuild or on Mono with XBuild. You may need to run <cod
reference, NuGet and Zip packages is using < a href = "https://fsharp.github.io/FAKE/" > FAKE< / a > .< / p >
reference, NuGet and Zip packages is using < a href = "https://fsharp.github.io/FAKE/" > FAKE< / a > .< / p >
< p > FAKE itself is not included in the repository but it will download and bootstrap
< p > FAKE itself is not included in the repository but it will download and bootstrap
itself automatically when build.cmd is run the first time. Note that this step
itself automatically when build.cmd is run the first time. Note that this step
is < em > not< / em > required when using Visual Studio or < code > msbuild< / code > directly.< / p >
is < em > not< / em > required when using Visual Studio or the .NET Core SDK directly.< / p >
< table class = "pre" > < tr > < td class = "lines" > < pre class = "fssnip" > < span class = "l" > 1: < / span >
< table class = "pre" > < tr > < td class = "lines" > < pre class = "fssnip" > < span class = "l" > 1: < / span >
< span class = "l" > 2: < / span >
< span class = "l" > 2: < / span >
< span class = "l" > 3: < / span >
< span class = "l" > 3: < / span >
@ -112,10 +108,10 @@ is <em>not</em> required when using Visual Studio or <code>msbuild</code> direct
< span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > cmd< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span > < span class = "k" > and< / span > < span class = "i" > unit< / span > < span class = "i" > tests< / span > , < span class = "k" > when< / span > < span class = "i" > using< / span > < span class = "i" > Windows< / span > < span class = "i" > CMD< / span > < span class = "i" > shell< / span > < span class = "o" > .< / span >
< span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > cmd< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span > < span class = "k" > and< / span > < span class = "i" > unit< / span > < span class = "i" > tests< / span > , < span class = "k" > when< / span > < span class = "i" > using< / span > < span class = "i" > Windows< / span > < span class = "i" > CMD< / span > < span class = "i" > shell< / span > < span class = "o" > .< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > build< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > build< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > build< / span > < span class = "i" > strongname< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span > < span class = "k" > and< / span > < span class = "i" > also< / span > < span class = "i" > build< / span > < span class = "i" > strong< / span > < span class = "i" > named< / span > < span class = "i" > variant< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > build< / span > < span class = "i" > strongname< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span > < span class = "k" > and< / span > < span class = "i" > also< / span > < span class = "i" > build< / span > < span class = "i" > strong< / span > < span class = "o" > -< / span > < span class = "i" > named< / span > < span class = "i" > variant< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > test< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span > (< span class = "o" > .< / span > < span class = "i" > Net< / span > < span class = "n" > 4.0< / span > ) , < span class = "i" > run< / span > < span class = "i" > unit< / span > < span class = "i" > tests< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > test< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span > , < span class = "i" > run< / span > < span class = "i" > unit< / span > < span class = "i" > tests< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > test< / span > < span class = "i" > quick< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span > (< span class = "o" > .< / span > < span class = "i" > Net< / span > < span class = "n" > 4.0< / span > ) , < span class = "i" > run< / span > < span class = "i" > unit< / span > < span class = "i" > tests< / span > < span class = "i" > except< / span > < span class = "i" > long< / span > < span class = "i" > running< / span > < span class = "i" > ones< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > test< / span > < span class = "i" > quick< / span > # < span class = "i" > normal< / span > < span class = "i" > build< / span > , < span class = "i" > run< / span > < span class = "i" > unit< / span > < span class = "i" > tests< / span > < span class = "i" > except< / span > < span class = "i" > long< / span > < span class = "i" > running< / span > < span class = "i" > ones< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > clean< / span > # < span class = "i" > cleanup< / span > < span class = "i" > build< / span > < span class = "i" > artifacts< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > clean< / span > # < span class = "i" > cleanup< / span > < span class = "i" > build< / span > < span class = "i" > artifacts< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > docs< / span > # < span class = "i" > generate< / span > < span class = "i" > documentation< / span >
< span class = "o" > .< / span > < span class = "o" > /< / span > < span class = "i" > build< / span > < span class = "o" > .< / span > < span class = "i" > sh< / span > < span class = "i" > docs< / span > # < span class = "i" > generate< / span > < span class = "i" > documentation< / span >
@ -209,12 +205,18 @@ these packages as well, with the following prefixes:</p>
< / ul >
< / ul >
< p > Example: < code > build.sh DataBuild< / code > < / p >
< p > Example: < code > build.sh DataBuild< / code > < / p >
< h2 > < a name = "Intel-MKL-on-Windows" class = "anchor" href = "#Intel-MKL-on-Windows" > Intel MKL on Windows< / a > < / h2 >
< h2 > < a name = "Intel-MKL-on-Windows" class = "anchor" href = "#Intel-MKL-on-Windows" > Intel MKL on Windows< / a > < / h2 >
< p > The build expects that either Intel Parallel Studio 2020 (with the Intel Compiler)
< p > Building the Intel MKL native provider for Windows requires additionally:< / p >
or Intel Math Kernel Library 2020 is installed. If you run into an error with < code > mkl_link_tool.exe< / code >
< ul >
you may need to patch a targets file, see < a href = "https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/851578" > MKL 2020.1, VS2019 linking bug < / a > .< / p >
< li > Either Intel Parallel Studio 2020 or Intel Math Kernel Library 2020 is installed< / li >
< p > The build is targeting < code > Windows 10 SDK (10.0.17763.0)< / code > and the < code > v142< / code > platform toolset,
< li >
both of which can be installed as individual components in the Visual Studio Installer,
Visual Studio 2019, with the following options
together with the < code > Desktop development with C++< / code > workload.< / p >
< ul >
< li > Desktop development with C++ workload< / li >
< li > Windows 10 SDK (10.0.17763.0)< / li >
< li > MSVC v142 - VS 2019 C++ x64/x86 build tools< / li >
< / ul >
< / li >
< / ul >
< p > The build can then be triggered by calling:< / p >
< p > The build can then be triggered by calling:< / p >
< table class = "pre" > < tr > < td class = "lines" > < pre class = "fssnip" > < span class = "l" > 1: < / span >
< table class = "pre" > < tr > < td class = "lines" > < pre class = "fssnip" > < span class = "l" > 1: < / span >
< span class = "l" > 2: < / span >
< span class = "l" > 2: < / span >
@ -226,6 +228,8 @@ together with the <code>Desktop development with C++</code> workload.</p>
< / code > < / pre > < / td >
< / code > < / pre > < / td >
< / tr >
< / tr >
< / table >
< / table >
< p > If you run into an error with < code > mkl_link_tool.exe< / code > you may need to patch a targets file,
see < a href = "https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/851578" > MKL 2020.1, VS2019 linking bug < / a > .< / p >
< p > The build puts the binaries to < code > out/MKL/Windows/x64< / code > (and < code > x86< / code > ), the NuGet package
< p > The build puts the binaries to < code > out/MKL/Windows/x64< / code > (and < code > x86< / code > ), the NuGet package
to < code > out/MKL/NuGet< / code > and a Zip archive to < code > out/MKL/Zip< / code > . You can directly use the provider from
to < code > out/MKL/NuGet< / code > and a Zip archive to < code > out/MKL/Zip< / code > . You can directly use the provider from
there by setting < code > Control.NativeProviderPath< / code > to the full path pointing to < code > out/MKL/Windows/< / code > ;
there by setting < code > Control.NativeProviderPath< / code > to the full path pointing to < code > out/MKL/Windows/< / code > ;