Unverified Commit 7bfa0877 authored by Dmitry Kalinkin's avatar Dmitry Kalinkin Committed by GitHub
Browse files

Merge pull request #307833 from gador/blender-darwin

Blender darwin
parents a8a3cf53 44286088
Loading
Loading
Loading
Loading
+28 −39
Original line number Diff line number Diff line
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1894,7 +1894,7 @@ if(WITH_COMPILER_SHORT_FILE_MACRO)
   ADD_CHECK_CXX_COMPILER_FLAG(CXX_PREFIX_MAP_FLAGS CXX_MACRO_PREFIX_MAP -fmacro-prefix-map=foo=bar)
--- a/CMakeLists.txt	2024-03-01 08:08:05
+++ b/CMakeLists.txt	2024-04-24 15:45:30
@@ -2134,7 +2134,7 @@
   )
   if(C_MACRO_PREFIX_MAP AND CXX_MACRO_PREFIX_MAP)
     if(APPLE)
-      if(XCODE AND ${XCODE_VERSION} VERSION_LESS 12.0)
+      if(FALSE)
       # Developers may have say LLVM Clang-10.0.1 toolchain (which supports the flag)
       # with Xcode-11 (the Clang of which doesn't support the flag).
         message(WARNING
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -60,7 +60,6 @@ else()
   message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
         message(
--- a/build_files/cmake/platform/platform_apple.cmake	2024-02-22 15:31:36
+++ b/build_files/cmake/platform/platform_apple.cmake	2024-04-24 16:06:13
@@ -55,7 +55,6 @@
   endif()
 endif()
 if(NOT EXISTS "${LIBDIR}/")
 if(NOT EXISTS "${LIBDIR}/.git")
-  message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'")
 endif()
 
 # Prefer lib directory paths
@@ -98,10 +97,6 @@ if(WITH_CODEC_SNDFILE)
 if(FIRST_RUN)
   message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
@@ -115,10 +114,6 @@
   find_library(_sndfile_VORBIS_LIBRARY NAMES vorbis HINTS ${LIBDIR}/ffmpeg/lib)
   find_library(_sndfile_VORBISENC_LIBRARY NAMES vorbisenc HINTS ${LIBDIR}/ffmpeg/lib)
   list(APPEND LIBSNDFILE_LIBRARIES
@@ -32,44 +30,26 @@ diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake
   )
 
   print_found_status("SndFile libraries" "${LIBSNDFILE_LIBRARIES}")
@@ -118,7 +113,7 @@ if(WITH_PYTHON)
     # Normally cached but not since we include them with blender.
     set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}")
     set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}")
-    set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}.a)
+    set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}.dylib)
     set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
   else()
     # Module must be compiled against Python framework.
@@ -147,7 +142,7 @@ endif()
 
 # FreeType compiled with Brotli compression for woff2.
 find_package(Freetype REQUIRED)
-list(APPEND FREETYPE_LIBRARIES
+message(TRACE APPEND FREETYPE_LIBRARIES
   ${LIBDIR}/brotli/lib/libbrotlicommon-static.a
   ${LIBDIR}/brotli/lib/libbrotlidec-static.a)
 
@@ -159,9 +154,7 @@ if(WITH_CODEC_FFMPEG)
@@ -162,9 +157,7 @@
   set(FFMPEG_ROOT_DIR ${LIBDIR}/ffmpeg)
   set(FFMPEG_FIND_COMPONENTS
     avcodec avdevice avformat avutil
-    mp3lame ogg opus swresample swscale
-    theora theoradec theoraenc vorbis vorbisenc
-    vorbisfile vpx x264 xvidcore)
-    vorbisfile vpx x264)
+   swresample swscale)
   if(EXISTS ${LIBDIR}/ffmpeg/lib/libaom.a)
     list(APPEND FFMPEG_FIND_COMPONENTS aom)
   endif()
@@ -273,7 +266,6 @@ if(WITH_BOOST)
 endif()
@@ -275,7 +268,6 @@
 add_bundled_libraries(boost/lib)
 
 if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
-  string(APPEND PLATFORM_LINKFLAGS " -liconv") # boost_locale and ffmpeg needs it !
 endif()
 
 if(WITH_PUGIXML)
@@ -402,7 +394,7 @@ endif()
@@ -350,7 +342,7 @@
 
 # CMake FindOpenMP doesn't know about AppleClang before 3.12, so provide custom flags.
 if(WITH_OPENMP)
@@ -78,3 +58,12 @@ diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake
     # Use OpenMP from our precompiled libraries.
     message(STATUS "Using ${LIBDIR}/openmp for OpenMP")
     set(OPENMP_CUSTOM ON)
@@ -427,7 +419,7 @@
   " -Wl,-unexported_symbols_list,'${PLATFORM_SYMBOLS_MAP}'"
 )
 
-if(${XCODE_VERSION} VERSION_GREATER_EQUAL 15.0)
+if(FALSE)
   if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
     # Silence "no platform load command found in <static library>, assuming: macOS".
     string(APPEND PLATFORM_LINKFLAGS " -Wl,-ld_classic")
+39 −23
Original line number Diff line number Diff line
@@ -8,12 +8,14 @@
  addOpenGLRunpath,
  alembic,
  boost,
  brotli,
  callPackage,
  cmake,
  colladaSupport ? true,
  config,
  cudaPackages,
  cudaSupport ? config.cudaSupport,
  darwin,
  dbus,
  embree,
  fetchurl,
@@ -51,6 +53,7 @@
  libxkbcommon,
  llvmPackages,
  makeWrapper,
  materialx,
  mesa,
  ocl-icd,
  openal,
@@ -71,6 +74,7 @@
  rocmPackages, # comes with a significantly larger closure size
  runCommand,
  spaceNavSupport ? stdenv.isLinux,
  sse2neon,
  stdenv,
  tbb,
  wayland,
@@ -114,15 +118,14 @@ stdenv.mkDerivation (finalAttrs: {
        ''
          : > build_files/cmake/platform/platform_apple_xcode.cmake
          substituteInPlace source/creator/CMakeLists.txt \
            --replace '${"$"}{LIBDIR}/python' \
                      '${python3}'
          substituteInPlace build_files/cmake/platform/platform_apple.cmake \
            --replace '${"$"}{LIBDIR}/python' \
            --replace-fail '${"$"}{LIBDIR}/python' \
                      '${python3}' \
            --replace '${"$"}{LIBDIR}/opencollada' \
                      '${opencollada}' \
            --replace '${"$"}{PYTHON_LIBPATH}/site-packages/numpy' \
                      '${python3Packages.numpy}/${python3.sitePackages}/numpy'
            --replace-fail '${"$"}{LIBDIR}/materialx/' '${materialx}/'
          substituteInPlace build_files/cmake/platform/platform_apple.cmake \
            --replace-fail '${"$"}{LIBDIR}/brotli/lib/libbrotlicommon-static.a' \
                      '${lib.getLib brotli}/lib/libbrotlicommon.dylib' \
            --replace-fail '${"$"}{LIBDIR}/brotli/lib/libbrotlidec-static.a' \
                      '${lib.getLib brotli}/lib/libbrotlidec.dylib'
        ''
      else
        ''
@@ -150,6 +153,7 @@ stdenv.mkDerivation (finalAttrs: {
      "-DWITH_FFTW3=ON"
      "-DWITH_IMAGE_OPENJPEG=ON"
      "-DWITH_INSTALL_PORTABLE=OFF"
      "-DMaterialX_DIR=${materialx}/lib/cmake/MaterialX"
      "-DWITH_MOD_OCEANSIM=ON"
      "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}"
      "-DWITH_OPENCOLORIO=ON"
@@ -164,7 +168,7 @@ stdenv.mkDerivation (finalAttrs: {

      # Blender supplies its own FindAlembic.cmake (incompatible with the Alembic-supplied config file)
      "-DALEMBIC_INCLUDE_DIR=${lib.getDev alembic}/include"
      "-DALEMBIC_LIBRARY=${lib.getLib alembic}/lib/libAlembic.so"
      "-DALEMBIC_LIBRARY=${lib.getLib alembic}/lib/libAlembic${stdenv.hostPlatform.extensions.sharedLibrary}"
    ]
    ++ lib.optionals waylandSupport [
      "-DWITH_GHOST_WAYLAND=ON"
@@ -172,11 +176,12 @@ stdenv.mkDerivation (finalAttrs: {
      "-DWITH_GHOST_WAYLAND_DYNLOAD=OFF"
      "-DWITH_GHOST_WAYLAND_LIBDECOR=ON"
    ]
    ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "-DWITH_CYCLES_EMBREE=OFF" ]
    ++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) [ "-DWITH_CYCLES_EMBREE=OFF" ]
    ++ lib.optionals stdenv.isDarwin [
      "-DLIBDIR=/does-not-exist"
      "-DWITH_CYCLES_OSL=OFF" # requires LLVM
      "-DWITH_OPENVDB=OFF" # OpenVDB currently doesn't build on darwin
      "-DWITH_CYCLES_OSL=OFF" # causes segfault on aarch64-darwin
      "-DSSE2NEON_INCLUDE_DIR=${sse2neon}/lib"
      "-DWITH_USD=OFF" # currently fails on darwin
    ]
    ++ lib.optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS=" # Clang doesn't support "-export-dynamic"
    ++ lib.optional jackaudioSupport "-DWITH_JACK=ON"
@@ -219,21 +224,22 @@ stdenv.mkDerivation (finalAttrs: {
      libsndfile
      libtiff
      libwebp
      materialx
      opencolorio
      openexr
      openimageio
      openjpeg
      openpgl
      (opensubdiv.override { inherit cudaSupport; })
      openvdb
      potrace
      pugixml
      pyPkgsOpenusd
      python3
      tbb
      zlib
      zstd
    ]
    ++ lib.optionals (!stdenv.isAarch64) [
    ++ lib.optionals (!stdenv.isAarch64 && stdenv.isLinux) [
      embree
      (openimagedenoise.override { inherit cudaSupport; })
    ]
@@ -248,8 +254,8 @@ stdenv.mkDerivation (finalAttrs: {
          libXrender
          libXxf86vm
          openal
          openvdb # OpenVDB currently doesn't build on darwin
          openxr-loader
          pyPkgsOpenusd
        ]
      else
        [
@@ -259,7 +265,11 @@ stdenv.mkDerivation (finalAttrs: {
          OpenAL
          OpenGL
          SDL
          brotli
          embree
          llvmPackages.openmp
          (openimagedenoise.override { inherit cudaSupport; })
          sse2neon
        ]
    )
    ++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]
@@ -280,11 +290,12 @@ stdenv.mkDerivation (finalAttrs: {
      ps = python3Packages;
    in
    [
      materialx
      ps.numpy
      ps.requests
      ps.zstandard
      pyPkgsOpenusd
    ];
    ]
    ++ lib.optionals (!stdenv.isDarwin) [ pyPkgsOpenusd ];

  blenderExecutable =
    placeholder "out"
@@ -295,8 +306,10 @@ stdenv.mkDerivation (finalAttrs: {
      mkdir $out/Applications
      mv $out/Blender.app $out/Applications
    ''
    + ''
    + lib.optionalString stdenv.isLinux ''
      mv $out/share/blender/${lib.versions.majorMinor finalAttrs.version}/python{,-ext}
    ''
    + ''
      buildPythonPath "$pythonPath"
      wrapProgram $blenderExecutable \
        --prefix PATH : $program_PATH \
@@ -311,6 +324,9 @@ stdenv.mkDerivation (finalAttrs: {
      isELF "$program" || continue
      addOpenGLRunpath "$program"
    done
  ''
  + lib.optionalString stdenv.isDarwin ''
    makeWrapper $out/Applications/Blender.app/Contents/MacOS/Blender $out/bin/blender
  '';

  passthru = {
@@ -327,15 +343,13 @@ stdenv.mkDerivation (finalAttrs: {
    tests = {
      render = runCommand "${finalAttrs.pname}-test" { } ''
        set -euo pipefail

        export LIBGL_DRIVERS_PATH=${mesa.drivers}/lib/dri
        export __EGL_VENDOR_LIBRARY_FILENAMES=${mesa.drivers}/share/glvnd/egl_vendor.d/50_mesa.json

        cat <<'PYTHON' > scene-config.py
        import bpy
        bpy.context.scene.eevee.taa_render_samples = 32
        bpy.context.scene.cycles.samples = 32
        if ${if stdenv.isAarch64 then "True" else "False"}:
        if ${if (stdenv.isAarch64 && stdenv.isLinux) then "True" else "False"}:
            bpy.context.scene.cycles.use_denoising = False
        bpy.context.scene.render.resolution_x = 100
        bpy.context.scene.render.resolution_y = 100
@@ -347,7 +361,7 @@ stdenv.mkDerivation (finalAttrs: {
        for engine in BLENDER_EEVEE CYCLES; do
          echo "Rendering with $engine..."
          # Beware that argument order matters
          ${finalAttrs.finalPackage}/bin/blender \
          ${lib.getExe finalAttrs.finalPackage} \
            --background \
            -noaudio \
            --factory-startup \
@@ -372,8 +386,10 @@ stdenv.mkDerivation (finalAttrs: {
      "aarch64-linux"
      "x86_64-darwin"
      "x86_64-linux"
      "aarch64-darwin"
    ];
    broken = stdenv.isDarwin;
    # the current apple sdk is too old (currently 11_0) and fails to build "metal" on x86_64-darwin
    broken = stdenv.hostPlatform.system == "x86_64-darwin";
    maintainers = with lib.maintainers; [
      goibhniu
      veprbl
+76 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  cmake,
  darwin,
  libX11,
  libXt,
  libGL,
  openimageio,
  imath,
  python3Packages,
  python3
}:

python3Packages.buildPythonPackage rec {
  pname = "materialx";
  version = "1.38.10";

  src = fetchFromGitHub {
    owner = "AcademySoftwareFoundation";
    repo = "MaterialX";
    rev = "v${version}";
    sha256 = "sha256-/kMHmW2dptZNtjuhE5s+jvPRIdtY+FRiVtMU+tiBgQo=";
  };

  format = "other";

  nativeBuildInputs = [
    cmake
    python3Packages.setuptools
  ];

  buildInputs =
    [
      openimageio
      imath
    ]
    ++ lib.optionals stdenv.isDarwin (
      with darwin.apple_sdk.frameworks;
      [
        OpenGL
        Cocoa
      ]
    )
    ++ lib.optionals (!stdenv.isDarwin) [
      libX11
      libXt
      libGL
    ];

  cmakeFlags = [
    (lib.cmakeBool "MATERIALX_BUILD_OIIO" true)
    (lib.cmakeBool "MATERIALX_BUILD_PYTHON" true)
    # don't build MSL shader back-end on x86_x64-darwin, as it requires a newer SDK with metal support
    (lib.cmakeBool "MATERIALX_BUILD_GEN_MSL" (stdenv.isLinux || (stdenv.isAarch64 && stdenv.isDarwin)))
  ];

  pythonImportsCheck = [ "MaterialX" ];

  postInstall = ''
    # Make python lib properly accessible
    target_dir=$out/${python3.sitePackages}
    mkdir -p $(dirname $target_dir)
    # required for cmake to find the bindings, when included in other projects
    ln -s $out/python $target_dir
  '';

  meta = {
    description = "Open standard for representing rich material and look-development content in computer graphics";
    homepage = "https://materialx.org";
    maintainers = [ lib.maintainers.gador ];
    platforms = lib.platforms.unix;
    license = lib.licenses.mpl20;
  };
}
+3 −3
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ stdenv.mkDerivation (finalAttrs: {

  src = fetchFromGitHub {
    owner = "OpenPathGuidingLibrary";
    repo = finalAttrs.pname;
    repo = "openpgl";
    rev = "v${finalAttrs.version}";
    hash = "sha256-dbHmGGiHQkU0KPpQYpY/o0uCWdb3L5namETdOcOREgs=";
  };
@@ -31,12 +31,12 @@ stdenv.mkDerivation (finalAttrs: {
    "-DTBB_ROOT=${tbb.out}"
  ];

  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isAarch64 "-flax-vector-conversions";
  env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.isAarch64 && !stdenv.isDarwin) "-flax-vector-conversions";

  meta = {
    description = "Intel Open Path Guiding Library";
    homepage = "https://github.com/OpenPathGuidingLibrary/openpgl";
    platforms = lib.platforms.linux;
    platforms = lib.platforms.unix;
    maintainers = [ lib.maintainers.amarshall ];
    license = lib.licenses.asl20;
  };
+41 −0
Original line number Diff line number Diff line
{
  lib,
  fetchFromGitHub,
  pkg-config,
  stdenv,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "sse2neon";
  version = "1.7.0";

  src = fetchFromGitHub {
    owner = "DLTcollab";
    repo = "sse2neon";
    rev = "v${finalAttrs.version}";
    hash = "sha256-riFFGIA0H7e5StYSjO0/JDrduzfwS+lOASzk5BRUyo4=";
  };

  postPatch = ''
    # remove warning about gcc < 10
    substituteInPlace sse2neon.h --replace-fail "#warning \"GCC versions" "// "
  '';

  nativeBuildInputs = [ pkg-config ];

  dontInstall = true;
  # use postBuild instead of installPhase, because the build
  # in itself doesn't produce any ($out) output
  postBuild = ''
    mkdir -p $out/lib
    install -m444 sse2neon.h $out/lib/
  '';

  meta = {
    description = "Mono library that provides a GDI+-compatible API on non-Windows operating systems";
    homepage = "https://www.mono-project.com/docs/gui/libgdiplus/";
    platforms = lib.platforms.unix;
    license = lib.licenses.mit;
    maintainers = [ lib.maintainers.gador ];
  };
})
Loading