2018-03-01 15:14:36 +00:00
|
|
|
#!powershell
|
|
|
|
#
|
|
|
|
# This script downloads, configures and builds Slic3r PE dependencies for Unix.
|
|
|
|
# (That is, all dependencies except perl + wxWidgets.)
|
|
|
|
#
|
|
|
|
# To use this script, launch the Visual Studio command line,
|
|
|
|
# `cd` into the directory containing this script and use this command:
|
|
|
|
#
|
|
|
|
# powershell .\slic3r-makedeps.ps1
|
|
|
|
#
|
|
|
|
# The dependencies will be downloaded and unpacked into the current dir.
|
|
|
|
# This script WILL NOT try to guess the build architecture (64 vs 32 bits),
|
|
|
|
# it will by default build the 64-bit variant. To build the 32-bit variant, use:
|
|
|
|
#
|
|
|
|
# powershell .\slic3r-makedeps.ps1 -b32
|
|
|
|
#
|
|
|
|
# Built libraries are installed into $destdir,
|
|
|
|
# which by default is C:\local\slic3r-destdir-$bits
|
|
|
|
# You can customize the $destdir using:
|
|
|
|
#
|
|
|
|
# powershell .\slic3r-makedeps.ps1 -destdir C:\foo\bar
|
|
|
|
#
|
|
|
|
# To pass the $destdir path along to cmake, set the use CMAKE_PREFIX_PATH variable
|
|
|
|
# and set it to $destdir\usr\local
|
|
|
|
#
|
|
|
|
# Script requirements: PowerShell 3.0, .NET 4.5
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
param(
|
|
|
|
[switch]$b32 = $false,
|
|
|
|
[string]$destdir = ""
|
|
|
|
)
|
|
|
|
|
|
|
|
if ($destdir -eq "") {
|
|
|
|
$destdir = "C:\local\slic3r-destdir-" + ('32', '64')[!$b32]
|
|
|
|
}
|
|
|
|
|
|
|
|
$BOOST = 'boost_1_63_0'
|
2018-04-04 09:18:22 +00:00
|
|
|
$CURL = 'curl-7.58.0'
|
2018-03-01 15:14:36 +00:00
|
|
|
$TBB_SHA = 'a0dc9bf76d0120f917b641ed095360448cabc85b'
|
|
|
|
$TBB = "tbb-$TBB_SHA"
|
2018-10-11 13:19:53 +00:00
|
|
|
$WXWIDGETS_VER = "3.1.1"
|
|
|
|
$WXWIDGETS = "wxWidgets-$WXWIDGETS_VER"
|
2018-03-01 15:14:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
# Set up various settings and utilities:
|
|
|
|
[Environment]::CurrentDirectory = Get-Location
|
|
|
|
$NPROC = (Get-WmiObject -class Win32_processor).NumberOfLogicalProcessors
|
|
|
|
Add-Type -A System.IO.Compression.FileSystem
|
|
|
|
# This fxies SSL/TLS errors, credit goes to Ansible; see their `win_get_url.ps1` file
|
|
|
|
$security_protcols = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::SystemDefault
|
|
|
|
if ([Net.SecurityProtocolType].GetMember('Tls11').Count -gt 0) {
|
|
|
|
$security_protcols = $security_protcols -bor [Net.SecurityProtocolType]::Tls11
|
|
|
|
}
|
|
|
|
if ([Net.SecurityProtocolType].GetMember('Tls12').Count -gt 0) {
|
|
|
|
$security_protcols = $security_protcols -bor [Net.SecurityProtocolType]::Tls12
|
|
|
|
}
|
|
|
|
[Net.ServicePointManager]::SecurityProtocol = $security_protcols
|
|
|
|
$webclient = New-Object System.Net.WebClient
|
|
|
|
|
|
|
|
|
|
|
|
# Ensure DESTDIR exists:
|
|
|
|
mkdir $destdir -ea 0
|
|
|
|
mkdir "$destdir\usr\local" -ea 0
|
|
|
|
|
|
|
|
|
|
|
|
# Download sources:
|
|
|
|
echo 'Downloading sources ...'
|
|
|
|
if (!(Test-Path "$BOOST.zip")) { $webclient.DownloadFile("https://dl.bintray.com/boostorg/release/1.63.0/source/$BOOST.zip", "$BOOST.zip") }
|
|
|
|
if (!(Test-Path "$TBB.zip")) { $webclient.DownloadFile("https://github.com/wjakob/tbb/archive/$TBB_SHA.zip", "$TBB.zip") }
|
|
|
|
if (!(Test-Path "$CURL.zip")) { $webclient.DownloadFile("https://curl.haxx.se/download/$CURL.zip", ".\$CURL.zip") }
|
2018-10-11 13:19:53 +00:00
|
|
|
if (!(Test-Path "$WXWIDGETS.zip")) { $webclient.DownloadFile("https://github.com/wxWidgets/wxWidgets/releases/download/v$WXWIDGETS_VER/$WXWIDGETS.zip", ".\$WXWIDGETS.zip") }
|
2018-03-01 15:14:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Unpack sources:
|
|
|
|
echo 'Unpacking ...'
|
2018-10-11 13:19:53 +00:00
|
|
|
if (!(Test-Path "$BOOST")) { [IO.Compression.ZipFile]::ExtractToDirectory("$BOOST.zip", '.') }
|
|
|
|
if (!(Test-Path "$TBB")) { [IO.Compression.ZipFile]::ExtractToDirectory("$TBB.zip", '.') }
|
|
|
|
if (!(Test-Path "$CURL")) { [IO.Compression.ZipFile]::ExtractToDirectory("$CURL.zip", '.') }
|
|
|
|
if (!(Test-Path "$WXWIDGETS")) { [IO.Compression.ZipFile]::ExtractToDirectory("$WXWIDGETS.zip", "$WXWIDGETS") }
|
|
|
|
|
|
|
|
|
|
|
|
# Patch PNG in wxWidgets
|
|
|
|
# PNG prefix is not applied properly to two functions
|
|
|
|
$pngprefix_h = "$WXWIDGETS\src\png\pngprefix.h"
|
|
|
|
"#define png_write_eXIf wx_png_write_eXIf`n#define png_handle_eXIf wx_png_handle_eXIf`n`n" + (Get-Content $pngprefix_h | Out-String) | Set-Content $pngprefix_h
|
2018-03-01 15:14:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Build libraries:
|
|
|
|
echo 'Building ...'
|
|
|
|
|
|
|
|
# Build boost
|
|
|
|
pushd "$BOOST"
|
|
|
|
.\bootstrap
|
|
|
|
$adr_mode = ('32', '64')[!$b32]
|
|
|
|
.\b2 `
|
|
|
|
-j "$NPROC" `
|
|
|
|
--with-system `
|
|
|
|
--with-filesystem `
|
|
|
|
--with-thread `
|
|
|
|
--with-log `
|
|
|
|
--with-locale `
|
|
|
|
--with-regex `
|
|
|
|
"--prefix=$destdir/usr/local" `
|
|
|
|
"address-model=$adr_mode" `
|
|
|
|
toolset=msvc-12.0 `
|
|
|
|
link=static `
|
|
|
|
variant=release `
|
|
|
|
threading=multi `
|
|
|
|
boost.locale.icu=off `
|
|
|
|
install
|
|
|
|
popd
|
|
|
|
|
|
|
|
# Build TBB
|
|
|
|
pushd "$TBB"
|
|
|
|
mkdir 'mybuild' -ea 0
|
|
|
|
cd 'mybuild'
|
|
|
|
$generator = ('Visual Studio 12', 'Visual Studio 12 Win64')[!$b32]
|
|
|
|
cmake .. `
|
|
|
|
-G "$generator" `
|
|
|
|
-DCMAKE_CONFIGURATION_TYPES=Release `
|
|
|
|
-DTBB_BUILD_SHARED=OFF `
|
|
|
|
-DTBB_BUILD_TESTS=OFF "-DCMAKE_INSTALL_PREFIX:PATH=$destdir\usr\local"
|
|
|
|
msbuild /P:Configuration=Release INSTALL.vcxproj
|
|
|
|
popd
|
|
|
|
|
|
|
|
# Build libcurl:
|
|
|
|
pushd "$CURL\winbuild"
|
|
|
|
$machine = ("x86", "x64")[!$b32]
|
|
|
|
nmake /f Makefile.vc mode=static VC=12 GEN_PDB=yes DEBUG=no "MACHINE=$machine"
|
|
|
|
Copy-Item -R -Force ..\builds\libcurl-*-winssl\include\* "$destdir\usr\local\include\"
|
|
|
|
Copy-Item -R -Force ..\builds\libcurl-*-winssl\lib\* "$destdir\usr\local\lib\"
|
|
|
|
popd
|
|
|
|
|
2018-10-11 13:19:53 +00:00
|
|
|
# Build wxWidgets
|
|
|
|
pushd "$WXWIDGETS"
|
|
|
|
pushd "build\msw"
|
|
|
|
$target_cpu_opt = ("", "TARGET_CPU=X64")[!$b32]
|
|
|
|
$lib_dir = ("vc_lib", "vc_x64_lib")[!$b32]
|
|
|
|
nmake /f makefile.vc `
|
|
|
|
BUILD=release `
|
|
|
|
SHARED=0 `
|
|
|
|
UNICODE=1 `
|
|
|
|
USE_GUI=1 `
|
|
|
|
"$target_cpu_opt"
|
|
|
|
popd
|
|
|
|
Copy-Item -R -Force include\* "$destdir\usr\local\include\"
|
|
|
|
Copy-Item -R -Force "lib\$lib_dir" "$destdir\usr\local\lib\"
|
|
|
|
popd
|
|
|
|
|
2018-03-01 15:14:36 +00:00
|
|
|
|
|
|
|
echo ""
|
|
|
|
echo "All done!"
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
catch [Exception]
|
|
|
|
{
|
|
|
|
# This prints errors in a verbose manner
|
|
|
|
echo $_.Exception|format-list -force
|
|
|
|
}
|