From 9cd8eecf61ccc2baf2aab99b0dc38cd81ea39bf4 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sun, 15 Aug 2021 03:32:28 -0400 Subject: [PATCH] Fix Blender 2.79b+VS2013 build issues. --- CMakeLists.txt | 3 +++ cmake/FindBlender.cmake | 16 ++++++++++++---- cmake/Finddumpbin.cmake | 7 ++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a7935a4..e3c34a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,9 @@ elseif("${Blender_PYTHON_VERSION}" AND NOT "${Blender_PYTHON_VERSION}" MATCHES " message(FATAL_ERROR "Your manually defined Blender python version ($CACHE{Blender_PYTHON_VERSION}) doesn't pass muster.") endif() find_package(Blender 2.79 EXACT ${_Blender_REQUIRED}) +if(NOT Blender_FOUND) + set(Blender_VERSION "2.79") +endif() # Gotta do this because libHSPlasma is still using the old broke-ass pre-3.12 find modules. set(Python3_FIND_STRATEGY VERSION) diff --git a/cmake/FindBlender.cmake b/cmake/FindBlender.cmake index 5aba1e1..9308b2d 100644 --- a/cmake/FindBlender.cmake +++ b/cmake/FindBlender.cmake @@ -35,7 +35,7 @@ if(WIN32 AND EXISTS "${Blender_EXECUTABLE}") COMMAND "${dumpbin_EXECUTABLE}" /headers "${Blender_EXECUTABLE}" RESULTS_VARIABLE _RETURNCODE OUTPUT_VARIABLE _dumpbin_output - ERROR_VARIABLE _dumpbin_error + ERROR_VARIABLE _dumpbin_output OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE ) @@ -57,6 +57,14 @@ if(WIN32 AND EXISTS "${Blender_EXECUTABLE}") endif() if(EXISTS "${Blender_EXECUTABLE}") + execute_process( + COMMAND "${Blender_EXECUTABLE}" -b -v + RESULTS_VARIABLE _RETURNCODE + OUTPUT_VARIABLE _Blender_VERSION_OUTPUT + ERROR_VARIABLE _Blender_VERSION_OUTPUT + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) # 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 @@ -65,14 +73,14 @@ if(EXISTS "${Blender_EXECUTABLE}") 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_VARIABLE _Blender_PYTHON_OUTPUT + ERROR_VARIABLE _Blender_PYTHON_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}") + string(REGEX MATCH [[!!! OOGABOOGA ([0-9]+\.[0-9]+) AGOOBAGOO !!!]] _match "${_Blender_PYTHON_OUTPUT}") set(Blender_PYTHON_VERSION "${CMAKE_MATCH_1}") endif() diff --git a/cmake/Finddumpbin.cmake b/cmake/Finddumpbin.cmake index faf2603..7420388 100644 --- a/cmake/Finddumpbin.cmake +++ b/cmake/Finddumpbin.cmake @@ -15,9 +15,14 @@ get_filename_component(_linker_dir "${CMAKE_LINKER}" DIRECTORY) + +# In Visual Studio 2013, the dumpbin.exe in the linker directory is missing an important DLL. +# But, it's present in the parent directory, so prefer that one. +get_filename_component(_msvc_bin_dir "${_linker_dir}/../" ABSOLUTE) + find_program(dumpbin_EXECUTABLE NAMES dumpbin - PATHS ${_linker_dir} + PATHS "${_msvc_bin_dir}" "${_linker_dir}" ) mark_as_advanced(dumpbin_EXECUTABLE)