Skip to content

Commit 4cb3041

Browse files
authored
Merge pull request #77359 from veprbl/pr/blender_darwin_fix
blender: fix on darwin
2 parents 8b44c1f + 8aa0e2f commit 4cb3041

4 files changed

Lines changed: 158 additions & 12 deletions

File tree

pkgs/applications/graphics/openimageio/default.nix

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,5 @@ stdenv.mkDerivation rec {
3939
license = licenses.bsd3;
4040
maintainers = [ maintainers.goibhniu ];
4141
platforms = platforms.unix;
42-
badPlatforms = [ "x86_64-darwin" ];
4342
};
4443
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
diff a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
2+
--- a/build_files/cmake/platform/platform_apple.cmake
3+
+++ b/build_files/cmake/platform/platform_apple.cmake
4+
@@ -35,7 +35,6 @@ else()
5+
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
6+
endif()
7+
if(NOT EXISTS "${LIBDIR}/")
8+
- message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'")
9+
endif()
10+
11+
if(WITH_OPENAL)
12+
@@ -79,7 +78,7 @@ endif()
13+
if(WITH_CODEC_SNDFILE)
14+
set(LIBSNDFILE ${LIBDIR}/sndfile)
15+
set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE}/include)
16+
- set(LIBSNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
17+
+ set(LIBSNDFILE_LIBRARIES sndfile)
18+
set(LIBSNDFILE_LIBPATH ${LIBSNDFILE}/lib ${LIBDIR}/ffmpeg/lib) # TODO, deprecate
19+
endif()
20+
21+
@@ -90,7 +89,7 @@ if(WITH_PYTHON)
22+
# normally cached but not since we include them with blender
23+
set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
24+
set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}m")
25+
- set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}m.a)
26+
+ set(PYTHON_LIBRARY "${LIBDIR}/python/lib/libpython${PYTHON_VERSION}m.dylib")
27+
set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
28+
# set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
29+
else()
30+
@@ -155,10 +154,7 @@ if(WITH_CODEC_FFMPEG)
31+
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
32+
set(FFMPEG_LIBRARIES
33+
avcodec avdevice avformat avutil
34+
- mp3lame swscale x264 xvidcore
35+
- theora theoradec theoraenc
36+
- vorbis vorbisenc vorbisfile ogg opus
37+
- vpx swresample)
38+
+ swscale swresample)
39+
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
40+
endif()
41+
42+
@@ -199,14 +195,14 @@ if(WITH_OPENCOLLADA)
43+
set(OPENCOLLADA ${LIBDIR}/opencollada)
44+
45+
set(OPENCOLLADA_INCLUDE_DIRS
46+
- ${LIBDIR}/opencollada/include/COLLADAStreamWriter
47+
- ${LIBDIR}/opencollada/include/COLLADABaseUtils
48+
- ${LIBDIR}/opencollada/include/COLLADAFramework
49+
- ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
50+
- ${LIBDIR}/opencollada/include/GeneratedSaxParser
51+
+ ${LIBDIR}/opencollada/include/opencollada/COLLADAStreamWriter
52+
+ ${LIBDIR}/opencollada/include/opencollada/COLLADABaseUtils
53+
+ ${LIBDIR}/opencollada/include/opencollada/COLLADAFramework
54+
+ ${LIBDIR}/opencollada/include/opencollada/COLLADASaxFrameworkLoader
55+
+ ${LIBDIR}/opencollada/include/opencollada/GeneratedSaxParser
56+
)
57+
58+
- set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
59+
+ set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
60+
set(OPENCOLLADA_LIBRARIES
61+
OpenCOLLADASaxFrameworkLoader
62+
-lOpenCOLLADAFramework
63+
@@ -215,7 +211,7 @@ if(WITH_OPENCOLLADA)
64+
-lMathMLSolver
65+
-lGeneratedSaxParser
66+
-lbuffer -lftoa -lUTF
67+
- ${OPENCOLLADA_LIBPATH}/libxml2.a
68+
+ xml2
69+
)
70+
# PCRE is bundled with openCollada
71+
# set(PCRE ${LIBDIR}/pcre)
72+
@@ -276,14 +272,13 @@ if(WITH_BOOST)
73+
endif()
74+
75+
if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
76+
- set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
77+
endif()
78+
79+
if(WITH_OPENIMAGEIO)
80+
set(OPENIMAGEIO ${LIBDIR}/openimageio)
81+
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
82+
set(OPENIMAGEIO_LIBRARIES
83+
- ${OPENIMAGEIO}/lib/libOpenImageIO.a
84+
+ ${OPENIMAGEIO}/lib/libOpenImageIO.dylib
85+
${PNG_LIBRARIES}
86+
${JPEG_LIBRARIES}
87+
${TIFF_LIBRARY}
88+
@@ -306,7 +301,7 @@ endif()
89+
if(WITH_OPENCOLORIO)
90+
set(OPENCOLORIO ${LIBDIR}/opencolorio)
91+
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
92+
- set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
93+
+ set(OPENCOLORIO_LIBRARIES OpenColorIO)
94+
set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
95+
endif()
96+
97+
@@ -443,7 +438,7 @@ else()
98+
set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
99+
endif()
100+
101+
-if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
102+
+if(FALSE)
103+
# Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
104+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
105+
endif()

pkgs/applications/misc/blender/default.nix

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
{ config, stdenv, lib, fetchurl, boost, cmake, ffmpeg, gettext, glew
22
, ilmbase, libXi, libX11, libXext, libXrender
33
, libjpeg, libpng, libsamplerate, libsndfile
4-
, libtiff, libGLU, libGL, openal, opencolorio, openexr, openimageio, openjpeg_1, python3Packages
4+
, libtiff, libGLU, libGL, openal, opencolorio, openexr, openimageio2, openjpeg, python3Packages
55
, openvdb, libXxf86vm, tbb
66
, zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
77
, jackaudioSupport ? false, libjack2
88
, cudaSupport ? config.cudaSupport or false, cudatoolkit
99
, colladaSupport ? true, opencollada
1010
, enableNumpy ? false, makeWrapper
11+
, pugixml, SDL, Cocoa, CoreGraphics, ForceFeedback, OpenAL, OpenGL
1112
}:
1213

1314
with lib;
@@ -23,22 +24,53 @@ stdenv.mkDerivation rec {
2324
sha256 = "1zl0ar95qkxsrbqw9miz2hrjijlqjl06vg3clfk9rm7krr2l3b2j";
2425
};
2526

27+
patches = lib.optional stdenv.isDarwin ./darwin.patch;
28+
2629
nativeBuildInputs = [ cmake ] ++ optional cudaSupport addOpenGLRunpath;
2730
buildInputs =
2831
[ boost ffmpeg gettext glew ilmbase
29-
libXi libX11 libXext libXrender
30-
freetype libjpeg libpng libsamplerate libsndfile libtiff libGLU libGL openal
31-
opencolorio openexr openimageio openjpeg_1 python zlib fftw jemalloc
32+
freetype libjpeg libpng libsamplerate libsndfile libtiff
33+
opencolorio openexr openimageio2 openjpeg python zlib fftw jemalloc
3234
(opensubdiv.override { inherit cudaSupport; })
33-
openvdb libXxf86vm tbb
35+
tbb
3436
makeWrapper
3537
]
38+
++ (if (!stdenv.isDarwin) then [
39+
libXi libX11 libXext libXrender
40+
libGLU libGL openal
41+
libXxf86vm
42+
# OpenVDB currently doesn't build on darwin
43+
openvdb
44+
]
45+
else [
46+
pugixml SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL
47+
])
3648
++ optional jackaudioSupport libjack2
3749
++ optional cudaSupport cudatoolkit
3850
++ optional colladaSupport opencollada;
3951

4052
postPatch =
41-
''
53+
if stdenv.isDarwin then ''
54+
: > build_files/cmake/platform/platform_apple_xcode.cmake
55+
substituteInPlace source/creator/CMakeLists.txt \
56+
--replace '${"$"}{LIBDIR}/python' \
57+
'${python}'
58+
substituteInPlace build_files/cmake/platform/platform_apple.cmake \
59+
--replace '${"$"}{LIBDIR}/python' \
60+
'${python}' \
61+
--replace '${"$"}{LIBDIR}/opencollada' \
62+
'${opencollada}' \
63+
--replace '${"$"}{PYTHON_LIBPATH}/site-packages/numpy' \
64+
'${python3Packages.numpy}/${python.sitePackages}/numpy' \
65+
--replace 'set(OPENJPEG_INCLUDE_DIRS ' \
66+
'set(OPENJPEG_INCLUDE_DIRS "'$(echo ${openjpeg.dev}/include/openjpeg-*)'") #' \
67+
--replace 'set(OPENJPEG_LIBRARIES ' \
68+
'set(OPENJPEG_LIBRARIES "${openjpeg}/lib/libopenjp2.dylib") #' \
69+
--replace 'set(OPENIMAGEIO ' \
70+
'set(OPENIMAGEIO "${openimageio2.out}") #' \
71+
--replace 'set(OPENEXR_INCLUDE_DIRS ' \
72+
'set(OPENEXR_INCLUDE_DIRS "${openexr.dev}/include/OpenEXR") #'
73+
'' else ''
4274
substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"'
4375
'';
4476

@@ -48,7 +80,7 @@ stdenv.mkDerivation rec {
4880
"-DWITH_CODEC_SNDFILE=ON"
4981
"-DWITH_INSTALL_PORTABLE=OFF"
5082
"-DWITH_FFTW3=ON"
51-
#"-DWITH_SDL=ON"
83+
"-DWITH_SDL=OFF"
5284
"-DWITH_OPENCOLORIO=ON"
5385
"-DWITH_OPENSUBDIV=ON"
5486
"-DPYTHON_LIBRARY=${python.libPrefix}m"
@@ -61,10 +93,18 @@ stdenv.mkDerivation rec {
6193
"-DWITH_OPENVDB=ON"
6294
"-DWITH_TBB=ON"
6395
"-DWITH_IMAGE_OPENJPEG=ON"
96+
"-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}"
97+
]
98+
++ optionals stdenv.isDarwin [
99+
"-DWITH_CYCLES_OSL=OFF" # requires LLVM
100+
"-DWITH_OPENVDB=OFF" # OpenVDB currently doesn't build on darwin
101+
102+
"-DLIBDIR=/does-not-exist"
64103
]
104+
# Clang doesn't support "-export-dynamic"
105+
++ optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS="
65106
++ optional jackaudioSupport "-DWITH_JACK=ON"
66-
++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON"
67-
++ optional colladaSupport "-DWITH_OPENCOLLADA=ON";
107+
++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON";
68108

69109
NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}";
70110

@@ -95,7 +135,7 @@ stdenv.mkDerivation rec {
95135
# They comment two licenses: GPLv2 and Blender License, but they
96136
# say: "We've decided to cancel the BL offering for an indefinite period."
97137
license = licenses.gpl2Plus;
98-
platforms = [ "x86_64-linux" ];
138+
platforms = [ "x86_64-linux" "x86_64-darwin" ];
99139
maintainers = [ maintainers.goibhniu ];
100140
};
101141
}

pkgs/top-level/all-packages.nix

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18211,7 +18211,9 @@ in
1821118211

1821218212
bleachbit = callPackage ../applications/misc/bleachbit { };
1821318213

18214-
blender = callPackage ../applications/misc/blender { };
18214+
blender = callPackage ../applications/misc/blender {
18215+
inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics ForceFeedback OpenAL OpenGL;
18216+
};
1821518217

1821618218
bluefish = callPackage ../applications/editors/bluefish {
1821718219
gtk = gtk3;

0 commit comments

Comments
 (0)