mirror of
https://github.com/PixelGuys/Cubyz.git
synced 2025-08-03 03:06:55 -04:00
Compile all the C files into a static lib first.
Fixes #125 The workaround was taken from here: https://github.com/ziglang/zig/issues/17091#issuecomment-1710907659
This commit is contained in:
parent
345bb0e419
commit
91bd0b031c
52
build.zig
52
build.zig
@ -22,28 +22,34 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
|
const c_lib = b.addStaticLibrary(.{
|
||||||
|
.name = "c",
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
});
|
||||||
|
c_lib.addIncludePath(.{.path = "include"});
|
||||||
exe.addIncludePath(.{.path = "include"});
|
exe.addIncludePath(.{.path = "include"});
|
||||||
exe.linkLibC();
|
c_lib.linkLibC();
|
||||||
{ // compile glfw from source:
|
{ // compile glfw from source:
|
||||||
if(target.getOsTag() == .windows) {
|
if(target.getOsTag() == .windows) {
|
||||||
exe.addCSourceFiles(&[_][]const u8 {
|
c_lib.addCSourceFiles(&[_][]const u8 {
|
||||||
"lib/glfw/src/win32_init.c", "lib/glfw/src/win32_joystick.c", "lib/glfw/src/win32_monitor.c", "lib/glfw/src/win32_time.c", "lib/glfw/src/win32_thread.c", "lib/glfw/src/win32_window.c", "lib/glfw/src/wgl_context.c", "lib/glfw/src/egl_context.c", "lib/glfw/src/osmesa_context.c", "lib/glfw/src/context.c", "lib/glfw/src/init.c", "lib/glfw/src/input.c", "lib/glfw/src/monitor.c", "lib/glfw/src/vulkan.c", "lib/glfw/src/window.c"
|
"lib/glfw/src/win32_init.c", "lib/glfw/src/win32_joystick.c", "lib/glfw/src/win32_monitor.c", "lib/glfw/src/win32_time.c", "lib/glfw/src/win32_thread.c", "lib/glfw/src/win32_window.c", "lib/glfw/src/wgl_context.c", "lib/glfw/src/egl_context.c", "lib/glfw/src/osmesa_context.c", "lib/glfw/src/context.c", "lib/glfw/src/init.c", "lib/glfw/src/input.c", "lib/glfw/src/monitor.c", "lib/glfw/src/vulkan.c", "lib/glfw/src/window.c"
|
||||||
}, &[_][]const u8{"-g", "-std=c99", "-D_GLFW_WIN32"});
|
}, &[_][]const u8{"-g", "-std=c99", "-D_GLFW_WIN32"});
|
||||||
exe.linkSystemLibrary("gdi32");
|
c_lib.linkSystemLibrary("gdi32");
|
||||||
exe.linkSystemLibrary("opengl32");
|
c_lib.linkSystemLibrary("opengl32");
|
||||||
exe.linkSystemLibrary("ws2_32");
|
c_lib.linkSystemLibrary("ws2_32");
|
||||||
} else if(target.getOsTag() == .linux) {
|
} else if(target.getOsTag() == .linux) {
|
||||||
// TODO: if(isWayland) {
|
// TODO: if(isWayland) {
|
||||||
// exe.addCSourceFiles(&[_][]const u8 {
|
// c_lib.addCSourceFiles(&[_][]const u8 {
|
||||||
// "lib/glfw/src/linux_joystick.c", "lib/glfw/src/wl_init.c", "lib/glfw/src/wl_monitor.c", "lib/glfw/src/wl_window.c", "lib/glfw/src/posix_time.c", "lib/glfw/src/posix_thread.c", "lib/glfw/src/xkb_unicode.c", "lib/glfw/src/egl_context.c", "lib/glfw/src/osmesa_context.c", "lib/glfw/src/context.c", "lib/glfw/src/init.c", "lib/glfw/src/input.c", "lib/glfw/src/monitor.c", "lib/glfw/src/vulkan.c", "lib/glfw/src/window.c"
|
// "lib/glfw/src/linux_joystick.c", "lib/glfw/src/wl_init.c", "lib/glfw/src/wl_monitor.c", "lib/glfw/src/wl_window.c", "lib/glfw/src/posix_time.c", "lib/glfw/src/posix_thread.c", "lib/glfw/src/xkb_unicode.c", "lib/glfw/src/egl_context.c", "lib/glfw/src/osmesa_context.c", "lib/glfw/src/context.c", "lib/glfw/src/init.c", "lib/glfw/src/input.c", "lib/glfw/src/monitor.c", "lib/glfw/src/vulkan.c", "lib/glfw/src/window.c"
|
||||||
// }, &[_][]const u8{"-g",});
|
// }, &[_][]const u8{"-g",});
|
||||||
//} else {
|
//} else {
|
||||||
exe.addCSourceFiles(&[_][]const u8 {
|
c_lib.addCSourceFiles(&[_][]const u8 {
|
||||||
"lib/glfw/src/linux_joystick.c", "lib/glfw/src/x11_init.c", "lib/glfw/src/x11_monitor.c", "lib/glfw/src/x11_window.c", "lib/glfw/src/xkb_unicode.c", "lib/glfw/src/posix_time.c", "lib/glfw/src/posix_thread.c", "lib/glfw/src/glx_context.c", "lib/glfw/src/egl_context.c", "lib/glfw/src/osmesa_context.c", "lib/glfw/src/context.c", "lib/glfw/src/init.c", "lib/glfw/src/input.c", "lib/glfw/src/monitor.c", "lib/glfw/src/vulkan.c", "lib/glfw/src/window.c"
|
"lib/glfw/src/linux_joystick.c", "lib/glfw/src/x11_init.c", "lib/glfw/src/x11_monitor.c", "lib/glfw/src/x11_window.c", "lib/glfw/src/xkb_unicode.c", "lib/glfw/src/posix_time.c", "lib/glfw/src/posix_thread.c", "lib/glfw/src/glx_context.c", "lib/glfw/src/egl_context.c", "lib/glfw/src/osmesa_context.c", "lib/glfw/src/context.c", "lib/glfw/src/init.c", "lib/glfw/src/input.c", "lib/glfw/src/monitor.c", "lib/glfw/src/vulkan.c", "lib/glfw/src/window.c"
|
||||||
}, &[_][]const u8{"-g", "-std=c99", "-D_GLFW_X11"});
|
}, &[_][]const u8{"-g", "-std=c99", "-D_GLFW_X11"});
|
||||||
exe.linkSystemLibrary("x11");
|
c_lib.linkSystemLibrary("x11");
|
||||||
//}
|
//}
|
||||||
exe.linkSystemLibrary("GL");
|
c_lib.linkSystemLibrary("GL");
|
||||||
} else {
|
} else {
|
||||||
std.log.err("Unsupported target: {}\n", .{ target.getOsTag() });
|
std.log.err("Unsupported target: {}\n", .{ target.getOsTag() });
|
||||||
}
|
}
|
||||||
@ -53,9 +59,10 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
|
c_lib.addIncludePath(portaudio.path("include"));
|
||||||
exe.addIncludePath(portaudio.path("include"));
|
exe.addIncludePath(portaudio.path("include"));
|
||||||
exe.addIncludePath(portaudio.path("src/common"));
|
c_lib.addIncludePath(portaudio.path("src/common"));
|
||||||
addPackageCSourceFiles(exe, portaudio, &[_][]const u8 {
|
addPackageCSourceFiles(c_lib, portaudio, &[_][]const u8 {
|
||||||
"src/common/pa_allocation.c",
|
"src/common/pa_allocation.c",
|
||||||
"src/common/pa_converters.c",
|
"src/common/pa_converters.c",
|
||||||
"src/common/pa_cpuload.c",
|
"src/common/pa_cpuload.c",
|
||||||
@ -69,25 +76,25 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
}, &[_][]const u8{"-g", "-O3"});
|
}, &[_][]const u8{"-g", "-O3"});
|
||||||
if(target.getOsTag() == .windows) {
|
if(target.getOsTag() == .windows) {
|
||||||
// windows:
|
// windows:
|
||||||
addPackageCSourceFiles(exe, portaudio, &[_][]const u8 {"src/os/win/pa_win_coinitialize.c", "src/os/win/pa_win_hostapis.c", "src/os/win/pa_win_util.c", "src/os/win/pa_win_waveformat.c", "src/os/win/pa_win_wdmks_utils.c", "src/os/win/pa_x86_plain_converters.c", }, &[_][]const u8{"-g", "-O3", "-DPA_USE_WASAPI"});
|
addPackageCSourceFiles(c_lib, portaudio, &[_][]const u8 {"src/os/win/pa_win_coinitialize.c", "src/os/win/pa_win_hostapis.c", "src/os/win/pa_win_util.c", "src/os/win/pa_win_waveformat.c", "src/os/win/pa_win_wdmks_utils.c", "src/os/win/pa_x86_plain_converters.c", }, &[_][]const u8{"-g", "-O3", "-DPA_USE_WASAPI"});
|
||||||
exe.addIncludePath(portaudio.path("src/os/win"));
|
c_lib.addIncludePath(portaudio.path("src/os/win"));
|
||||||
exe.linkSystemLibrary("ole32");
|
c_lib.linkSystemLibrary("ole32");
|
||||||
exe.linkSystemLibrary("winmm");
|
c_lib.linkSystemLibrary("winmm");
|
||||||
exe.linkSystemLibrary("uuid");
|
c_lib.linkSystemLibrary("uuid");
|
||||||
// WASAPI:
|
// WASAPI:
|
||||||
addPackageCSourceFiles(exe, portaudio, &[_][]const u8 {"src/hostapi/wasapi/pa_win_wasapi.c"}, &[_][]const u8{"-g", "-O3"});
|
addPackageCSourceFiles(c_lib, portaudio, &[_][]const u8 {"src/hostapi/wasapi/pa_win_wasapi.c"}, &[_][]const u8{"-g", "-O3"});
|
||||||
} else if(target.getOsTag() == .linux) {
|
} else if(target.getOsTag() == .linux) {
|
||||||
// unix:
|
// unix:
|
||||||
addPackageCSourceFiles(exe, portaudio, &[_][]const u8 {"src/os/unix/pa_unix_hostapis.c", "src/os/unix/pa_unix_util.c"}, &[_][]const u8{"-g", "-O3", "-DPA_USE_ALSA"});
|
addPackageCSourceFiles(c_lib, portaudio, &[_][]const u8 {"src/os/unix/pa_unix_hostapis.c", "src/os/unix/pa_unix_util.c"}, &[_][]const u8{"-g", "-O3", "-DPA_USE_ALSA"});
|
||||||
exe.addIncludePath(portaudio.path("src/os/unix"));
|
c_lib.addIncludePath(portaudio.path("src/os/unix"));
|
||||||
// ALSA:
|
// ALSA:
|
||||||
addPackageCSourceFiles(exe, portaudio, &[_][]const u8 {"src/hostapi/alsa/pa_linux_alsa.c"}, &[_][]const u8{"-g", "-O3"});
|
addPackageCSourceFiles(c_lib, portaudio, &[_][]const u8 {"src/hostapi/alsa/pa_linux_alsa.c"}, &[_][]const u8{"-g", "-O3"});
|
||||||
exe.linkSystemLibrary("asound");
|
c_lib.linkSystemLibrary("asound");
|
||||||
} else {
|
} else {
|
||||||
std.log.err("Unsupported target: {}\n", .{ target.getOsTag() });
|
std.log.err("Unsupported target: {}\n", .{ target.getOsTag() });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exe.addCSourceFiles(&[_][]const u8{"lib/glad.c", "lib/stb_image.c", "lib/stb_image_write.c", "lib/stb_vorbis.c"}, &[_][]const u8{"-g", "-O3"});
|
c_lib.addCSourceFiles(&[_][]const u8{"lib/glad.c", "lib/stb_image.c", "lib/stb_image_write.c", "lib/stb_vorbis.c"}, &[_][]const u8{"-g", "-O3"});
|
||||||
exe.addAnonymousModule("gui", .{.source_file = .{.path = "src/gui/gui.zig"}});
|
exe.addAnonymousModule("gui", .{.source_file = .{.path = "src/gui/gui.zig"}});
|
||||||
exe.addAnonymousModule("server", .{.source_file = .{.path = "src/server/server.zig"}});
|
exe.addAnonymousModule("server", .{.source_file = .{.path = "src/server/server.zig"}});
|
||||||
|
|
||||||
@ -103,6 +110,7 @@ pub fn build(b: *std.build.Builder) !void {
|
|||||||
//exe.strip = true; // Improves compile-time
|
//exe.strip = true; // Improves compile-time
|
||||||
//exe.sanitize_thread = true;
|
//exe.sanitize_thread = true;
|
||||||
exe.disable_stack_probing = true; // Improves tracing of stack overflow errors.
|
exe.disable_stack_probing = true; // Improves tracing of stack overflow errors.
|
||||||
|
exe.linkLibrary(c_lib);
|
||||||
b.installArtifact(exe);
|
b.installArtifact(exe);
|
||||||
|
|
||||||
const run_cmd = b.addRunArtifact(exe);
|
const run_cmd = b.addRunArtifact(exe);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user