@@ -82,25 +82,43 @@ const config_h_flags = outer: {
82
82
var strs = std .mem .tokenizeScalar (u8 , line [prefix .len .. ], ' ' );
83
83
const flag = strs .next () orelse @compileError ("src/config.h: Flag not found: " ++ line );
84
84
85
- var value = strs .next () orelse "" ;
86
- value = if (std .mem .startsWith (u8 , value , "//" )) "" else "=" ++ value ;
85
+ // Set to 1 if no value is provided
86
+ var value = strs .next () orelse "1" ;
87
+ value = if (std .mem .startsWith (u8 , value , "//" )) "1" else value ;
87
88
88
- flags [i ] = .{ "-D" ++ flag , value };
89
+ flags [i ] = .{ flag , value };
89
90
i += 1 ;
90
91
}
91
92
92
- // Uncomment this to check what flags normally get passed
93
- //@compileLog(flags[0..i].*);
94
93
break :outer flags [0.. i ].* ;
95
94
};
96
95
97
96
fn compileRaylib (b : * std.Build , target : std.Build.ResolvedTarget , optimize : std.builtin.OptimizeMode , options : Options ) ! * std.Build.Step.Compile {
98
97
raylib_flags_arr .clearRetainingCapacity ();
99
98
100
- const shared_flags = &[_ ][]const u8 {
101
- "-fPIC" ,
102
- "-DBUILD_LIBTYPE_SHARED" ,
103
- };
99
+ const raylib = if (options .shared )
100
+ b .addSharedLibrary (.{
101
+ .name = "raylib" ,
102
+ .target = target ,
103
+ .optimize = optimize ,
104
+ })
105
+ else
106
+ b .addStaticLibrary (.{
107
+ .name = "raylib" ,
108
+ .target = target ,
109
+ .optimize = optimize ,
110
+ });
111
+ raylib .linkLibC ();
112
+
113
+ if (options .shared ) {
114
+ const shared_flags = &[_ ][]const u8 {
115
+ "-fPIC" ,
116
+ "-DBUILD_LIBTYPE_SHARED" ,
117
+ };
118
+
119
+ try raylib_flags_arr .appendSlice (b .allocator , shared_flags );
120
+ }
121
+
104
122
try raylib_flags_arr .appendSlice (b .allocator , &[_ ][]const u8 {
105
123
"-std=gnu99" ,
106
124
"-D_GNU_SOURCE" ,
@@ -128,42 +146,25 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
128
146
// `n` corresponds to the number of user-specified flags
129
147
outer : for (config_h_flags ) | flag_val | {
130
148
const flag = flag_val [0 ];
149
+ const value = flag_val [1 ];
131
150
132
151
// If a user already specified the flag, skip it
133
152
config_iter .reset ();
134
- while (config_iter .next ()) | config_flag | {
153
+ while (config_iter .next ()) | config_flag_str | {
135
154
// For a user-specified flag to match, it must share the same prefix and have the
136
155
// same length or be followed by an equals sign
156
+ const prefix = "-D" ;
157
+ if (! std .mem .startsWith (u8 , config_flag_str , prefix )) continue ;
158
+ const config_flag = config_flag_str [prefix .len .. ];
137
159
if (! std .mem .startsWith (u8 , config_flag , flag )) continue ;
138
160
if (config_flag .len == flag .len or config_flag [flag .len ] == '=' ) continue :outer ;
139
161
}
140
162
141
163
// Otherwise, append default value from config.h to compile flags
142
- try raylib_flags_arr .append (
143
- b .allocator ,
144
- std .mem .concat (b .allocator , u8 , & flag_val ) catch @panic ("OOM" ),
145
- );
164
+ raylib .root_module .addCMacro (flag , value );
146
165
}
147
166
}
148
167
149
- if (options .shared ) {
150
- try raylib_flags_arr .appendSlice (b .allocator , shared_flags );
151
- }
152
-
153
- const raylib = if (options .shared )
154
- b .addSharedLibrary (.{
155
- .name = "raylib" ,
156
- .target = target ,
157
- .optimize = optimize ,
158
- })
159
- else
160
- b .addStaticLibrary (.{
161
- .name = "raylib" ,
162
- .target = target ,
163
- .optimize = optimize ,
164
- });
165
- raylib .linkLibC ();
166
-
167
168
// No GLFW required on PLATFORM_DRM
168
169
if (options .platform != .drm ) {
169
170
raylib .addIncludePath (b .path ("src/external/glfw/include" ));
0 commit comments