-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathappveyor.yml
134 lines (119 loc) · 4.9 KB
/
appveyor.yml
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Appveyor configuration template for Rust using rustup for Rust installation
# https://github.com/starkat99/appveyor-rust
## Operating System (VM environment) ##
# Rust needs at least Visual Studio 2013 Appveyor OS for MSVC targets.
os: Visual Studio 2015
## Build Matrix ##
# This configuration will setup a build for each channel & target combination (12 windows
# combinations in all).
#
# There are 3 channels: stable, beta, and nightly.
#
# Alternatively, the full version may be specified for the channel to build using that specific
# version (e.g. channel: 1.5.0)
#
# The values for target are the set of windows Rust build targets. Each value is of the form
#
# ARCH-pc-windows-TOOLCHAIN
#
# Where ARCH is the target architecture, either x86_64 or i686, and TOOLCHAIN is the linker
# toolchain to use, either msvc or gnu. See https://www.rust-lang.org/downloads.html#win-foot for
# a description of the toolchain differences.
# See https://github.com/rust-lang-nursery/rustup.rs/#toolchain-specification for description of
# toolchains and host triples.
#
# Comment out channel/target combos you do not wish to build in CI.
#
# You may use the `cargoflags` and `RUSTFLAGS` variables to set additional flags for cargo commands
# and rustc, respectively. For instance, you can uncomment the cargoflags lines in the nightly
# channels to enable unstable features when building for nightly. Or you could add additional
# matrix entries to test different combinations of features.
environment:
matrix:
### MSVC Toolchains ###
# The MSVC toolchain is not supported for this program right now
### GNU Toolchains ###
# Stable 64-bit GNU
- channel: stable
platform: x64
target: x86_64-pc-windows-gnu
configuration: Debug
BITS: 64
# Stable 32-bit GNU
- channel: stable
platform: x86
target: i686-pc-windows-gnu
configuration: Debug
BITS: 32
# 1.31 64-bit GNU
- channel: 1.31.0
platform: x64
target: x86_64-pc-windows-gnu
configuration: Debug
BITS: 64
# 1.31 32-bit GNU
- channel: 1.31.0
platform: x86
target: i686-pc-windows-gnu
configuration: Debug
BITS: 32
# Stable 64-bit GNU (release & package)
- channel: stable
platform: x64
target: x86_64-pc-windows-gnu
configuration: Release
BITS: 64
PACKAGE: true
# Stable 32-bit GNU (release & package)
- channel: stable
platform: x86
target: i686-pc-windows-gnu
configuration: Release
BITS: 32
PACKAGE: true
## Install Script ##
# This is the most important part of the Appveyor configuration. This installs the version of Rust
# specified by the 'channel' and 'target' environment variables from the build matrix. This uses
# rustup to install Rust.
#
# For simple configurations, instead of using the build matrix, you can simply set the
# default-toolchain and default-host manually here.
install:
- IF "%BITS%" == "32" SET ARCH=i686
- IF "%BITS%" == "64" SET ARCH=x86_64
- appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe
- rustup-init -yv --default-toolchain %channel% --default-host %target%
- set PATH=C:\msys64\mingw%BITS%\bin;C:\msys64\usr\bin;%USERPROFILE%\.cargo\bin;%PATH%
- rustc -vV
- cargo -vV
- pacman --noconfirm -S mingw-w64-%ARCH%-gtk3 mingw-w64-%ARCH%-adwaita-icon-theme
## Build Script ##
# Build the project using optimizations and removing the console when in release mode
build_script:
- if "%configuration%"=="Release" (
cargo rustc --release --bin gattii -- -C link-args=-mwindows
) else (
cargo build
)
# There are no tests, so don't bother running a test stage
test: false
# Package after building is successful. We use 7zip in an after_build section
# instead of in artifacts because artifacts doesn't allow for manipulating
# the resultant directory path in the archive
after_build:
- if "%PACKAGE%"=="true" ( mkdir share\icons )
- if "%PACKAGE%"=="true" ( cp -r C:\msys64\mingw%BITS%\share\icons\Adwaita share\icons )
- if "%PACKAGE%"=="true" ( mkdir share\glib-2.0\schemas )
- if "%PACKAGE%"=="true" ( cp C:\msys64\mingw%BITS%\share\glib-2.0\schemas\org.gtk.Settings.FileChooser.gschema.xml share\glib-2.0\schemas )
- if "%PACKAGE%"=="true" ( glib-compile-schemas share\glib-2.0\schemas )
- if "%PACKAGE%"=="true" ( 7z a gattii.zip share )
- if "%PACKAGE%"=="true" ( ldd target\release\gattii.exe )
- if "%PACKAGE%"=="true" ( ldd target\release\gattii.exe | awk -F"[ ]+" "/mingw/{ gsub(/^\t/,\"\",$1); print \"C:\\\\msys64\\\\mingw%BITS%\\\\bin\\\\\"$1 }" | uniq -u > dlls.txt )
- if "%PACKAGE%"=="true" ( 7z a gattii.zip -i@dlls.txt )
- if "%PACKAGE%"=="true" ( 7z a gattii.zip %APPVEYOR_BUILD_FOLDER%\target\release\gattii.exe )
- if "%PACKAGE%"=="true" ( 7z a gattii.zip resources )
- if "%PACKAGE%"=="true" ( 7z a gattii.zip README.md )
- if "%PACKAGE%"=="true" ( 7z a gattii.zip LICENSE.txt )
artifacts:
- path: gattii.zip
name: Gattii