2
0
Эх сурвалжийг харах

Remove -fno-stack-protector as it is not needed and add requestFullscreen on exported methods

Maicon 2 сар өмнө
parent
commit
0cae8890b8
1 өөрчлөгдсөн 10 нэмэгдсэн , 18 устгасан
  1. 10 18
      build.zig

+ 10 - 18
build.zig

@@ -108,9 +108,6 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
         "-D_GNU_SOURCE",
         "-DGL_SILENCE_DEPRECATION=199309L",
         "-fno-sanitize=undefined", // https://github.com/raysan5/raylib/issues/3674
-        // This is off by default but some linux distributions have it on by default
-        // No Stack Protector is set to prevent the issues when running the examples for emscripten
-        "-fno-stack-protector",
     });
 
     if (options.shared) {
@@ -365,7 +362,6 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
             setDesktopPlatform(raylib, options.platform);
         },
         .emscripten => {
-            // Include emscripten for cross compilation
             if (b.lazyDependency("emsdk", .{})) |dep| {
                 if (try emSdkSetupStep(b, dep)) |emSdkStep| {
                     raylib.step.dependOn(&emSdkStep.step);
@@ -561,19 +557,17 @@ fn addExamples(
             });
             exe_lib.addCSourceFile(.{
                 .file = b.path(path),
-                .flags = &.{
-                    "-fno-stack-protector",
-                },
+                .flags = &.{},
             });
             exe_lib.linkLibC();
-            exe_lib.rdynamic = true;
-
-            exe_lib.root_module.addCMacro("PLATFORM_WEB", "");
-            exe_lib.shared_memory = false;
-            exe_lib.root_module.single_threaded = false;
 
+            if (std.mem.eql(u8, name, "rlgl_standalone")) {
+                //TODO: Make rlgl_standalone example work
+                continue;
+            }
             if (std.mem.eql(u8, name, "raylib_opengl_interop")) {
-                exe_lib.addIncludePath(b.path("src/external"));
+                //TODO: Make raylib_opengl_interop example work
+                continue;
             }
 
             exe_lib.linkLibrary(raylib);
@@ -593,7 +587,7 @@ fn addExamples(
                     else => b.addSystemCommand(&.{ "mkdir", "-p", emccOutputDirExample }),
                 };
 
-                const emcc_exe = switch (builtin.os.tag) { // TODO bundle emcc as a build dependency
+                const emcc_exe = switch (builtin.os.tag) {
                     .windows => "emcc.bat",
                     else => "emcc",
                 };
@@ -608,6 +602,7 @@ fn addExamples(
                     "-sFULL-ES3=1",
                     "-sUSE_GLFW=3",
                     "-sSTACK_OVERFLOW_CHECK=1",
+                    "-sEXPORTED_RUNTIME_METHODS=['requestFullscreen']",
                     "-sASYNCIFY",
                     "-O0",
                     "--emrun",
@@ -626,10 +621,7 @@ fn addExamples(
                     emcc_command.step.dependOn(&item.step);
                 }
 
-                const run_step = emscriptenRunStep(b, emsdk_dep, emccOutputDirExampleWithFile) catch |err| {
-                    std.debug.print("EmscriptenRunStep error: {}\n", .{err});
-                    continue;
-                };
+                const run_step = try emscriptenRunStep(b, emsdk_dep, emccOutputDirExampleWithFile);
                 run_step.step.dependOn(&emcc_command.step);
                 run_step.addArg("--no_browser");
                 const run_option = b.step(name, name);