[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