Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Molenkamp <github@lazydodo.com>2021-02-24 17:13:37 +0300
committerRay Molenkamp <github@lazydodo.com>2021-02-24 17:13:37 +0300
commit4fb0c83c1c8529b61d38d8a409caf58d05a53bd9 (patch)
tree18ce99c74a8305a63f93b4ef57a5648818d3352c /build_files
parent5be72125bf4dfddf5dfe720caa12b3163f540faf (diff)
Cmake/deps: Update OSL to 1.11.10.0
This bumps OSL to 1.11.10.0. OSL Has a new build time dependency: Clang, and more importantly it expects clang and llvm to share a library folder, which it previously for us did not. This patch changes: -OSL Update to 1.11.10.0 -refactor the llvm/clang/clang-tools-extra builds into the llvm build using the llvm-project tarball for building that has all of the subprojects in it. -update ispc/openmp builds since clang no longer its own dependency and they have to depend on the llvm build now. -Update the windows builder to use the 64 bit host tools since it ran out of ram linking clang -Since OSL now needs clang to link successfully a findclang.cmake has been provided for linux/OSX Differential Revision: https://developer.blender.org/D10212 Reviewed By: brecht, sebbas, sybren
Diffstat (limited to 'build_files')
-rw-r--r--build_files/build_environment/CMakeLists.txt1
-rw-r--r--build_files/build_environment/cmake/clang.cmake104
-rw-r--r--build_files/build_environment/cmake/harvest.cmake10
-rw-r--r--build_files/build_environment/cmake/ispc.cmake13
-rw-r--r--build_files/build_environment/cmake/llvm.cmake21
-rw-r--r--build_files/build_environment/cmake/openmp.cmake2
-rw-r--r--build_files/build_environment/cmake/osl.cmake42
-rw-r--r--build_files/build_environment/cmake/versions.cmake22
-rw-r--r--build_files/build_environment/patches/llvm.diff4
-rw-r--r--build_files/build_environment/patches/osl.diff24
-rw-r--r--build_files/build_environment/windows/build_deps.cmd4
-rw-r--r--build_files/cmake/Modules/FindClang.cmake111
-rw-r--r--build_files/cmake/platform/platform_apple.cmake7
-rw-r--r--build_files/cmake/platform/platform_unix.cmake11
-rw-r--r--build_files/cmake/platform/platform_win32.cmake4
15 files changed, 195 insertions, 185 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index b2f16508bb5..aa6b1cbe539 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -71,7 +71,6 @@ include(cmake/opensubdiv.cmake)
include(cmake/sdl.cmake)
include(cmake/opencollada.cmake)
include(cmake/llvm.cmake)
-include(cmake/clang.cmake)
if(APPLE)
include(cmake/openmp.cmake)
endif()
diff --git a/build_files/build_environment/cmake/clang.cmake b/build_files/build_environment/cmake/clang.cmake
deleted file mode 100644
index d8d83619e1a..00000000000
--- a/build_files/build_environment/cmake/clang.cmake
+++ /dev/null
@@ -1,104 +0,0 @@
-# ***** BEGIN GPL LICENSE BLOCK *****
-#
-# 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
-# of the License, or (at your option) any later version.
-#
-# 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,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# ***** END GPL LICENSE BLOCK *****
-
-set(CLANG_EXTRA_ARGS
- -DLLVM_DIR="${LIBDIR}/llvm/lib/cmake/llvm/"
- -DLLVM_USE_CRT_RELEASE=MD
- -DLLVM_USE_CRT_DEBUG=MDd
- -DLLVM_CONFIG=${LIBDIR}/llvm/bin/llvm-config
-)
-
-set(BUILD_CLANG_TOOLS OFF)
-
-if(WIN32)
- set(CLANG_GENERATOR "Ninja")
-else()
- set(CLANG_GENERATOR "Unix Makefiles")
-endif()
-
-if(APPLE)
- set(BUILD_CLANG_TOOLS ON)
- set(CLANG_EXTRA_ARGS ${CLANG_EXTRA_ARGS}
- -DLIBXML2_LIBRARY=${LIBDIR}/xml2/lib/libxml2.a
- )
-endif()
-
-if(BUILD_CLANG_TOOLS)
- # ExternalProject_Add does not allow multiple tarballs to be
- # downloaded. Work around this by having an empty build action
- # for the extra tools, and referring the clang build to the location
- # of the clang-tools-extra source.
- ExternalProject_Add(external_clang_tools
- URL ${CLANG_TOOLS_URI}
- DOWNLOAD_DIR ${DOWNLOAD_DIR}
- URL_HASH MD5=${CLANG_TOOLS_HASH}
- INSTALL_DIR ${LIBDIR}/clang_tools
- PREFIX ${BUILD_DIR}/clang_tools
- CONFIGURE_COMMAND echo "."
- BUILD_COMMAND echo "."
- INSTALL_COMMAND echo "."
- )
- list(APPEND CLANG_EXTRA_ARGS
- -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=${BUILD_DIR}/clang_tools/src/external_clang_tools/
- )
-endif()
-
-ExternalProject_Add(external_clang
- URL ${CLANG_URI}
- DOWNLOAD_DIR ${DOWNLOAD_DIR}
- URL_HASH MD5=${CLANG_HASH}
- PREFIX ${BUILD_DIR}/clang
- CMAKE_GENERATOR ${CLANG_GENERATOR}
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/clang ${DEFAULT_CMAKE_FLAGS} ${CLANG_EXTRA_ARGS}
- INSTALL_DIR ${LIBDIR}/clang
-)
-
-if(MSVC)
- if(BUILD_MODE STREQUAL Release)
- set(CLANG_HARVEST_COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/clang/ ${HARVEST_TARGET}/llvm/)
- else()
- set(CLANG_HARVEST_COMMAND
- ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/clang/lib/ ${HARVEST_TARGET}/llvm/debug/lib/
- )
- endif()
- ExternalProject_Add_Step(external_clang after_install
- COMMAND ${CLANG_HARVEST_COMMAND}
- DEPENDEES mkdir update patch download configure build install
- )
-endif()
-
-add_dependencies(
- external_clang
- ll
-)
-
-if(BUILD_CLANG_TOOLS)
- # `external_clang_tools` is for downloading the source, not compiling it.
- add_dependencies(
- external_clang
- external_clang_tools
- )
-endif()
-
-# We currently do not build libxml2 on Windows.
-if(NOT WIN32)
- add_dependencies(
- external_clang
- external_xml2
- )
-endif()
diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake
index 388c8adb5dc..23d0dcbab7b 100644
--- a/build_files/build_environment/cmake/harvest.cmake
+++ b/build_files/build_environment/cmake/harvest.cmake
@@ -97,15 +97,15 @@ harvest(jemalloc/lib jemalloc/lib "*.a")
harvest(jpg/include jpeg/include "*.h")
harvest(jpg/lib jpeg/lib "libjpeg.a")
harvest(lame/lib ffmpeg/lib "*.a")
-harvest(clang/bin llvm/bin "clang-format")
+harvest(llvm/bin llvm/bin "clang-format")
if(BUILD_CLANG_TOOLS)
- harvest(clang/bin llvm/bin "clang-tidy")
- harvest(clang/share/clang llvm/share "run-clang-tidy.py")
+ harvest(llvm/bin llvm/bin "clang-tidy")
+ harvest(llvm/share/clang llvm/share "run-clang-tidy.py")
endif()
-harvest(clang/include llvm/include "*")
harvest(llvm/include llvm/include "*")
harvest(llvm/bin llvm/bin "llvm-config")
harvest(llvm/lib llvm/lib "libLLVM*.a")
+harvest(llvm/lib llvm/lib "libclang*.a")
if(APPLE)
harvest(openmp/lib openmp/lib "*")
harvest(openmp/include openmp/include "*.h")
@@ -158,7 +158,7 @@ harvest(xr_openxr_sdk/lib xr_openxr_sdk/lib "*.a")
harvest(osl/bin osl/bin "oslc")
harvest(osl/include osl/include "*.h")
harvest(osl/lib osl/lib "*.a")
-harvest(osl/shaders osl/shaders "*.h")
+harvest(osl/share/OSL/shaders osl/share/OSL/shaders "*.h")
harvest(png/include png/include "*.h")
harvest(png/lib png/lib "*.a")
harvest(pugixml/include pugixml/include "*.hpp")
diff --git a/build_files/build_environment/cmake/ispc.cmake b/build_files/build_environment/cmake/ispc.cmake
index 440f6e5bace..58e3873097d 100644
--- a/build_files/build_environment/cmake/ispc.cmake
+++ b/build_files/build_environment/cmake/ispc.cmake
@@ -39,8 +39,8 @@ elseif(APPLE)
endif()
elseif(UNIX)
set(ISPC_EXTRA_ARGS_UNIX
- -DCMAKE_C_COMPILER=${LIBDIR}/clang/bin/clang
- -DCMAKE_CXX_COMPILER=${LIBDIR}/clang/bin/clang++
+ -DCMAKE_C_COMPILER=${LIBDIR}/llvm/bin/clang
+ -DCMAKE_CXX_COMPILER=${LIBDIR}/llvm/bin/clang++
-DARM_ENABLED=Off
)
endif()
@@ -51,11 +51,11 @@ set(ISPC_EXTRA_ARGS
-DISPC_INCLUDE_TESTS=Off
-DLLVM_ROOT=${LIBDIR}/llvm/lib/cmake/llvm
-DLLVM_LIBRARY_DIR=${LIBDIR}/llvm/lib
- -DCLANG_EXECUTABLE=${LIBDIR}/clang/bin/clang
- -DCLANGPP_EXECUTABLE=${LIBDIR}/clang/bin/clang++
+ -DCLANG_EXECUTABLE=${LIBDIR}/llvm/bin/clang
+ -DCLANGPP_EXECUTABLE=${LIBDIR}/llvm/bin/clang++
-DISPC_INCLUDE_TESTS=Off
- -DCLANG_LIBRARY_DIR=${LIBDIR}/clang/lib
- -DCLANG_INCLUDE_DIRS=${LIBDIR}/clang/include
+ -DCLANG_LIBRARY_DIR=${LIBDIR}/llvm/lib
+ -DCLANG_INCLUDE_DIRS=${LIBDIR}/llvm/include
${ISPC_EXTRA_ARGS_WIN}
${ISPC_EXTRA_ARGS_APPLE}
${ISPC_EXTRA_ARGS_UNIX}
@@ -74,7 +74,6 @@ ExternalProject_Add(external_ispc
add_dependencies(
external_ispc
ll
- external_clang
)
if(WIN32)
diff --git a/build_files/build_environment/cmake/llvm.cmake b/build_files/build_environment/cmake/llvm.cmake
index a4c7ccd9e27..da2f7364e4a 100644
--- a/build_files/build_environment/cmake/llvm.cmake
+++ b/build_files/build_environment/cmake/llvm.cmake
@@ -22,6 +22,15 @@ else()
set(LLVM_TARGETS X86)
endif()
+if(APPLE)
+ set(LLVM_XML2_ARGS
+ -DLIBXML2_LIBRARY=${LIBDIR}/xml2/lib/libxml2.a
+ )
+ set(LLVM_BUILD_CLANG_TOOLS_EXTRA ^^clang-tools-extra)
+ set(BUILD_CLANG_TOOLS ON)
+endif()
+
+
set(LLVM_EXTRA_ARGS
-DLLVM_USE_CRT_RELEASE=MD
-DLLVM_USE_CRT_DEBUG=MDd
@@ -31,6 +40,8 @@ set(LLVM_EXTRA_ARGS
-DLLVM_ENABLE_TERMINFO=OFF
-DLLVM_BUILD_LLVM_C_DYLIB=OFF
-DLLVM_ENABLE_UNWIND_TABLES=OFF
+ -DLLVM_ENABLE_PROJECTS=clang${LLVM_BUILD_CLANG_TOOLS_EXTRA}
+ ${LLVM_XML2_ARGS}
)
if(WIN32)
@@ -45,7 +56,9 @@ ExternalProject_Add(ll
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH MD5=${LLVM_HASH}
CMAKE_GENERATOR ${LLVM_GENERATOR}
+ LIST_SEPARATOR ^^
PREFIX ${BUILD_DIR}/ll
+ SOURCE_SUBDIR llvm
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/ll/src/ll < ${PATCH_DIR}/llvm.diff
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/llvm ${DEFAULT_CMAKE_FLAGS} ${LLVM_EXTRA_ARGS}
INSTALL_DIR ${LIBDIR}/llvm
@@ -65,3 +78,11 @@ if(MSVC)
DEPENDEES mkdir update patch download configure build install
)
endif()
+
+# We currently do not build libxml2 on Windows.
+if(APPLE)
+ add_dependencies(
+ ll
+ external_xml2
+ )
+endif()
diff --git a/build_files/build_environment/cmake/openmp.cmake b/build_files/build_environment/cmake/openmp.cmake
index ec0756a6693..92a96b4dd8b 100644
--- a/build_files/build_environment/cmake/openmp.cmake
+++ b/build_files/build_environment/cmake/openmp.cmake
@@ -30,5 +30,5 @@ ExternalProject_Add(external_openmp
add_dependencies(
external_openmp
- external_clang
+ ll
)
diff --git a/build_files/build_environment/cmake/osl.cmake b/build_files/build_environment/cmake/osl.cmake
index 118657461fe..78930182f2b 100644
--- a/build_files/build_environment/cmake/osl.cmake
+++ b/build_files/build_environment/cmake/osl.cmake
@@ -19,12 +19,7 @@
if(WIN32)
set(OSL_CMAKE_CXX_STANDARD_LIBRARIES "kernel32${LIBEXT} user32${LIBEXT} gdi32${LIBEXT} winspool${LIBEXT} shell32${LIBEXT} ole32${LIBEXT} oleaut32${LIBEXT} uuid${LIBEXT} comdlg32${LIBEXT} advapi32${LIBEXT} psapi${LIBEXT}")
set(OSL_FLEX_BISON -DFLEX_EXECUTABLE=${LIBDIR}/flexbison/win_flex.exe -DBISON_EXECUTABLE=${LIBDIR}/flexbison/win_bison.exe)
- set(OSL_OPENIMAGEIO_LIBRARY "${LIBDIR}/openimageio/lib/${LIBPREFIX}OpenImageIO${LIBEXT};${LIBDIR}/openimageio/lib/${LIBPREFIX}OpenImageIO_Util${LIBEXT};${LIBDIR}/png/lib/libpng16${LIBEXT};${LIBDIR}/jpg/lib/${LIBPREFIX}jpeg${LIBEXT};${LIBDIR}/tiff/lib/${LIBPREFIX}tiff${LIBEXT};${LIBDIR}/openexr/lib/${LIBPREFIX}IlmImf${OPENEXR_VERSION_POSTFIX}${LIBEXT}")
- if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
- set(OSL_SIMD_FLAGS -DOIIO_NOSIMD=1 -DOIIO_SIMD=0)
- else()
- set(OSL_SIMD_FLAGS -DOIIO_NOSIMD=1 -DOIIO_SIMD=sse2)
- endif()
+ set(OSL_SIMD_FLAGS -DOIIO_NOSIMD=1 -DOIIO_SIMD=sse2)
SET(OSL_PLATFORM_FLAGS -DLINKSTATIC=ON)
else()
set(OSL_CMAKE_CXX_STANDARD_LIBRARIES)
@@ -34,7 +29,6 @@ else()
endif()
set(OSL_ILMBASE_CUSTOM_LIBRARIES "${LIBDIR}/openexr/lib/Imath${OPENEXR_VERSION_POSTFIX}.lib^^${LIBDIR}/openexr/lib/Half{OPENEXR_VERSION_POSTFIX}.lib^^${LIBDIR}/openexr/lib/IlmThread${OPENEXR_VERSION_POSTFIX}.lib^^${LIBDIR}/openexr/lib/Iex${OPENEXR_VERSION_POSTFIX}.lib")
-set(OSL_LLVM_LIBRARY "${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMAnalysis${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMAsmParser${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMAsmPrinter${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMBitReader${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMBitWriter${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMCodeGen${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMCore${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMDebugInfo${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMExecutionEngine${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMInstCombine${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMInstrumentation${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMInterpreter${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMJIT${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMLinker${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMMC${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMMCDisassembler${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMMCJIT${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMMCParser${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMObject${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMRuntimeDyld${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMScalarOpts${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMSelectionDAG${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMSupport${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMTableGen${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMTarget${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMTransformUtils${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMVectorize${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86AsmParser${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86AsmPrinter${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86CodeGen${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86Desc${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86Disassembler${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86Info${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86Utils${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMipa${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMipo${LIBEXT}")
set(OSL_EXTRA_ARGS
-DBoost_COMPILER:STRING=${BOOST_COMPILER_STRING}
@@ -45,13 +39,8 @@ set(OSL_EXTRA_ARGS
-DBOOST_LIBRARYDIR=${LIBDIR}/boost/lib/
-DBoost_NO_SYSTEM_PATHS=ON
-DBoost_NO_BOOST_CMAKE=ON
- -DLLVM_DIRECTORY=${LIBDIR}/llvm
- -DLLVM_INCLUDES=${LIBDIR}/llvm/include
- -DLLVM_LIB_DIR=${LIBDIR}/llvm/lib
- -DLLVM_VERSION=3.4
- -DLLVM_LIBRARY=${OSL_LLVM_LIBRARY}
- -DOPENEXR_HOME=${LIBDIR}/openexr/
- -DILMBASE_HOME=${LIBDIR}/openexr/
+ -DOpenEXR_ROOT=${LIBDIR}/openexr/
+ -DIlmBase_ROOT=${LIBDIR}/openexr/
-DILMBASE_INCLUDE_DIR=${LIBDIR}/openexr/include/
-DOPENEXR_HALF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Half${OPENEXR_VERSION_POSTFIX}${LIBEXT}
-DOPENEXR_IMATH_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Imath${OPENEXR_VERSION_POSTFIX}${LIBEXT}
@@ -59,37 +48,29 @@ set(OSL_EXTRA_ARGS
-DOPENEXR_IEX_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Iex${OPENEXR_VERSION_POSTFIX}${LIBEXT}
-DOPENEXR_INCLUDE_DIR=${LIBDIR}/openexr/include/
-DOPENEXR_ILMIMF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmImf${OPENEXR_VERSION_POSTFIX}${LIBEXT}
+ -DOpenImageIO_ROOT=${LIBDIR}/openimageio/
-DOSL_BUILD_TESTS=OFF
-DOSL_BUILD_MATERIALX=OFF
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/
- -DOPENIMAGEIOHOME=${LIBDIR}/openimageio/
- -DOPENIMAGEIO_INCLUDE_DIR=${LIBDIR}/openimageio/include
- -DOPENIMAGEIO_LIBRARY=${OSL_OPENIMAGEIO_LIBRARY}
${OSL_FLEX_BISON}
-DCMAKE_CXX_STANDARD_LIBRARIES=${OSL_CMAKE_CXX_STANDARD_LIBRARIES}
- -DBUILDSTATIC=ON
+ -DBUILD_SHARED_LIBS=OFF
${OSL_PLATFORM_FLAGS}
- -DOSL_BUILD_PLUGINS=Off
+ -DOSL_BUILD_PLUGINS=OFF
-DSTOP_ON_WARNING=OFF
-DUSE_LLVM_BITCODE=OFF
+ -DLLVM_ROOT=${LIBDIR}/llvm/
+ -DLLVM_DIRECTORY=${LIBDIR}/llvm/
-DUSE_PARTIO=OFF
-DUSE_QT=OFF
+ -DUSE_Qt5=OFF
-DINSTALL_DOCS=OFF
${OSL_SIMD_FLAGS}
- -DPARTIO_LIBRARIES=
- -DPUGIXML_HOME=${LIBDIR}/pugixml
+ -Dpugixml_ROOT=${LIBDIR}/pugixml
+ -DUSE_PYTHON=OFF
)
-if(APPLE)
- # Make symbol hiding consistent with OIIO which defaults to OFF,
- # avoids linker warnings on macOS
- set(OSL_EXTRA_ARGS
- ${OSL_EXTRA_ARGS}
- -DHIDE_SYMBOLS=OFF
- )
-endif()
-
ExternalProject_Add(external_osl
URL ${OSL_URI}
DOWNLOAD_DIR ${DOWNLOAD_DIR}
@@ -105,7 +86,6 @@ add_dependencies(
external_osl
external_boost
ll
- external_clang
external_openexr
external_zlib
external_flexbison
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index 9cf9d2330fd..5b9c709d04b 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -116,28 +116,16 @@ set(OPENCOLORIO_HASH 1a2e3478b6cd9a1549f24e1b2205e3f0)
if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64"))
# Newer version required by ISPC with arm support.
set(LLVM_VERSION 11.0.1)
- set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz)
+ set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-project-${LLVM_VERSION}.tar.xz)
set(LLVM_HASH 6ec7ae9fd43da9b87cda15b3ab9cc7af)
- set(CLANG_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-${LLVM_VERSION}.src.tar.xz)
- set(CLANG_HASH b4cb0b74b1f3292a89c9720f3e1e2934)
-
- set(CLANG_TOOLS_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-tools-extra-${LLVM_VERSION}.src.tar.xz)
- set(CLANG_TOOLS_HASH 1e577a85948a0f07483b7c405e59a0ca)
-
set(OPENMP_VERSION 9.0.1)
set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${OPENMP_VERSION}/openmp-${OPENMP_VERSION}.src.tar.xz)
set(OPENMP_HASH 6eade16057edbdecb3c4eef9daa2bfcf)
else()
set(LLVM_VERSION 9.0.1)
- set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz)
- set(LLVM_HASH 31eb9ce73dd2a0f8dcab8319fb03f8fc)
-
- set(CLANG_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-${LLVM_VERSION}.src.tar.xz)
- set(CLANG_HASH 13468e4a44940efef1b75e8641752f90)
-
- set(CLANG_TOOLS_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-tools-extra-${LLVM_VERSION}.src.tar.xz)
- set(CLANG_TOOLS_HASH c76293870b564c6a7968622b475b7646)
+ set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-project-${LLVM_VERSION}.tar.xz)
+ set(LLVM_HASH b4268e733dfe352960140dc07ef2efcb)
set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/openmp-${LLVM_VERSION}.src.tar.xz)
set(OPENMP_HASH 6eade16057edbdecb3c4eef9daa2bfcf)
@@ -151,9 +139,9 @@ set(TIFF_VERSION 4.1.0)
set(TIFF_URI http://download.osgeo.org/libtiff/tiff-${TIFF_VERSION}.tar.gz)
set(TIFF_HASH 2165e7aba557463acc0664e71a3ed424)
-set(OSL_VERSION 1.10.10)
+set(OSL_VERSION 1.11.10.0)
set(OSL_URI https://github.com/imageworks/OpenShadingLanguage/archive/Release-${OSL_VERSION}.tar.gz)
-set(OSL_HASH 00dec08a93c8084e53848b9ad047889f)
+set(OSL_HASH dfdc23597aeef083832cbada62211756)
set(PYTHON_VERSION 3.9.1)
set(PYTHON_SHORT_VERSION 3.9)
diff --git a/build_files/build_environment/patches/llvm.diff b/build_files/build_environment/patches/llvm.diff
index b797bb030ee..5f89816292b 100644
--- a/build_files/build_environment/patches/llvm.diff
+++ b/build_files/build_environment/patches/llvm.diff
@@ -1,5 +1,5 @@
---- a/lib/Support/Unix/Path.inc 2020-02-17 09:24:26.000000000 +0100
-+++ b/lib/Support/Unix/Path.inc 2020-02-17 09:26:25.000000000 +0100
+--- a/llvm/lib/Support/Unix/Path.inc 2020-02-17 09:24:26.000000000 +0100
++++ b/llvm/lib/Support/Unix/Path.inc 2020-02-17 09:26:25.000000000 +0100
@@ -1200,7 +1200,9 @@
/// implementation.
std::error_code copy_file(const Twine &From, const Twine &To) {
diff --git a/build_files/build_environment/patches/osl.diff b/build_files/build_environment/patches/osl.diff
index 989800174e2..badb6c0d9b3 100644
--- a/build_files/build_environment/patches/osl.diff
+++ b/build_files/build_environment/patches/osl.diff
@@ -43,27 +43,23 @@ diff -Naur OpenShadingLanguage-Release-1.9.9/src/liboslexec/llvm_util.cpp extern
-
+void LLVM_Util::Cleanup ()
+{
-+ jitmm_hold.clear();
++ if(jitmm_hold) jitmm_hold->clear();
+}
size_t
LLVM_Util::total_jit_memory_held ()
-diff -Naur OpenShadingLanguage-Release-1.9.9/CMakeLists.txt external_osl/CMakeLists.txt
- --- orig/CMakeLists.txt 2020-01-27 16:22:31 -0700
-+++ external_osl/CMakeLists.txt 2020-05-13 18:04:52 -0600
-@@ -102,10 +102,11 @@
- set (OPTIX_EXTRA_LIBS CACHE STRING "Extra lib targets needed for OptiX")
- set (CUDA_TARGET_ARCH "sm_35" CACHE STRING "CUDA GPU architecture (e.g. sm_35)")
-
--# set (USE_OIIO_STATIC ON CACHE BOOL "If OIIO is built static")
--# if (USE_OIIO_STATIC)
--# add_definitions ("-DOIIO_STATIC_BUILD=1")
--# endif ()
+diff -Naur org/CMakeLists.txt external_osl/CMakeLists.txt
+--- org/CMakeLists.txt 2020-12-01 12:37:15 -0700
++++ external_osl/CMakeLists.txt 2021-01-20 13:26:50 -0700
+@@ -84,6 +84,11 @@
+ CACHE STRING "Directory where OptiX PTX files will be installed")
+ set (CMAKE_DEBUG_POSTFIX "" CACHE STRING "Library naming postfix for Debug builds (e.g., '_debug')")
+
+set (USE_OIIO_STATIC ON CACHE BOOL "If OIIO is built static")
+if (USE_OIIO_STATIC)
+ add_definitions ("-DOIIO_STATIC_BUILD=1")
+ add_definitions ("-DOIIO_STATIC_DEFINE=1")
+endif ()
-
+
set (OSL_NO_DEFAULT_TEXTURESYSTEM OFF CACHE BOOL "Do not use create a raw OIIO::TextureSystem")
- if (OSL_NO_DEFAULT_TEXTURESYSTEM) \ No newline at end of file
+ if (OSL_NO_DEFAULT_TEXTURESYSTEM)
diff --git a/build_files/build_environment/windows/build_deps.cmd b/build_files/build_environment/windows/build_deps.cmd
index ea8bfdaa3d2..2552b74711f 100644
--- a/build_files/build_environment/windows/build_deps.cmd
+++ b/build_files/build_environment/windows/build_deps.cmd
@@ -117,7 +117,7 @@ set path=%BUILD_DIR%\downloads\mingw\mingw64\msys\1.0\bin\;%BUILD_DIR%\downloads
mkdir %STAGING%\%BuildDir%%ARCH%R
cd %Staging%\%BuildDir%%ARCH%R
echo %DATE% %TIME% : Start > %StatusFile%
-cmake -G "%CMAKE_BUILDER%" %SOURCE_DIR% -DDOWNLOAD_DIR=%BUILD_DIR%/downloads -DBUILD_MODE=Release -DHARVEST_TARGET=%HARVEST_DIR%/%HARVESTROOT%%VSVER_SHORT%/
+cmake -G "%CMAKE_BUILDER%" -Thost=x64 %SOURCE_DIR% -DDOWNLOAD_DIR=%BUILD_DIR%/downloads -DBUILD_MODE=Release -DHARVEST_TARGET=%HARVEST_DIR%/%HARVESTROOT%%VSVER_SHORT%/
echo %DATE% %TIME% : Release Configuration done >> %StatusFile%
if "%dobuild%" == "1" (
msbuild /m "ll.vcxproj" /p:Configuration=Release /fl /flp:logfile=BlenderDeps_llvm.log;Verbosity=normal
@@ -130,7 +130,7 @@ if "%NODEBUG%" == "1" goto exit
cd %BUILD_DIR%
mkdir %STAGING%\%BuildDir%%ARCH%D
cd %Staging%\%BuildDir%%ARCH%D
-cmake -G "%CMAKE_BUILDER%" %SOURCE_DIR% -DDOWNLOAD_DIR=%BUILD_DIR%/downloads -DCMAKE_BUILD_TYPE=Debug -DBUILD_MODE=Debug -DHARVEST_TARGET=%HARVEST_DIR%/%HARVESTROOT%%VSVER_SHORT%/ %CMAKE_DEBUG_OPTIONS%
+cmake -G "%CMAKE_BUILDER%" -Thost=x64 %SOURCE_DIR% -DDOWNLOAD_DIR=%BUILD_DIR%/downloads -DCMAKE_BUILD_TYPE=Debug -DBUILD_MODE=Debug -DHARVEST_TARGET=%HARVEST_DIR%/%HARVESTROOT%%VSVER_SHORT%/ %CMAKE_DEBUG_OPTIONS%
echo %DATE% %TIME% : Debug Configuration done >> %StatusFile%
if "%dobuild%" == "1" (
msbuild /m "ll.vcxproj" /p:Configuration=Debug /fl /flp:logfile=BlenderDeps_llvm.log;;Verbosity=normal
diff --git a/build_files/cmake/Modules/FindClang.cmake b/build_files/cmake/Modules/FindClang.cmake
new file mode 100644
index 00000000000..b5c2cfbc28d
--- /dev/null
+++ b/build_files/cmake/Modules/FindClang.cmake
@@ -0,0 +1,111 @@
+# - Find Clang library
+# Find the native Clang includes and library
+# This module defines
+# CLANG_INCLUDE_DIRS, where to find AST/AST.h, Set when
+# CLANG_INCLUDE_DIR is found.
+# CLANG_LIBRARIES, libraries to link against to use Clang.
+# CLANG_ROOT_DIR, The base directory to search for Clang.
+# This can also be an environment variable.
+# CLANG_FOUND, If false, do not try to use Clang.
+
+#=============================================================================
+# Copyright 2021 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD 3-Clause License,
+# see accompanying file BSD-3-Clause-license.txt for details.
+#=============================================================================
+
+# If CLANG_ROOT_DIR was defined in the environment, use it.
+if(NOT CLANG_ROOT_DIR AND NOT $ENV{CLANG_ROOT_DIR} STREQUAL "")
+ set(CLANG_ROOT_DIR $ENV{CLANG_ROOT_DIR})
+endif()
+
+set(_CLANG_SEARCH_DIRS
+ ${CLANG_ROOT_DIR}
+ /opt/lib/clang
+)
+
+find_path(CLANG_INCLUDE_DIR
+ NAMES
+ AST/AST.h
+ HINTS
+ ${_CLANG_SEARCH_DIRS}
+ PATH_SUFFIXES
+ include
+ include/clang
+)
+
+
+set(_CLANG_FIND_COMPONENTS
+ clangDependencyScanning
+ clangDynamicASTMatchers
+ clangFrontendTool
+ clangStaticAnalyzerFrontend
+ clangHandleCXX
+ clangStaticAnalyzerCheckers
+ clangStaticAnalyzerCore
+ clangToolingASTDiff
+ clangToolingRefactoring
+ clangToolingSyntax
+ clangARCMigrate
+ clangCodeGen
+ clangCrossTU
+ clangIndex
+ clangTooling
+ clangFormat
+ clangToolingInclusions
+ clangRewriteFrontend
+ clangFrontend
+ clangSerialization
+ clangDriver
+ clangToolingCore
+ clangParse
+ clangRewrite
+ clangSema
+ clangEdit
+ clangAnalysis
+ clangASTMatchers
+ clangAST
+ clangLex
+ clangBasic
+)
+
+set(_CLANG_LIBRARIES)
+foreach(COMPONENT ${_CLANG_FIND_COMPONENTS})
+ string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
+
+ find_library(CLANG_${UPPERCOMPONENT}_LIBRARY
+ NAMES
+ ${COMPONENT}
+ HINTS
+ ${_CLANG_SEARCH_DIRS}
+ PATH_SUFFIXES
+ lib64 lib
+ )
+ list(APPEND _CLANG_LIBRARIES "${CLANG_${UPPERCOMPONENT}_LIBRARY}")
+endforeach()
+
+
+# Handle the QUIETLY and REQUIRED arguments and set CLANG_FOUND to TRUE if
+# all listed variables are TRUE.
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Clang DEFAULT_MSG
+ _CLANG_LIBRARIES CLANG_INCLUDE_DIR)
+
+if(CLANG_FOUND)
+ set(CLANG_LIBRARIES ${_CLANG_LIBRARIES})
+ set(CLANG_INCLUDE_DIRS ${CLANG_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(
+ CLANG_INCLUDE_DIR
+)
+
+foreach(COMPONENT ${_CLANG_FIND_COMPONENTS})
+ string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
+ mark_as_advanced(CLANG_${UPPERCOMPONENT}_LIBRARY)
+endforeach()
+
+unset(_CLANG_SEARCH_DIRS)
+unset(_CLANG_FIND_COMPONENTS)
+unset(_CLANG_LIBRARIES)
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index e7b0097a137..31302bf1100 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -333,6 +333,13 @@ if(WITH_LLVM)
if(NOT LLVM_FOUND)
message(FATAL_ERROR "LLVM not found.")
endif()
+ if(WITH_CLANG)
+ find_package(Clang)
+ if(NOT CLANG_FOUND)
+ message(FATAL_ERROR "Clang not found.")
+ endif()
+ endif()
+
endif()
if(WITH_CYCLES_OSL)
diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index 5d3f074bdda..ef73ef40ac3 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -70,6 +70,7 @@ if(EXISTS ${LIBDIR})
set(BOOST_LIBRARYDIR ${LIBDIR}/boost/lib)
set(Boost_NO_SYSTEM_PATHS ON)
set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
+ set(CLANG_ROOT_DIR ${LIBDIR}/llvm)
endif()
if(WITH_STATIC_LIBS)
@@ -420,7 +421,9 @@ if(WITH_LLVM)
endif()
find_package_wrapper(LLVM)
-
+ if(WITH_CLANG)
+ find_package_wrapper(Clang)
+ endif()
# Symbol conflicts with same UTF library used by OpenCollada
if(EXISTS ${LIBDIR})
if(WITH_OPENCOLLADA AND (${LLVM_VERSION} VERSION_LESS "4.0.0"))
@@ -430,7 +433,13 @@ if(WITH_LLVM)
if(NOT LLVM_FOUND)
set(WITH_LLVM OFF)
+ set(WITH_CLANG OFF)
message(STATUS "LLVM not found")
+ else()
+ if(NOT CLANG_FOUND)
+ set(WITH_CLANG OFF)
+ message(STATUS "Clang not found")
+ endif()
endif()
endif()
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index e739e8ee5a2..e1cc1219249 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -672,6 +672,10 @@ endif()
if(WITH_CYCLES_OSL)
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
set(OSL_SHADER_DIR ${CYCLES_OSL}/shaders)
+ # Shaders have moved around a bit between OSL versions, check multiple locations
+ if(NOT EXISTS "${OSL_SHADER_DIR}")
+ set(OSL_SHADER_DIR ${CYCLES_OSL}/share/OSL/shaders)
+ endif()
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)