@@ -19,6 +19,7 @@ pub struct Build {
19
19
debug : Option < bool > ,
20
20
}
21
21
22
+ #[ derive( Clone , Debug ) ]
22
23
pub struct Artifacts {
23
24
include_dir : PathBuf ,
24
25
lib_dir : PathBuf ,
@@ -67,7 +68,7 @@ impl Build {
67
68
self
68
69
}
69
70
70
- pub fn build ( & mut self , version : Version ) -> Artifacts {
71
+ pub fn build ( & self , version : Version ) -> Artifacts {
71
72
let target = & self . target . as_ref ( ) . expect ( "TARGET is not set" ) [ ..] ;
72
73
let out_dir = self . out_dir . as_ref ( ) . expect ( "OUT_DIR is not set" ) ;
73
74
let manifest_dir = Path :: new ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
@@ -79,7 +80,19 @@ impl Build {
79
80
}
80
81
81
82
let mut config = cc:: Build :: new ( ) ;
82
- config. warnings ( false ) . cargo_metadata ( false ) ;
83
+ config. warnings ( false ) . cargo_metadata ( false ) . target ( target) ;
84
+
85
+ match & self . host {
86
+ Some ( host) => {
87
+ config. host ( host) ;
88
+ }
89
+ // Host will be taken from the environment variable
90
+ None if env:: var ( "HOST" ) . is_ok ( ) => { }
91
+ None => {
92
+ // If called outside of build script, set default host
93
+ config. host ( target) ;
94
+ }
95
+ }
83
96
84
97
match target {
85
98
_ if target. contains ( "linux" ) => {
@@ -141,17 +154,22 @@ impl Build {
141
154
config. define ( "LUA_UCID" , None ) ;
142
155
}
143
156
144
- if self . debug . unwrap_or ( cfg ! ( debug_assertions) ) {
157
+ let debug = self . debug . unwrap_or ( cfg ! ( debug_assertions) ) ;
158
+ if debug {
145
159
config. define ( "LUA_USE_APICHECK" , None ) ;
146
160
config. debug ( true ) ;
147
161
}
148
162
149
- if let Some ( host) = & self . host {
150
- config. host ( host) ;
151
- }
152
-
153
- if let Some ( opt_level) = & self . opt_level {
154
- config. opt_level_str ( opt_level) ;
163
+ match & self . opt_level {
164
+ Some ( opt_level) => {
165
+ config. opt_level_str ( opt_level) ;
166
+ }
167
+ // Opt level will be taken from the environment variable
168
+ None if env:: var ( "OPT_LEVEL" ) . is_ok ( ) => { }
169
+ None => {
170
+ // If called outside of build script, set default opt level
171
+ config. opt_level ( if debug { 0 } else { 2 } ) ;
172
+ }
155
173
}
156
174
157
175
config
0 commit comments