@@ -4,6 +4,7 @@ use std::error::Error;
44use std:: fs;
55use std:: io:: { BufRead , BufReader } ;
66use std:: path:: { Path , PathBuf } ;
7+ use std:: process:: Command ;
78
89fn main ( ) -> Result < ( ) , Box < dyn Error > > {
910 let conf = {
@@ -12,7 +13,14 @@ fn main() -> Result<(), Box<dyn Error>> {
1213 let f = fs:: File :: open ( "conf.pri" ) ?;
1314 let reader = BufReader :: new ( f) ;
1415
15- const CONF_VARS : & [ & str ] = & [ "APP_VERSION" , "CONFIGDIR" , "LIBDIR" , "QT_INSTALL_LIBS" ] ;
16+ const CONF_VARS : & [ & str ] = & [
17+ "APP_VERSION" ,
18+ "CONFIGDIR" ,
19+ "LIBDIR" ,
20+ "QT_INSTALL_LIBS" ,
21+ "QMAKE_PATH" ,
22+ "MAKETOOL" ,
23+ ] ;
1624
1725 for line in reader. lines ( ) {
1826 let line = line?;
@@ -35,9 +43,25 @@ fn main() -> Result<(), Box<dyn Error>> {
3543 let config_dir = conf. get ( "CONFIGDIR" ) . unwrap ( ) ;
3644 let lib_dir = conf. get ( "LIBDIR" ) . unwrap ( ) ;
3745 let qt_install_libs = conf. get ( "QT_INSTALL_LIBS" ) . unwrap ( ) ;
46+ let qmake_path = fs:: canonicalize ( conf. get ( "QMAKE_PATH" ) . unwrap ( ) ) ?;
47+ let maketool = fs:: canonicalize ( conf. get ( "MAKETOOL" ) . unwrap ( ) ) ?;
3848
39- let cpp_lib_dir =
40- PathBuf :: from ( env:: var ( "CARGO_MANIFEST_DIR" ) . unwrap ( ) ) . join ( Path :: new ( "target/cpp" ) ) ;
49+ let root_dir = PathBuf :: from ( env:: var ( "CARGO_MANIFEST_DIR" ) ?) ;
50+ let cpp_src_dir = root_dir. join ( Path :: new ( "src/cpp" ) ) ;
51+ let cpp_lib_dir = root_dir. join ( Path :: new ( "target/cpp" ) ) ;
52+
53+ if !cpp_src_dir. join ( "Makefile" ) . try_exists ( ) ? {
54+ assert ! ( Command :: new( qmake_path)
55+ . args( & [ "-o" , "Makefile" , "cpp.pro" ] )
56+ . current_dir( & cpp_src_dir)
57+ . status( ) ?
58+ . success( ) ) ;
59+ }
60+
61+ assert ! ( Command :: new( maketool)
62+ . current_dir( & cpp_src_dir)
63+ . status( ) ?
64+ . success( ) ) ;
4165
4266 println ! ( "cargo:rustc-env=APP_VERSION={}" , app_version) ;
4367 println ! ( "cargo:rustc-env=CONFIG_DIR={}" , config_dir) ;
@@ -53,14 +77,6 @@ fn main() -> Result<(), Box<dyn Error>> {
5377
5478 println ! ( "cargo:rerun-if-changed=conf.pri" ) ;
5579 println ! ( "cargo:rerun-if-changed=src" ) ;
56- println ! (
57- "cargo:rerun-if-changed={}/libpushpin-cpp.a" ,
58- cpp_lib_dir. display( )
59- ) ;
60- println ! (
61- "cargo:rerun-if-changed={}/libpushpin-cpptest.a" ,
62- cpp_lib_dir. display( )
63- ) ;
6480
6581 Ok ( ( ) )
6682}
0 commit comments