mirror of
https://github.com/H-uru/korman.git
synced 2025-07-14 02:27:36 -04:00
Add "Blender for Korman" and build/package process.
This will allow us to automate releases with the Blender 2.79 "experimenntal nightly" codebase. This is great because the newer Blender uses Python 3.7 (instead of 3.5). This pulls from my fork of Blender, which has a number of build improvements added on top.
This commit is contained in:
85
cmake/FindBlender.cmake
Normal file
85
cmake/FindBlender.cmake
Normal file
@ -0,0 +1,85 @@
|
||||
# This file is part of Korman.
|
||||
#
|
||||
# Korman 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 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Korman 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 Korman. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# The parens in this env variable give CMake heartburn, so we whisper sweet nothings.
|
||||
set(_PROGRAMFILES_X86 "PROGRAMFILES(X86)")
|
||||
set(_PROGRAMFILES_X86 "$ENV{${_PROGRAMFILES_X86}}")
|
||||
|
||||
find_program(Blender_EXECUTABLE
|
||||
NAMES blender
|
||||
PATHS
|
||||
"${Blender_ROOT}"
|
||||
"$ENV{PROGRAMFILES}/Blender Foundation/Blender"
|
||||
"${_PROGRAMFILES_X86}/Blender Foundation/Blender"
|
||||
)
|
||||
|
||||
# Hacky? On Windows, we want to make sure that the Blender EXE matches sizeof void*
|
||||
# Yes, this has bitten me. If it bites you, the result will be "Import Error: PyHSPlasma is not a
|
||||
# valid Win32 application." That's hardly useful...
|
||||
if(WIN32 AND EXISTS "${Blender_EXECUTABLE}")
|
||||
find_package(dumpbin)
|
||||
if(dumpbin_FOUND)
|
||||
execute_process(
|
||||
COMMAND "${dumpbin_EXECUTABLE}" /headers "${Blender_EXECUTABLE}"
|
||||
RESULTS_VARIABLE _RETURNCODE
|
||||
OUTPUT_VARIABLE _dumpbin_output
|
||||
ERROR_VARIABLE _dumpbin_error
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if(_RETURNCODE EQUAL 0)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_expected_arch "machine \\(x64\\)")
|
||||
else()
|
||||
set(_expected_arch "machine \\(x86\\)")
|
||||
endif()
|
||||
if(NOT "${_dumpbin_output}" MATCHES "${_expected_arch}")
|
||||
unset(Blender_EXECUTABLE CACHE)
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "dumpbin failed ${_dumpbin_error}")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "dumpbin not found, not verifying blender executable")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(EXISTS "${Blender_EXECUTABLE}")
|
||||
# Starting Blender is noisy on stdout, so all the extra characters will make sure things go right.
|
||||
# https://youtu.be/SlQFIsQ0dbs?t=19
|
||||
set(_Blender_PYTHON_EXPR
|
||||
"import sys; print('!!! OOGABOOGA {}.{} AGOOBAGOO !!!'.format(sys.version_info[0], sys.version_info[1]))"
|
||||
)
|
||||
execute_process(
|
||||
COMMAND "${Blender_EXECUTABLE}" -b --python-expr "${_Blender_PYTHON_EXPR}"
|
||||
RESULTS_VARIABLE _RETURNCODE
|
||||
OUTPUT_VARIABLE _Blender_VERSION_OUTPUT
|
||||
ERROR_VARIABLE _Blender_VERSION_OUTPUT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
string(REGEX MATCH [[Blender ([0-9]+\.[0-9]+)]] _match "${_Blender_VERSION_OUTPUT}")
|
||||
set(Blender_VERSION "${CMAKE_MATCH_1}")
|
||||
string(REGEX MATCH [[!!! OOGABOOGA ([0-9]+\.[0-9]+) AGOOBAGOO !!!]] _match "${_Blender_VERSION_OUTPUT}")
|
||||
set(Blender_PYTHON_VERSION "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(Blender_EXECUTABLE)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Blender
|
||||
REQUIRED_VARS Blender_EXECUTABLE Blender_VERSION Blender_PYTHON_VERSION
|
||||
VERSION_VAR Blender_VERSION
|
||||
)
|
Reference in New Issue
Block a user