2 # ***** BEGIN GPL LICENSE BLOCK *****
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software Foundation,
16 # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 # The Original Code is Copyright (C) 2006, Blender Foundation
19 # All rights reserved.
21 # The Original Code is: all of this file.
23 # Contributor(s): Jacques Beaurain.
25 # ***** END GPL LICENSE BLOCK *****
29 INCLUDE_DIRECTORIES(../../intern/guardedalloc
32 ../blender/editors/include
34 ../blender/makesrna/intern
39 ../blender/renderconverter
40 ../blender/render/extern/include
43 ../blender/windowmanager
44 ../kernel/gen_messaging
46 ../../extern/glew/include
52 ADD_DEFINITIONS(-DWITH_QUICKTIME)
56 ADD_DEFINITIONS(-DWITH_OPENEXR)
60 INCLUDE_DIRECTORIES(../blender/python)
62 ADD_DEFINITIONS(-DDISABLE_PYTHON)
66 ADD_DEFINITIONS(-DDISABLE_SDL)
69 IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
70 ADD_DEFINITIONS(-DWITH_BINRELOC)
71 INCLUDE_DIRECTORIES(${BINRELOC_INC})
72 ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
74 MESSAGE(STATUS "Configuring blender")
77 ADD_EXECUTABLE(blender ${EXETYPE} creator.c ../icons/winblender.rc)
79 ADD_EXECUTABLE(blender ${EXETYPE} creator.c)
83 # Post build steps for bundling/packaging.
85 SET(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR})
90 ADD_CUSTOM_COMMAND(TARGET blender
92 MAIN_DEPENDENCY blender
93 #COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/plugins ${TARGETDIR}/
94 #COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/text/* ${TARGETDIR}/
98 IF(UNIX AND NOT APPLE)
100 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
101 COMMAND rm -Rf ${TARGETDIR}/.blender
102 COMMAND mkdir ${TARGETDIR}/.blender/
103 COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.bfont.ttf ${TARGETDIR}/.blender/
106 IF(WITH_INTERNATIONAL)
108 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
109 COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.Blanguages ${TARGETDIR}/.blender/
110 COMMAND cp -R ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/.blender/
112 ENDIF(WITH_INTERNATIONAL)
116 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
117 COMMENT "copying blender scripts..."
118 COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/ui ${TARGETDIR}/.blender/
119 COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/io ${TARGETDIR}/.blender/
120 COMMAND find ${TARGETDIR} -name "*.py?" -prune -exec rm -rf {} "\;"
123 # Copy the systems python into the install directory
124 # Scons copy in tools/Blender.py
126 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
127 COMMENT "copying a subset of the systems python..."
129 COMMAND mkdir ${TARGETDIR}/.blender/python # PYTHONPATH and PYTHONHOME is set here
130 COMMAND mkdir ${TARGETDIR}/.blender/python/lib/
131 COMMAND cp -R ${PYTHON_LIBPATH}/python${PYTHON_VERSION} ${TARGETDIR}/.blender/python/lib/
133 COMMAND rm -rf ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION}/distutils
134 COMMAND rm -rf ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION}/lib2to3
135 COMMAND rm -rf ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION}/idlelib
136 COMMAND rm -rf ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION}/tkinter
137 COMMAND rm -rf ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION}/config
139 COMMAND rm -rf ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION}/site-packages
140 COMMAND mkdir ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION}/site-packages # python needs it.
142 COMMAND rm ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION}/lib-dynload/_tkinter.so
143 COMMAND find ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION} -name "test" -prune -exec rm -rf {} "\;"
144 COMMAND find ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION} -name "*.py?" -exec rm -rf {} "\;"
145 COMMAND find ${TARGETDIR}/.blender/python/lib/python${PYTHON_VERSION} -name "*.so"-exec strip -s {} "\;"
151 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
152 COMMAND find ${TARGETDIR} -name .svn -prune -exec rm -rf {} "\;"
155 ENDIF(UNIX AND NOT APPLE)
158 SET(SOURCEDIR ${CMAKE_SOURCE_DIR}/source/darwin/blender.app)
159 SET(SOURCEINFO ${SOURCEDIR}/Contents/Info.plist)
160 SET(TARGETINFO ${TARGETDIR}/blender.app/Contents/Info.plist)
163 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
164 COMMAND cp -R ${SOURCEINFO} ${TARGETDIR}/blender.app/Contents/
165 COMMAND cp -R ${SOURCEDIR}/Contents/PkgInfo ${TARGETDIR}/blender.app/Contents/
166 COMMAND cp -R ${SOURCEDIR}/Contents/Resources ${TARGETDIR}/blender.app/Contents/
167 COMMAND cat ${SOURCEINFO} | sed s/VERSION/`cat ${CMAKE_SOURCE_DIR}/release/VERSION`/ | sed s/DATE/`date +'%Y-%b-%d'`/ > ${TARGETINFO}
168 COMMAND rm -Rf ${TARGETDIR}/blender.app/Contents/MacOS/.blender
169 COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/.blender/
170 COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.bfont.ttf ${TARGETDIR}/blender.app/Contents/MacOS/.blender/
173 IF(WITH_INTERNATIONAL)
175 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
176 COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.Blanguages ${TARGETDIR}/blender.app/Contents/MacOS/.blender/
177 COMMAND cp -R ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/Resources/
178 COMMAND cp -R ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/MacOS/.blender/
179 COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.Blanguages ${TARGETDIR}/blender.app/Contents/Resources/
181 ENDIF(WITH_INTERNATIONAL)
185 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
186 COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/ui ${TARGETDIR}/blender.app/Contents/MacOS/.blender/
187 COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/io ${TARGETDIR}/blender.app/Contents/MacOS/.blender/
188 COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/.blender/python/
189 COMMAND unzip -q ${LIBDIR}/release/python.zip -d ${TARGETDIR}/blender.app/Contents/MacOS/.blender/python/
190 COMMAND find ${TARGETDIR}/blender.app -name "*.py?" -prune -exec rm -rf {} "\;"
195 TARGET blender POST_BUILD MAIN_DEPENDENCY blender
196 COMMAND find ${TARGETDIR}/blender.app -name .DS_Store -prune -exec rm -rf {} "\;"
197 COMMAND find ${TARGETDIR}/blender.app -name .svn -prune -exec rm -rf {} "\;"
202 FILE(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} WIN_SOURCE_DIR)
204 ADD_CUSTOM_COMMAND(TARGET blender
206 MAIN_DEPENDENCY blender
207 COMMAND if not exist \"${TARGETDIR}\\.blender\" mkdir \"${TARGETDIR}\\.blender\"
208 COMMAND if not exist \"${TARGETDIR}\\.blender\\locale\" mkdir \"${TARGETDIR}\\.blender\\locale\"
209 COMMAND if not exist \"${TARGETDIR}\\.blender\\ui\" mkdir \"${TARGETDIR}\\.blender\\ui\"
210 COMMAND if not exist \"${TARGETDIR}\\.blender\\io\" mkdir \"${TARGETDIR}\\.blender\\io\"
211 COMMAND if not exist \"${TARGETDIR}\\plugins\" mkdir \"${TARGETDIR}\\plugins\"
212 COMMAND copy /Y \"${WIN_SOURCE_DIR}\\bin\\.blender\\.Blanguages\" \"${TARGETDIR}\\.blender\\\"
213 COMMAND copy /Y \"${WIN_SOURCE_DIR}\\bin\\.blender\\.bfont.ttf\" \"${TARGETDIR}\\.blender\\\"
214 COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\bin\\.blender\\locale\\*.*\" \"${TARGETDIR}\\.blender\\locale\"
215 COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\release\\scripts\\*.*\" \"${TARGETDIR}\\.blender\\scripts\"
216 COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\release\\ui\\*.*\" \"${TARGETDIR}\\.blender\\ui\"
217 COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\release\\io\\*.*\" \"${TARGETDIR}\\.blender\\io\"
218 COMMAND xcopy /E /Y \"${WIN_SOURCE_DIR}\\release\\plugins\\*.*\" \"${TARGETDIR}\\plugins\"
219 COMMAND copy /Y \"${WIN_SOURCE_DIR}\\release\\text\\*.*\" \"${TARGETDIR}\"
220 COMMAND copy /Y \"${WIN_SOURCE_DIR}\\release\\windows\\extra\\python26.zip\" \"${TARGETDIR}\\\"
223 FILE(TO_NATIVE_PATH "${LIBDIR}" WIN_LIBDIR)
225 ADD_CUSTOM_COMMAND(TARGET blender
227 MAIN_DEPENDENCY blender
228 COMMAND copy /Y \"${WIN_LIBDIR}\\release\\python31.zip\" \"${TARGETDIR}\\\"
229 COMMAND copy /Y \"${WIN_LIBDIR}\\gettext\\lib\\gnu_gettext.dll\" \"${TARGETDIR}\\\"
230 COMMAND copy /Y \"${WIN_LIBDIR}\\png\\lib\\libpng.dll\" \"${TARGETDIR}\\\"
231 COMMAND copy /Y \"${WIN_LIBDIR}\\sdl\\lib\\SDL.dll\" \"${TARGETDIR}\\\"
232 COMMAND copy /Y \"${WIN_LIBDIR}\\zlib\\lib\\zlib.dll\" \"${TARGETDIR}\\\"
233 COMMAND copy /Y \"${WIN_LIBDIR}\\tiff\\lib\\libtiff.dll\" \"${TARGETDIR}\\\"
234 COMMAND copy /Y \"${WIN_LIBDIR}\\python\\lib\\python31.dll\" \"${TARGETDIR}\\\"
235 COMMAND copy /Y \"${WIN_LIBDIR}\\python\\lib\\python31_d.dll\" \"${TARGETDIR}\\\"
236 COMMAND copy /Y \"${WIN_LIBDIR}\\pthreads\\lib\\pthreadVC2.dll\" \"${TARGETDIR}\\\"
237 COMMAND copy /Y \"${WIN_LIBDIR}\\samplerate\\lib\\libsamplerate-0.dll\" \"${TARGETDIR}\\\"
240 IF(WITH_INTERNATIONAL)
241 ADD_CUSTOM_COMMAND(TARGET blender
243 MAIN_DEPENDENCY blender
244 COMMAND copy /Y \"${WIN_LIBDIR}\\iconv\\lib\\iconv.dll\" \"${TARGETDIR}\\\"
246 ENDIF(WITH_INTERNATIONAL)
249 ADD_CUSTOM_COMMAND(TARGET blender
251 MAIN_DEPENDENCY blender
252 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avcodec-52.dll\" \"${TARGETDIR}\\\"
253 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avformat-52.dll\" \"${TARGETDIR}\\\"
254 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avdevice-52.dll\" \"${TARGETDIR}\\\"
255 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avutil-50.dll\" \"${TARGETDIR}\\\"
256 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaac-0.dll\" \"${TARGETDIR}\\\"
257 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaad-2.dll\" \"${TARGETDIR}\\\"
258 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libmp3lame-0.dll\" \"${TARGETDIR}\\\"
259 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libx264-67.dll\" \"${TARGETDIR}\\\"
260 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\swscale-0.dll\" \"${TARGETDIR}\\\"
261 COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\xvidcore.dll\" \"${TARGETDIR}\\\"
267 ADD_DEPENDENCIES(blender makesdna)
269 FILE(READ ${CMAKE_BINARY_DIR}/cmake_blender_libs.txt BLENDER_LINK_LIBS)
271 SET(BLENDER_LINK_LIBS bf_nodes ${BLENDER_LINK_LIBS} bf_windowmanager bf_editors blender_render)
274 SET(BLENDER_LINK_LIBS ${BLENDER_LINK_LIBS} bf_elbeem)
277 IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
278 SET(BLENDER_LINK_LIBS ${BLENDER_LINK_LIBS} extern_binreloc)
279 ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
283 SET(BLENDER_SORTED_LIBS
351 FOREACH(SORTLIB ${BLENDER_SORTED_LIBS})
352 SET(REMLIB ${SORTLIB})
353 FOREACH(SEARCHLIB ${BLENDER_LINK_LIBS})
354 IF(${SEARCHLIB} STREQUAL ${SORTLIB})
356 ENDIF(${SEARCHLIB} STREQUAL ${SORTLIB})
357 ENDFOREACH(SEARCHLIB)
359 MESSAGE(STATUS "Removing library ${REMLIB} from blender linking because: not configured")
360 LIST(REMOVE_ITEM BLENDER_SORTED_LIBS ${REMLIB})
363 TARGET_LINK_LIBRARIES(blender ${BLENDER_SORTED_LIBS})
365 TARGET_LINK_LIBRARIES(blender ${BLENDER_LINK_LIBS})
368 SETUP_LIBLINKS(blender)