[Bf-blender-cvs] [4fb0c83c1c8] master: Cmake/deps: Update OSL to 1.11.10.0
Ray Molenkamp
noreply at git.blender.org
Wed Feb 24 15:13:42 CET 2021
Commit: 4fb0c83c1c8529b61d38d8a409caf58d05a53bd9
Author: Ray Molenkamp
Date: Wed Feb 24 07:13:37 2021 -0700
Branches: master
https://developer.blender.org/rB4fb0c83c1c8529b61d38d8a409caf58d05a53bd9
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
===================================================================
M CMakeLists.txt
M build_files/build_environment/CMakeLists.txt
D build_files/build_environment/cmake/clang.cmake
M build_files/build_environment/cmake/harvest.cmake
M build_files/build_environment/cmake/ispc.cmake
M build_files/build_environment/cmake/llvm.cmake
M build_files/build_environment/cmake/openmp.cmake
M build_files/build_environment/cmake/osl.cmake
M build_files/build_environment/cmake/versions.cmake
M build_files/build_environment/patches/llvm.diff
M build_files/build_environment/patches/osl.diff
M build_files/build_environment/windows/build_deps.cmd
A build_files/cmake/Modules/FindClang.cmake
M build_files/cmake/platform/platform_apple.cmake
M build_files/cmake/platform/platform_unix.cmake
M build_files/cmake/platform/platform_win32.cmake
M intern/cycles/kernel/osl/CMakeLists.txt
M source/creator/blender.map
M source/creator/osx_locals.map
===================================================================
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c95b8f0f7af..5b8d68a60f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -416,6 +416,7 @@ else()
option(LLVM_STATIC "Link with LLVM static libraries" OFF)
endif()
mark_as_advanced(LLVM_STATIC)
+option(WITH_CLANG "Use Clang" OFF)
# disable for now, but plan to support on all platforms eventually
option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" ON)
@@ -742,6 +743,7 @@ if(WITH_CYCLES)
# auto enable llvm for cycles_osl
if(WITH_CYCLES_OSL)
set(WITH_LLVM ON CACHE BOOL "" FORCE)
+ set(WITH_CLANG ON CACHE BOOL "" FORCE)
endif()
else()
set(WITH_CYCLES_OSL OFF)
@@ -1881,6 +1883,7 @@ if(FIRST_RUN)
info_cfg_text("Build Options:")
info_cfg_option(WITH_ALEMBIC)
info_cfg_option(WITH_BULLET)
+ info_cfg_option(WITH_CLANG)
info_cfg_option(WITH_CYCLES)
info_cfg_option(WITH_FFTW3)
info_cfg_option(WITH_FREESTYLE)
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}/o
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list