From 3af28453019a98b26f5c08ed49a6df633b36addb Mon Sep 17 00:00:00 2001 From: Mel Date: Thu, 3 Sep 2026 05:00:42 +0200 Subject: Add support for AArch64 Linux Signed-off-by: Mel --- default.nix | 8 ++++---- flake.lock | 8 ++++---- flake.nix | 26 ++++++++------------------ src/GFX/Window.cpp | 5 ++++- 4 files changed, 20 insertions(+), 27 deletions(-) diff --git a/default.nix b/default.nix index e2e14cd..a019566 100644 --- a/default.nix +++ b/default.nix @@ -1,4 +1,4 @@ -{ lib, clangStdenv, meson, ninja, pkg-config, lld, glew, glfw, Cocoa, OpenGL, wayland, wayland-protocols, libffi }: +{ lib, clangStdenv, meson, ninja, pkg-config, lld, glew, glfw, wayland, wayland-protocols, libffi }: let stdenv = clangStdenv; @@ -10,8 +10,8 @@ stdenv.mkDerivation { src = ./.; nativeBuildInputs = [ meson ninja pkg-config lld ]; + # darwin provides the apple sdk dependencies by default buildInputs = [ glew glfw ] - ++ lib.optionals stdenv.isDarwin [ Cocoa OpenGL ] ++ lib.optionals stdenv.isLinux [ wayland wayland-protocols libffi ]; mesonFlags = [ @@ -26,7 +26,7 @@ stdenv.mkDerivation { description = "a dumb minecraft in c++ and opengl."; homepage = "https://git.rnrd.eu/meowcraft"; license = licenses.free; # TODO: Choose a specific license. - platforms = [ "x86_64-linux" "x86_64-darwin" ]; + platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ]; mainProgram = "meowcraft"; }; -} \ No newline at end of file +} diff --git a/flake.lock b/flake.lock index 49196a5..6d73e29 100644 --- a/flake.lock +++ b/flake.lock @@ -2,16 +2,16 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1712741485, - "narHash": "sha256-bCs0+MSTra80oXAsnM6Oq62WsirOIaijQ/BbUY59tR4=", + "lastModified": 1782847189, + "narHash": "sha256-twXPFqFsrrY5r28Zh7Homgcp2gUMBgQ6WDS98Q/3xFI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b2cf36f43f9ef2ded5711b30b1f393ac423d8f72", + "rev": "b6018f87da91d19d0ab4cf979885689b469cdd41", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-23.11", + "ref": "nixos-25.11", "type": "indirect" } }, diff --git a/flake.nix b/flake.nix index b13d1e9..3812ff2 100644 --- a/flake.nix +++ b/flake.nix @@ -2,12 +2,12 @@ description = "a dumb minecraft in c++ and opengl."; inputs = { - nixpkgs.url = "nixpkgs/nixos-23.11"; + nixpkgs.url = "nixpkgs/nixos-25.11"; }; - outputs = { self, nixpkgs }: + outputs = { self, nixpkgs }: let - allSystems = [ "x86_64-linux" "x86_64-darwin" ]; + allSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ]; pkgsForSystem = system: nixpkgs.legacyPackages.${system}; @@ -15,24 +15,18 @@ (system: f { inherit system; pkgs = pkgsForSystem system; }); in { - packages = forAllSystems ({ system, pkgs }: { + packages = forAllSystems ({ system, pkgs }: { default = pkgs.callPackage ./. { - inherit (pkgs.darwin.apple_sdk.frameworks) - Cocoa OpenGL; - glfw = self.packages.${system}.glfw-static; glew = self.packages.${system}.glew-static; }; - # NOTE: GLFW depends on OpenSSL and coreutils, which are very - # large dependencies and have to be rebuilt from source to be able - # to be linked statically. Maybe there is a way to avoid this? - glfw-static = (pkgs.glfw.overrideAttrs (oldAttrs: { + glfw-static = pkgs.glfw.overrideAttrs (oldAttrs: { pname = "glfw-static"; cmakeFlags = oldAttrs.cmakeFlags ++ [ "-DBUILD_SHARED_LIBS=OFF" ]; - })).override { waylandSupport = pkgs.stdenv.isLinux; }; + }); glew-static = pkgs.glew.overrideAttrs { pname = "glew-static"; @@ -40,20 +34,16 @@ }; }); - devShells = forAllSystems ({ system, pkgs }: + devShells = forAllSystems ({ system, pkgs }: let inherit (pkgs) lib stdenv; - - darwinFrameworks = pkgs.darwin.apple_sdk.frameworks; in - { + { default = pkgs.mkShell { buildInputs = (with pkgs; [ pkg-config ninja cmake meson lldb ]) ++ (with self.packages.${system}; [ glfw-static glew-static - ]) ++ lib.optionals stdenv.isDarwin (with darwinFrameworks; [ - Cocoa OpenGL ]) ++ lib.optionals stdenv.isLinux (with pkgs; [ wayland wayland-protocols libffi ]); diff --git a/src/GFX/Window.cpp b/src/GFX/Window.cpp index 5c391c8..75e7613 100644 --- a/src/GFX/Window.cpp +++ b/src/GFX/Window.cpp @@ -18,7 +18,10 @@ Window::Window(std::string const& title, U32 const width, U32 const height) { m_window = glfwCreateWindow(TO(I32, width), TO(I32, height), title.c_str(), nullptr, nullptr); if (m_window == nullptr) { - throw std::runtime_error("Failed to create window."); + Char const* error_description; + UInt error_code = glfwGetError(&error_description); + std::string error_string = "Failed to create window: " + std::string(error_description) + " (" + std::to_string(error_code) + ")"; + throw std::runtime_error(error_string); } glfwMakeContextCurrent(m_window); -- cgit v1.3.1