More fixes

This commit is contained in:
sergeypdev 2025-05-27 12:12:25 +04:00
parent 33cffe95a2
commit e4ddd9d8ca
2 changed files with 38 additions and 10 deletions

View File

@ -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"

View File

@ -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,