2008-01-07 19:13:47 +00:00
|
|
|
# ***** BEGIN GPL LICENSE BLOCK *****
|
2006-11-17 02:27:12 +00:00
|
|
|
#
|
|
|
|
# This program is free software; you can redistribute it and/or
|
|
|
|
# modify it under the terms of the GNU General Public License
|
|
|
|
# as published by the Free Software Foundation; either version 2
|
2008-01-07 19:13:47 +00:00
|
|
|
# of the License, or (at your option) any later version.
|
2006-11-17 02:27:12 +00:00
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with this program; if not, write to the Free Software Foundation,
|
2010-02-12 13:34:04 +00:00
|
|
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2006-11-17 02:27:12 +00:00
|
|
|
#
|
|
|
|
# The Original Code is Copyright (C) 2006, Blender Foundation
|
|
|
|
# All rights reserved.
|
2008-01-07 19:13:47 +00:00
|
|
|
# ***** END GPL LICENSE BLOCK *****
|
2006-11-17 02:27:12 +00:00
|
|
|
|
|
|
|
setup_libdirs()
|
|
|
|
|
2010-12-22 22:15:20 +00:00
|
|
|
blender_include_dirs(
|
2018-03-29 18:38:32 +00:00
|
|
|
../../intern/clog
|
2014-10-07 20:46:19 +00:00
|
|
|
../../intern/glew-mx
|
2019-04-24 04:39:31 +00:00
|
|
|
../../intern/guardedalloc
|
2006-11-17 02:27:12 +00:00
|
|
|
../blender/blenkernel
|
2019-04-24 04:39:31 +00:00
|
|
|
../blender/blenlib
|
2011-02-21 13:00:38 +00:00
|
|
|
../blender/blenloader
|
Depsgraph: New dependency graph integration commit
This commit integrates the work done so far on the new dependency graph system,
where goal was to replace legacy depsgraph with the new one, supporting loads of
neat features like:
- More granular dependency relation nature, which solves issues with fake cycles
in the dependencies.
- Move towards all-animatable, by better integration of drivers into the system.
- Lay down some basis for upcoming copy-on-write, overrides and so on.
The new system is living side-by-side with the previous one and disabled by
default, so nothing will become suddenly broken. The way to enable new depsgraph
is to pass `--new-depsgraph` command line argument.
It's a bit early to consider the system production-ready, there are some TODOs
and issues were discovered during the merge period, they'll be addressed ASAP.
But it's important to merge, because it's the only way to attract artists to
really start testing this system.
There are number of assorted documents related on the design of the new system:
* http://wiki.blender.org/index.php/User:Aligorith/GSoC2013_Depsgraph#Design_Documents
* http://wiki.blender.org/index.php/User:Nazg-gul/DependencyGraph
There are also some user-related information online:
* http://code.blender.org/2015/02/blender-dependency-graph-branch-for-users/
* http://code.blender.org/2015/03/more-dependency-graph-tricks/
Kudos to everyone who was involved into the project:
- Joshua "Aligorith" Leung -- design specification, initial code
- Lukas "lukas_t" Toenne -- integrating code into blender, with further fixes
- Sergey "Sergey" "Sharybin" -- some mocking around, trying to wrap up the
project and so
- Bassam "slikdigit" Kurdali -- stressing the new system, reporting all the
issues and recording/writing documentation.
- Everyone else who i forgot to mention here :)
2015-05-12 10:05:57 +00:00
|
|
|
../blender/depsgraph
|
2008-12-31 04:37:01 +00:00
|
|
|
../blender/editors/include
|
2020-12-11 04:00:22 +00:00
|
|
|
../blender/gpu
|
2006-11-17 02:27:12 +00:00
|
|
|
../blender/imbuf
|
2020-12-11 04:00:22 +00:00
|
|
|
../blender/makesdna
|
2019-04-24 04:39:31 +00:00
|
|
|
../blender/makesrna
|
2020-11-06 15:10:18 +00:00
|
|
|
../blender/render
|
2008-01-03 22:20:45 +00:00
|
|
|
../blender/windowmanager
|
2006-11-17 02:27:12 +00:00
|
|
|
)
|
|
|
|
|
2019-04-15 04:38:26 +00:00
|
|
|
set(LIB
|
2019-04-16 04:18:52 +00:00
|
|
|
bf_windowmanager
|
2019-04-15 04:38:26 +00:00
|
|
|
)
|
|
|
|
|
2020-01-31 11:51:35 +00:00
|
|
|
if(WITH_TBB)
|
|
|
|
# Force TBB libraries to be in front of MKL (part of OpenImageDenoise), so
|
|
|
|
# that it is initialized before MKL and static library initialization order
|
|
|
|
# issues are avoided.
|
|
|
|
#
|
|
|
|
# This isn't fully robust but seems to work.
|
|
|
|
list(INSERT LIB 0 ${TBB_LIBRARIES})
|
2019-12-11 09:34:34 +00:00
|
|
|
list(INSERT LIB 0 bf_blenkernel)
|
|
|
|
endif()
|
|
|
|
|
2012-03-20 02:17:37 +00:00
|
|
|
if(WIN32)
|
|
|
|
blender_include_dirs(../../intern/utfconv)
|
|
|
|
endif()
|
|
|
|
|
2011-11-07 12:55:18 +00:00
|
|
|
if(WITH_LIBMV)
|
2016-01-04 13:22:27 +00:00
|
|
|
blender_include_dirs(../../intern/libmv)
|
2011-11-07 12:55:18 +00:00
|
|
|
add_definitions(-DWITH_LIBMV)
|
|
|
|
endif()
|
|
|
|
|
2019-04-16 04:11:27 +00:00
|
|
|
if(WITH_CYCLES)
|
|
|
|
if(WITH_CYCLES_LOGGING)
|
|
|
|
blender_include_dirs(../../intern/cycles/blender)
|
|
|
|
add_definitions(-DWITH_CYCLES_LOGGING)
|
|
|
|
endif()
|
2014-09-08 12:01:24 +00:00
|
|
|
endif()
|
|
|
|
|
2012-03-30 10:37:49 +00:00
|
|
|
if(WITH_CODEC_FFMPEG)
|
|
|
|
add_definitions(-DWITH_FFMPEG)
|
|
|
|
endif()
|
|
|
|
|
2019-11-13 03:55:39 +00:00
|
|
|
if(WITH_TBB)
|
|
|
|
blender_include_dirs(${TBB_INCLUDE_DIRS})
|
CMake/macOS: Remove _LIBPATH, avoid link_directories.
After tests were bundled in a single executable and cycles and libmv
created their own tests, the warnings on macOS have gone over 800.
The reason is setting `*_LIBRARIES` to names of the libraries
and later using `link_directories` to link them properly.
https://cmake.org/cmake/help/latest/command/link_directories.html
> Note This command is rarely necessary and should be avoided where
> there are other choices. Prefer to pass full absolute paths to
> libraries where possible, since this ensures the correct library
> will always be linked. The find_library() command provides the
> full path, which can generally be used directly in calls to
> target_link_libraries().
Warnings like the following popup for every target/executable,
for every library it links to.
```
ld: warning: directory not found for option
'-L/Users/me/blender-build/blender/../lib/darwin/jpeg/lib/Debug'
```
The patch completes a step towards removing `link_directories` as
mentioned in TODO at several places.
The patch uses absolute paths to link libraries and removes
all `*_LIBPATH`s except `PYTHON_LIBPATH` from
`platform_apple.cmake` file. (The corner case where it's used seems
like dead code. Python is no longer shipped with that file structure.)
Also, unused code for LLVM-3.4 has been removed.
Also, guards to avoid searching libraries in system directories have
been added.
`APPLE` platform now no longer needs `setup_libdirs`,
`cycles_link_directories`, and `link_directories`.
The number of warnings now is less than 100, most of them being
deprecation ones in dependencies.
This patch depended on {rBb746179d0add}, {rB2fdbe4d05011},
{rB402a4cadba49} and {rBd7f482f88ecb}.
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D8855
2020-10-08 14:01:40 +00:00
|
|
|
if(NOT APPLE)
|
|
|
|
# APPLE plaform uses full paths for linking libraries.
|
|
|
|
link_directories(${LIBDIR}/tbb/lib)
|
|
|
|
endif()
|
2019-11-13 03:55:39 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
2008-12-31 05:20:35 +00:00
|
|
|
if(WITH_PYTHON)
|
2010-12-22 22:15:20 +00:00
|
|
|
blender_include_dirs(../blender/python)
|
2010-10-31 04:11:39 +00:00
|
|
|
add_definitions(-DWITH_PYTHON)
|
2011-04-28 06:20:47 +00:00
|
|
|
|
|
|
|
if(WITH_PYTHON_SECURITY)
|
|
|
|
add_definitions(-DWITH_PYTHON_SECURITY)
|
|
|
|
endif()
|
2008-12-31 05:20:35 +00:00
|
|
|
endif()
|
|
|
|
|
2011-06-04 14:12:55 +00:00
|
|
|
if(WITH_HEADLESS)
|
|
|
|
add_definitions(-DWITH_HEADLESS)
|
|
|
|
endif()
|
|
|
|
|
2011-10-20 00:19:21 +00:00
|
|
|
if(WITH_SDL)
|
2014-11-17 11:35:36 +00:00
|
|
|
if(WITH_SDL_DYNLOAD)
|
|
|
|
blender_include_dirs(../../extern/sdlew/include)
|
2019-04-16 04:11:27 +00:00
|
|
|
add_definitions(-DWITH_SDL_DYNLOAD)
|
2014-11-17 11:35:36 +00:00
|
|
|
endif()
|
2011-10-20 00:19:21 +00:00
|
|
|
add_definitions(-DWITH_SDL)
|
2009-07-20 10:24:53 +00:00
|
|
|
endif()
|
|
|
|
|
2011-02-21 13:13:08 +00:00
|
|
|
if(WITH_BINRELOC)
|
2011-06-18 14:12:54 +00:00
|
|
|
blender_include_dirs(${BINRELOC_INCLUDE_DIRS})
|
2019-04-16 04:11:27 +00:00
|
|
|
add_definitions(-DWITH_BINRELOC)
|
2009-07-19 19:36:56 +00:00
|
|
|
endif()
|
2007-01-23 20:08:23 +00:00
|
|
|
|
2012-12-20 07:57:26 +00:00
|
|
|
if(WITH_FREESTYLE)
|
|
|
|
blender_include_dirs(../blender/freestyle)
|
2019-04-16 04:11:27 +00:00
|
|
|
add_definitions(-DWITH_FREESTYLE)
|
2012-12-20 07:57:26 +00:00
|
|
|
endif()
|
|
|
|
|
VR: Initial Virtual Reality support - Milestone 1, Scene Inspection
NOTE: While most of the milestone 1 goals are there, a few smaller features and
improvements are still to be done.
Big picture of this milestone: Initial, OpenXR-based virtual reality support
for users and foundation for advanced use cases.
Maniphest Task: https://developer.blender.org/T71347
The tasks contains more information about this milestone.
To be clear: This is not a feature rich VR implementation, it's focused on the
initial scene inspection use case. We intentionally focused on that, further
features like controller support are part of the next milestone.
- How to use?
Instructions on how to use this are here:
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/How_to_Test
These will be updated and moved to a more official place (likely the manual) soon.
Currently Windows Mixed Reality and Oculus devices are usable. Valve/HTC
headsets don't support the OpenXR standard yet and hence, do not work with this
implementation.
---------------
This is the C-side implementation of the features added for initial VR
support as per milestone 1. A "VR Scene Inspection" Add-on will be
committed separately, to expose the VR functionality in the UI. It also
adds some further features for milestone 1, namely a landmarking system
(stored view locations in the VR space)
Main additions/features:
* Support for rendering viewports to an HMD, with good performance.
* Option to sync the VR view perspective with a fully interactive,
regular 3D View (VR-Mirror).
* Option to disable positional tracking. Keeps the current position (calculated
based on the VR eye center pose) when enabled while a VR session is running.
* Some regular viewport settings for the VR view
* RNA/Python-API to query and set VR session state information.
* WM-XR: Layer tying Ghost-XR to the Blender specific APIs/data
* wmSurface API: drawable, non-window container (manages Ghost-OpenGL and GPU
context)
* DNA/RNA for management of VR session settings
* `--debug-xr` and `--debug-xr-time` commandline options
* Utility batch & config file for using the Oculus runtime on Windows.
* Most VR data is runtime only. The exception is user settings which are saved
to files (`XrSessionSettings`).
* VR support can be disabled through the `WITH_XR_OPENXR` compiler flag.
For architecture and code documentation, see
https://wiki.blender.org/wiki/Source/Interface/XR.
---------------
A few thank you's:
* A huge shoutout to Ray Molenkamp for his help during the project - it would
have not been that successful without him!
* Sebastian Koenig and Simeon Conzendorf for testing and feedback!
* The reviewers, especially Brecht Van Lommel!
* Dalai Felinto for pushing and managing me to get this done ;)
* The OpenXR working group for providing an open standard. I think we're the
first bigger application to adopt OpenXR. Congratulations to them and
ourselves :)
This project started as a Google Summer of Code 2019 project - "Core Support of
Virtual Reality Headsets through OpenXR" (see
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/).
Some further information, including ideas for further improvements can be found
in the final GSoC report:
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/Final_Report
Differential Revisions: D6193, D7098
Reviewed by: Brecht Van Lommel, Jeroen Bakker
2020-03-17 19:20:55 +00:00
|
|
|
if(WITH_XR_OPENXR)
|
|
|
|
add_definitions(-DWITH_XR_OPENXR)
|
|
|
|
endif()
|
|
|
|
|
2020-08-28 14:56:44 +00:00
|
|
|
if(WITH_GMP)
|
|
|
|
add_definitions(-DWITH_GMP)
|
|
|
|
endif()
|
|
|
|
|
2009-09-24 15:36:00 +00:00
|
|
|
# Setup the exe sources and buildinfo
|
2010-11-29 04:35:56 +00:00
|
|
|
set(SRC
|
|
|
|
creator.c
|
2016-02-27 18:10:00 +00:00
|
|
|
creator_args.c
|
|
|
|
creator_signals.c
|
|
|
|
|
|
|
|
creator_intern.h
|
2010-11-29 04:35:56 +00:00
|
|
|
)
|
2006-12-06 00:28:13 +00:00
|
|
|
|
2011-04-09 00:10:29 +00:00
|
|
|
# MSVC 2010 gives linking errors with the manifest
|
2010-11-21 13:41:43 +00:00
|
|
|
if(WIN32 AND NOT UNIX)
|
2011-03-29 13:00:03 +00:00
|
|
|
string(SUBSTRING ${BLENDER_VERSION} 0 1 bver1)
|
|
|
|
string(SUBSTRING ${BLENDER_VERSION} 2 1 bver2)
|
|
|
|
string(SUBSTRING ${BLENDER_VERSION} 3 1 bver3)
|
2017-05-27 19:34:55 +00:00
|
|
|
add_definitions(
|
2019-09-25 18:06:20 +00:00
|
|
|
-DBLEN_VER_RC_STR="${BLENDER_VERSION}"
|
2017-05-27 19:34:55 +00:00
|
|
|
-DBLEN_VER_RC_1=${bver1}
|
|
|
|
-DBLEN_VER_RC_2=${bver2}
|
|
|
|
-DBLEN_VER_RC_3=${bver3}
|
|
|
|
-DBLEN_VER_RC_4=0
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
|
|
|
|
2010-11-29 04:35:56 +00:00
|
|
|
list(APPEND SRC
|
2016-02-07 09:58:58 +00:00
|
|
|
${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.rc
|
2019-12-06 17:12:03 +00:00
|
|
|
${CMAKE_BINARY_DIR}/blender.exe.manifest
|
2010-11-29 04:35:56 +00:00
|
|
|
)
|
2010-11-21 13:41:43 +00:00
|
|
|
endif()
|
2006-11-17 02:27:12 +00:00
|
|
|
|
2009-09-24 15:36:00 +00:00
|
|
|
if(WITH_BUILDINFO)
|
2011-08-22 16:54:26 +00:00
|
|
|
add_definitions(-DWITH_BUILDINFO)
|
2011-02-24 17:57:35 +00:00
|
|
|
# --------------------------------------------------------------------------
|
|
|
|
# These defines could all be moved into the header below
|
2020-11-04 07:38:49 +00:00
|
|
|
|
2020-11-06 06:11:27 +00:00
|
|
|
# Write strings into a separate header since we can escape C-strings
|
|
|
|
# in a way that's not practical when passing defines.
|
|
|
|
set(BUILD_PLATFORM "${CMAKE_SYSTEM_NAME}")
|
|
|
|
set(BUILD_TYPE "${CMAKE_BUILD_TYPE}")
|
|
|
|
set(BUILD_CFLAGS "${CMAKE_C_FLAGS}")
|
|
|
|
set(BUILD_CXXFLAGS "${CMAKE_CXX_FLAGS}")
|
|
|
|
set(BUILD_LINKFLAGS "${PLATFORM_LINKFLAGS}")
|
|
|
|
set(BUILD_SYSTEM "CMake")
|
2020-11-04 07:38:49 +00:00
|
|
|
|
|
|
|
if(WITH_COMPILER_SHORT_FILE_MACRO)
|
2020-11-06 06:11:27 +00:00
|
|
|
# It's not necessary to include path information
|
2020-11-04 07:38:49 +00:00
|
|
|
# about the system building Blender in the executable.
|
2020-11-06 06:11:27 +00:00
|
|
|
string(REPLACE "${PLATFORM_CFLAGS_FMACRO_PREFIX_MAP}" " " BUILD_CFLAGS "${BUILD_CFLAGS}")
|
|
|
|
string(REPLACE "${PLATFORM_CFLAGS_FMACRO_PREFIX_MAP}" " " BUILD_CXXFLAGS "${BUILD_CXXFLAGS}")
|
2020-11-04 07:38:49 +00:00
|
|
|
endif()
|
|
|
|
|
2020-11-06 06:11:27 +00:00
|
|
|
# Use `configure_file` instead of definitions since properly
|
|
|
|
# escaping the multiple command line arguments which themselves
|
|
|
|
# contain strings and spaces becomes overly error-prone & complicated.
|
|
|
|
configure_file(
|
|
|
|
"${CMAKE_SOURCE_DIR}/build_files/cmake/buildinfo_static.h.in"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/buildinfo_static.h"
|
|
|
|
ESCAPE_QUOTES
|
|
|
|
@ONLY
|
2010-09-07 01:13:10 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2020-11-06 06:11:27 +00:00
|
|
|
unset(BUILD_PLATFORM)
|
|
|
|
unset(BUILD_TYPE)
|
|
|
|
unset(BUILD_CFLAGS)
|
|
|
|
unset(BUILD_CXXFLAGS)
|
|
|
|
unset(BUILD_LINKFLAGS)
|
|
|
|
unset(BUILD_SYSTEM)
|
|
|
|
|
2011-02-24 17:57:35 +00:00
|
|
|
# --------------------------------------------------------------------------
|
|
|
|
# write header for values that change each build
|
|
|
|
# note, generaed file is in build dir's source/creator
|
|
|
|
# except when used as an include path.
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2020-11-06 06:11:27 +00:00
|
|
|
add_definitions(-DWITH_BUILDINFO_HEADER)
|
|
|
|
|
2011-02-24 17:57:35 +00:00
|
|
|
# include the output directory, where the buildinfo.h file is generated
|
2015-07-18 23:53:38 +00:00
|
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
2019-04-17 04:17:24 +00:00
|
|
|
|
|
|
|
|
2016-06-29 22:49:50 +00:00
|
|
|
# XXX, ${buildinfo_h_fake} is used here,
|
2015-07-20 13:17:06 +00:00
|
|
|
# because we rely on that file being detected as missing
|
|
|
|
# every build so that the real header "buildinfo.h" is updated.
|
|
|
|
#
|
|
|
|
# Keep this until we find a better way to resolve!
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2016-06-29 22:49:50 +00:00
|
|
|
set(buildinfo_h_real "${CMAKE_CURRENT_BINARY_DIR}/buildinfo.h")
|
|
|
|
set(buildinfo_h_fake "${CMAKE_CURRENT_BINARY_DIR}/buildinfo.h_fake")
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2016-06-29 22:49:50 +00:00
|
|
|
if(EXISTS ${buildinfo_h_fake})
|
|
|
|
message(FATAL_ERROR "File \"${buildinfo_h_fake}\" found, this should never be created, remove!")
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2020-08-27 14:10:37 +00:00
|
|
|
# From the cmake documentation "If the output of the custom command is not actually created as a
|
|
|
|
# file on disk it should be marked with the SYMBOLIC source file property."
|
|
|
|
#
|
|
|
|
# Not doing this leads to build warnings for the not generated file on windows when using msbuild
|
|
|
|
SET_SOURCE_FILES_PROPERTIES(${buildinfo_h_fake} PROPERTIES SYMBOLIC TRUE)
|
|
|
|
|
2011-02-24 17:57:35 +00:00
|
|
|
# a custom target that is always built
|
|
|
|
add_custom_target(buildinfo ALL
|
2016-06-29 22:49:50 +00:00
|
|
|
DEPENDS ${buildinfo_h_fake})
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2015-07-18 23:53:38 +00:00
|
|
|
# creates buildinfo.h using cmake script
|
2016-06-29 22:49:50 +00:00
|
|
|
add_custom_command(
|
|
|
|
OUTPUT
|
|
|
|
${buildinfo_h_fake} # ensure we always run
|
|
|
|
${buildinfo_h_real}
|
2011-02-24 17:57:35 +00:00
|
|
|
COMMAND ${CMAKE_COMMAND}
|
|
|
|
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
2016-05-10 16:43:58 +00:00
|
|
|
# overrides only used when non-empty strings
|
|
|
|
-DBUILD_DATE=${BUILDINFO_OVERRIDE_DATE}
|
|
|
|
-DBUILD_TIME=${BUILDINFO_OVERRIDE_TIME}
|
2011-02-24 17:57:35 +00:00
|
|
|
-P ${CMAKE_SOURCE_DIR}/build_files/cmake/buildinfo.cmake)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-02-24 17:57:35 +00:00
|
|
|
# buildinfo.h is a generated file
|
2016-06-29 22:49:50 +00:00
|
|
|
set_source_files_properties(
|
|
|
|
${buildinfo_h_real}
|
2011-02-24 17:57:35 +00:00
|
|
|
PROPERTIES GENERATED TRUE
|
|
|
|
HEADER_FILE_ONLY TRUE)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2016-06-29 22:49:50 +00:00
|
|
|
unset(buildinfo_h_real)
|
|
|
|
unset(buildinfo_h_fake)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-02-25 02:27:54 +00:00
|
|
|
# add deps below, after adding blender
|
2011-02-24 17:57:35 +00:00
|
|
|
# -------------- done with header values.
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2010-11-29 04:35:56 +00:00
|
|
|
list(APPEND SRC
|
|
|
|
buildinfo.c
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-06-18 12:49:17 +00:00
|
|
|
# make an object library so can load with it in tests
|
2014-06-19 15:49:09 +00:00
|
|
|
add_library(buildinfoobj OBJECT buildinfo.c)
|
2014-06-26 18:09:45 +00:00
|
|
|
add_dependencies(buildinfoobj buildinfo)
|
2009-09-24 15:36:00 +00:00
|
|
|
endif()
|
|
|
|
|
2016-07-14 09:11:33 +00:00
|
|
|
add_cc_flags_custom_test(blender)
|
|
|
|
|
2010-12-16 12:48:30 +00:00
|
|
|
# message(STATUS "Configuring blender")
|
2011-02-20 23:39:29 +00:00
|
|
|
if(WITH_PYTHON_MODULE)
|
|
|
|
add_definitions(-DWITH_PYTHON_MODULE)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-02-20 23:39:29 +00:00
|
|
|
# creates ./bin/bpy.so which can be imported as a python module.
|
2012-01-11 00:09:46 +00:00
|
|
|
#
|
|
|
|
# note that 'SHARED' works on Linux and Windows,
|
|
|
|
# but not OSX which _must_ be 'MODULE'
|
|
|
|
add_library(blender MODULE ${SRC})
|
2011-02-20 23:39:29 +00:00
|
|
|
set_target_properties(
|
|
|
|
blender
|
|
|
|
PROPERTIES
|
2011-05-30 10:51:37 +00:00
|
|
|
PREFIX ""
|
|
|
|
OUTPUT_NAME bpy
|
|
|
|
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin # only needed on windows
|
2011-02-20 23:39:29 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2012-01-16 14:13:41 +00:00
|
|
|
if(APPLE)
|
2020-09-15 14:00:15 +00:00
|
|
|
set_target_properties(blender PROPERTIES MACOSX_BUNDLE TRUE)
|
2012-01-16 14:13:41 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-27 23:11:22 +00:00
|
|
|
if(WIN32)
|
|
|
|
# python modules use this
|
|
|
|
set_target_properties(
|
|
|
|
blender
|
|
|
|
PROPERTIES
|
2011-05-09 14:41:44 +00:00
|
|
|
SUFFIX ".pyd"
|
2011-09-30 15:51:58 +00:00
|
|
|
)
|
2011-03-27 23:11:22 +00:00
|
|
|
endif()
|
2011-09-30 15:51:58 +00:00
|
|
|
|
2011-02-20 23:39:29 +00:00
|
|
|
else()
|
|
|
|
add_executable(blender ${EXETYPE} ${SRC})
|
|
|
|
endif()
|
2009-09-24 15:36:00 +00:00
|
|
|
|
2011-02-24 17:57:35 +00:00
|
|
|
if(WITH_BUILDINFO)
|
|
|
|
# explicitly say that the executable depends on the buildinfo
|
|
|
|
add_dependencies(blender buildinfo)
|
|
|
|
endif()
|
2006-12-10 14:49:28 +00:00
|
|
|
|
2015-03-12 11:14:48 +00:00
|
|
|
|
2011-07-01 13:10:49 +00:00
|
|
|
set(BLENDER_TEXT_FILES
|
|
|
|
${CMAKE_SOURCE_DIR}/release/text/copyright.txt
|
2015-03-23 20:47:01 +00:00
|
|
|
# generate this file
|
|
|
|
# ${CMAKE_SOURCE_DIR}/release/text/readme.html
|
2020-03-25 17:43:39 +00:00
|
|
|
)
|
2013-09-25 08:35:43 +00:00
|
|
|
|
2006-12-10 17:09:48 +00:00
|
|
|
|
2011-11-17 18:23:34 +00:00
|
|
|
# -----------------------------------------------------------------------------
|
2012-03-21 05:33:37 +00:00
|
|
|
# Platform Specific Var: TARGETDIR_VER
|
2011-11-17 18:23:34 +00:00
|
|
|
|
|
|
|
if(UNIX AND NOT APPLE)
|
2015-03-24 06:02:34 +00:00
|
|
|
if(WITH_PYTHON_MODULE)
|
2015-03-24 08:09:51 +00:00
|
|
|
if(WITH_INSTALL_PORTABLE)
|
|
|
|
set(TARGETDIR_VER ${BLENDER_VERSION})
|
|
|
|
else()
|
|
|
|
set(TARGETDIR_VER ${PYTHON_SITE_PACKAGES}/${BLENDER_VERSION})
|
|
|
|
endif()
|
2011-03-17 09:09:48 +00:00
|
|
|
else()
|
2015-03-24 06:02:34 +00:00
|
|
|
if(WITH_INSTALL_PORTABLE)
|
|
|
|
set(TARGETDIR_VER ${BLENDER_VERSION})
|
2011-05-24 18:34:07 +00:00
|
|
|
else()
|
2014-11-11 20:44:26 +00:00
|
|
|
set(TARGETDIR_VER share/blender/${BLENDER_VERSION})
|
2011-05-24 18:34:07 +00:00
|
|
|
endif()
|
2011-03-17 09:09:48 +00:00
|
|
|
endif()
|
2011-03-06 11:41:30 +00:00
|
|
|
|
2011-11-17 18:23:34 +00:00
|
|
|
elseif(WIN32)
|
2014-11-11 14:47:22 +00:00
|
|
|
set(TARGETDIR_VER ${BLENDER_VERSION})
|
2011-11-17 18:23:34 +00:00
|
|
|
|
|
|
|
elseif(APPLE)
|
2012-01-16 14:13:41 +00:00
|
|
|
if(WITH_PYTHON_MODULE)
|
2014-11-12 19:54:48 +00:00
|
|
|
set(TARGETDIR_VER ${BLENDER_VERSION})
|
2012-01-16 14:13:41 +00:00
|
|
|
else()
|
2019-06-21 16:12:00 +00:00
|
|
|
set(TARGETDIR_VER Blender.app/Contents/Resources/${BLENDER_VERSION})
|
2012-01-16 14:13:41 +00:00
|
|
|
endif()
|
2015-11-07 21:42:21 +00:00
|
|
|
# Skip relinking on cpack / install
|
|
|
|
set_target_properties(blender PROPERTIES BUILD_WITH_INSTALL_RPATH true)
|
2011-11-17 18:23:34 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Install Targets (Generic, All Platforms)
|
|
|
|
|
|
|
|
|
|
|
|
# important to make a clean install each time, else old scripts get loaded.
|
|
|
|
install(
|
|
|
|
CODE
|
|
|
|
"file(REMOVE_RECURSE ${TARGETDIR_VER})"
|
|
|
|
)
|
|
|
|
|
|
|
|
if(WITH_PYTHON)
|
|
|
|
# install(CODE "message(\"copying blender scripts...\")")
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-11-17 19:43:59 +00:00
|
|
|
# exclude addons_contrib if release
|
2016-09-02 12:42:01 +00:00
|
|
|
if("${BLENDER_VERSION_CYCLE}" STREQUAL "release" OR
|
|
|
|
"${BLENDER_VERSION_CYCLE}" STREQUAL "rc")
|
2011-11-17 19:43:59 +00:00
|
|
|
set(ADDON_EXCLUDE_CONDITIONAL "addons_contrib/*")
|
|
|
|
else()
|
|
|
|
set(ADDON_EXCLUDE_CONDITIONAL "_addons_contrib/*") # dummy, wont do anything
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2012-12-20 07:57:26 +00:00
|
|
|
# do not install freestyle dir if disabled
|
|
|
|
if(NOT WITH_FREESTYLE)
|
|
|
|
set(FREESTYLE_EXCLUDE_CONDITIONAL "freestyle/*")
|
|
|
|
else()
|
|
|
|
set(FREESTYLE_EXCLUDE_CONDITIONAL "_freestyle/*") # dummy, wont do anything
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
install(
|
2011-11-17 18:23:34 +00:00
|
|
|
DIRECTORY ${CMAKE_SOURCE_DIR}/release/scripts
|
|
|
|
DESTINATION ${TARGETDIR_VER}
|
2013-11-16 18:18:21 +00:00
|
|
|
PATTERN ".git" EXCLUDE
|
2016-06-25 11:57:54 +00:00
|
|
|
PATTERN ".gitignore" EXCLUDE
|
|
|
|
PATTERN ".arcconfig" EXCLUDE
|
2011-11-17 18:23:34 +00:00
|
|
|
PATTERN "__pycache__" EXCLUDE
|
2011-11-17 19:43:59 +00:00
|
|
|
PATTERN "${ADDON_EXCLUDE_CONDITIONAL}" EXCLUDE
|
2012-12-20 07:57:26 +00:00
|
|
|
PATTERN "${FREESTYLE_EXCLUDE_CONDITIONAL}" EXCLUDE
|
2011-03-17 09:09:48 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-11-17 19:43:59 +00:00
|
|
|
unset(ADDON_EXCLUDE_CONDITIONAL)
|
2012-12-20 07:57:26 +00:00
|
|
|
unset(FREESTYLE_EXCLUDE_CONDITIONAL)
|
2011-11-17 18:23:34 +00:00
|
|
|
endif()
|
2011-03-06 11:41:30 +00:00
|
|
|
|
2020-03-25 17:43:39 +00:00
|
|
|
# fonts
|
|
|
|
install(
|
|
|
|
DIRECTORY
|
|
|
|
${CMAKE_SOURCE_DIR}/release/datafiles/fonts
|
|
|
|
DESTINATION ${TARGETDIR_VER}/datafiles
|
|
|
|
)
|
|
|
|
|
2011-11-17 18:23:34 +00:00
|
|
|
# localization
|
|
|
|
if(WITH_INTERNATIONAL)
|
2013-11-08 20:44:48 +00:00
|
|
|
set(_locale_dir "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
|
2013-11-16 18:09:03 +00:00
|
|
|
set(_locale_target_dir ${TARGETDIR_VER}/datafiles/locale)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2013-11-16 18:09:03 +00:00
|
|
|
file(GLOB _po_files "${_locale_dir}/po/*.po")
|
|
|
|
foreach(_po_file ${_po_files})
|
|
|
|
msgfmt_simple(${_po_file} _all_mo_files)
|
|
|
|
endforeach()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2013-11-16 18:09:03 +00:00
|
|
|
# Create a custom target which will compile all po to mo
|
|
|
|
add_custom_target(
|
|
|
|
locales
|
|
|
|
DEPENDS ${_all_mo_files})
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2013-11-16 18:09:03 +00:00
|
|
|
add_dependencies(blender locales)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2013-11-16 18:09:03 +00:00
|
|
|
# Generate INSTALL rules
|
|
|
|
install(
|
|
|
|
FILES ${_locale_dir}/languages
|
|
|
|
DESTINATION ${_locale_target_dir}
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2013-11-16 18:09:03 +00:00
|
|
|
foreach(_mo_file ${_all_mo_files})
|
|
|
|
get_filename_component(_locale_name ${_mo_file} NAME_WE)
|
2013-11-08 20:44:48 +00:00
|
|
|
install(
|
2013-11-16 18:09:03 +00:00
|
|
|
FILES ${_mo_file}
|
|
|
|
DESTINATION ${_locale_target_dir}/${_locale_name}/LC_MESSAGES
|
|
|
|
RENAME blender.mo
|
2013-11-08 20:44:48 +00:00
|
|
|
)
|
2013-11-16 18:09:03 +00:00
|
|
|
unset(_locale_name)
|
|
|
|
endforeach()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2013-11-16 18:09:03 +00:00
|
|
|
unset(_all_mo_files)
|
|
|
|
unset(_po_files)
|
|
|
|
unset(_po_file)
|
|
|
|
unset(_mo_file)
|
|
|
|
unset(_locale_target_dir)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2013-11-08 20:44:48 +00:00
|
|
|
unset(_locale_dir)
|
2011-11-17 18:23:34 +00:00
|
|
|
endif()
|
2011-03-06 11:41:30 +00:00
|
|
|
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
# color management
|
|
|
|
if(WITH_OPENCOLORIO)
|
|
|
|
install(
|
|
|
|
DIRECTORY ${CMAKE_SOURCE_DIR}/release/datafiles/colormanagement
|
|
|
|
DESTINATION ${TARGETDIR_VER}/datafiles
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2011-11-17 18:23:34 +00:00
|
|
|
# helpful tip when using make
|
|
|
|
if("${CMAKE_GENERATOR}" MATCHES ".*Makefiles.*")
|
2011-03-17 09:09:48 +00:00
|
|
|
# message after building.
|
|
|
|
add_custom_command(
|
|
|
|
TARGET blender POST_BUILD MAIN_DEPENDENCY blender
|
2016-05-18 01:58:08 +00:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E
|
|
|
|
echo 'now run: \"make install\" to copy runtime files and scripts to ${TARGETDIR_VER}'
|
2011-03-17 09:09:48 +00:00
|
|
|
)
|
2011-11-17 18:23:34 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Install Targets (Platform Specific)
|
|
|
|
|
|
|
|
if(UNIX AND NOT APPLE)
|
2011-03-06 11:41:30 +00:00
|
|
|
|
2014-09-08 01:22:40 +00:00
|
|
|
if(NOT WITH_PYTHON_MODULE)
|
2014-11-13 13:07:34 +00:00
|
|
|
if(WITH_DOC_MANPAGE)
|
|
|
|
add_custom_target(
|
|
|
|
blender_man_page ALL
|
|
|
|
COMMAND ${CMAKE_SOURCE_DIR}/doc/manpage/blender.1.py
|
|
|
|
${EXECUTABLE_OUTPUT_PATH}/blender
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/blender.1)
|
|
|
|
add_dependencies(blender_man_page blender)
|
|
|
|
endif()
|
2014-09-08 01:22:40 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
# there are a few differences between portable and system install
|
2015-03-24 06:02:34 +00:00
|
|
|
if(WITH_PYTHON_MODULE)
|
2015-03-24 08:09:51 +00:00
|
|
|
if(WITH_INSTALL_PORTABLE)
|
|
|
|
install(
|
|
|
|
TARGETS blender
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
|
|
|
else()
|
|
|
|
install(
|
|
|
|
TARGETS blender
|
|
|
|
LIBRARY DESTINATION ${PYTHON_SITE_PACKAGES}
|
|
|
|
)
|
|
|
|
endif()
|
2015-03-24 06:02:34 +00:00
|
|
|
# none of the other files are needed currently
|
|
|
|
elseif(WITH_INSTALL_PORTABLE)
|
2014-11-11 20:44:26 +00:00
|
|
|
install(
|
|
|
|
TARGETS blender
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2015-03-24 06:02:34 +00:00
|
|
|
if(WITH_DOC_MANPAGE)
|
|
|
|
install(
|
|
|
|
FILES ${CMAKE_CURRENT_BINARY_DIR}/blender.1
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
|
|
|
endif()
|
2009-09-21 03:16:26 +00:00
|
|
|
install(
|
2011-03-17 09:09:48 +00:00
|
|
|
FILES
|
2011-05-30 10:51:37 +00:00
|
|
|
${CMAKE_SOURCE_DIR}/release/freedesktop/blender.desktop
|
|
|
|
${CMAKE_SOURCE_DIR}/release/freedesktop/icons/scalable/apps/blender.svg
|
2019-03-01 13:42:12 +00:00
|
|
|
${CMAKE_SOURCE_DIR}/release/freedesktop/icons/symbolic/apps/blender-symbolic.svg
|
2014-11-11 20:44:26 +00:00
|
|
|
DESTINATION "."
|
2009-08-14 17:16:16 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
install(
|
|
|
|
PROGRAMS
|
|
|
|
${CMAKE_SOURCE_DIR}/release/bin/blender-thumbnailer.py
|
2014-11-11 20:44:26 +00:00
|
|
|
DESTINATION "."
|
2011-03-09 21:19:15 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-10-09 11:07:40 +00:00
|
|
|
if(EXISTS ${LIBDIR}/mesa)
|
|
|
|
install(DIRECTORY ${LIBDIR}/mesa/lib DESTINATION ".")
|
|
|
|
|
|
|
|
install(
|
|
|
|
PROGRAMS
|
|
|
|
${CMAKE_SOURCE_DIR}/release/bin/blender-softwaregl
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2015-03-12 11:14:48 +00:00
|
|
|
set(BLENDER_TEXT_FILES_DESTINATION ".")
|
2011-03-17 09:09:48 +00:00
|
|
|
else()
|
|
|
|
# main blender binary
|
2015-03-24 06:02:34 +00:00
|
|
|
install(
|
|
|
|
TARGETS blender
|
|
|
|
DESTINATION bin
|
|
|
|
)
|
|
|
|
if(WITH_DOC_MANPAGE)
|
|
|
|
# manpage only with 'blender' binary
|
2011-05-24 18:34:07 +00:00
|
|
|
install(
|
2015-03-24 06:02:34 +00:00
|
|
|
FILES ${CMAKE_CURRENT_BINARY_DIR}/blender.1
|
|
|
|
DESTINATION share/man/man1
|
2011-05-24 18:34:07 +00:00
|
|
|
)
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
# misc files
|
2009-09-21 03:16:26 +00:00
|
|
|
install(
|
2011-03-17 09:09:48 +00:00
|
|
|
FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/blender.desktop
|
2014-11-11 20:44:26 +00:00
|
|
|
DESTINATION share/applications
|
2010-07-26 19:59:33 +00:00
|
|
|
)
|
2011-04-21 06:37:54 +00:00
|
|
|
install(
|
|
|
|
FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/icons/scalable/apps/blender.svg
|
2014-11-11 20:44:26 +00:00
|
|
|
DESTINATION share/icons/hicolor/scalable/apps
|
2006-12-10 14:49:28 +00:00
|
|
|
)
|
2019-03-01 13:42:12 +00:00
|
|
|
install(
|
|
|
|
FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/icons/symbolic/apps/blender-symbolic.svg
|
|
|
|
DESTINATION share/icons/hicolor/symbolic/apps
|
|
|
|
)
|
2011-03-17 09:09:48 +00:00
|
|
|
install(
|
|
|
|
PROGRAMS ${CMAKE_SOURCE_DIR}/release/bin/blender-thumbnailer.py
|
2014-11-11 20:44:26 +00:00
|
|
|
DESTINATION bin
|
2011-03-17 09:09:48 +00:00
|
|
|
)
|
2015-03-12 11:14:48 +00:00
|
|
|
set(BLENDER_TEXT_FILES_DESTINATION share/doc/blender)
|
2011-03-17 09:09:48 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
if(WITH_PYTHON)
|
|
|
|
if(WITH_PYTHON_INSTALL)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2015-05-19 05:56:28 +00:00
|
|
|
install(
|
2016-02-15 07:45:32 +00:00
|
|
|
PROGRAMS ${PYTHON_EXECUTABLE}
|
2015-05-19 05:56:28 +00:00
|
|
|
DESTINATION ${TARGETDIR_VER}/python/bin
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2012-02-15 08:53:28 +00:00
|
|
|
# on some platforms (like openSUSE) Python is linked
|
|
|
|
# to be used from lib64 folder.
|
|
|
|
# determine this from Python's libraries path
|
2013-04-23 13:51:20 +00:00
|
|
|
#
|
|
|
|
# ugh, its possible 'lib64' is just a symlink to 'lib' which causes incorrect use of 'lib64'
|
|
|
|
get_filename_component(_pypath_real ${PYTHON_LIBPATH} REALPATH)
|
|
|
|
if(${_pypath_real} MATCHES "lib64$")
|
2012-02-15 08:53:28 +00:00
|
|
|
set(_target_LIB "lib64")
|
|
|
|
else()
|
|
|
|
set(_target_LIB "lib")
|
|
|
|
endif()
|
2013-04-23 13:51:20 +00:00
|
|
|
unset(_pypath_real)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
# Copy the systems python into the install directory
|
|
|
|
# install(CODE "message(\"copying a subset of the systems python...\")")
|
2011-03-06 11:41:30 +00:00
|
|
|
install(
|
2011-03-17 09:09:48 +00:00
|
|
|
DIRECTORY ${PYTHON_LIBPATH}/python${PYTHON_VERSION}
|
2012-02-15 08:53:28 +00:00
|
|
|
DESTINATION ${TARGETDIR_VER}/python/${_target_LIB}
|
2011-05-26 11:45:25 +00:00
|
|
|
PATTERN "__pycache__" EXCLUDE # * any cache *
|
2016-06-25 10:39:47 +00:00
|
|
|
PATTERN "config-${PYTHON_VERSION}m/*.a" EXCLUDE # static lib
|
2011-03-17 09:09:48 +00:00
|
|
|
PATTERN "lib2to3" EXCLUDE # ./lib2to3
|
|
|
|
PATTERN "site-packages/*" EXCLUDE # ./site-packages/*
|
|
|
|
PATTERN "tkinter" EXCLUDE # ./tkinter
|
|
|
|
PATTERN "lib-dynload/_tkinter.*" EXCLUDE # ./lib-dynload/_tkinter.co
|
2011-05-26 11:45:25 +00:00
|
|
|
PATTERN "idlelib" EXCLUDE # ./idlelib
|
2011-03-17 09:09:48 +00:00
|
|
|
PATTERN "test" EXCLUDE # ./test
|
|
|
|
PATTERN "turtledemo" EXCLUDE # ./turtledemo
|
2014-07-28 17:16:39 +00:00
|
|
|
PATTERN "turtle.py" EXCLUDE # ./turtle.py
|
2019-09-10 10:38:11 +00:00
|
|
|
PATTERN "wininst*.exe" EXCLUDE # from distutils, avoid malware false positive
|
2009-08-14 17:16:16 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2016-02-29 20:34:18 +00:00
|
|
|
# Needed for distutils/pip
|
|
|
|
# get the last part of the include dir, will be 'python{version}{abiflag}',
|
|
|
|
get_filename_component(_py_inc_suffix ${PYTHON_INCLUDE_DIR} NAME)
|
|
|
|
install(
|
|
|
|
FILES ${PYTHON_INCLUDE_DIR}/pyconfig.h
|
|
|
|
DESTINATION ${TARGETDIR_VER}/python/include/${_py_inc_suffix}
|
|
|
|
)
|
|
|
|
unset(_py_inc_suffix)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2012-04-30 09:38:32 +00:00
|
|
|
if(WITH_PYTHON_INSTALL_NUMPY)
|
2014-07-28 17:16:39 +00:00
|
|
|
# Install to the same directory as the source, so debian-like
|
|
|
|
# distros are happy with their policy.
|
|
|
|
set(_suffix "site-packages")
|
|
|
|
if(${PYTHON_NUMPY_PATH} MATCHES "dist-packages")
|
|
|
|
set(_suffix "dist-packages")
|
|
|
|
endif()
|
2012-04-30 09:38:32 +00:00
|
|
|
install(
|
2012-05-02 14:16:35 +00:00
|
|
|
DIRECTORY ${PYTHON_NUMPY_PATH}/numpy
|
2014-07-28 17:16:39 +00:00
|
|
|
DESTINATION ${TARGETDIR_VER}/python/${_target_LIB}/python${PYTHON_VERSION}/${_suffix}
|
2016-02-11 08:09:12 +00:00
|
|
|
PATTERN ".svn" EXCLUDE
|
2012-04-30 09:38:32 +00:00
|
|
|
PATTERN "__pycache__" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyc" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyo" EXCLUDE # * any cache *
|
|
|
|
PATTERN "oldnumeric" EXCLUDE # ./oldnumeric
|
|
|
|
PATTERN "doc" EXCLUDE # ./doc
|
|
|
|
PATTERN "tests" EXCLUDE # ./tests
|
2016-05-18 01:58:08 +00:00
|
|
|
PATTERN "f2py" EXCLUDE # ./f2py - fortran/python interface code, not for blender.
|
2012-04-30 09:38:32 +00:00
|
|
|
PATTERN "include" EXCLUDE # include dirs all over, we wont use NumPy/CAPI
|
|
|
|
PATTERN "*.h" EXCLUDE # some includes are not in include dirs
|
|
|
|
PATTERN "*.a" EXCLUDE # ./core/lib/libnpymath.a - for linking, we dont need.
|
|
|
|
)
|
2014-07-28 17:16:39 +00:00
|
|
|
unset(_suffix)
|
2012-04-30 09:38:32 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-03-04 18:39:53 +00:00
|
|
|
# Copy requests, we need to generalize site-packages
|
|
|
|
if(WITH_PYTHON_INSTALL_REQUESTS)
|
2014-07-28 17:16:39 +00:00
|
|
|
set(_suffix "site-packages")
|
|
|
|
if(${PYTHON_REQUESTS_PATH} MATCHES "dist-packages")
|
|
|
|
set(_suffix "dist-packages")
|
|
|
|
endif()
|
2014-03-04 18:39:53 +00:00
|
|
|
install(
|
2014-07-28 14:42:30 +00:00
|
|
|
DIRECTORY ${PYTHON_REQUESTS_PATH}/requests
|
2014-07-28 17:16:39 +00:00
|
|
|
DESTINATION ${TARGETDIR_VER}/python/${_target_LIB}/python${PYTHON_VERSION}/${_suffix}
|
2016-02-11 08:09:12 +00:00
|
|
|
PATTERN ".svn" EXCLUDE
|
2014-03-04 18:39:53 +00:00
|
|
|
PATTERN "__pycache__" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyc" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyo" EXCLUDE # * any cache *
|
|
|
|
)
|
2014-07-28 17:16:39 +00:00
|
|
|
# On some platforms requests does have extra dependencies.
|
2017-09-21 13:50:19 +00:00
|
|
|
set(_requests_deps "certifi" "chardet" "idna" "urllib3")
|
2014-07-28 17:16:39 +00:00
|
|
|
foreach(_requests_dep ${_requests_deps})
|
|
|
|
if(EXISTS ${PYTHON_REQUESTS_PATH}/${_requests_dep})
|
|
|
|
install(
|
|
|
|
DIRECTORY ${PYTHON_REQUESTS_PATH}/${_requests_dep}
|
|
|
|
DESTINATION ${TARGETDIR_VER}/python/${_target_LIB}/python${PYTHON_VERSION}/${_suffix}
|
2016-02-11 08:09:12 +00:00
|
|
|
PATTERN ".svn" EXCLUDE
|
2014-07-28 17:16:39 +00:00
|
|
|
PATTERN "__pycache__" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyc" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyo" EXCLUDE # * any cache *
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
endforeach()
|
|
|
|
if(EXISTS ${PYTHON_REQUESTS_PATH}/six.py)
|
|
|
|
install(
|
|
|
|
FILES ${PYTHON_REQUESTS_PATH}/six.py
|
|
|
|
DESTINATION ${TARGETDIR_VER}/python/${_target_LIB}/python${PYTHON_VERSION}/${_suffix}
|
|
|
|
)
|
2016-05-18 01:58:08 +00:00
|
|
|
endif()
|
2014-07-28 17:16:39 +00:00
|
|
|
unset(_requests_dep)
|
|
|
|
unset(_requests_deps)
|
|
|
|
unset(_suffix)
|
2014-03-04 18:39:53 +00:00
|
|
|
endif()
|
2012-02-15 08:53:28 +00:00
|
|
|
unset(_target_LIB)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2009-08-14 17:16:16 +00:00
|
|
|
endif()
|
2011-03-17 09:09:48 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-04-11 09:26:23 +00:00
|
|
|
if(WITH_DRACO)
|
|
|
|
install(
|
2019-04-11 13:20:14 +00:00
|
|
|
PROGRAMS $<TARGET_FILE:extern_draco>
|
2019-04-11 09:26:23 +00:00
|
|
|
DESTINATION ${TARGETDIR_VER}/python/lib/python${PYTHON_VERSION}/site-packages
|
|
|
|
)
|
|
|
|
endif()
|
2011-03-17 09:09:48 +00:00
|
|
|
elseif(WIN32)
|
2009-09-21 03:16:26 +00:00
|
|
|
|
2015-03-12 11:14:48 +00:00
|
|
|
set(BLENDER_TEXT_FILES_DESTINATION ".")
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-10-07 16:24:13 +00:00
|
|
|
if(WITH_OPENMP AND MSVC_CLANG)
|
|
|
|
install(
|
|
|
|
FILES ${CLANG_OPENMP_DLL}
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2020-05-19 18:28:19 +00:00
|
|
|
if(WITH_FFTW3)
|
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/fftw3/lib/libfftw3-3.dll
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2020-07-31 15:34:26 +00:00
|
|
|
if(WITH_GMP)
|
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/gmp/lib/libgmp-10.dll
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/gmp/lib/libgmpxx.dll
|
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
)
|
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/gmp/lib/libgmpxx_d.dll
|
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Debug
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2020-05-01 13:37:48 +00:00
|
|
|
if(WITH_WINDOWS_PDB)
|
|
|
|
if(WITH_WINDOWS_STRIPPED_PDB)
|
|
|
|
# Icky hack for older cmake from https://stackoverflow.com/a/21198501
|
|
|
|
# $<CONFIG> will work in newer cmake but the version currently (3.12)
|
|
|
|
# on the buildbot does not support this endavour.
|
|
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/blender_public.pdb DESTINATION . RENAME blender.pdb)
|
|
|
|
else()
|
|
|
|
install(FILES $<TARGET_PDB_FILE:blender> DESTINATION . RENAME blender.pdb)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2020-08-13 17:42:05 +00:00
|
|
|
if(WITH_OPENVDB)
|
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/openvdb/bin/openvdb.dll
|
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
)
|
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/openvdb/bin/openvdb_d.dll
|
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Debug
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
if(WITH_PYTHON)
|
2013-03-24 12:13:13 +00:00
|
|
|
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2016-02-18 09:52:36 +00:00
|
|
|
if(NOT CMAKE_COMPILER_IS_GNUCC)
|
|
|
|
install(
|
2019-08-13 23:02:19 +00:00
|
|
|
FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}.dll
|
2020-01-18 18:58:38 +00:00
|
|
|
${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python3.dll
|
2016-02-18 09:52:36 +00:00
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2016-02-18 09:52:36 +00:00
|
|
|
install(
|
2019-08-13 23:02:19 +00:00
|
|
|
FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}_d.dll
|
2020-01-18 18:58:38 +00:00
|
|
|
${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python3_d.dll
|
2016-02-18 09:52:36 +00:00
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Debug
|
|
|
|
)
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
if(WITH_PYTHON_INSTALL)
|
2011-05-24 05:21:51 +00:00
|
|
|
# note, as far as python is concerned 'RelWithDebInfo' is not debug since its without debug flags.
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-11-11 14:47:22 +00:00
|
|
|
install(DIRECTORY DESTINATION ${TARGETDIR_VER}/python)
|
|
|
|
install(DIRECTORY DESTINATION ${TARGETDIR_VER}/python/lib)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-12-01 13:53:12 +00:00
|
|
|
install(
|
2019-08-13 23:02:19 +00:00
|
|
|
DIRECTORY ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/lib
|
|
|
|
DESTINATION ${BLENDER_VERSION}/python/
|
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
PATTERN ".svn" EXCLUDE
|
|
|
|
PATTERN "*_d.*" EXCLUDE # * debug libraries *
|
|
|
|
PATTERN "__pycache__" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyc" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyo" EXCLUDE # * any cache *
|
2014-12-01 13:53:12 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-08-13 23:02:19 +00:00
|
|
|
install(
|
|
|
|
DIRECTORY ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/lib
|
|
|
|
DESTINATION ${BLENDER_VERSION}/python/
|
|
|
|
CONFIGURATIONS Debug
|
2016-02-11 08:09:12 +00:00
|
|
|
PATTERN ".svn" EXCLUDE
|
2014-12-01 13:53:12 +00:00
|
|
|
PATTERN "__pycache__" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyc" EXCLUDE # * any cache *
|
|
|
|
PATTERN "*.pyo" EXCLUDE # * any cache *)
|
2019-08-13 23:02:19 +00:00
|
|
|
|
2014-12-01 13:53:12 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-08-13 23:02:19 +00:00
|
|
|
install(
|
|
|
|
DIRECTORY ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/DLLs
|
|
|
|
DESTINATION ${BLENDER_VERSION}/python
|
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
PATTERN "*.pdb" EXCLUDE
|
|
|
|
PATTERN "*_d.*" EXCLUDE
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-08-13 23:02:19 +00:00
|
|
|
install(
|
|
|
|
DIRECTORY ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/DLLs
|
|
|
|
DESTINATION ${BLENDER_VERSION}/python
|
|
|
|
CONFIGURATIONS Debug
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2015-06-10 08:39:57 +00:00
|
|
|
install(
|
2019-08-13 23:02:19 +00:00
|
|
|
FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}.dll
|
2019-08-14 01:55:33 +00:00
|
|
|
${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python.exe
|
2015-06-10 08:39:57 +00:00
|
|
|
DESTINATION ${BLENDER_VERSION}/python/bin
|
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
)
|
|
|
|
install(
|
2019-08-13 23:02:19 +00:00
|
|
|
FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}_d.dll
|
2019-08-14 01:55:33 +00:00
|
|
|
${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python_d.exe
|
2015-06-10 08:39:57 +00:00
|
|
|
DESTINATION ${BLENDER_VERSION}/python/bin
|
|
|
|
CONFIGURATIONS Debug
|
|
|
|
)
|
2019-08-13 23:02:19 +00:00
|
|
|
|
2018-10-22 16:17:08 +00:00
|
|
|
if(WINDOWS_PYTHON_DEBUG)
|
|
|
|
install(
|
2019-09-27 20:59:08 +00:00
|
|
|
FILES ${LIBDIR}/python/37/libs/python${_PYTHON_VERSION_NO_DOTS}.pdb
|
2018-10-22 16:17:08 +00:00
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2018-10-22 16:17:08 +00:00
|
|
|
install(
|
2019-09-27 20:59:08 +00:00
|
|
|
FILES ${LIBDIR}/python/37/libs/python${_PYTHON_VERSION_NO_DOTS}_d.pdb
|
2018-10-22 16:17:08 +00:00
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Debug
|
|
|
|
)
|
|
|
|
endif()
|
2010-09-15 14:36:32 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2012-11-26 12:38:40 +00:00
|
|
|
unset(_PYTHON_VERSION_NO_DOTS)
|
2011-03-17 09:09:48 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-10-07 20:46:19 +00:00
|
|
|
# EGL Runtime Components
|
|
|
|
if(WITH_GL_EGL)
|
|
|
|
if(WIN32)
|
2014-11-08 10:32:32 +00:00
|
|
|
install(FILES "${OPENGLES_DLL}" DESTINATION ".")
|
|
|
|
install(FILES "${OPENGLES_EGL_DLL}" DESTINATION ".")
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-10-07 20:46:19 +00:00
|
|
|
if(WITH_GL_ANGLE)
|
2014-11-08 10:32:32 +00:00
|
|
|
install(FILES "${D3DCOMPILER_DLL}" DESTINATION ".")
|
2014-10-07 20:46:19 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
if(WITH_CODEC_FFMPEG)
|
2017-05-27 19:34:55 +00:00
|
|
|
install(
|
|
|
|
FILES
|
2018-08-28 01:37:55 +00:00
|
|
|
${LIBDIR}/ffmpeg/lib/avcodec-58.dll
|
|
|
|
${LIBDIR}/ffmpeg/lib/avformat-58.dll
|
|
|
|
${LIBDIR}/ffmpeg/lib/avdevice-58.dll
|
|
|
|
${LIBDIR}/ffmpeg/lib/avutil-56.dll
|
|
|
|
${LIBDIR}/ffmpeg/lib/swscale-5.dll
|
|
|
|
${LIBDIR}/ffmpeg/lib/swresample-3.dll
|
2017-05-27 19:34:55 +00:00
|
|
|
DESTINATION "."
|
|
|
|
)
|
2011-03-17 09:09:48 +00:00
|
|
|
endif()
|
2020-05-03 22:25:56 +00:00
|
|
|
if(WITH_TBB)
|
|
|
|
install(
|
|
|
|
FILES
|
|
|
|
${LIBDIR}/tbb/lib/tbb.dll
|
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
)
|
|
|
|
install(
|
|
|
|
FILES
|
|
|
|
${LIBDIR}/tbb/lib/debug/tbb_debug.dll
|
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Debug
|
|
|
|
)
|
|
|
|
endif()
|
2019-11-13 03:55:39 +00:00
|
|
|
if(WITH_TBB_MALLOC_PROXY)
|
|
|
|
install(
|
|
|
|
FILES
|
|
|
|
${LIBDIR}/tbb/lib/tbbmalloc.dll
|
|
|
|
${LIBDIR}/tbb/lib/tbbmalloc_proxy.dll
|
|
|
|
DESTINATION "."
|
2019-11-17 21:26:29 +00:00
|
|
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
|
|
|
)
|
|
|
|
install(
|
|
|
|
FILES
|
|
|
|
${LIBDIR}/tbb/lib/debug/tbbmalloc.dll
|
|
|
|
${LIBDIR}/tbb/lib/debug/tbbmalloc_proxy.dll
|
|
|
|
DESTINATION "."
|
|
|
|
CONFIGURATIONS Debug
|
2019-11-13 03:55:39 +00:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
if(WITH_CODEC_SNDFILE)
|
2011-03-16 15:44:17 +00:00
|
|
|
install(
|
2011-05-30 10:51:37 +00:00
|
|
|
FILES ${LIBDIR}/sndfile/lib/libsndfile-1.dll
|
2014-11-08 10:32:32 +00:00
|
|
|
DESTINATION "."
|
2011-03-09 00:23:26 +00:00
|
|
|
)
|
2011-03-17 09:09:48 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
if(WITH_OPENAL)
|
2014-05-15 06:12:15 +00:00
|
|
|
install(
|
|
|
|
FILES
|
|
|
|
${LIBDIR}/openal/lib/OpenAL32.dll
|
2014-11-08 10:32:32 +00:00
|
|
|
DESTINATION "."
|
2014-05-15 06:12:15 +00:00
|
|
|
)
|
2011-03-17 09:09:48 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
if(WITH_SDL)
|
2017-05-27 19:34:55 +00:00
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/sdl/lib/SDL2.dll
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
2011-03-17 09:09:48 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2015-06-16 08:03:35 +00:00
|
|
|
if(WITH_SYSTEM_AUDASPACE)
|
|
|
|
install(
|
|
|
|
FILES
|
|
|
|
${LIBDIR}/audaspace/lib/audaspace.dll
|
|
|
|
${LIBDIR}/audaspace/lib/audaspace-c.dll
|
|
|
|
${LIBDIR}/audaspace/lib/audaspace-py.dll
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-03-12 17:36:44 +00:00
|
|
|
install(
|
|
|
|
FILES
|
|
|
|
${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_gpu.cmd
|
|
|
|
${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_gpu_glitchworkaround.cmd
|
|
|
|
${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_log.cmd
|
|
|
|
${CMAKE_SOURCE_DIR}/release/windows/batch/blender_factory_startup.cmd
|
VR: Initial Virtual Reality support - Milestone 1, Scene Inspection
NOTE: While most of the milestone 1 goals are there, a few smaller features and
improvements are still to be done.
Big picture of this milestone: Initial, OpenXR-based virtual reality support
for users and foundation for advanced use cases.
Maniphest Task: https://developer.blender.org/T71347
The tasks contains more information about this milestone.
To be clear: This is not a feature rich VR implementation, it's focused on the
initial scene inspection use case. We intentionally focused on that, further
features like controller support are part of the next milestone.
- How to use?
Instructions on how to use this are here:
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/How_to_Test
These will be updated and moved to a more official place (likely the manual) soon.
Currently Windows Mixed Reality and Oculus devices are usable. Valve/HTC
headsets don't support the OpenXR standard yet and hence, do not work with this
implementation.
---------------
This is the C-side implementation of the features added for initial VR
support as per milestone 1. A "VR Scene Inspection" Add-on will be
committed separately, to expose the VR functionality in the UI. It also
adds some further features for milestone 1, namely a landmarking system
(stored view locations in the VR space)
Main additions/features:
* Support for rendering viewports to an HMD, with good performance.
* Option to sync the VR view perspective with a fully interactive,
regular 3D View (VR-Mirror).
* Option to disable positional tracking. Keeps the current position (calculated
based on the VR eye center pose) when enabled while a VR session is running.
* Some regular viewport settings for the VR view
* RNA/Python-API to query and set VR session state information.
* WM-XR: Layer tying Ghost-XR to the Blender specific APIs/data
* wmSurface API: drawable, non-window container (manages Ghost-OpenGL and GPU
context)
* DNA/RNA for management of VR session settings
* `--debug-xr` and `--debug-xr-time` commandline options
* Utility batch & config file for using the Oculus runtime on Windows.
* Most VR data is runtime only. The exception is user settings which are saved
to files (`XrSessionSettings`).
* VR support can be disabled through the `WITH_XR_OPENXR` compiler flag.
For architecture and code documentation, see
https://wiki.blender.org/wiki/Source/Interface/XR.
---------------
A few thank you's:
* A huge shoutout to Ray Molenkamp for his help during the project - it would
have not been that successful without him!
* Sebastian Koenig and Simeon Conzendorf for testing and feedback!
* The reviewers, especially Brecht Van Lommel!
* Dalai Felinto for pushing and managing me to get this done ;)
* The OpenXR working group for providing an open standard. I think we're the
first bigger application to adopt OpenXR. Congratulations to them and
ourselves :)
This project started as a Google Summer of Code 2019 project - "Core Support of
Virtual Reality Headsets through OpenXR" (see
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/).
Some further information, including ideas for further improvements can be found
in the final GSoC report:
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/Final_Report
Differential Revisions: D6193, D7098
Reviewed by: Brecht Van Lommel, Jeroen Bakker
2020-03-17 19:20:55 +00:00
|
|
|
${CMAKE_SOURCE_DIR}/release/windows/batch/blender_oculus.cmd
|
|
|
|
${CMAKE_SOURCE_DIR}/release/windows/batch/oculus.json
|
2019-03-12 17:36:44 +00:00
|
|
|
DESTINATION "."
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-04-11 09:26:23 +00:00
|
|
|
if(WITH_DRACO)
|
|
|
|
install(
|
2019-04-11 13:20:14 +00:00
|
|
|
PROGRAMS $<TARGET_FILE:extern_draco>
|
2019-04-11 09:26:23 +00:00
|
|
|
DESTINATION ${TARGETDIR_VER}/python/lib/site-packages
|
|
|
|
)
|
|
|
|
endif()
|
2011-03-17 09:09:48 +00:00
|
|
|
elseif(APPLE)
|
2019-10-21 04:05:56 +00:00
|
|
|
if(NOT WITH_PYTHON_MODULE)
|
2019-10-21 03:48:17 +00:00
|
|
|
# Uppercase name for app bundle
|
|
|
|
set_target_properties(blender PROPERTIES OUTPUT_NAME Blender)
|
|
|
|
endif()
|
2010-11-21 13:41:43 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
# handy install macro to exclude files, we use \$ escape for the "to"
|
|
|
|
# argument when calling so ${BUILD_TYPE} does not get expanded
|
|
|
|
macro(install_dir from to)
|
2011-03-16 15:44:17 +00:00
|
|
|
install(
|
2011-03-17 09:09:48 +00:00
|
|
|
DIRECTORY ${from}
|
|
|
|
DESTINATION ${to}
|
2013-11-16 18:18:21 +00:00
|
|
|
PATTERN ".git" EXCLUDE
|
2016-02-11 08:09:12 +00:00
|
|
|
PATTERN ".svn" EXCLUDE
|
2011-03-17 09:09:48 +00:00
|
|
|
PATTERN "*.pyc" EXCLUDE
|
|
|
|
PATTERN "*.pyo" EXCLUDE
|
|
|
|
PATTERN "*.orig" EXCLUDE
|
|
|
|
PATTERN "*.rej" EXCLUDE
|
|
|
|
PATTERN "__pycache__" EXCLUDE
|
|
|
|
PATTERN "__MACOSX" EXCLUDE
|
|
|
|
PATTERN ".DS_Store" EXCLUDE
|
2016-06-25 10:39:47 +00:00
|
|
|
PATTERN "config-${PYTHON_VERSION}m/*.a" EXCLUDE # static lib
|
2017-08-15 13:47:48 +00:00
|
|
|
PATTERN "lib2to3" EXCLUDE # ./lib2to3
|
|
|
|
PATTERN "tkinter" EXCLUDE # ./tkinter
|
|
|
|
PATTERN "lib-dynload/_tkinter.*" EXCLUDE # ./lib-dynload/_tkinter.co
|
|
|
|
PATTERN "idlelib" EXCLUDE # ./idlelib
|
|
|
|
PATTERN "test" EXCLUDE # ./test
|
|
|
|
PATTERN "turtledemo" EXCLUDE # ./turtledemo
|
|
|
|
PATTERN "turtle.py" EXCLUDE # ./turtle.py
|
2019-09-10 10:38:11 +00:00
|
|
|
PATTERN "wininst*.exe" EXCLUDE # from distutils, avoid malware false positive
|
2011-03-09 00:23:26 +00:00
|
|
|
)
|
2011-03-17 09:09:48 +00:00
|
|
|
endmacro()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-06-21 16:12:00 +00:00
|
|
|
set(OSX_APP_SOURCEDIR ${CMAKE_SOURCE_DIR}/release/darwin/Blender.app)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-11-17 18:23:34 +00:00
|
|
|
# setup Info.plist
|
2014-11-11 20:44:26 +00:00
|
|
|
execute_process(COMMAND date "+%Y-%m-%d"
|
|
|
|
OUTPUT_VARIABLE BLENDER_DATE
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-11-17 18:23:34 +00:00
|
|
|
set_target_properties(blender PROPERTIES
|
|
|
|
MACOSX_BUNDLE_INFO_PLIST ${OSX_APP_SOURCEDIR}/Contents/Info.plist
|
Blender: change bugfix release versioning from a/b/c to .1/.2/.3
The file subversion is no longer used in the Python API or user interface,
and is now internal to Blender.
User interface, Python API and file I/O metadata now use more consistent
formatting for version numbers. Official releases use "2.83.0", "2.83.1",
and releases under development use "2.90.0 Alpha", "2.90.0 Beta".
Some Python add-ons may need to lower the Blender version in bl_info to
(2, 83, 0) or (2, 90, 0) if they used a subversion number higher than 0.
https://wiki.blender.org/wiki/Reference/Release_Notes/2.83/Python_API#Compatibility
This change is in preparation of LTS releases, and also brings us more
in line with semantic versioning.
Fixes T76058.
Differential Revision: https://developer.blender.org/D7748
2020-05-25 08:49:04 +00:00
|
|
|
MACOSX_BUNDLE_SHORT_VERSION_STRING "${BLENDER_VERSION}.${BLENDER_VERSION_PATCH}"
|
|
|
|
MACOSX_BUNDLE_LONG_VERSION_STRING "${BLENDER_VERSION}.${BLENDER_VERSION_PATCH} ${BLENDER_DATE}")
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-11-16 19:47:45 +00:00
|
|
|
# Gather the date in finder-style
|
|
|
|
execute_process(COMMAND date "+%m/%d/%Y/%H:%M"
|
|
|
|
OUTPUT_VARIABLE SETFILE_DATE
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-11-16 19:47:45 +00:00
|
|
|
# Give the bundle actual creation/modification date
|
2020-03-26 10:34:50 +00:00
|
|
|
#
|
|
|
|
# Note that the directory might not yet exist, which happens when CMake is first run.
|
|
|
|
if(NOT EXISTS ${EXECUTABLE_OUTPUT_PATH}/Blender.app)
|
|
|
|
file(MAKE_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}/Blender.app)
|
|
|
|
endif()
|
2016-05-18 01:58:08 +00:00
|
|
|
execute_process(COMMAND SetFile -d ${SETFILE_DATE} -m ${SETFILE_DATE}
|
2019-06-21 16:12:00 +00:00
|
|
|
${EXECUTABLE_OUTPUT_PATH}/Blender.app)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-11-12 19:54:48 +00:00
|
|
|
install(
|
|
|
|
TARGETS blender
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
# install release and app files
|
2019-06-21 17:05:15 +00:00
|
|
|
set(BLENDER_TEXT_FILES_DESTINATION Blender.app/Contents/Resources/text)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
install(
|
2011-11-17 18:23:34 +00:00
|
|
|
FILES ${OSX_APP_SOURCEDIR}/Contents/PkgInfo
|
2019-06-21 16:12:00 +00:00
|
|
|
DESTINATION Blender.app/Contents
|
2011-03-17 09:09:48 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
install_dir(
|
2011-11-17 18:23:34 +00:00
|
|
|
${OSX_APP_SOURCEDIR}/Contents/Resources
|
2019-06-21 16:12:00 +00:00
|
|
|
Blender.app/Contents/
|
2011-03-17 09:09:48 +00:00
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-01-26 13:14:51 +00:00
|
|
|
if(WITH_OPENMP AND OPENMP_CUSTOM)
|
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/openmp/lib/libomp.dylib
|
2019-06-21 16:12:00 +00:00
|
|
|
DESTINATION Blender.app/Contents/Resources/lib
|
2019-01-26 13:14:51 +00:00
|
|
|
)
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2014-08-06 10:48:06 +00:00
|
|
|
if(WITH_LLVM AND NOT LLVM_STATIC)
|
|
|
|
install(
|
|
|
|
FILES ${LIBDIR}/llvm/lib/libLLVM-3.4.dylib
|
2019-06-21 16:12:00 +00:00
|
|
|
DESTINATION Blender.app/Contents/MacOS
|
2014-08-06 10:48:06 +00:00
|
|
|
)
|
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2011-03-17 09:09:48 +00:00
|
|
|
# python
|
2013-02-22 22:24:38 +00:00
|
|
|
if(WITH_PYTHON AND NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
|
2017-09-28 18:52:22 +00:00
|
|
|
# Copy the python libs into the install directory
|
|
|
|
install_dir(
|
|
|
|
${PYTHON_LIBPATH}
|
|
|
|
${TARGETDIR_VER}/python/lib
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2015-10-05 10:43:56 +00:00
|
|
|
install(DIRECTORY ${LIBDIR}/python/bin
|
|
|
|
DESTINATION ${TARGETDIR_VER}/python
|
|
|
|
USE_SOURCE_PERMISSIONS
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2016-04-28 10:43:14 +00:00
|
|
|
# Needed for distutils/pip
|
|
|
|
# get the last part of the include dir, will be 'python{version}{abiflag}',
|
|
|
|
get_filename_component(_py_inc_suffix ${PYTHON_INCLUDE_DIR} NAME)
|
|
|
|
install(
|
|
|
|
FILES ${PYTHON_INCLUDE_DIR}/pyconfig.h
|
|
|
|
DESTINATION ${TARGETDIR_VER}/python/include/${_py_inc_suffix}
|
|
|
|
)
|
|
|
|
unset(_py_inc_suffix)
|
2010-11-21 13:41:43 +00:00
|
|
|
endif()
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2019-04-11 09:26:23 +00:00
|
|
|
if(WITH_DRACO)
|
|
|
|
install(
|
2019-04-11 13:47:33 +00:00
|
|
|
PROGRAMS $<TARGET_FILE:extern_draco>
|
2019-04-11 09:26:23 +00:00
|
|
|
DESTINATION ${TARGETDIR_VER}/python/lib/python${PYTHON_VERSION}/site-packages
|
|
|
|
)
|
|
|
|
endif()
|
2009-08-14 17:16:16 +00:00
|
|
|
endif()
|
2006-12-10 14:49:28 +00:00
|
|
|
|
2011-11-17 18:23:34 +00:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Generic Install, for all targets
|
|
|
|
|
2015-03-12 11:14:48 +00:00
|
|
|
if(DEFINED BLENDER_TEXT_FILES_DESTINATION)
|
2015-03-23 20:47:01 +00:00
|
|
|
|
|
|
|
install(
|
|
|
|
CODE
|
|
|
|
"
|
|
|
|
file(READ \"${CMAKE_SOURCE_DIR}/release/text/readme.html\" DATA_SRC)
|
|
|
|
string(REGEX REPLACE \"BLENDER_VERSION\" \"${BLENDER_VERSION}\" DATA_DST \"\${DATA_SRC}\")
|
2015-11-07 21:42:21 +00:00
|
|
|
file(WRITE \"${CMAKE_BINARY_DIR}/release/text/readme.html\" \"\${DATA_DST}\")
|
2015-03-23 20:47:01 +00:00
|
|
|
unset(DATA_SRC)
|
|
|
|
unset(DATA_DST)
|
|
|
|
"
|
|
|
|
)
|
|
|
|
list(APPEND BLENDER_TEXT_FILES
|
|
|
|
${CMAKE_BINARY_DIR}/release/text/readme.html
|
|
|
|
)
|
2019-04-17 04:17:24 +00:00
|
|
|
|
2015-03-12 11:14:48 +00:00
|
|
|
install(
|
|
|
|
FILES ${BLENDER_TEXT_FILES}
|
|
|
|
DESTINATION "${BLENDER_TEXT_FILES_DESTINATION}"
|
|
|
|
)
|
2020-09-24 08:53:15 +00:00
|
|
|
|
|
|
|
install(
|
|
|
|
DIRECTORY
|
|
|
|
${CMAKE_SOURCE_DIR}/release/license
|
|
|
|
DESTINATION "${BLENDER_TEXT_FILES_DESTINATION}"
|
|
|
|
)
|
2015-03-12 11:14:48 +00:00
|
|
|
endif()
|
2011-11-17 18:23:34 +00:00
|
|
|
|
2011-11-07 15:53:40 +00:00
|
|
|
# install more files specified elsewhere
|
|
|
|
delayed_do_install(${TARGETDIR_VER})
|
|
|
|
|
2011-07-01 13:10:49 +00:00
|
|
|
unset(BLENDER_TEXT_FILES)
|
2015-03-12 11:14:48 +00:00
|
|
|
unset(BLENDER_TEXT_FILES_DESTINATION)
|
2011-07-01 13:10:49 +00:00
|
|
|
|
2018-04-25 07:24:54 +00:00
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Geometry Icons
|
|
|
|
|
2018-04-24 07:19:28 +00:00
|
|
|
# Geometry icons.
|
2018-04-25 07:24:54 +00:00
|
|
|
get_property(_icon_names GLOBAL PROPERTY ICON_GEOM_NAMES)
|
|
|
|
set(_icon_files)
|
|
|
|
foreach(_f ${_icon_names})
|
|
|
|
list(APPEND _icon_files
|
|
|
|
"${CMAKE_SOURCE_DIR}/release/datafiles/icons/${_f}.dat"
|
|
|
|
)
|
|
|
|
endforeach()
|
2018-04-24 07:19:28 +00:00
|
|
|
install(
|
2018-04-25 07:24:54 +00:00
|
|
|
FILES ${_icon_files}
|
|
|
|
DESTINATION ${TARGETDIR_VER}/datafiles/icons
|
2018-04-24 07:19:28 +00:00
|
|
|
)
|
2011-07-01 13:10:49 +00:00
|
|
|
|
2018-04-25 07:24:54 +00:00
|
|
|
unset(_icon_names)
|
|
|
|
unset(_icon_files)
|
|
|
|
unset(_f)
|
|
|
|
|
2018-05-11 14:55:14 +00:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Studio Lights
|
|
|
|
install(
|
|
|
|
DIRECTORY
|
|
|
|
${CMAKE_SOURCE_DIR}/release/datafiles/studiolights
|
|
|
|
DESTINATION ${TARGETDIR_VER}/datafiles
|
|
|
|
)
|
2018-04-25 07:24:54 +00:00
|
|
|
|
2011-07-01 13:10:49 +00:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Setup link libs
|
|
|
|
|
2006-11-17 02:27:12 +00:00
|
|
|
add_dependencies(blender makesdna)
|
2019-04-16 10:36:44 +00:00
|
|
|
target_link_libraries(blender ${LIB})
|
|
|
|
unset(LIB)
|
2010-12-08 08:43:06 +00:00
|
|
|
|
2020-09-15 14:00:15 +00:00
|
|
|
setup_platform_linker_flags(blender)
|
|
|
|
setup_platform_linker_libs(blender)
|
2014-08-07 14:01:20 +00:00
|
|
|
|
2020-04-07 11:42:43 +00:00
|
|
|
if(APPLE)
|
|
|
|
set_target_properties(blender PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/osx_locals.map)
|
|
|
|
elseif(UNIX)
|
|
|
|
set_target_properties(blender PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/blender.map)
|
|
|
|
endif()
|
|
|
|
|
USD: Introducing a simple USD Exporter
This commit introduces the first version of an exporter to Pixar's
Universal Scene Description (USD) format.
Reviewed By: sergey, LazyDodo
Differential Revision: https://developer.blender.org/D6287
- The USD libraries are built by `make deps`, but not yet built by
install_deps.sh.
- Only experimental support for instancing; by default all duplicated
objects are made real in the USD file. This is fine for exporting a
linked-in posed character, not so much for thousands of pebbles etc.
- The way materials and UV coordinates and Normals are exported is going
to change soon.
- This patch contains LazyDodo's fixes for building on Windows in D5359.
== Meshes ==
USD seems to support neither per-material nor per-face-group
double-sidedness, so we just use the flag from the first non-empty
material slot. If there is no material we default to double-sidedness.
Each UV map is stored on the mesh in a separate primvar. Materials can
refer to these UV maps, but this is not yet exported by Blender. The
primvar name is the same as the UV Map name. This is to allow the
standard name "st" for texture coordinates by naming the UV Map as such,
without having to guess which UV Map is the "standard" one.
Face-varying mesh normals are written to USD. When the mesh has custom
loop normals those are written. Otherwise the poly flag `ME_SMOOTH` is
inspected to determine the normals.
The UV maps and mesh normals take up a significant amount of space, so
exporting them is optional. They're still enabled by default, though.
For comparison: a shot of Spring (03_035_A) is 1.2 GiB when exported
with UVs and normals, and 262 MiB without. We probably have room for
optimisation of written UVs and normals.
The mesh subdivision scheme isn't using the default value 'Catmull
Clark', but uses 'None', indicating we're exporting a polygonal mesh.
This is necessary for USD to understand our normals; otherwise the mesh
is always rendered smooth. In the future we may want to expose this
choice of subdivision scheme to the user, or auto-detect it when we
actually support exporting pre-subdivision meshes.
A possible optimisation could be to inspect whether all polygons are
smooth or flat, and mark the USD mesh as such. This can be added when
needed.
== Animation ==
Mesh and transform animation are now written when passing
`animation=True` to the export operator. There is no inspection of
whether an object is actually animated or not; USD can handle
deduplication of static values for us.
The administration of which timecode to use for the export is left to
the file-format-specific concrete subclasses of
`AbstractHierarchyIterator`; the abstract iterator itself doesn't know
anything about the passage of time. This will allow subclasses for the
frame-based USD format and time-based Alembic format.
== Support for simple preview materials ==
Very simple versions of the materials are now exported, using only the
viewport diffuse RGB, metallic, and roughness.
When there are multiple materials, the mesh faces are stored as geometry
subset and each material is assigned to the appropriate subset. If there
is only one material this is skipped.
The first material if any) is always applied to the mesh itself
(regardless of the existence of geometry subsets), because the Hydra
viewport doesn't support materials on subsets. See
https://github.com/PixarAnimationStudios/USD/issues/542 for more info.
Note that the geometry subsets are not yet time-sampled, so it may break
when an animated mesh changes topology.
Materials are exported as a flat list under a top-level '/_materials'
namespace. This inhibits instancing of the objects using those
materials, so this is subject to change.
== Hair ==
Only the parent strands are exported, and only with a constant colour.
No UV coordinates, no information about the normals.
== Camera ==
Only perspective cameras are supported for now.
== Particles ==
Particles are only written when they are alive, which means that they
are always visible (there is currently no code that deals with marking
them as invisible outside their lifespan).
Particle-system-instanced objects are exported by suffixing the object
name with the particle's persistent ID, giving each particle XForm a
unique name.
== Instancing/referencing ==
This exporter has experimental support for instancing/referencing.
Dupli-object meshes are now written to USD as references to the original
mesh. This is still very limited in correctness, as there are issues
referencing to materials from a referenced mesh.
I am still committing this, as it gives us a place to start when
continuing the quest for proper instancing in USD.
== Lights ==
USD does not directly support spot lights, so those aren't exported yet.
It's possible to add this in the future via the UsdLuxShapingAPI. The
units used for the light intensity are also still a bit of a mystery.
== Fluid vertex velocities ==
Currently only fluid simulations (not meshes in general) have explicit
vertex velocities. This is the most important case for exporting
velocities, though, as the baked mesh changes topology all the time, and
thus computing the velocities at import time in a post-processing step
is hard.
== The Building Process ==
- USD is built as monolithic library, instead of 25 smaller libraries.
We were linking all of them as 'whole archive' anyway, so this doesn't
affect the final file size. It does, however, make life easier with
respect to linking order, and handling upstream changes.
- The JSON files required by USD are installed into datafiles/usd; they
are required on every platform. Set the `PXR_PATH_DEBUG` to any value
to have the USD library print the paths it uses to find those files.
- USD is patched so that it finds the aforementioned JSON files in a path
that we pass to it from Blender.
- USD is patched to have a `PXR_BUILD_USD_TOOLS` CMake option to disable
building the tools in its `bin` directory. This is sent as a pull
request at https://github.com/PixarAnimationStudios/USD/pull/1048
2019-12-13 09:27:40 +00:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# USD registry.
|
|
|
|
# USD requires a set of JSON files that define the standard schemas. These
|
|
|
|
# files are required at runtime.
|
2019-12-16 02:49:11 +00:00
|
|
|
if(WITH_USD)
|
USD: Introducing a simple USD Exporter
This commit introduces the first version of an exporter to Pixar's
Universal Scene Description (USD) format.
Reviewed By: sergey, LazyDodo
Differential Revision: https://developer.blender.org/D6287
- The USD libraries are built by `make deps`, but not yet built by
install_deps.sh.
- Only experimental support for instancing; by default all duplicated
objects are made real in the USD file. This is fine for exporting a
linked-in posed character, not so much for thousands of pebbles etc.
- The way materials and UV coordinates and Normals are exported is going
to change soon.
- This patch contains LazyDodo's fixes for building on Windows in D5359.
== Meshes ==
USD seems to support neither per-material nor per-face-group
double-sidedness, so we just use the flag from the first non-empty
material slot. If there is no material we default to double-sidedness.
Each UV map is stored on the mesh in a separate primvar. Materials can
refer to these UV maps, but this is not yet exported by Blender. The
primvar name is the same as the UV Map name. This is to allow the
standard name "st" for texture coordinates by naming the UV Map as such,
without having to guess which UV Map is the "standard" one.
Face-varying mesh normals are written to USD. When the mesh has custom
loop normals those are written. Otherwise the poly flag `ME_SMOOTH` is
inspected to determine the normals.
The UV maps and mesh normals take up a significant amount of space, so
exporting them is optional. They're still enabled by default, though.
For comparison: a shot of Spring (03_035_A) is 1.2 GiB when exported
with UVs and normals, and 262 MiB without. We probably have room for
optimisation of written UVs and normals.
The mesh subdivision scheme isn't using the default value 'Catmull
Clark', but uses 'None', indicating we're exporting a polygonal mesh.
This is necessary for USD to understand our normals; otherwise the mesh
is always rendered smooth. In the future we may want to expose this
choice of subdivision scheme to the user, or auto-detect it when we
actually support exporting pre-subdivision meshes.
A possible optimisation could be to inspect whether all polygons are
smooth or flat, and mark the USD mesh as such. This can be added when
needed.
== Animation ==
Mesh and transform animation are now written when passing
`animation=True` to the export operator. There is no inspection of
whether an object is actually animated or not; USD can handle
deduplication of static values for us.
The administration of which timecode to use for the export is left to
the file-format-specific concrete subclasses of
`AbstractHierarchyIterator`; the abstract iterator itself doesn't know
anything about the passage of time. This will allow subclasses for the
frame-based USD format and time-based Alembic format.
== Support for simple preview materials ==
Very simple versions of the materials are now exported, using only the
viewport diffuse RGB, metallic, and roughness.
When there are multiple materials, the mesh faces are stored as geometry
subset and each material is assigned to the appropriate subset. If there
is only one material this is skipped.
The first material if any) is always applied to the mesh itself
(regardless of the existence of geometry subsets), because the Hydra
viewport doesn't support materials on subsets. See
https://github.com/PixarAnimationStudios/USD/issues/542 for more info.
Note that the geometry subsets are not yet time-sampled, so it may break
when an animated mesh changes topology.
Materials are exported as a flat list under a top-level '/_materials'
namespace. This inhibits instancing of the objects using those
materials, so this is subject to change.
== Hair ==
Only the parent strands are exported, and only with a constant colour.
No UV coordinates, no information about the normals.
== Camera ==
Only perspective cameras are supported for now.
== Particles ==
Particles are only written when they are alive, which means that they
are always visible (there is currently no code that deals with marking
them as invisible outside their lifespan).
Particle-system-instanced objects are exported by suffixing the object
name with the particle's persistent ID, giving each particle XForm a
unique name.
== Instancing/referencing ==
This exporter has experimental support for instancing/referencing.
Dupli-object meshes are now written to USD as references to the original
mesh. This is still very limited in correctness, as there are issues
referencing to materials from a referenced mesh.
I am still committing this, as it gives us a place to start when
continuing the quest for proper instancing in USD.
== Lights ==
USD does not directly support spot lights, so those aren't exported yet.
It's possible to add this in the future via the UsdLuxShapingAPI. The
units used for the light intensity are also still a bit of a mystery.
== Fluid vertex velocities ==
Currently only fluid simulations (not meshes in general) have explicit
vertex velocities. This is the most important case for exporting
velocities, though, as the baked mesh changes topology all the time, and
thus computing the velocities at import time in a post-processing step
is hard.
== The Building Process ==
- USD is built as monolithic library, instead of 25 smaller libraries.
We were linking all of them as 'whole archive' anyway, so this doesn't
affect the final file size. It does, however, make life easier with
respect to linking order, and handling upstream changes.
- The JSON files required by USD are installed into datafiles/usd; they
are required on every platform. Set the `PXR_PATH_DEBUG` to any value
to have the USD library print the paths it uses to find those files.
- USD is patched so that it finds the aforementioned JSON files in a path
that we pass to it from Blender.
- USD is patched to have a `PXR_BUILD_USD_TOOLS` CMake option to disable
building the tools in its `bin` directory. This is sent as a pull
request at https://github.com/PixarAnimationStudios/USD/pull/1048
2019-12-13 09:27:40 +00:00
|
|
|
add_definitions(-DWITH_USD)
|
|
|
|
install(DIRECTORY
|
2020-02-10 14:07:49 +00:00
|
|
|
${USD_LIBRARY_DIR}/usd
|
USD: Introducing a simple USD Exporter
This commit introduces the first version of an exporter to Pixar's
Universal Scene Description (USD) format.
Reviewed By: sergey, LazyDodo
Differential Revision: https://developer.blender.org/D6287
- The USD libraries are built by `make deps`, but not yet built by
install_deps.sh.
- Only experimental support for instancing; by default all duplicated
objects are made real in the USD file. This is fine for exporting a
linked-in posed character, not so much for thousands of pebbles etc.
- The way materials and UV coordinates and Normals are exported is going
to change soon.
- This patch contains LazyDodo's fixes for building on Windows in D5359.
== Meshes ==
USD seems to support neither per-material nor per-face-group
double-sidedness, so we just use the flag from the first non-empty
material slot. If there is no material we default to double-sidedness.
Each UV map is stored on the mesh in a separate primvar. Materials can
refer to these UV maps, but this is not yet exported by Blender. The
primvar name is the same as the UV Map name. This is to allow the
standard name "st" for texture coordinates by naming the UV Map as such,
without having to guess which UV Map is the "standard" one.
Face-varying mesh normals are written to USD. When the mesh has custom
loop normals those are written. Otherwise the poly flag `ME_SMOOTH` is
inspected to determine the normals.
The UV maps and mesh normals take up a significant amount of space, so
exporting them is optional. They're still enabled by default, though.
For comparison: a shot of Spring (03_035_A) is 1.2 GiB when exported
with UVs and normals, and 262 MiB without. We probably have room for
optimisation of written UVs and normals.
The mesh subdivision scheme isn't using the default value 'Catmull
Clark', but uses 'None', indicating we're exporting a polygonal mesh.
This is necessary for USD to understand our normals; otherwise the mesh
is always rendered smooth. In the future we may want to expose this
choice of subdivision scheme to the user, or auto-detect it when we
actually support exporting pre-subdivision meshes.
A possible optimisation could be to inspect whether all polygons are
smooth or flat, and mark the USD mesh as such. This can be added when
needed.
== Animation ==
Mesh and transform animation are now written when passing
`animation=True` to the export operator. There is no inspection of
whether an object is actually animated or not; USD can handle
deduplication of static values for us.
The administration of which timecode to use for the export is left to
the file-format-specific concrete subclasses of
`AbstractHierarchyIterator`; the abstract iterator itself doesn't know
anything about the passage of time. This will allow subclasses for the
frame-based USD format and time-based Alembic format.
== Support for simple preview materials ==
Very simple versions of the materials are now exported, using only the
viewport diffuse RGB, metallic, and roughness.
When there are multiple materials, the mesh faces are stored as geometry
subset and each material is assigned to the appropriate subset. If there
is only one material this is skipped.
The first material if any) is always applied to the mesh itself
(regardless of the existence of geometry subsets), because the Hydra
viewport doesn't support materials on subsets. See
https://github.com/PixarAnimationStudios/USD/issues/542 for more info.
Note that the geometry subsets are not yet time-sampled, so it may break
when an animated mesh changes topology.
Materials are exported as a flat list under a top-level '/_materials'
namespace. This inhibits instancing of the objects using those
materials, so this is subject to change.
== Hair ==
Only the parent strands are exported, and only with a constant colour.
No UV coordinates, no information about the normals.
== Camera ==
Only perspective cameras are supported for now.
== Particles ==
Particles are only written when they are alive, which means that they
are always visible (there is currently no code that deals with marking
them as invisible outside their lifespan).
Particle-system-instanced objects are exported by suffixing the object
name with the particle's persistent ID, giving each particle XForm a
unique name.
== Instancing/referencing ==
This exporter has experimental support for instancing/referencing.
Dupli-object meshes are now written to USD as references to the original
mesh. This is still very limited in correctness, as there are issues
referencing to materials from a referenced mesh.
I am still committing this, as it gives us a place to start when
continuing the quest for proper instancing in USD.
== Lights ==
USD does not directly support spot lights, so those aren't exported yet.
It's possible to add this in the future via the UsdLuxShapingAPI. The
units used for the light intensity are also still a bit of a mystery.
== Fluid vertex velocities ==
Currently only fluid simulations (not meshes in general) have explicit
vertex velocities. This is the most important case for exporting
velocities, though, as the baked mesh changes topology all the time, and
thus computing the velocities at import time in a post-processing step
is hard.
== The Building Process ==
- USD is built as monolithic library, instead of 25 smaller libraries.
We were linking all of them as 'whole archive' anyway, so this doesn't
affect the final file size. It does, however, make life easier with
respect to linking order, and handling upstream changes.
- The JSON files required by USD are installed into datafiles/usd; they
are required on every platform. Set the `PXR_PATH_DEBUG` to any value
to have the USD library print the paths it uses to find those files.
- USD is patched so that it finds the aforementioned JSON files in a path
that we pass to it from Blender.
- USD is patched to have a `PXR_BUILD_USD_TOOLS` CMake option to disable
building the tools in its `bin` directory. This is sent as a pull
request at https://github.com/PixarAnimationStudios/USD/pull/1048
2019-12-13 09:27:40 +00:00
|
|
|
DESTINATION "${TARGETDIR_VER}/datafiles"
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
2019-07-30 17:13:33 +00:00
|
|
|
# vcpkg substitutes our libs with theirs, which will cause issues when you
|
|
|
|
# you run these builds on other systems due to missing dlls. So we opt out
|
|
|
|
# the use of vcpkg
|
2019-10-21 04:05:56 +00:00
|
|
|
if(WIN32)
|
2019-07-30 17:13:33 +00:00
|
|
|
set_target_properties(blender PROPERTIES VS_GLOBAL_VcpkgEnabled "false")
|
2020-05-01 13:37:48 +00:00
|
|
|
set_target_properties(blender PROPERTIES
|
|
|
|
PDB_NAME "blender_private"
|
|
|
|
PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>")
|
2020-09-15 12:50:11 +00:00
|
|
|
if(WITH_WINDOWS_PDB AND WITH_WINDOWS_STRIPPED_PDB)
|
2020-05-01 13:37:48 +00:00
|
|
|
# This is slightly messy, but single target generators like ninja will not have the
|
|
|
|
# CMAKE_CFG_INTDIR variable and multitarget generators like msbuild will not have
|
|
|
|
# CMAKE_BUILD_TYPE. This can be simplified by target_link_options and the $<CONFIG>
|
|
|
|
# generator expression in newer cmake (2.13+) but until that time this fill have suffice.
|
|
|
|
if(CMAKE_BUILD_TYPE)
|
2020-09-15 14:00:15 +00:00
|
|
|
set_property(TARGET blender APPEND_STRING PROPERTY LINK_FLAGS " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/blender_public.pdb")
|
2020-05-01 13:37:48 +00:00
|
|
|
else()
|
2020-09-15 14:00:15 +00:00
|
|
|
set_property(TARGET blender APPEND_STRING PROPERTY LINK_FLAGS " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/blender_public.pdb")
|
2020-05-01 13:37:48 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2019-07-30 17:13:33 +00:00
|
|
|
endif()
|
2019-04-15 04:38:26 +00:00
|
|
|
|
2014-08-07 14:01:20 +00:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Setup launcher
|
|
|
|
|
|
|
|
if(WIN32 AND NOT WITH_PYTHON_MODULE)
|
2016-05-18 01:58:08 +00:00
|
|
|
install(
|
|
|
|
TARGETS blender
|
|
|
|
COMPONENT Blender
|
|
|
|
DESTINATION "."
|
|
|
|
)
|
2018-10-22 16:17:08 +00:00
|
|
|
set_target_properties(
|
|
|
|
blender
|
|
|
|
PROPERTIES
|
|
|
|
VS_USER_PROPS "blender.Cpp.user.props"
|
|
|
|
)
|
2014-08-07 14:01:20 +00:00
|
|
|
endif()
|
2019-11-07 15:50:31 +00:00
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Post-install script
|
|
|
|
|
|
|
|
if(POSTINSTALL_SCRIPT)
|
|
|
|
install(SCRIPT ${POSTINSTALL_SCRIPT})
|
|
|
|
endif()
|