@@ -20,6 +20,10 @@ use vergen_gitcl::BuildBuilder;
2020use vergen_gitcl:: Emitter ;
2121use vergen_gitcl:: GitclBuilder ;
2222
23+ static SRCWRTIMER_ROOT_DIR : std:: sync:: LazyLock < String > = std:: sync:: LazyLock :: new ( || {
24+ std:: env:: var ( "SRCWRTIMER_ROOT_DIR" ) . unwrap ( )
25+ } ) ;
26+
2327pub fn generate_inc_defines_and_enums ( outdir : & str , incfile : & str , name : & str ) {
2428 println ! ( "cargo:rerun-if-changed={}" , incfile) ;
2529 let content = std:: fs:: read_to_string ( incfile) . unwrap ( ) ;
@@ -53,29 +57,23 @@ pub {}\n",
5357 std:: fs:: write ( format ! ( "{}/{}_DEFINES.rs" , outdir, name) , defines) . unwrap ( ) ;
5458}
5559
56- pub fn use_atcprintf ( build : & mut cc:: Build ) -> & mut cc:: Build {
57- println ! ( "cargo:rerun-if-changed=../extshared/src/sprintf.cpp" ) ;
58- build. file ( "../extshared/src/sprintf.cpp" )
60+ pub fn use_atcprintf ( build : & mut cc:: Build ) {
61+ slurp_single_file ( build, & format ! ( "{}/extshared/src/sprintf.cpp" , * SRCWRTIMER_ROOT_DIR ) ) ;
5962}
6063
61- pub fn use_cellarray ( build : & mut cc:: Build ) -> & mut cc:: Build {
62- println ! ( "cargo:rerun-if-changed=../extshared/src/ICellArray.cpp" ) ;
63- build
64- . define ( "HANDLE_CELLARRAY" , None )
65- . file ( "../extshared/src/ICellArray.cpp" )
64+ pub fn use_cellarray ( build : & mut cc:: Build ) {
65+ build. define ( "HANDLE_CELLARRAY" , None ) ;
66+ slurp_single_file ( build, & format ! ( "{}/extshared/src/ICellArray.cpp" , * SRCWRTIMER_ROOT_DIR ) ) ;
6667}
6768
68- pub fn use_fileobject ( build : & mut cc:: Build ) -> & mut cc:: Build {
69- println ! ( "cargo:rerun-if-changed=../extshared/src/IFileObject.cpp" ) ;
70- println ! ( "cargo:rerun-if-changed=../extshared/src/IFileObject.hpp" ) ;
71- build
72- . define ( "HANDLE_FILEOBJECT" , None )
73- . file ( "../extshared/src/IFileObject.cpp" )
69+ pub fn use_fileobject ( build : & mut cc:: Build ) {
70+ build. define ( "HANDLE_FILEOBJECT" , None ) ;
71+ slurp_single_file ( build, & format ! ( "{}/extshared/src/IFileObject.cpp" , * SRCWRTIMER_ROOT_DIR ) ) ;
72+ slurp_single_file ( build, & format ! ( "{}/extshared/src/IFileObject.hpp" , * SRCWRTIMER_ROOT_DIR ) ) ;
7473}
7574
76- pub fn use_valvefs ( build : & mut cc:: Build ) -> & mut cc:: Build {
77- println ! ( "cargo:rerun-if-changed=../extshared/src/valvefs.cpp" ) ;
78- build. file ( "../extshared/src/valvefs.cpp" )
75+ pub fn use_valvefs ( build : & mut cc:: Build ) {
76+ slurp_single_file ( build, & format ! ( "{}/extshared/src/valvefs.cpp" , * SRCWRTIMER_ROOT_DIR ) ) ;
7977}
8078
8179pub fn compile_lib ( build : cc:: Build , name : & str ) {
@@ -142,7 +140,7 @@ pub fn smext_tf2(build: &mut cc::Build) {
142140// https://github.com/alliedmodders/sourcemod/blob/master/public/sample_ext/AMBuildScript
143141pub fn smext_hl2sdk_for_good_games ( build : & mut cc:: Build , sdk_name : & str , sdk_id : usize ) {
144142 let sdk_path = std:: env:: var ( "HL2SDK" )
145- . unwrap_or ( format ! ( ".. /_external/alliedmodders/hl2sdk-{}" , sdk_name) ) ;
143+ . unwrap_or ( format ! ( "{} /_external/alliedmodders/hl2sdk-{}" , * SRCWRTIMER_ROOT_DIR , sdk_name) ) ;
146144
147145 let like_msvc = build. get_compiler ( ) . is_like_msvc ( ) ;
148146 let target_windows = std:: env:: var ( "CARGO_CFG_TARGET_OS" ) . unwrap ( ) == "windows" ;
@@ -196,7 +194,7 @@ pub fn smext_hl2sdk_for_good_games(build: &mut cc::Build, sdk_name: &str, sdk_id
196194// This is necessary because the CC compiler (zig cc) throws errors about using C++ standards via .std() when compiling C files.... frick....
197195pub fn link_sm_detours ( mainbuild : & mut cc:: Build ) {
198196 let sm =
199- std:: env:: var ( "SOURCEMOD" ) . unwrap_or ( ".. /_external/alliedmodders/sourcemod". to_string ( ) ) ;
197+ std:: env:: var ( "SOURCEMOD" ) . unwrap_or ( format ! ( "{} /_external/alliedmodders/sourcemod", * SRCWRTIMER_ROOT_DIR ) ) ;
200198 //let target_windows = std::env::var("CARGO_CFG_TARGET_OS").unwrap() == "windows";
201199 let like_msvc = mainbuild. get_compiler ( ) . is_like_msvc ( ) ;
202200
@@ -259,16 +257,16 @@ pub fn smext_build() -> cc::Build {
259257 . unwrap ( ) ;
260258
261259 let sm =
262- std:: env:: var ( "SOURCEMOD" ) . unwrap_or ( ".. /_external/alliedmodders/sourcemod". to_string ( ) ) ;
263- let mm = std:: env:: var ( "METAMOD" ) . unwrap_or ( ".. /_external/alliedmodders/mmsource". to_string ( ) ) ;
260+ std:: env:: var ( "SOURCEMOD" ) . unwrap_or ( format ! ( "{} /_external/alliedmodders/sourcemod", * SRCWRTIMER_ROOT_DIR ) ) ;
261+ let mm = std:: env:: var ( "METAMOD" ) . unwrap_or ( format ! ( "{} /_external/alliedmodders/mmsource", * SRCWRTIMER_ROOT_DIR ) ) ;
264262
265- println ! ( "cargo:rerun-if-changed=.. /extshared/src/coreident.cpp" ) ;
266- println ! ( "cargo:rerun-if-changed=.. /extshared/src/coreident.hpp" ) ;
267- println ! ( "cargo:rerun-if-changed=.. /extshared/src/extension.cpp" ) ;
268- println ! ( "cargo:rerun-if-changed=.. /extshared/src/extension.h" ) ;
269- println ! ( "cargo:rerun-if-changed=.. /extshared/src/rust_exports.h" ) ;
270- println ! ( "cargo:rerun-if-changed=.. /extshared/src/smsdk_config.h" ) ;
271- //rerun_on_dir_cc_files_changed(".. /extshared/src");
263+ println ! ( "cargo:rerun-if-changed={} /extshared/src/coreident.cpp" , * SRCWRTIMER_ROOT_DIR ) ;
264+ println ! ( "cargo:rerun-if-changed={} /extshared/src/coreident.hpp" , * SRCWRTIMER_ROOT_DIR ) ;
265+ println ! ( "cargo:rerun-if-changed={} /extshared/src/extension.cpp" , * SRCWRTIMER_ROOT_DIR ) ;
266+ println ! ( "cargo:rerun-if-changed={} /extshared/src/extension.h" , * SRCWRTIMER_ROOT_DIR ) ;
267+ println ! ( "cargo:rerun-if-changed={} /extshared/src/rust_exports.h" , * SRCWRTIMER_ROOT_DIR ) ;
268+ println ! ( "cargo:rerun-if-changed={} /extshared/src/smsdk_config.h" , * SRCWRTIMER_ROOT_DIR ) ;
269+ //rerun_on_dir_cc_files_changed("{} /extshared/src", *SRCWRTIMER_ROOT_DIR );
272270
273271 let mut build = cc:: Build :: new ( ) ;
274272 let like_msvc = build. get_compiler ( ) . is_like_msvc ( ) ;
@@ -284,9 +282,9 @@ pub fn smext_build() -> cc::Build {
284282 . include ( format ! ( "{}/public/amtl" , sm) )
285283 . include ( format ! ( "{}/core" , mm) )
286284 . include ( format ! ( "{}/core/sourcehook" , mm) )
287- . include ( ".. /extshared/src")
288- . file ( ".. /extshared/src/coreident.cpp")
289- . file ( ".. /extshared/src/extension.cpp")
285+ . include ( format ! ( "{} /extshared/src", * SRCWRTIMER_ROOT_DIR ) )
286+ . file ( format ! ( "{} /extshared/src/coreident.cpp", * SRCWRTIMER_ROOT_DIR ) )
287+ . file ( format ! ( "{} /extshared/src/extension.cpp", * SRCWRTIMER_ROOT_DIR ) )
290288 . file ( format ! ( "{}/public/smsdk_ext.cpp" , sm) )
291289 . cpp ( true )
292290 . static_crt ( true ) ;
0 commit comments