Add OpenGL support to build.zig
This commit is contained in:
parent
df6b6667ee
commit
1f8c4c7679
29
build.zig
29
build.zig
@ -1,6 +1,6 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const cflags: []const []const u8 = &.{
|
const base_cflags: []const []const u8 = &.{
|
||||||
"-Wall",
|
"-Wall",
|
||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-pedantic",
|
"-pedantic",
|
||||||
@ -10,25 +10,38 @@ const cflags: []const []const u8 = &.{
|
|||||||
"-std=c11",
|
"-std=c11",
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn build(b: *std.build.Builder) void {
|
pub fn build(b: *std.build.Builder) !void {
|
||||||
// Standard release options allow the person running `zig build` to select
|
|
||||||
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
|
|
||||||
const mode = b.standardReleaseOptions();
|
const mode = b.standardReleaseOptions();
|
||||||
const target = b.standardTargetOptions(.{});
|
const target = b.standardTargetOptions(.{});
|
||||||
|
|
||||||
const lib = b.addStaticLibrary("minifb-zig-port", null);
|
var c_flags = try std.ArrayList([]const u8).initCapacity(b.allocator, base_cflags.len);
|
||||||
lib.addCSourceFiles(&.{
|
defer c_flags.deinit();
|
||||||
|
try c_flags.appendSlice(base_cflags);
|
||||||
|
|
||||||
|
var c_sources = std.ArrayList([]const u8).init(b.allocator);
|
||||||
|
defer c_sources.deinit();
|
||||||
|
try c_sources.appendSlice(&.{
|
||||||
"src/MiniFB_common.c",
|
"src/MiniFB_common.c",
|
||||||
"src/MiniFB_internal.c",
|
"src/MiniFB_internal.c",
|
||||||
"src/MiniFB_timer.c",
|
"src/MiniFB_timer.c",
|
||||||
"src/windows/WinMiniFB.c",
|
"src/windows/WinMiniFB.c",
|
||||||
}, cflags);
|
});
|
||||||
|
|
||||||
|
const use_opengl = b.option(bool, "opengl", "Use OpenGL") orelse false;
|
||||||
|
|
||||||
|
const lib = b.addStaticLibrary("minifb-zig-port", null);
|
||||||
lib.addIncludeDir("src");
|
lib.addIncludeDir("src");
|
||||||
lib.addIncludeDir("include");
|
lib.addIncludeDir("include");
|
||||||
lib.linkSystemLibraryName("gdi32");
|
lib.linkSystemLibraryName("gdi32");
|
||||||
lib.linkLibC();
|
lib.linkLibC();
|
||||||
lib.setBuildMode(mode);
|
lib.setBuildMode(mode);
|
||||||
lib.install();
|
lib.install();
|
||||||
|
if (use_opengl) {
|
||||||
|
try c_flags.append("-DUSE_OPENGL_API");
|
||||||
|
try c_sources.append("src/gl/MiniFB_GL.c");
|
||||||
|
lib.linkSystemLibraryName("Opengl32");
|
||||||
|
}
|
||||||
|
lib.addCSourceFiles(c_sources.items, c_flags.items);
|
||||||
|
|
||||||
addExample(b, "noise", "tests/noise.c", lib, target, mode);
|
addExample(b, "noise", "tests/noise.c", lib, target, mode);
|
||||||
addExample(b, "multiple-windows", "tests/multiple_windows.c", lib, target, mode);
|
addExample(b, "multiple-windows", "tests/multiple_windows.c", lib, target, mode);
|
||||||
@ -42,7 +55,7 @@ fn addExample(b: *std.build.Builder, comptime name: []const u8, file: []const u8
|
|||||||
exe.setTarget(target);
|
exe.setTarget(target);
|
||||||
exe.linkLibrary(lib);
|
exe.linkLibrary(lib);
|
||||||
exe.addIncludeDir("include");
|
exe.addIncludeDir("include");
|
||||||
exe.addCSourceFile(file, cflags);
|
exe.addCSourceFile(file, base_cflags);
|
||||||
exe.install();
|
exe.install();
|
||||||
|
|
||||||
const step_name = "run-" ++ name;
|
const step_name = "run-" ++ name;
|
||||||
|
Loading…
Reference in New Issue
Block a user