diff --git a/pkgs/by-name/ja/jasper/package.nix b/pkgs/by-name/ja/jasper/package.nix index 29fd8fd5a9e62..b3f59aa816a0f 100644 --- a/pkgs/by-name/ja/jasper/package.nix +++ b/pkgs/by-name/ja/jasper/package.nix @@ -5,6 +5,7 @@ , libGL , libheif , libjpeg +, darwin , pkg-config , stdenv , enableHEIFCodec ? true @@ -35,10 +36,16 @@ stdenv.mkDerivation (finalAttrs: { libheif ] ++ lib.optionals enableJPGCodec [ libjpeg - ] ++ lib.optionals enableOpenGL [ - freeglut - libGL - ]; + ] ++ lib.optionals enableOpenGL ( + if stdenv.hostPlatform.isDarwin then [ + darwin.apple_sdk.frameworks.OpenGL + darwin.apple_sdk.frameworks.GLUT + darwin.apple_sdk.frameworks.Cocoa + ] else [ + libGL + freeglut + ] + ); # Since "build" already exists and is populated, cmake tries to use it, # throwing uncomprehensible error messages... diff --git a/pkgs/development/libraries/fox/default.nix b/pkgs/development/libraries/fox/default.nix index 2715e2c80ca43..746526d8ba127 100644 --- a/pkgs/development/libraries/fox/default.nix +++ b/pkgs/development/libraries/fox/default.nix @@ -6,7 +6,6 @@ , libtiff , zlib , bzip2 -, libGL , libGLU , libXcursor , libXext @@ -24,7 +23,7 @@ stdenv.mkDerivation rec { sha256 = "sha256-bu+IEqNkv9OAf96dPYre3CP759pjalVIbYyc3QSQW2w="; }; - buildInputs = [ libpng libjpeg libtiff zlib bzip2 libGL libGLU libXcursor libXext libXrandr libXft ] + buildInputs = [ libpng libjpeg libtiff zlib bzip2 libGLU libXcursor libXext libXrandr libXft ] ++ lib.optional stdenv.isDarwin CoreServices; doCheck = true; diff --git a/pkgs/development/libraries/freeglut/default.nix b/pkgs/development/libraries/freeglut/default.nix index 69c3b65e4a51c..d70a065582587 100644 --- a/pkgs/development/libraries/freeglut/default.nix +++ b/pkgs/development/libraries/freeglut/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, libICE, libXext, libXi, libXrandr, libXxf86vm, libGL, libGLU, cmake +{ lib, stdenv, fetchurl, libICE, libXext, libXi, libXrandr, libXxf86vm, libGLX, libGLU, cmake, darwin , testers }: @@ -14,11 +14,12 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" ]; nativeBuildInputs = [ cmake ]; - buildInputs = [ libICE libXext libXi libXrandr libXxf86vm libGL libGLU ]; + buildInputs = [ libICE libXext libXi libXrandr libXxf86vm libGLU ] + ++ lib.optional stdenv.isDarwin [ darwin.apple_sdk.frameworks.OpenGL ]; cmakeFlags = lib.optionals stdenv.isDarwin [ - "-DOPENGL_INCLUDE_DIR=${libGL}/include" - "-DOPENGL_gl_LIBRARY:FILEPATH=${libGL}/lib/libGL.dylib" + "-DOPENGL_INCLUDE_DIR=${libGLX.dev}/include" + "-DOPENGL_gl_LIBRARY:FILEPATH=${libGLX}/lib/libGL.dylib" "-DOPENGL_glu_LIBRARY:FILEPATH=${libGLU}/lib/libGLU.dylib" "-DFREEGLUT_BUILD_DEMOS:BOOL=OFF" "-DFREEGLUT_BUILD_STATIC:BOOL=OFF" diff --git a/pkgs/development/libraries/mesa-glu/default.nix b/pkgs/development/libraries/mesa-glu/default.nix index bcff20f1847cd..e5f7de185d956 100644 --- a/pkgs/development/libraries/mesa-glu/default.nix +++ b/pkgs/development/libraries/mesa-glu/default.nix @@ -1,6 +1,6 @@ { lib, stdenv, fetchurl , meson, ninja -, pkg-config, libGL, ApplicationServices +, pkg-config, mesa, ApplicationServices , testers , gitUpdater }: @@ -17,7 +17,7 @@ stdenv.mkDerivation (finalAttrs: { }; nativeBuildInputs = [ meson ninja pkg-config ]; - propagatedBuildInputs = [ libGL ] + propagatedBuildInputs = [ mesa ] ++ lib.optional stdenv.isDarwin ApplicationServices; outputs = [ "out" "dev" ]; diff --git a/pkgs/development/libraries/mesa/stubs.nix b/pkgs/development/libraries/mesa/stubs.nix index f9c462e9b3267..4f7d39d9b3e74 100644 --- a/pkgs/development/libraries/mesa/stubs.nix +++ b/pkgs/development/libraries/mesa/stubs.nix @@ -1,50 +1,37 @@ { stdenv +, lib , libglvnd -, mesa , OpenGL , testers }: stdenv.mkDerivation (finalAttrs: { pname = "libGL"; - inherit (if stdenv.hostPlatform.isDarwin then mesa else libglvnd) version; + version = if stdenv.hostPlatform.isDarwin then "4.1" else libglvnd.version; outputs = [ "out" "dev" ]; - # On macOS, libglvnd is not supported, so we just use what mesa - # build. We need to also include OpenGL.framework, and some - # extra tricks to go along with. We add mesa’s libGLX to support - # the X extensions to OpenGL. - buildCommand = if stdenv.hostPlatform.isDarwin then '' - mkdir -p $out/nix-support $dev - echo ${OpenGL} >> $out/nix-support/propagated-build-inputs - ln -s ${mesa.out}/lib $out/lib + propagatedBuildInputs = lib.optionals stdenv.isDarwin [ OpenGL ]; + # On macOS, provide the OpenGL framework as well as a pkg-config file for OpenGL.framework. + # Packages that still need GL_X_ specifically can pull in libGLX instead, which will be + # Mesa, as libglvnd does not work on macOS. + buildCommand = if stdenv.hostPlatform.isDarwin then '' mkdir -p $dev/lib/pkgconfig $dev/nix-support + echo "$out" > $dev/nix-support/propagated-build-inputs - ln -s ${mesa.dev}/include $dev/include + + mkdir -p $out/lib + ln -s ${OpenGL}/Library/Frameworks/OpenGL.framework/Libraries/libGL.tbd $out/lib/libGL.tbd + + mkdir -p $dev/include + ln -s ${OpenGL}/Library/Frameworks/OpenGL.framework/Headers $dev/include/GL cat <$dev/lib/pkgconfig/gl.pc Name: gl Description: gl library - Version: ${mesa.version} - Libs: -L${mesa.out}/lib -lGL - Cflags: -I${mesa.dev}/include - EOF - - cat <$dev/lib/pkgconfig/glesv1_cm.pc - Name: glesv1_cm - Description: glesv1_cm library - Version: ${mesa.version} - Libs: -L${mesa.out}/lib -lGLESv1_CM - Cflags: -I${mesa.dev}/include - EOF - - cat <$dev/lib/pkgconfig/glesv2.pc - Name: glesv2 - Description: glesv2 library - Version: ${mesa.version} - Libs: -L${mesa.out}/lib -lGLESv2 - Cflags: -I${mesa.dev}/include + Version: 4.1 + Libs: -F${OpenGL} -framework OpenGL + Cflags: -F${OpenGL} EOF '' @@ -79,10 +66,9 @@ stdenv.mkDerivation (finalAttrs: { passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; meta = { - description = "Stub bindings using " + (if stdenv.hostPlatform.isDarwin then "mesa" else "libglvnd"); - pkgConfigModules = [ "gl" "egl" "glesv1_cm" "glesv2" ]; - } // { - inherit (if stdenv.hostPlatform.isDarwin then mesa.meta else libglvnd.meta) - homepage license platforms badPlatforms; - }; + description = "Stub bindings using " + (if stdenv.hostPlatform.isDarwin then "OpenGL.framework" else "libglvnd"); + pkgConfigModules = [ "gl" ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ "egl" "glesv1_cm" "glesv2" ]; + } // (if stdenv.hostPlatform.isDarwin + then { inherit (OpenGL.meta) platforms; } + else { inherit (libglvnd.meta) homepage license platforms badPlatforms; }); }) diff --git a/pkgs/development/libraries/physics/geant4/default.nix b/pkgs/development/libraries/physics/geant4/default.nix index 3b67b6a3756ed..c9e6b83d6c082 100644 --- a/pkgs/development/libraries/physics/geant4/default.nix +++ b/pkgs/development/libraries/physics/geant4/default.nix @@ -3,8 +3,8 @@ , enableQT ? false # deprecated name , enableQt ? enableQT , enableXM ? false -, mesa -, enableOpenGLX11 ? !mesa.meta.broken +, libGLX +, enableOpenGLX11 ? !libGLX.meta.broken , enablePython ? false , enableRaytracerX11 ? false @@ -32,6 +32,7 @@ , libGLU, libGL , libXext , libXmu +, darwin # For enablePython , boost @@ -77,8 +78,8 @@ stdenv.mkDerivation rec { "-DGEANT4_USE_SYSTEM_ZLIB=ON" "-DGEANT4_BUILD_MULTITHREADED=${if enableMultiThreading then "ON" else "OFF"}" ] ++ lib.optionals (enableOpenGLX11 && stdenv.isDarwin) [ - "-DXQuartzGL_INCLUDE_DIR=${libGL.dev}/include" - "-DXQuartzGL_gl_LIBRARY=${libGL}/lib/libGL.dylib" + "-DXQuartzGL_INCLUDE_DIR=${libGLX.dev}/include" + "-DXQuartzGL_gl_LIBRARY=${libGLX}/lib/libGL.dylib" ] ++ lib.optionals (enableMultiThreading && enablePython) [ "-DGEANT4_BUILD_TLS_MODEL=global-dynamic" ] ++ lib.optionals enableInventor [ @@ -98,7 +99,8 @@ stdenv.mkDerivation rec { buildInputs = lib.optionals enableOpenGLX11 [ libGLU libXext libXmu ] ++ lib.optionals enableInventor [ libXpm coin3d soxt motif ] - ++ lib.optionals enablePython [ boost_python python3 ]; + ++ lib.optionals enablePython [ boost_python python3 ] + ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.OpenGL ]; propagatedBuildInputs = [ clhep expat xercesc zlib ] ++ lib.optionals enableOpenGLX11 [ libGL ] diff --git a/pkgs/development/libraries/recastnavigation/default.nix b/pkgs/development/libraries/recastnavigation/default.nix index b4119f1133f5f..a789239708a31 100644 --- a/pkgs/development/libraries/recastnavigation/default.nix +++ b/pkgs/development/libraries/recastnavigation/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, cmake, libGL, SDL2, libGLU, catch }: +{ stdenv, lib, fetchFromGitHub, cmake, libGL, SDL2, libGLU, catch, darwin }: stdenv.mkDerivation rec { pname = "recastai"; @@ -31,7 +31,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake ]; - buildInputs = [ libGL SDL2 libGLU ]; + buildInputs = [ libGL SDL2 libGLU ] + ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.OpenGL ]; meta = with lib; { homepage = "https://github.com/recastnavigation/recastnavigation"; diff --git a/pkgs/development/python-modules/vispy/default.nix b/pkgs/development/python-modules/vispy/default.nix index 36833c75ff48b..e5bac31c47ade 100644 --- a/pkgs/development/python-modules/vispy/default.nix +++ b/pkgs/development/python-modules/vispy/default.nix @@ -35,7 +35,9 @@ buildPythonPackage rec { (substituteAll { src = ./library-paths.patch; fontconfig = "${fontconfig.lib}/lib/libfontconfig${stdenv.hostPlatform.extensions.sharedLibrary}"; - gl = "${libGL.out}/lib/libGL${stdenv.hostPlatform.extensions.sharedLibrary}"; + gl = if stdenv.isDarwin + then "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" + else "${libGL.out}/lib/libGL${stdenv.hostPlatform.extensions.sharedLibrary}"; }) ]; diff --git a/pkgs/development/tools/misc/unixbench/default.nix b/pkgs/development/tools/misc/unixbench/default.nix index 4edd464a763d2..d5f060af82cf5 100644 --- a/pkgs/development/tools/misc/unixbench/default.nix +++ b/pkgs/development/tools/misc/unixbench/default.nix @@ -6,7 +6,7 @@ , installShellFiles , perl , xorg -, libGL +, libGLX , coreutils , unixtools , targetPackages @@ -49,7 +49,7 @@ stdenv.mkDerivation rec { buildInputs = [ perl ] ++ lib.optionals withGL [ xorg.libX11 xorg.libXext - libGL + libGLX ]; runtimeDependencies = [ diff --git a/pkgs/games/ddnet/default.nix b/pkgs/games/ddnet/default.nix index 84ecbf4e91cf2..ce83238aa1844 100644 --- a/pkgs/games/ddnet/default.nix +++ b/pkgs/games/ddnet/default.nix @@ -101,7 +101,8 @@ stdenv.mkDerivation rec { "-DCLIENT=${if buildClient then "ON" else "OFF"}" ]; - doCheck = true; + # Tests loop forever on Darwin for some reason + doCheck = !stdenv.isDarwin; checkTarget = "run_tests"; postInstall = lib.optionalString (!buildClient) '' diff --git a/pkgs/games/mar1d/default.nix b/pkgs/games/mar1d/default.nix index b069e3fecc46a..0722654b48682 100644 --- a/pkgs/games/mar1d/default.nix +++ b/pkgs/games/mar1d/default.nix @@ -8,6 +8,7 @@ , ninja , pkg-config , fetchFromGitHub +, darwin }: stdenv.mkDerivation rec { @@ -28,6 +29,8 @@ stdenv.mkDerivation rec { SDL2_mixer libconfig libGLU + ] ++ lib.optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.OpenGL ]; meta = with lib; { diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index cd7e116c17d59..7bf46d945251d 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -835,6 +835,7 @@ self: super: buildInputs = commonBuildInputs ++ [ bootstrap_cmds automake autoconf Xplugin Carbon Cocoa + mesa ]; propagatedBuildInputs = commonPropagatedBuildInputs ++ [ libAppleWM xorgproto diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cdca4c0bd7d3d..8b9769d51a16e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23231,6 +23231,8 @@ with pkgs; # Default libGLU libGLU = mesa_glu; + libGLX = if stdenv.isDarwin then mesa else libglvnd; + mesa = if stdenv.isDarwin then darwin.apple_sdk_11_0.callPackage ../development/libraries/mesa/darwin.nix { inherit (darwin.apple_sdk_11_0.libs) Xplugin;