@@ -3,8 +3,7 @@ const builtin = @import("builtin");
3
3
4
4
// This has been tested with zig version(s):
5
5
// 0.11.0
6
- // 0.12.0-dev.2075+f5978181e
7
- // 0.12.0-dev.2990+31763d28c
6
+ // 0.12.0-dev.3580+e204a6edb
8
7
//
9
8
// Anytype is used here to preserve compatibility, in 0.12.0dev the std.zig.CrossTarget type
10
9
// was reworked into std.Target.Query and std.Build.ResolvedTarget. Using anytype allows
@@ -51,37 +50,37 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
51
50
52
51
// No GLFW required on PLATFORM_DRM
53
52
if (! options .platform_drm ) {
54
- raylib .addIncludePath (.{ .cwd_relative = srcdir ++ " /external/glfw/include" });
53
+ raylib .addIncludePath (.{ .path = "src /external/glfw/include" });
55
54
}
56
55
57
56
addCSourceFilesVersioned (raylib , &.{
58
- try join2 ( gpa , srcdir , " rcore.c") ,
59
- try join2 ( gpa , srcdir , " utils.c") ,
57
+ "src/ rcore.c" ,
58
+ "src/ utils.c" ,
60
59
}, raylib_flags_arr .items );
61
60
62
61
if (options .raudio ) {
63
62
addCSourceFilesVersioned (raylib , &.{
64
- try join2 ( gpa , srcdir , " raudio.c") ,
63
+ "src/ raudio.c" ,
65
64
}, raylib_flags_arr .items );
66
65
}
67
66
if (options .rmodels ) {
68
67
addCSourceFilesVersioned (raylib , &.{
69
- try join2 ( gpa , srcdir , " rmodels.c") ,
68
+ "src/ rmodels.c" ,
70
69
}, raylib_flags_arr .items );
71
70
}
72
71
if (options .rshapes ) {
73
72
addCSourceFilesVersioned (raylib , &.{
74
- try join2 ( gpa , srcdir , " rshapes.c") ,
73
+ "src/ rshapes.c" ,
75
74
}, raylib_flags_arr .items );
76
75
}
77
76
if (options .rtext ) {
78
77
addCSourceFilesVersioned (raylib , &.{
79
- try join2 ( gpa , srcdir , " rtext.c") ,
78
+ "src/ rtext.c" ,
80
79
}, raylib_flags_arr .items );
81
80
}
82
81
if (options .rtextures ) {
83
82
addCSourceFilesVersioned (raylib , &.{
84
- try join2 ( gpa , srcdir , " rtextures.c") ,
83
+ "src/ rtextures.c" ,
85
84
}, raylib_flags_arr .items );
86
85
}
87
86
@@ -91,14 +90,14 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
91
90
if (options .raygui ) {
92
91
const raygui_c_path = gen_step .add ("raygui.c" , "#define RAYGUI_IMPLEMENTATION\n #include \" raygui.h\" \n " );
93
92
raylib .addCSourceFile (.{ .file = raygui_c_path , .flags = raylib_flags_arr .items });
94
- raylib .addIncludePath (.{ .cwd_relative = srcdir });
95
- raylib .addIncludePath (.{ .cwd_relative = srcdir ++ "/../ ../raygui/src" });
93
+ raylib .addIncludePath (.{ .path = "src" });
94
+ raylib .addIncludePath (.{ .path = " ../raygui/src" });
96
95
}
97
96
98
97
switch (getOsTagVersioned (target )) {
99
98
.windows = > {
100
99
addCSourceFilesVersioned (raylib , &.{
101
- try join2 ( gpa , srcdir , " rglfw.c") ,
100
+ "src/ rglfw.c" ,
102
101
}, raylib_flags_arr .items );
103
102
raylib .linkSystemLibrary ("winmm" );
104
103
raylib .linkSystemLibrary ("gdi32" );
@@ -109,7 +108,7 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
109
108
.linux = > {
110
109
if (! options .platform_drm ) {
111
110
addCSourceFilesVersioned (raylib , &.{
112
- try join2 ( gpa , srcdir , " rglfw.c") ,
111
+ "src/ rglfw.c" ,
113
112
}, raylib_flags_arr .items );
114
113
raylib .linkSystemLibrary ("GL" );
115
114
raylib .linkSystemLibrary ("rt" );
@@ -130,7 +129,7 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
130
129
raylib .linkSystemLibrary ("wayland-cursor" );
131
130
raylib .linkSystemLibrary ("wayland-egl" );
132
131
raylib .linkSystemLibrary ("xkbcommon" );
133
- raylib .addIncludePath (.{ .path = srcdir });
132
+ raylib .addIncludePath (.{ .path = "src" });
134
133
try waylandGenerate (gpa , "wayland.xml" , "wayland-client-protocol" );
135
134
try waylandGenerate (gpa , "xdg-shell.xml" , "xdg-shell-client-protocol" );
136
135
try waylandGenerate (gpa , "xdg-decoration-unstable-v1.xml" , "xdg-decoration-unstable-v1-client-protocol" );
@@ -163,7 +162,7 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
163
162
},
164
163
.freebsd , .openbsd , .netbsd , .dragonfly = > {
165
164
addCSourceFilesVersioned (raylib , &.{
166
- try join2 ( gpa , srcdir , " rglfw.c") ,
165
+ "src/ rglfw.c" ,
167
166
}, raylib_flags_arr .items );
168
167
raylib .linkSystemLibrary ("GL" );
169
168
raylib .linkSystemLibrary ("rt" );
@@ -182,7 +181,7 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
182
181
// On macos rglfw.c include Objective-C files.
183
182
try raylib_flags_arr .append ("-ObjC" );
184
183
addCSourceFilesVersioned (raylib , &.{
185
- try join2 ( gpa , srcdir , " rglfw.c") ,
184
+ "src/ rglfw.c" ,
186
185
}, raylib_flags_arr .items );
187
186
raylib .linkFramework ("Foundation" );
188
187
raylib .linkFramework ("CoreServices" );
@@ -259,24 +258,18 @@ pub fn build(b: *std.Build) !void {
259
258
260
259
const lib = try addRaylib (b , target , optimize , options );
261
260
262
- lib . installHeader ( "src/raylib.h" , "raylib.h" );
263
- lib . installHeader ( "src/raymath.h" , "raymath.h" );
264
- lib . installHeader ( "src/rlgl.h" , "rlgl.h" );
261
+ installHeaderVersioned ( lib , "src/raylib.h" , "raylib.h" );
262
+ installHeaderVersioned ( lib , "src/raymath.h" , "raymath.h" );
263
+ installHeaderVersioned ( lib , "src/rlgl.h" , "rlgl.h" );
265
264
266
265
if (options .raygui ) {
267
- lib . installHeader ( "../raygui/src/raygui.h" , "raygui.h" );
266
+ installHeaderVersioned ( lib , "../raygui/src/raygui.h" , "raygui.h" );
268
267
}
269
268
270
269
b .installArtifact (lib );
271
270
}
272
271
273
- const srcdir = struct {
274
- fn getSrcDir () []const u8 {
275
- return std .fs .path .dirname (@src ().file ).? ;
276
- }
277
- }.getSrcDir ();
278
-
279
- const waylandDir = srcdir ++ "/external/glfw/deps/wayland" ;
272
+ const waylandDir = "src/external/glfw/deps/wayland" ;
280
273
281
274
fn getOsTagVersioned (target : anytype ) std.Target.Os.Tag {
282
275
if (comptime builtin .zig_version .minor >= 12 ) {
@@ -291,47 +284,45 @@ fn addCSourceFilesVersioned(
291
284
files : []const []const u8 ,
292
285
flags : []const []const u8 ,
293
286
) void {
294
- //- HACK(cabarger): I hate this so much!!!
295
287
if (comptime builtin .zig_version .minor >= 12 ) {
296
- for (files ) | file | {
297
- exe .addCSourceFile (.{
298
- .file = .{ .path = file },
299
- .flags = flags ,
300
- });
301
- }
288
+ exe .addCSourceFiles (.{
289
+ .files = files ,
290
+ .flags = flags ,
291
+ });
302
292
} else if (comptime builtin .zig_version .minor == 11 ) {
303
293
exe .addCSourceFiles (files , flags );
304
294
} else {
305
295
@compileError ("Expected zig version 11 or 12" );
306
296
}
307
297
}
308
298
309
- fn waylandGenerate (allocator : std.mem.Allocator , comptime protocol : []const u8 , comptime basename : []const u8 ) ! void {
310
- const protocolDir = waylandDir ++ "/" ++ protocol ;
311
- const clientHeader = srcdir ++ "/" ++ basename ++ ".h" ;
312
- const privateCode = srcdir ++ "/" ++ basename ++ "-code.h" ;
299
+ fn installHeaderVersioned (
300
+ lib : * std.Build.Step.Compile ,
301
+ source : []const u8 ,
302
+ dest : []const u8 ,
303
+ ) void {
313
304
if (comptime builtin .zig_version .minor >= 12 ) {
314
- _ = try std .process .Child .run (.{
315
- .allocator = allocator ,
316
- .argv = &[_ ][]const u8 { "wayland-scanner" , "client-header" , protocolDir , clientHeader },
317
- });
318
- _ = try std .process .Child .run (.{
319
- .allocator = allocator ,
320
- .argv = &[_ ][]const u8 { "wayland-scanner" , "private-code" , protocolDir , privateCode },
321
- });
305
+ lib .installHeader (.{ .path = source }, dest );
322
306
} else {
323
- _ = try std .process .Child .exec (.{
324
- .allocator = allocator ,
325
- .argv = &[_ ][]const u8 { "wayland-scanner" , "client-header" , protocolDir , clientHeader },
326
- });
327
- _ = try std .process .Child .exec (.{
328
- .allocator = allocator ,
329
- .argv = &[_ ][]const u8 { "wayland-scanner" , "private-code" , protocolDir , privateCode },
330
- });
307
+ lib .installHeader (source , dest );
331
308
}
332
309
}
333
310
334
- fn join2 (allocator : std.mem.Allocator , path1 : []const u8 , path2 : []const u8 ) ! []u8 {
335
- const joinedPath = try std .fs .path .join (allocator , &[_ ][]const u8 { path1 , path2 });
336
- return joinedPath ;
311
+ const childRunVersioned = if (builtin .zig_version .minor >= 12 )
312
+ std .process .Child .run
313
+ else
314
+ std .process .Child .exec ;
315
+
316
+ fn waylandGenerate (allocator : std.mem.Allocator , comptime protocol : []const u8 , comptime basename : []const u8 ) ! void {
317
+ const protocolDir = waylandDir ++ "/" ++ protocol ;
318
+ const clientHeader = "src/" ++ basename ++ ".h" ;
319
+ const privateCode = "src/" ++ basename ++ "-code.h" ;
320
+ _ = try childRunVersioned (.{
321
+ .allocator = allocator ,
322
+ .argv = &[_ ][]const u8 { "wayland-scanner" , "client-header" , protocolDir , clientHeader },
323
+ });
324
+ _ = try childRunVersioned (.{
325
+ .allocator = allocator ,
326
+ .argv = &[_ ][]const u8 { "wayland-scanner" , "private-code" , protocolDir , privateCode },
327
+ });
337
328
}
0 commit comments