From 6ece4e99f052e01d649a06817c7b5a92ee4f5ba0 Mon Sep 17 00:00:00 2001 From: Jesse Rudolph Date: Sun, 24 May 2020 06:04:21 -0500 Subject: [PATCH] add argument to Pkg().link to enable linking to system raylib --- build.zig | 6 ++++-- lib.zig | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/build.zig b/build.zig index 0ada318..aa7a60a 100755 --- a/build.zig +++ b/build.zig @@ -58,13 +58,15 @@ pub fn build(b: *Builder) void { }; const examples_step = b.step("examples", "Builds all the examples"); + const system_lib = b.option(bool, "system-raylib", "link to preinstalled raylib libraries") orelse false; for (examples) |ex| { const exe = b.addExecutable(ex.name, ex.path); + exe.setBuildMode(mode); exe.setTarget(target); - raylib.link(exe); + raylib.link(exe, system_lib); raylib.addAsPackage("raylib", exe); raylib.math.addAsPackage("raylib-math", exe); @@ -73,4 +75,4 @@ pub fn build(b: *Builder) void { run_step.dependOn(&run_cmd.step); examples_step.dependOn(&exe.step); } -} \ No newline at end of file +} diff --git a/lib.zig b/lib.zig index 2fdfb89..edecbb8 100644 --- a/lib.zig +++ b/lib.zig @@ -4,12 +4,13 @@ const LibExeObjStep = std.build.LibExeObjStep; pub fn Pkg(pkgdir: comptime []const u8) type { return struct { - pub fn link(exe: *LibExeObjStep) void { + pub fn link(exe: *LibExeObjStep, system_lib: bool) void { const raylibFlags = &[_][]const u8{ "-std=c99", "-DPLATFORM_DESKTOP", "-D_POSIX_C_SOURCE", }; + if (exe.target.toTarget().os.tag == .windows) { exe.linkSystemLibrary("winmm"); exe.linkSystemLibrary("gdi32"); @@ -19,6 +20,11 @@ pub fn Pkg(pkgdir: comptime []const u8) type { } exe.linkLibC(); + if (system_lib) { + exe.linkSystemLibrary("raylib"); + return; + } + exe.addSystemIncludeDir(pkgdir ++ "/raylib/src"); exe.addSystemIncludeDir(pkgdir ++ "/raylib/src/external/glfw/include"); exe.addCSourceFile(pkgdir ++ "/raylib/src/core.c", raylibFlags); @@ -30,6 +36,7 @@ pub fn Pkg(pkgdir: comptime []const u8) type { exe.addCSourceFile(pkgdir ++ "/raylib/src/textures.c", raylibFlags); exe.addCSourceFile(pkgdir ++ "/raylib/src/utils.c", raylibFlags); } + pub fn addAsPackage(name: comptime []const u8, to: *LibExeObjStep) void { to.addPackagePath(name, pkgdir ++ "/lib/raylib-zig.zig"); }