@@ -16,56 +16,98 @@ fn main() {
1616 if target != "armv7-sony-vita-newlibeabihf" {
1717 // Running IDE on anything other than linux will fail, so ignore compile error
1818 let _ = cc:: Build :: new ( ) . file ( "builtins/cache.c" ) . try_compile ( "cache" ) . ok ( ) ;
19- return ;
2019 }
2120
2221 let num_jobs = env:: var ( "NUM_JOBS" ) . unwrap ( ) ;
2322
24- let vitasdk_path = PathBuf :: from ( env:: var ( "VITASDK" ) . unwrap ( ) ) ;
23+ let vitasdk_path = env:: var ( "VITASDK" ) . map ( PathBuf :: from) ;
24+ if vitasdk_path. is_err ( ) {
25+ return ;
26+ }
27+ let vitasdk_path = vitasdk_path. unwrap ( ) ;
2528 let vitasdk_include_path = vitasdk_path. join ( "arm-vita-eabi" ) . join ( "include" ) ;
2629 let vitasdk_lib_path = vitasdk_path. join ( "arm-vita-eabi" ) . join ( "lib" ) ;
2730
28- let bindings_file = out_path. join ( "imgui_bindings.rs" ) ;
29-
30- const IMGUI_HEADERS : [ & str ; 3 ] = [ "imgui.h" , "imgui_internal.h" , "imgui_impl_vitagl.h" ] ;
31- let mut bindings = bindgen:: Builder :: default ( )
32- . clang_args ( [ "-I" , vitasdk_include_path. to_str ( ) . unwrap ( ) ] )
33- . clang_args ( [ "-x" , "c++" ] )
34- . clang_args ( [ "-std=c++17" ] )
35- . clang_args ( [ "-target" , "armv7a-none-eabihf" ] )
36- . formatter ( Formatter :: Prettyplease ) ;
37- for header in IMGUI_HEADERS {
38- let header_path = vitasdk_include_path. join ( header) ;
39- println ! ( "cargo:rerun-if-changed={header_path:?}" ) ;
40- bindings = bindings. header ( header_path. to_str ( ) . unwrap ( ) ) ;
31+ let kubridge_path = PathBuf :: from ( "kubridge" ) ;
32+
33+ {
34+ let bindings_file = out_path. join ( "imgui_bindings.rs" ) ;
35+
36+ const IMGUI_HEADERS : [ & str ; 3 ] = [ "imgui.h" , "imgui_internal.h" , "imgui_impl_vitagl.h" ] ;
37+ let mut bindings = bindgen:: Builder :: default ( )
38+ . clang_args ( [ "-I" , vitasdk_include_path. to_str ( ) . unwrap ( ) ] )
39+ . clang_args ( [ "-x" , "c++" ] )
40+ . clang_args ( [ "-std=c++17" ] )
41+ . clang_args ( [ "-target" , "armv7a-none-eabihf" ] )
42+ . formatter ( Formatter :: Prettyplease ) ;
43+ for header in IMGUI_HEADERS {
44+ let header_path = vitasdk_include_path. join ( header) ;
45+ println ! ( "cargo:rerun-if-changed={header_path:?}" ) ;
46+ bindings = bindings. header ( header_path. to_str ( ) . unwrap ( ) ) ;
47+ }
48+ bindings. rust_target ( bindgen:: RustTarget :: Nightly ) . generate ( ) . unwrap ( ) . write_to_file ( bindings_file) . unwrap ( ) ;
49+
50+ println ! ( "cargo:rustc-link-search=native={vitasdk_lib_path:?}" ) ;
51+ println ! ( "cargo:rustc-link-lib=static=imgui" ) ;
52+ }
53+
54+ {
55+ let bindings_file = out_path. join ( "kubridge_bindings.rs" ) ;
56+
57+ const KUBRIDGE_HEADERS : [ & str ; 1 ] = [ "kubridge.h" ] ;
58+ let mut bindings = bindgen:: Builder :: default ( )
59+ . clang_args ( [ "-I" , vitasdk_include_path. to_str ( ) . unwrap ( ) ] )
60+ . clang_args ( [ "-I" , kubridge_path. to_str ( ) . unwrap ( ) ] )
61+ . clang_args ( [ "-x" , "c++" ] )
62+ . clang_args ( [ "-std=c++17" ] )
63+ . clang_args ( [ "-target" , "armv7a-none-eabihf" ] )
64+ . formatter ( Formatter :: Prettyplease ) ;
65+ for header in KUBRIDGE_HEADERS {
66+ let header_path = kubridge_path. join ( header) ;
67+ println ! ( "cargo:rerun-if-changed={header_path:?}" ) ;
68+ bindings = bindings. header ( header_path. to_str ( ) . unwrap ( ) ) ;
69+ }
70+ bindings. rust_target ( bindgen:: RustTarget :: Nightly ) . generate ( ) . unwrap ( ) . write_to_file ( bindings_file) . unwrap ( ) ;
71+ }
72+
73+ if target != "armv7-sony-vita-newlibeabihf" {
74+ return ;
75+ }
76+
77+ {
78+ let vita_gl_path = PathBuf :: from ( "vitaGL" ) ;
79+ let vita_gl_lib_path = vita_gl_path. join ( "libvitaGL.a" ) ;
80+ let vita_gl_lib_new_path = vita_gl_path. join ( "libvitaGL_dsvita.a" ) ;
81+
82+ Command :: new ( "make" )
83+ . current_dir ( "vitaGL" )
84+ . args ( [ "-j" , & num_jobs] )
85+ . envs ( [
86+ ( "HAVE_UNFLIPPED_FBOS" , "1" ) ,
87+ ( "NO_TEX_COMBINER" , "1" ) ,
88+ ( "NO_DEBUG" , "1" ) ,
89+ ( "SHADER_COMPILER_SPEEDHACK" , "1" ) ,
90+ ( "MATH_SPEEDHACK" , "1" ) ,
91+ ( "HAVE_SHADER_CACHE" , "1" ) ,
92+ // ("HAVE_SHARK_LOG", "1"),
93+ // ("LOG_ERRORS", "1"),
94+ // ("HAVE_RAZOR", "1"),
95+ ] )
96+ . status ( )
97+ . unwrap ( ) ;
98+
99+ fs:: rename ( vita_gl_lib_path, vita_gl_lib_new_path) . unwrap ( ) ;
100+ println ! ( "cargo:rustc-link-search=native={}" , fs:: canonicalize( vita_gl_path) . unwrap( ) . to_str( ) . unwrap( ) ) ;
101+ println ! ( "cargo:rustc-link-lib=static=vitaGL_dsvita" ) ;
102+ }
103+
104+ {
105+ let kubridge_dst_path = cmake:: Config :: new ( & kubridge_path) . build_target ( "libkubridge_stub.a" ) . build ( ) . join ( "build" ) ;
106+ let kubridge_lib_path = kubridge_dst_path. join ( "libkubridge_stub.a" ) ;
107+ let kubridge_lib_new_path = kubridge_dst_path. join ( "libkubridge_stub_dsvita.a" ) ;
108+ fs:: rename ( kubridge_lib_path, kubridge_lib_new_path) . unwrap ( ) ;
109+
110+ println ! ( "cargo:rustc-link-search=native={}" , fs:: canonicalize( kubridge_dst_path) . unwrap( ) . to_str( ) . unwrap( ) ) ;
111+ println ! ( "cargo:rustc-link-lib=static=kubridge_stub_dsvita" ) ;
41112 }
42- bindings. rust_target ( bindgen:: RustTarget :: Nightly ) . generate ( ) . unwrap ( ) . write_to_file ( bindings_file) . unwrap ( ) ;
43-
44- println ! ( "cargo:rustc-link-search=native={vitasdk_lib_path:?}" ) ;
45- println ! ( "cargo:rustc-link-lib=static=imgui" ) ;
46-
47- let vita_gl_path = PathBuf :: from ( "vitaGL" ) ;
48- let vita_gl_lib_path = vita_gl_path. join ( "libvitaGL.a" ) ;
49- let vita_gl_lib_new_path = vita_gl_path. join ( "libvitaGL_dsvita.a" ) ;
50-
51- Command :: new ( "make" )
52- . current_dir ( "vitaGL" )
53- . args ( [ "-j" , & num_jobs] )
54- . envs ( [
55- ( "HAVE_UNFLIPPED_FBOS" , "1" ) ,
56- ( "NO_TEX_COMBINER" , "1" ) ,
57- ( "NO_DEBUG" , "1" ) ,
58- ( "SHADER_COMPILER_SPEEDHACK" , "1" ) ,
59- ( "MATH_SPEEDHACK" , "1" ) ,
60- ( "HAVE_SHADER_CACHE" , "1" ) ,
61- // ("HAVE_SHARK_LOG", "1"),
62- // ("LOG_ERRORS", "1"),
63- // ("HAVE_RAZOR", "1"),
64- ] )
65- . status ( )
66- . unwrap ( ) ;
67-
68- fs:: rename ( vita_gl_lib_path, vita_gl_lib_new_path) . unwrap ( ) ;
69- println ! ( "cargo:rustc-link-search=native={}" , fs:: canonicalize( vita_gl_path) . unwrap( ) . to_str( ) . unwrap( ) ) ;
70- println ! ( "cargo:rustc-link-lib=static=vitaGL_dsvita" ) ;
71113}
0 commit comments