-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathbuild.ps1
75 lines (63 loc) · 2.56 KB
/
build.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# define parameters
$version1 = '1.10.6'
$version2 = '1_10_6'
$topFolderName = "CMake-hdf5-$version1"
$sourceFolderName = "hdf5-$version1"
if ($IsLinux) { $extension = 'tar.gz' }
elseif ($IsMacOs) { $extension = 'tar.gz' }
elseif ($IsWindows) { $extension = 'zip' }
$url = "https://s3.amazonaws.com/hdf-wordpress-1/wp-content/uploads/manual/HDF5/HDF5_$version2/source/CMake-hdf5-$version1.$extension"
# download and extract source files
Invoke-WebRequest -Uri $url -OutFile archive.$extension
if ($IsLinux) { tar xzf archive.$extension }
if ($IsMacOs) { tar xzf archive.$extension }
elseif ($IsWindows) { Expand-Archive -Path archive.$extension -DestinationPath . }
# remove unnecessary source archive (to avoid unintentional deployment)
Remove-Item -Path "archive.$extension"
# create build folder
New-Item -Path "./$topFolderName/build" -ItemType directory
Set-Location -Path "./$topFolderName/build"
# define CMAKE options
$params = @'
-DCMAKE_BUILD_TYPE:STRING=Release
-DBUILD_SHARED_LIBS:BOOL=ON
-DBUILD_TESTING:BOOL=OFF
-DHDF5_BUILD_CPP_LIB:BOOL=OFF
-DHDF5_BUILD_EXAMPLES:BOOL=OFF
-DHDF5_BUILD_FORTRAN:BOOL=OFF
-DALLOW_UNSUPPORTED:BOOL=ON
-DHDF5_BUILD_HL_LIB:BOOL=ON
-DHDF5_BUILD_JAVA:BOOL=OFF
-DHDF5_BUILD_TOOLS:BOOL=OFF
-DHDF5_ENABLE_THREADSAFE:BOOL=ON
-DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=TGZ
-DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=ON
-DHDF5_ENABLE_SZIP_SUPPORT:BOOL=ON
-DHDF5_ENABLE_SZIP_ENCODING:BOOL=ON
-DZLIB_TGZ_NAME:STRING=ZLib.tar.gz
-DSZIP_TGZ_NAME:STRING=SZip.tar.gz
-DTGZPATH:PATH=$((Get-Location).Path)/..
'@.replace("`n",' ')
# create build files
if ($IsLinux) { Invoke-Expression "cmake -G 'Unix Makefiles' $params ./../$sourceFolderName" }
elseif ($IsMacOs) { Invoke-Expression "cmake -G 'Unix Makefiles' $params ./../$sourceFolderName" }
elseif ($IsWindows -And $env:PLATFORM -eq 'x64') { Invoke-Expression "cmake -G 'Visual Studio 15 2017 Win64' $params ./../$sourceFolderName" }
elseif ($IsWindows -And $env:PLATFORM -eq 'x86') { Invoke-Expression "cmake -G 'Visual Studio 15 2017' $params ./../$sourceFolderName" }
# build
cmake --build . --config Release
# collect artifacts
if ($IsLinux) # AppVeyor
{
Set-Location -Path ./bin
zip -y "./../../../Linux_$($env:PLATFORM).zip" ./*.so*
}
if ($IsMacOs) # Travis
{
Set-Location -Path ./bin
zip -y './../../../MacOS_x64.zip' ./*.dylib*
}
elseif ($IsWindows) # AppVeyor
{
Set-Location -Path ./bin/release
Compress-Archive -Path ./*.dll -DestinationPath "./../../../../Windows_$($env:PLATFORM).zip"
}