Commit e353d376 authored by Andrew Marshall's avatar Andrew Marshall
Browse files

blender: prefer lib.cmakeBool & lib.cmakeFeature

Been putting this off for too long.
parent 249e49e3
Loading
Loading
Loading
Loading
+46 −42
Original line number Diff line number Diff line
@@ -147,58 +147,62 @@ stdenv'.mkDerivation (finalAttrs: {

  cmakeFlags = [
    "-C../build_files/cmake/config/blender_release.cmake"
    "-DMaterialX_DIR=${python3Packages.materialx}/lib/cmake/MaterialX"
    "-DPYTHON_INCLUDE_DIR=${python3}/include/${python3.libPrefix}"
    "-DPYTHON_LIBPATH=${python3}/lib"
    "-DPYTHON_LIBRARY=${python3.libPrefix}"
    "-DPYTHON_NUMPY_INCLUDE_DIRS=${python3Packages.numpy_1}/${python3.sitePackages}/numpy/core/include"
    "-DPYTHON_NUMPY_PATH=${python3Packages.numpy_1}/${python3.sitePackages}"
    "-DPYTHON_VERSION=${python3.pythonVersion}"
    "-DWITH_BUILDINFO=OFF"
    "-DWITH_CPU_CHECK=OFF"
    "-DWITH_CYCLES_CUDA_BINARIES=${if cudaSupport then "ON" else "OFF"}"
    "-DWITH_CYCLES_DEVICE_HIP=${if hipSupport then "ON" else "OFF"}"
    "-DWITH_CYCLES_DEVICE_ONEAPI=OFF"
    "-DWITH_CYCLES_DEVICE_OPTIX=${if cudaSupport then "ON" else "OFF"}"
    "-DWITH_CYCLES_EMBREE=${if embreeSupport then "ON" else "OFF"}"
    "-DWITH_CYCLES_OSL=OFF"
    "-DWITH_HYDRA=${if openUsdSupport then "ON" else "OFF"}"
    "-DWITH_INSTALL_PORTABLE=OFF"
    "-DWITH_JACK=${if jackaudioSupport then "ON" else "OFF"}"
    "-DWITH_LIBS_PRECOMPILED=OFF"
    "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}"
    "-DWITH_OPENIMAGEDENOISE=${if openImageDenoiseSupport then "ON" else "OFF"}"
    "-DWITH_PIPEWIRE=OFF"
    "-DWITH_PULSEAUDIO=OFF"
    "-DWITH_PYTHON_INSTALL=OFF"
    "-DWITH_PYTHON_INSTALL_NUMPY=OFF"
    "-DWITH_PYTHON_INSTALL_REQUESTS=OFF"
    "-DWITH_STRICT_BUILD_OPTIONS=ON"
    "-DWITH_USD=${if openUsdSupport then "ON" else "OFF"}"

    (lib.cmakeFeature "MaterialX_DIR" "${python3Packages.materialx}/lib/cmake/MaterialX")
    (lib.cmakeFeature "PYTHON_INCLUDE_DIR" "${python3}/include/${python3.libPrefix}")
    (lib.cmakeFeature "PYTHON_LIBPATH" "${python3}/lib")
    (lib.cmakeFeature "PYTHON_LIBRARY" "${python3.libPrefix}")
    (lib.cmakeFeature "PYTHON_NUMPY_INCLUDE_DIRS" "${python3Packages.numpy_1}/${python3.sitePackages}/numpy/core/include")
    (lib.cmakeFeature "PYTHON_NUMPY_PATH" "${python3Packages.numpy_1}/${python3.sitePackages}")
    (lib.cmakeFeature "PYTHON_VERSION" "${python3.pythonVersion}")

    (lib.cmakeBool "WITH_BUILDINFO" false)
    (lib.cmakeBool "WITH_CPU_CHECK" false)
    (lib.cmakeBool "WITH_CYCLES_CUDA_BINARIES" cudaSupport)
    (lib.cmakeBool "WITH_CYCLES_DEVICE_HIP" hipSupport)
    (lib.cmakeBool "WITH_CYCLES_DEVICE_ONEAPI" false)
    (lib.cmakeBool "WITH_CYCLES_DEVICE_OPTIX" cudaSupport)
    (lib.cmakeBool "WITH_CYCLES_EMBREE" embreeSupport)
    (lib.cmakeBool "WITH_CYCLES_OSL" false)
    (lib.cmakeBool "WITH_HYDRA" openUsdSupport)
    (lib.cmakeBool "WITH_INSTALL_PORTABLE" false)
    (lib.cmakeBool "WITH_JACK" jackaudioSupport)
    (lib.cmakeBool "WITH_LIBS_PRECOMPILED" false)
    (lib.cmakeBool "WITH_OPENCOLLADA" colladaSupport)
    (lib.cmakeBool "WITH_OPENIMAGEDENOISE" openImageDenoiseSupport)
    (lib.cmakeBool "WITH_PIPEWIRE" false)
    (lib.cmakeBool "WITH_PULSEAUDIO" false)
    (lib.cmakeBool "WITH_PYTHON_INSTALL" false)
    (lib.cmakeBool "WITH_PYTHON_INSTALL_NUMPY" false)
    (lib.cmakeBool "WITH_PYTHON_INSTALL_REQUESTS" false)
    (lib.cmakeBool "WITH_STRICT_BUILD_OPTIONS" true)
    (lib.cmakeBool "WITH_USD" openUsdSupport)

    # 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${stdenv.hostPlatform.extensions.sharedLibrary}"
    (lib.cmakeFeature "ALEMBIC_INCLUDE_DIR" "${lib.getDev alembic}/include")
    (lib.cmakeFeature "ALEMBIC_LIBRARY" "${lib.getLib alembic}/lib/libAlembic${stdenv.hostPlatform.extensions.sharedLibrary}")
  ]
  ++ lib.optionals cudaSupport [
    "-DOPTIX_ROOT_DIR=${optix}"
    "-DWITH_CYCLES_CUDA_BINARIES=ON"
    (lib.cmakeFeature "OPTIX_ROOT_DIR" "${optix}")
    (lib.cmakeBool "WITH_CYCLES_CUDA_BINARIES" true)
  ]
  ++ lib.optionals hipSupport [
    "-DHIPRT_INCLUDE_DIR=${rocmPackages.hiprt}/include"
    "-DWITH_CYCLES_DEVICE_HIPRT=ON"
    "-DWITH_CYCLES_HIP_BINARIES=ON"
    (lib.cmakeFeature "HIPRT_INCLUDE_DIR" "${rocmPackages.hiprt}/include")
    (lib.cmakeBool "WITH_CYCLES_DEVICE_HIPRT" true)
    (lib.cmakeBool "WITH_CYCLES_HIP_BINARIES" true)
  ]
  ++ lib.optionals waylandSupport [
    "-DWITH_GHOST_WAYLAND=ON"
    "-DWITH_GHOST_WAYLAND_DBUS=ON"
    "-DWITH_GHOST_WAYLAND_DYNLOAD=OFF"
    "-DWITH_GHOST_WAYLAND_LIBDECOR=ON"
    (lib.cmakeBool "WITH_GHOST_WAYLAND" true)
    (lib.cmakeBool "WITH_GHOST_WAYLAND_DBUS" true)
    (lib.cmakeBool "WITH_GHOST_WAYLAND_DYNLOAD" false)
    (lib.cmakeBool "WITH_GHOST_WAYLAND_LIBDECOR" true)
  ]
  ++ lib.optionals stdenv.cc.isClang [
    (lib.cmakeFeature "PYTHON_LINKFLAGS" "") # Clang doesn't support "-export-dynamic"
  ]
  ++ lib.optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS=" # Clang doesn't support "-export-dynamic"
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    "-DLIBDIR=/does-not-exist"
    "-DSSE2NEON_INCLUDE_DIR=${sse2neon}/include"
    (lib.cmakeFeature "LIBDIR" "/does-not-exist")
    (lib.cmakeFeature "SSE2NEON_INCLUDE_DIR" "${sse2neon}/include")
  ];

  preConfigure = ''