From e4ddd9d8cae7cc1a635e2fe5520200779a9f1a3b Mon Sep 17 00:00:00 2001 From: sergeypdev Date: Tue, 27 May 2025 12:12:25 +0400 Subject: [PATCH] More fixes --- .nvim.lua | 2 +- builder/builder.odin | 46 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/.nvim.lua b/.nvim.lua index 23ec855..ceb13d6 100644 --- a/.nvim.lua +++ b/.nvim.lua @@ -1,2 +1,2 @@ -vim.opt_global.makeprg = "./build.sh" +vim.opt_global.makeprg = "./build.sh --run=false" vim.opt.errorformat = "%f(%l:%c)\\ %m" diff --git a/builder/builder.odin b/builder/builder.odin index 6f097e5..2bb7c5d 100644 --- a/builder/builder.odin +++ b/builder/builder.odin @@ -35,6 +35,24 @@ temp_path_join :: proc(paths: ..string) -> string { return result } +when ODIN_OS == .Windows { + EXE_EXT :: ".exe" + DLL_EXT :: ".dll" + LIB_PREFIX :: "" +} else when ODIN_OS == .Linux { + EXE_EXT :: ".bin" + DLL_EXT :: ".so" + LIB_PREFIX :: "lib" +} else when ODIN_OS == .Darwin { + EXE_EXT :: ".bin" + DLL_EXT :: ".dylib" + LIB_PREFIX :: "lib" +} else { + EXE_EXT :: "" + DLL_EXT :: "" + LIB_PREFIX :: "" +} + // Returns a list of shared dependencies that have to be copied to out dir build_deps :: proc(opts: Options) -> []string { log.infof("build_deps") @@ -67,14 +85,19 @@ build_deps :: proc(opts: Options) -> []string { ) if shared { - append(&out_libs, "./libs/raylib/zig-out-shared/lib/libraylib.so") + append( + &out_libs, + temp_path_join( + "./libs/raylib/zig-out-shared/lib", + LIB_PREFIX + "raylib" + DLL_EXT, + ), + ) } } // Physfs { cwd := "./libs/physfs" - file_name := shared ? "libphysfs.so" : "libphysfs.a" is_built := os.is_dir("./libs/physfs/build") if force { remove_all("./libs/physfs/build") @@ -120,7 +143,7 @@ build_deps :: proc(opts: Options) -> []string { TRACY_NAME_STATIC :: "tracy.a" } - file_path := fmt.tprintf("./libs/tracy/%s", shared ? TRACY_NAME_SHARED : TRACY_NAME_STATIC) + file_path := temp_path_join("./libs/tracy", shared ? TRACY_NAME_SHARED : TRACY_NAME_STATIC) is_built := os.is_file(file_path) if is_built && force { @@ -154,7 +177,7 @@ build_deps :: proc(opts: Options) -> []string { } if shared { - append(&out_libs, "./libs/tracy/tracy.so") + append(&out_libs, "./libs/tracy/tracy" + DLL_EXT) } } @@ -217,6 +240,7 @@ main :: proc() { tracy = true, debug = true, optimize = true, + run = true, } flags.parse_or_exit(&opts, os.args, .Unix, context.temp_allocator) if opts.variant == .Web { @@ -236,7 +260,7 @@ main :: proc() { case .Hot_Reload: setup_bin_dir(opts, "./build/hotreload", shared_dep_paths) - is_running := process_exists("game.bin") + is_running := process_exists("game" + EXE_EXT) if !is_running { run_cmd( temp_concat( @@ -244,7 +268,7 @@ main :: proc() { "odin", "build", "main_hot_reload", - "-out:./build/hotreload/game.bin", + "-out:./build/hotreload/game" + EXE_EXT, }, debug_flag, tracy_flag, @@ -262,7 +286,7 @@ main :: proc() { "-define:RAYLIB_SHARED=true", "-define:PHYSFS_SHARED=true", "-build-mode:dll", - "-out:./build/hotreload/game_tmp.so", + "-out:./build/hotreload/game_tmp" + DLL_EXT, }, tracy_flag, debug_flag, @@ -271,13 +295,17 @@ main :: proc() { ), "", ) - rename("./build/hotreload/game_tmp.so", "./build/hotreload/game.so") + rename("./build/hotreload/game_tmp" + DLL_EXT, "./build/hotreload/game" + DLL_EXT) + + if !is_running && opts.run { + run_cmd({"./build/hotreload/game" + EXE_EXT}, "") + } case .Desktop: setup_bin_dir(opts, "./build/desktop", shared_dep_paths) cmd := slice.concatenate( [][]string { - []string{"odin", "build", "main_release", "-out:./build/desktop/game.exe"}, + []string{"odin", "build", "main_release", "-out:./build/desktop/game" + EXE_EXT}, tracy_flag, debug_flag, optimize_flag,