From fbc76cef9fa96862be253dff5d891c14a93d2791 Mon Sep 17 00:00:00 2001 From: Mel Date: Sun, 14 Apr 2024 14:41:31 +0200 Subject: Build static GLFW and GLEW dependencies --- flake.nix | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix index 020ef53..8c317d4 100644 --- a/flake.nix +++ b/flake.nix @@ -8,17 +8,41 @@ outputs = { self, nixpkgs }: let system = "x86_64-darwin"; - pkgs = import nixpkgs { inherit system; }; + pkgs = nixpkgs.legacyPackages.${system}; in { packages = { - ${system}.default = pkgs.callPackage ./. {}; + ${system} = { + 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 { + pname = "glfw-static"; + cmakeFlags = [ "-DBUILD_SHARED_LIBS=OFF" ]; + }; + + glew-static = pkgs.glew.overrideAttrs { + pname = "glew-static"; + cmakeFlags = [ "-DBUILD_SHARED_LIBS=OFF" ]; + }; + }; }; devShells = { ${system}.default = pkgs.mkShell { - buildInputs = with pkgs; [ - pkg-config cmake meson glfw glew - ]; + buildInputs = (with pkgs; [ + pkg-config cmake meson lld + ]) ++ (with self.packages.${system}; [ + glfw-static glew-static + ]) ++ (with pkgs.darwin.apple_sdk.frameworks; [ + Cocoa OpenGL + ]); }; }; }; -- cgit 1.4.1