@@ -6,21 +6,41 @@ LIBDIR=$(PREFIX)\lib
6
6
!endif
7
7
8
8
!if "$(CARGO)" == ""
9
- CARGO = cargo
9
+ CARGO = %HOMEPATH%\.cargo\bin\ cargo
10
10
!endif
11
11
12
12
!if "$(RUSTUP)" == ""
13
- RUSTUP = rustup
13
+ RUSTUP = %HOMEPATH%\.cargo\bin\ rustup
14
14
!endif
15
15
16
- # For those who wish to use the nightly toolchain or a particular
17
- # toolchain version to build librsvg
18
- !ifdef USE_NIGHTLY_TOOLCHAIN
19
- TOOLCHAIN_TYPE = nightly
20
- !elseif defined(TOOLCHAIN_VERSION)
16
+ !if [call rust-default-target.bat $(RUSTUP)]
17
+ !endif
18
+ !include rust-cfg.mak
19
+ !if [del /f/q rust-cfg.mak]
20
+ !endif
21
+
22
+ # For those who wish to use a particular toolchain version to build librsvg
23
+ !if defined(TOOLCHAIN_VERSION)
21
24
TOOLCHAIN_TYPE = $(TOOLCHAIN_VERSION )
22
25
!else
23
- TOOLCHAIN_TYPE = stable
26
+ TOOLCHAIN_TYPE =
27
+ !endif
28
+
29
+ !if "$(TOOLCHAIN_TYPE)" == ""
30
+ !if "$(RUST_DEFAULT_COMPILER)" != "pc-windows-msvc"
31
+ !error The default Rust toolchain is not an MSVC toolchain. Please use `rustup` to set the default to an MSVC toolchain
32
+ !endif
33
+ TOOLCHAIN_TYPE = $(RUST_DEFAULT_CHANNEL )
34
+ BUILD_HOST = $(RUST_DEFAULT_TARGET )
35
+ # non-default toolchain requested
36
+ !else
37
+ !if "$(PROCESSOR_ARCHITECTURE)" == "x64" || "$(PROCESSOR_ARCHITECTURE)" == "X64" || "$(PROCESSOR_ARCHITECTURE)" == "AMD64"
38
+ BUILD_HOST = x64
39
+ !elseif "$(PROCESSOR_ARCHITECTURE)" == "ARM64"
40
+ BUILD_HOST = arm64
41
+ !elseif "$(PROCESSOR_ARCHITECTURE)" == "x86"
42
+ BUILD_HOST = Win32
43
+ !endif
24
44
!endif
25
45
26
46
!ifdef VERBOSE
@@ -32,26 +52,37 @@ RUST_VERBOSE_FLAG = --verbose
32
52
FORCE_CROSS = 0
33
53
!endif
34
54
55
+ # Setup cross builds if needed
35
56
!if "$(PLAT)" == "x64"
36
57
RUST_TARGET = x86_64
37
- !if "$(PROCESSOR_ARCHITECTURE )" == "ARM64 "
58
+ !if "$(BUILD_HOST )" != "$(PLAT) "
38
59
FORCE_CROSS = 1
60
+ !if "$(BUILD_HOST)" == "arm64"
39
61
RUST_HOST = aarch64
40
- !elseif "$(PROCESSOR_ARCHITECTURE)" == "x86"
41
- FORCE_CROSS = 1
62
+ !elseif "$(BUILD_HOST)" == "Win32"
42
63
RUST_HOST = i686
43
64
!endif
65
+ !endif
44
66
!elseif "$(PLAT)" == "arm64"
45
67
RUST_TARGET = aarch64
46
- !if "$(PROCESSOR_ARCHITECTURE )" == "x64" || "$(PROCESSOR_ARCHITECTURE)" == "X64" || "$(PROCESSOR_ARCHITECTURE)" == "AMD64 "
68
+ !if "$(BUILD_HOST )" != "$(PLAT) "
47
69
FORCE_CROSS = 1
70
+ !if "$(BUILD_HOST)" == "x64"
48
71
RUST_HOST = x86_64
49
- !elseif "$(PROCESSOR_ARCHITECTURE)" == "x86"
50
- FORCE_CROSS = 1
72
+ !elseif "$(BUILD_HOST)" == "Win32"
51
73
RUST_HOST = i686
52
74
!endif
75
+ !endif
53
76
!else
54
77
RUST_TARGET = i686
78
+ !if "$(BUILD_HOST)" != "$(PLAT)"
79
+ FORCE_CROSS = 1
80
+ !if "$(BUILD_HOST)" == "arm64"
81
+ RUST_HOST = aarch64
82
+ !elseif "$(BUILD_HOST)" == "x64"
83
+ RUST_HOST = x86_64
84
+ !endif
85
+ !endif
55
86
!endif
56
87
57
88
!if "$(VALID_CFGSET)" == "TRUE"
@@ -63,21 +94,23 @@ BUILD_RUST = 0
63
94
!if "$(BUILD_RUST)" == "1"
64
95
65
96
CARGO_TARGET = $(RUST_TARGET ) -pc-windows-msvc
66
- CARGO_TARGET_CMD = --target $(CARGO_TARGET )
67
- CARGO_TARGET_TOOLCHAIN = $( TOOLCHAIN_TYPE ) - $( CARGO_TARGET )
97
+ CARGO_TARGET_TOOLCHAIN = + $( TOOLCHAIN_TYPE ) - $(CARGO_TARGET )
98
+
68
99
RUSTUP_CMD = $(RUSTUP ) default $(DEFAULT_TARGET )
69
100
CARGO_TARGET_DIR = vs$(VSVER ) \$(CFG ) \$(PLAT ) \obj\rsvg_c_api
70
101
CARGO_TARGET_DIR_FLAG = --target-dir=$(CARGO_TARGET_DIR )
71
102
72
103
MANIFEST_PATH_FLAG = --manifest-path=..\Cargo.toml
73
104
!if $(FORCE_CROSS) > 0
74
- RUST_HOST_TOOLCHAIN = $(TOOLCHAIN_TYPE ) -$(RUST_HOST ) -pc-windows-msvc
75
- CARGO_CMD = $(CARGO ) +$(RUST_HOST_TOOLCHAIN ) --locked build $(CARGO_TARGET_CMD ) $(MANIFEST_PATH_FLAG ) $(CARGO_TARGET_DIR_FLAG )
76
- CARGO_CLEAN_CMD = $(CARGO ) +$(RUST_HOST_TOOLCHAIN ) clean $(CARGO_TARGET_CMD ) $(MANIFEST_PATH_FLAG ) $(CARGO_TARGET_DIR_FLAG )
105
+ RUST_HOST_TOOLCHAIN = +$(TOOLCHAIN_TYPE ) -$(RUST_HOST ) -pc-windows-msvc
106
+
107
+ CARGO_TARGET_CMD = --target $(CARGO_TARGET )
108
+ CARGO_CMD = $(CARGO ) $(RUST_HOST_TOOLCHAIN ) --locked build $(CARGO_TARGET_CMD ) $(MANIFEST_PATH_FLAG ) $(CARGO_TARGET_DIR_FLAG )
109
+ CARGO_CLEAN_CMD = $(CARGO ) $(RUST_HOST_TOOLCHAIN ) clean $(CARGO_TARGET_CMD ) $(MANIFEST_PATH_FLAG ) $(CARGO_TARGET_DIR_FLAG )
77
110
CARGO_TARGET_OUTPUT_DIR = $(CARGO_TARGET_DIR ) \$(CARGO_TARGET ) \$(CFG )
78
111
!else
79
- CARGO_CMD = $(CARGO ) + $(CARGO_TARGET_TOOLCHAIN ) --locked build $(MANIFEST_PATH_FLAG ) $(CARGO_TARGET_DIR_FLAG )
80
- CARGO_CLEAN_CMD = $(CARGO ) + $(CARGO_TARGET_TOOLCHAIN ) clean $(MANIFEST_PATH_FLAG ) $(CARGO_TARGET_DIR_FLAG )
112
+ CARGO_CMD = $(CARGO ) $(CARGO_TARGET_TOOLCHAIN ) --locked build $(MANIFEST_PATH_FLAG ) $(CARGO_TARGET_DIR_FLAG )
113
+ CARGO_CLEAN_CMD = $(CARGO ) $(CARGO_TARGET_TOOLCHAIN ) clean $(MANIFEST_PATH_FLAG ) $(CARGO_TARGET_DIR_FLAG )
81
114
CARGO_TARGET_OUTPUT_DIR = $(CARGO_TARGET_DIR ) \$(CFG )
82
115
!endif
83
116
!if "$(CFG)" == "release" || "$(CFG)" == "Release"
@@ -125,8 +158,8 @@ build-$(PLAT)-$(CFG).pre.bat:
125
158
@echo set __VSCMD_PREINIT_VCToolsVersion=>> $@
126
159
@echo set __VSCMD_PREINIT_VS160COMNTOOLS=>> $@
127
160
@echo set __VSCMD_script_err_count=>> $@
128
- @echo if not " $( __VSCMD_PREINIT_PATH) " == " " set PATH=$( __VSCMD_PREINIT_PATH) ; %HOMEPATH% \. cargo \b in >> $@
129
- @echo if " $( __VSCMD_PREINIT_PATH) " == " " set PATH=c:\W indows\s ystem; c:\W indows; c:\W indows\s ystem32\w bem; %HOMEPATH% \. cargo \b in >> $@
161
+ @echo if not " $( __VSCMD_PREINIT_PATH) " == " " set PATH=$( __VSCMD_PREINIT_PATH) >> $@
162
+ @echo if " $( __VSCMD_PREINIT_PATH) " == " " set PATH=c:\W indows\s ystem; c:\W indows; c:\W indows\s ystem32\w bem>> $@
130
163
@echo set GTK_LIB_DIR=$(LIBDIR ) >> $@
131
164
@echo set SYSTEM_DEPS_FREETYPE2_NO_PKG_CONFIG=1 >> $@
132
165
@echo set SYSTEM_DEPS_FREETYPE2_LIB=$(FREETYPE_LIB:.lib= ) >> $@
@@ -170,7 +203,6 @@ $(RSVG_INTERNAL_LIB):
170
203
@set GTK_LIB_DIR=
171
204
172
205
$(CARGO_TARGET_OUTPUT_DIR ) \rsvg-convert.exe :
173
- @set PATH=%PATH%; %HOMEPATH%\. cargo\b in
174
206
@set GTK_LIB_DIR=$(LIBDIR ) ; $(LIB )
175
207
@set SYSTEM_DEPS_FREETYPE2_NO_PKG_CONFIG=1
176
208
@set SYSTEM_DEPS_FREETYPE2_LIB=$(FREETYPE_LIB:.lib= )
@@ -183,7 +215,6 @@ $(CARGO_TARGET_OUTPUT_DIR)\rsvg-convert.exe:
183
215
!endif
184
216
185
217
cargo-clean :
186
- @set PATH=%PATH%; %HOMEPATH%\. cargo\b in
187
218
@if exist build-$(PLAT ) -$(CFG ) .bat del /f/q build-$(PLAT ) -$(CFG ) .bat
188
219
@$(CARGO_CLEAN_CMD )
189
220
0 commit comments