From 86ab8ef782c0127a99289265b2ff6d50f090fa38 Mon Sep 17 00:00:00 2001 From: IntegratedQuantum Date: Tue, 26 Sep 2023 17:42:54 +0200 Subject: [PATCH] Remove portaudio submodule, getting it through the zig package manager instead. Resolves #103 --- .gitmodules | 3 --- README.md | 3 +-- build.zig | 48 +++++++++++++++++++++++++++++------------------- build.zig.zon | 4 ++++ portaudio | 1 - 5 files changed, 34 insertions(+), 25 deletions(-) delete mode 100644 .gitmodules delete mode 160000 portaudio diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index b43b4a42..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "portaudio"] - path = portaudio - url = git@github.com:PortAudio/portaudio.git diff --git a/README.md b/README.md index dced3b54..84d2d15d 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,7 @@ Sorry, the zig version isn't there yet. You can test the old java version or ask Otherwise you can ### Compile Cubyz from source 1. Install git and zig (latest master release) -2. Clone this repository `git clone --recurse-submodules https://github.com/pixelguys/Cubyz`
-If you forgot the `--recurse-submodules` flag you may need to run `git submodule update --init --recursive` +2. Clone this repository `git clone https://github.com/pixelguys/Cubyz` 3. Go into the folder `cd Cubyz` 4. Run zig `zig build run` 5. If it's too slow, run it in release: `zig build run -Doptimize=ReleaseFast` diff --git a/build.zig b/build.zig index eb2e947f..8f615081 100644 --- a/build.zig +++ b/build.zig @@ -1,5 +1,11 @@ const std = @import("std"); +fn addPackageCSourceFiles(exe: *std.Build.Step.Compile, dep: *std.Build.Dependency, files: []const []const u8, flags: []const []const u8) void { + for(files) |file| { + exe.addCSourceFile(.{ .file = dep.path(file), .flags = flags}); + } +} + pub fn build(b: *std.build.Builder) !void { // Standard target options allows the person running `zig build` to choose // what target to build for. Here we do not override the defaults, which @@ -43,35 +49,39 @@ pub fn build(b: *std.build.Builder) !void { } } { // compile portaudio from source: - exe.addIncludePath(.{.path = "portaudio/include"}); - exe.addIncludePath(.{.path = "portaudio/src/common"}); - exe.addCSourceFiles(&[_][]const u8 { - "portaudio/src/common/pa_allocation.c", - "portaudio/src/common/pa_converters.c", - "portaudio/src/common/pa_cpuload.c", - "portaudio/src/common/pa_debugprint.c", - "portaudio/src/common/pa_dither.c", - "portaudio/src/common/pa_front.c", - "portaudio/src/common/pa_process.c", - "portaudio/src/common/pa_ringbuffer.c", - "portaudio/src/common/pa_stream.c", - "portaudio/src/common/pa_trace.c", + const portaudio = b.dependency("portaudio", .{ + .target = target, + .optimize = optimize, + }); + exe.addIncludePath(portaudio.path("include")); + exe.addIncludePath(portaudio.path("src/common")); + addPackageCSourceFiles(exe, portaudio, &[_][]const u8 { + "src/common/pa_allocation.c", + "src/common/pa_converters.c", + "src/common/pa_cpuload.c", + "src/common/pa_debugprint.c", + "src/common/pa_dither.c", + "src/common/pa_front.c", + "src/common/pa_process.c", + "src/common/pa_ringbuffer.c", + "src/common/pa_stream.c", + "src/common/pa_trace.c", }, &[_][]const u8{"-g", "-O3"}); if(target.getOsTag() == .windows) { // windows: - exe.addCSourceFiles(&[_][]const u8 {"portaudio/src/os/win/pa_win_coinitialize.c", "portaudio/src/os/win/pa_win_hostapis.c", "portaudio/src/os/win/pa_win_util.c", "portaudio/src/os/win/pa_win_waveformat.c", "portaudio/src/os/win/pa_win_wdmks_utils.c", "portaudio/src/os/win/pa_x86_plain_converters.c", }, &[_][]const u8{"-g", "-O3", "-DPA_USE_WASAPI"}); - exe.addIncludePath(.{.path = "portaudio/src/os/win"}); + 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"}); + exe.addIncludePath(portaudio.path("src/os/win")); exe.linkSystemLibrary("ole32"); exe.linkSystemLibrary("winmm"); exe.linkSystemLibrary("uuid"); // WASAPI: - exe.addCSourceFiles(&[_][]const u8 {"portaudio/src/hostapi/wasapi/pa_win_wasapi.c"}, &[_][]const u8{"-g", "-O3"}); + addPackageCSourceFiles(exe, portaudio, &[_][]const u8 {"src/hostapi/wasapi/pa_win_wasapi.c"}, &[_][]const u8{"-g", "-O3"}); } else if(target.getOsTag() == .linux) { // unix: - exe.addCSourceFiles(&[_][]const u8 {"portaudio/src/os/unix/pa_unix_hostapis.c", "portaudio/src/os/unix/pa_unix_util.c"}, &[_][]const u8{"-g", "-O3", "-DPA_USE_ALSA"}); - exe.addIncludePath(.{.path = "portaudio/src/os/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"}); + exe.addIncludePath(portaudio.path("src/os/unix")); // ALSA: - exe.addCSourceFiles(&[_][]const u8 {"portaudio/src/hostapi/alsa/pa_linux_alsa.c"}, &[_][]const u8{"-g", "-O3"}); + addPackageCSourceFiles(exe, portaudio, &[_][]const u8 {"src/hostapi/alsa/pa_linux_alsa.c"}, &[_][]const u8{"-g", "-O3"}); exe.linkSystemLibrary("asound"); } else { std.log.err("Unsupported target: {}\n", .{ target.getOsTag() }); diff --git a/build.zig.zon b/build.zig.zon index d4dae282..8b556ce1 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -6,5 +6,9 @@ .url = "https://pkg.machengine.org/mach-freetype/92773615e2480c0a6f561748f2ba1180376bbb68.tar.gz", .hash = "12205a6057fe43a4940c6db304449ebf3e98ff15d0eec05b75f621d7616c2e7d7f2c", }, + .portaudio = .{ + .url = "https://github.com/PortAudio/portaudio/archive/refs/tags/v19.7.0.tar.gz", + .hash = "1220a96e42d87ae966106483e3351919c95b7c8129942c355fd173b38b2e7a0ae0a0", + } }, } \ No newline at end of file diff --git a/portaudio b/portaudio deleted file mode 160000 index cb8d3dcb..00000000 --- a/portaudio +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cb8d3dcbc6fa74c67f3e236be89b12d5630da141