GPv3: Python API for frame, drawing and drawing attributes #124787

Merged
Falk David merged 22 commits from filedescriptor/blender:gpv3-drawing-python-api into main 2024-07-26 16:30:21 +02:00
3803 changed files with 158004 additions and 54040 deletions
Showing only changes of commit 84158e6cb5 - Show all commits

View File

@ -189,7 +189,7 @@ David Murmann <david@23x5.net>
David Vogel <Dadido3>
Daybreak <daybreak-2@noreply.localhost>
Deep Majumder <dmcoder>
Demeter Dzadik <Mets>
Demeter Dzadik <demeterdzadik@gmail.com>
Denis Kovacs <den.products@gmail.com>
Dennis Ranish <Codec>
DevinBayly <baylyd@email.arizona.edu>
@ -339,8 +339,8 @@ Johan Walles <walles>
Johannes J <johannesj@noreply.localhost>
Johannes Jakob <johjakob>
Johannes Meng <info@jmeng.de>
John Kiril Swenson <kirilswenson@gmail.com>
John Quillan <jquillan>
John Swenson <zeltuva@gmail.com>
Johnny Matthews <johnny.matthews@gmail.com>
Joilnen Leite <joilnen.leite@gmail.com>
Jonas Holzman <jonas@holzman.fr>
@ -432,6 +432,7 @@ Léo Depoix <PiloeGAO>
M.G. Kishalmi <lmg@kishalmi.net>
Maarten Gribnau <mail@maartengribnau.com>
Macelaru Tiberiu <ButcherTibi>
Mahid Sheikh <standingpad-animations@noreply.localhost>
Mai Lavelle <mai.lavelle@gmail.com>
Maikon Araujo <Nokiam>
Mal Duffin <malachyduffin@gmail.com>
@ -706,7 +707,7 @@ Victor-Louis De Gusseme <victorlouis>
Viktoriia Safiullina <safiuvik>
Ville Kivistö <vkivisto>
Vincent Blankfield <vvv>
Vitaljok <11552222+Vitaljok@users.noreply.github.com>
Vitalijs Komasilovs <vitalijs.komasilovs@gmail.com>
Vitor Boschi <vitorboschi@gmail.com>
Vuk Gardašević <lijenstina>
Wael El Oraiby <wael.eloraiby@gmail.com>

View File

@ -794,7 +794,7 @@ Enable multi-threading. TBB is also required for features such as Cycles, OpenVD
)
# TBB malloc is only supported on for windows currently
if(WIN32)
if(WIN32 AND NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
option(WITH_TBB_MALLOC_PROXY "Enable the TBB malloc replacement" ON)
endif()

View File

@ -96,15 +96,6 @@ Spell Checkers
Utilities
Not associated with building Blender.
* icons:
Updates PNG icons from SVG files.
Optionally pass in variables: 'BLENDER_BIN', 'INKSCAPE_BIN'
otherwise default paths are used.
Example
make icons INKSCAPE_BIN=/path/to/inkscape
* icons_geom:
Updates Geometry icons from BLEND file.
@ -565,11 +556,6 @@ source_archive_complete: .FORCE
# This assumes CMake is still using a default `PACKAGE_DIR` variable:
@$(PYTHON) ./build_files/utils/make_source_archive.py --include-packages "$(BUILD_DIR)/source_archive/packages"
icons: .FORCE
@BLENDER_BIN=$(BLENDER_BIN) "$(BLENDER_DIR)/release/datafiles/blender_icons_update.py"
"$(BLENDER_DIR)/release/datafiles/prvicons_update.py"
"$(BLENDER_DIR)/release/datafiles/alert_icons_update.py"
icons_geom: .FORCE
@BLENDER_BIN=$(BLENDER_BIN) \
"$(BLENDER_DIR)/release/datafiles/blender_icons_geom_update.py"

View File

@ -32,6 +32,7 @@ include(cmake/boost_build_options.cmake)
include(cmake/download.cmake)
include(cmake/macros.cmake)
include(cmake/check_compilers.cmake)
include(cmake/harvest.cmake)
if(ENABLE_MSYS2)
include(cmake/setup_msys2.cmake)
@ -176,6 +177,5 @@ include(cmake/shaderc_deps.cmake)
include(cmake/shaderc.cmake)
include(cmake/vulkan.cmake)
include(cmake/pybind11.cmake)
include(cmake/harvest.cmake)
include(cmake/deps_html.cmake)
include(cmake/cve_check.cmake)

View File

@ -50,6 +50,10 @@ if(WIN32)
DEPENDEES install
)
endif()
else()
harvest(external_alembic alembic/include alembic/include "*.h")
harvest(external_alembic alembic/lib/libAlembic.a alembic/lib/libAlembic.a)
harvest_rpath_bin(external_alembic alembic/bin alembic/bin "*")
endif()

View File

@ -43,3 +43,7 @@ ExternalProject_Add(external_aom
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install
INSTALL_DIR ${LIBDIR}/aom
)
if(NOT WIN32)
harvest(external_aom aom/lib ffmpeg/lib "*.a")
endif()

View File

@ -39,9 +39,14 @@ add_dependencies(
external_blosc
external_zlib
)
if(WIN32)
add_dependencies(
external_blosc
external_pthreads
)
endif()
if(APPLE)
harvest(external_blosc blosc/lib openvdb/lib "*.a")
endif()

View File

@ -115,3 +115,8 @@ add_dependencies(
external_python
external_numpy
)
if(NOT WIN32)
harvest(external_boost boost/include boost/include "*")
harvest_rpath_lib(external_boost boost/lib boost/lib "*${SHAREDLIBEXT}*")
endif()

View File

@ -19,18 +19,23 @@ ExternalProject_Add(external_brotli
INSTALL_DIR ${LIBDIR}/brotli
)
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_brotli after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/brotli/include
${HARVEST_TARGET}/brotli/include
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/brotli/lib/brotlidec-static${LIBEXT}
${HARVEST_TARGET}/brotli/lib/brotlidec-static${LIBEXT}
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/brotli/lib/brotlicommon-static${LIBEXT}
${HARVEST_TARGET}/brotli/lib/brotlicommon-static${LIBEXT}
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_brotli after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/brotli/include
${HARVEST_TARGET}/brotli/include
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/brotli/lib/brotlidec-static${LIBEXT}
${HARVEST_TARGET}/brotli/lib/brotlidec-static${LIBEXT}
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/brotli/lib/brotlicommon-static${LIBEXT}
${HARVEST_TARGET}/brotli/lib/brotlicommon-static${LIBEXT}
DEPENDEES install
)
DEPENDEES install
)
endif()
else()
harvest(external_brotli brotli/include brotli/include "*.h")
harvest(external_brotli brotli/lib brotli/lib "*.a")
endif()

View File

@ -127,20 +127,29 @@ add_dependencies(
external_unifiedmemoryframework
)
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_dpcpp after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/dpcpp ${HARVEST_TARGET}/dpcpp
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/clang-cl.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/clang-cpp.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/clang.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/ld.lld.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/ld64.lld.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/lld.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/lld-link.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/wasm-ld.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/pi_unified_runtime.dll
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/ur_adapter_level_zero.dll
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/ur_loader.dll
DEPENDEES install
)
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_dpcpp after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/dpcpp ${HARVEST_TARGET}/dpcpp
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/clang-cl.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/clang-cpp.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/clang.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/ld.lld.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/ld64.lld.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/lld.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/lld-link.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/wasm-ld.exe
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/pi_unified_runtime.dll
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/ur_adapter_level_zero.dll
COMMAND ${CMAKE_COMMAND} -E rm -f ${HARVEST_TARGET}/dpcpp/bin/ur_loader.dll
DEPENDEES install
)
endif()
else()
harvest(external_dpcpp dpcpp/bin dpcpp/bin "*")
harvest(external_dpcpp dpcpp/include dpcpp/include "*")
harvest(external_dpcpp dpcpp/lib dpcpp/lib "libsycl*")
# avoid harvesting libpi_unified_runtime and libur_ as they're optional.
harvest(external_dpcpp dpcpp/lib dpcpp/lib "libpi_level_zero*")
harvest(external_dpcpp dpcpp/lib/clang dpcpp/lib/clang "*")
endif()

View File

@ -145,4 +145,8 @@ if(WIN32)
DEPENDEES install
)
endif()
else()
harvest(external_embree embree/include embree/include "*.h")
harvest(external_embree embree/lib embree/lib "*.a")
harvest_rpath_lib(external_embree embree/lib embree/lib "*${SHAREDLIBEXT}*")
endif()

View File

@ -30,23 +30,28 @@ ExternalProject_Add(external_epoxy
INSTALL_COMMAND ninja install
)
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_epoxy after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/epoxy/include
${HARVEST_TARGET}/epoxy/include
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/epoxy/bin/epoxy-0.dll
${HARVEST_TARGET}/epoxy/bin/epoxy-0.dll
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/epoxy/lib/epoxy.lib
${HARVEST_TARGET}/epoxy/lib/epoxy.lib
DEPENDEES install
)
endif()
add_dependencies(
external_epoxy
# Needed for `MESON`.
external_python_site_packages
)
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_epoxy after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/epoxy/include
${HARVEST_TARGET}/epoxy/include
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/epoxy/bin/epoxy-0.dll
${HARVEST_TARGET}/epoxy/bin/epoxy-0.dll
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/epoxy/lib/epoxy.lib
${HARVEST_TARGET}/epoxy/lib/epoxy.lib
DEPENDEES install
)
endif()
else()
harvest(external_epoxy epoxy/include epoxy/include "*.h")
harvest(external_epoxy epoxy/lib epoxy/lib "*.a")
endif()

View File

@ -260,15 +260,20 @@ if(UNIX)
)
endif()
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_ffmpeg after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/ffmpeg/include
${HARVEST_TARGET}/ffmpeg/include
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/ffmpeg/bin
${HARVEST_TARGET}/ffmpeg/lib
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_ffmpeg after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/ffmpeg/include
${HARVEST_TARGET}/ffmpeg/include
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/ffmpeg/bin
${HARVEST_TARGET}/ffmpeg/lib
DEPENDEES install
)
DEPENDEES install
)
endif()
else()
harvest(external_ffmpeg ffmpeg/include ffmpeg/include "*.h")
harvest(external_ffmpeg ffmpeg/lib ffmpeg/lib "*.a")
endif()

View File

@ -55,7 +55,7 @@ endmacro()
fftw_build(double)
fftw_build(float --enable-float)
if(MSVC)
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_fftw3_double after_install
COMMAND ${CMAKE_COMMAND} -E copy
@ -79,5 +79,13 @@ if(MSVC)
DEPENDEES install
)
endif()
else()
add_custom_target(external_fftw)
add_dependencies(
external_fftw
external_fftw3_double
external_fftw3_float)
harvest(external_fftw3 fftw3/include fftw3/include "*.h")
harvest(external_fftw3 fftw3/lib fftw3/lib "*.a")
endif()

View File

@ -23,6 +23,8 @@ if(NOT WIN32)
INSTALL_DIR ${LIBDIR}/flac
)
harvest(external_flac flac/lib sndfile/lib "libFLAC.a")
else()
set(FLAC_CXX_FLAGS "-DFLAC__NO_DLL=ON")
@ -52,9 +54,7 @@ else()
INSTALL_DIR ${LIBDIR}/flac
)
endif()
if(MSVC)
add_dependencies(
external_flac
external_ogg

View File

@ -36,7 +36,8 @@ add_dependencies(
external_zlib
)
if(BUILD_MODE STREQUAL Release AND WIN32)
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_freetype after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/freetype
@ -50,4 +51,8 @@ if(BUILD_MODE STREQUAL Release AND WIN32)
DEPENDEES install
)
endif()
else()
harvest(external_freetype freetype/include freetype/include "*.h")
harvest(external_freetype freetype/lib/libfreetype2ST.a freetype/lib/libfreetype.a)
endif()

View File

@ -12,7 +12,7 @@ ExternalProject_Add(external_fribidi
DOWNLOAD_DIR ${DOWNLOAD_DIR}
PREFIX ${BUILD_DIR}/fribidi
CONFIGURE_COMMAND
CONFIGURE_COMMAND ${CONFIGURE_ENV} &&
${MESON} setup
--prefix ${LIBDIR}/fribidi
${MESON_BUILD_TYPE}
@ -34,15 +34,20 @@ add_dependencies(
external_python_site_packages
)
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_fribidi after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/fribidi/include
${HARVEST_TARGET}/fribidi/include
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/fribidi/lib/libfribidi.a
${HARVEST_TARGET}/fribidi/lib/libfribidi.lib
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_fribidi after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/fribidi/include
${HARVEST_TARGET}/fribidi/include
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/fribidi/lib/libfribidi.a
${HARVEST_TARGET}/fribidi/lib/libfribidi.lib
DEPENDEES install
)
DEPENDEES install
)
endif()
else()
harvest(external_fribidi fribidi/include fribidi/include "*.h")
harvest(external_fribidi fribidi/lib fribidi/lib "*.a")
endif()

View File

@ -160,5 +160,7 @@ if(WIN32)
DEPENDEES install
)
else()
harvest(external_gmp gmp/include gmp/include "*.h")
harvest(external_gmp gmp/lib gmp/lib "*.a")
endif()

View File

@ -53,24 +53,29 @@ add_dependencies(
external_python_site_packages
)
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_harfbuzz after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/harfbuzz/include
${HARVEST_TARGET}/harfbuzz/include
# We do not use the subset API currently, so copying only the main library will suffice for now
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/harfbuzz/lib/libharfbuzz.a
${HARVEST_TARGET}/harfbuzz/lib/libharfbuzz.lib
DEPENDEES install
)
endif()
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_harfbuzz after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/harfbuzz/include
${HARVEST_TARGET}/harfbuzz/include
# We do not use the subset API currently, so copying only the main library will suffice for now
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/harfbuzz/lib/libharfbuzz.a
${HARVEST_TARGET}/harfbuzz/lib/libharfbuzz.lib
DEPENDEES install
)
endif()
if(BUILD_MODE STREQUAL Debug AND WIN32)
ExternalProject_Add_Step(external_harfbuzz after_install
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/harfbuzz/lib/libharfbuzz.a
${HARVEST_TARGET}/harfbuzz/lib/libharfbuzz_d.lib
DEPENDEES install
)
if(BUILD_MODE STREQUAL Debug)
ExternalProject_Add_Step(external_harfbuzz after_install
COMMAND ${CMAKE_COMMAND} -E copy
${LIBDIR}/harfbuzz/lib/libharfbuzz.a
${HARVEST_TARGET}/harfbuzz/lib/libharfbuzz_d.lib
DEPENDEES install
)
endif()
else()
harvest(external_harfbuzz harfbuzz/include harfbuzz/include "*.h")
harvest(external_harfbuzz harfbuzz/lib harfbuzz/lib "*.a")
endif()

View File

@ -39,4 +39,7 @@ if(WIN32)
DEPENDEES install
)
endif()
else()
harvest(external_haru haru/include haru/include "*.h")
harvest(external_haru haru/lib haru/lib "*.a")
endif()

View File

@ -35,7 +35,7 @@ if(WIN32)
else()
function(harvest from to)
function(harvest project from to)
set(pattern "")
foreach(f ${ARGN})
set(pattern ${f})
@ -78,26 +78,22 @@ else()
set(set_rpath_cmd patchelf --set-rpath $ORIGIN)
endif()
function(harvest_rpath_lib from to pattern)
harvest(${from} ${to} ${pattern})
function(harvest_rpath_lib project from to pattern)
harvest(project ${from} ${to} ${pattern})
install(CODE "\
cmake_policy(SET CMP0009 NEW)\n
file(GLOB_RECURSE shared_libs ${HARVEST_TARGET}/${to}/${pattern}) \n
foreach(f \${shared_libs}) \n
if(IS_SYMLINK \${f})\n
if(APPLE)\n
file(REMOVE_RECURSE \${f})
endif()\n
else()\n
if((NOT IS_SYMLINK \${f}) OR APPLE)\n
execute_process(COMMAND ${set_rpath_cmd} \${f}) \n
endif()\n
endforeach()")
endfunction()
# Set rpath on utility binaries assuming they are run from their install location.
function(harvest_rpath_bin from to pattern)
harvest(${from} ${to} ${pattern})
function(harvest_rpath_bin project from to pattern)
harvest(project ${from} ${to} ${pattern})
install(CODE "\
file(GLOB_RECURSE shared_libs ${HARVEST_TARGET}/${to}/${pattern}) \n
@ -108,8 +104,8 @@ else()
# Set rpath on Python module to point to the shared libraries folder in the Blender
# installation.
function(harvest_rpath_python from to pattern)
harvest(${from} ${to} ${pattern})
function(harvest_rpath_python project from to pattern)
harvest(project ${from} ${to} ${pattern})
install(CODE "\
file(GLOB_RECURSE shared_libs ${HARVEST_TARGET}/${to}/${pattern}\.so*) \n
@ -125,209 +121,4 @@ else()
endif()\n
endforeach()")
endfunction()
harvest(alembic/include alembic/include "*.h")
harvest(alembic/lib/libAlembic.a alembic/lib/libAlembic.a)
harvest_rpath_bin(alembic/bin alembic/bin "*")
harvest(brotli/include brotli/include "*.h")
harvest(brotli/lib brotli/lib "*.a")
harvest(boost/include boost/include "*")
harvest_rpath_lib(boost/lib boost/lib "*${SHAREDLIBEXT}*")
harvest(imath/include imath/include "*.h")
harvest_rpath_lib(imath/lib imath/lib "*${SHAREDLIBEXT}*")
harvest(ffmpeg/include ffmpeg/include "*.h")
harvest(ffmpeg/lib ffmpeg/lib "*.a")
harvest(fftw3/include fftw3/include "*.h")
harvest(fftw3/lib fftw3/lib "*.a")
harvest(flac/lib sndfile/lib "libFLAC.a")
harvest(freetype/include freetype/include "*.h")
harvest(freetype/lib/libfreetype2ST.a freetype/lib/libfreetype.a)
harvest(fribidi/include fribidi/include "*.h")
harvest(fribidi/lib fribidi/lib "*.a")
harvest(epoxy/include epoxy/include "*.h")
harvest(epoxy/lib epoxy/lib "*.a")
harvest(gmp/include gmp/include "*.h")
harvest(gmp/lib gmp/lib "*.a")
harvest(harfbuzz/include harfbuzz/include "*.h")
harvest(harfbuzz/lib harfbuzz/lib "*.a")
harvest(jemalloc/include jemalloc/include "*.h")
harvest(jemalloc/lib jemalloc/lib "*.a")
harvest(jpeg/include jpeg/include "*.h")
harvest(jpeg/lib jpeg/lib "libjpeg.a")
harvest(lame/lib ffmpeg/lib "*.a")
if(NOT APPLE)
harvest(level-zero/include/level_zero level-zero/include/level_zero "*.h")
harvest(level-zero/lib level-zero/lib "*${SHAREDLIBEXT}*")
endif()
harvest(llvm/bin llvm/bin "clang-format")
if(BUILD_CLANG_TOOLS)
harvest(llvm/bin llvm/bin "clang-tidy")
harvest(llvm/share/clang llvm/share "run-clang-tidy.py")
endif()
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")
harvest(llvm/lib/clang llvm/lib/clang "*.h")
if(APPLE)
harvest(openmp/lib openmp/lib "libomp.dylib")
harvest(openmp/include openmp/include "*.h")
endif()
if(BLENDER_PLATFORM_ARM)
harvest(sse2neon sse2neon "*.h")
endif()
harvest(ogg/lib ffmpeg/lib "*.a")
harvest(openal/include openal/include "*.h")
if(UNIX AND NOT APPLE)
harvest(openal/lib openal/lib "*.a")
harvest(zlib/include zlib/include "*.h")
harvest(zlib/lib zlib/lib "*.a")
harvest(xml2/include xml2/include "*.h")
harvest(xml2/lib xml2/lib "*.a")
harvest(
wayland-protocols/share/wayland-protocols
wayland-protocols/share/wayland-protocols/
"*.xml"
)
harvest(wayland/bin wayland/bin "wayland-scanner")
harvest(wayland/include wayland/include "*.h")
harvest(wayland_libdecor/include wayland_libdecor/include "*.h")
# Only needed for running the WESTON compositor.
harvest(wayland/lib64 wayland/lib64 "*")
harvest(
wayland_weston/
wayland_weston/
"*"
)
else()
harvest(blosc/lib openvdb/lib "*.a")
harvest(xml2/lib opencollada/lib "*.a")
endif()
harvest(opencollada/include/opencollada opencollada/include "*.h")
harvest(opencollada/lib/opencollada opencollada/lib "*.a")
harvest(opencolorio/include opencolorio/include "*.h")
harvest_rpath_lib(opencolorio/lib opencolorio/lib "*${SHAREDLIBEXT}*")
harvest_rpath_python(
opencolorio/lib/python${PYTHON_SHORT_VERSION}
python/lib/python${PYTHON_SHORT_VERSION}
"*"
)
harvest(openexr/include openexr/include "*.h")
harvest_rpath_lib(openexr/lib openexr/lib "*${SHAREDLIBEXT}*")
harvest_rpath_bin(openimageio/bin openimageio/bin "idiff")
harvest_rpath_bin(openimageio/bin openimageio/bin "maketx")
harvest_rpath_bin(openimageio/bin openimageio/bin "oiiotool")
harvest(openimageio/include openimageio/include "*")
harvest_rpath_lib(openimageio/lib openimageio/lib "*${SHAREDLIBEXT}*")
harvest_rpath_python(
openimageio/lib/python${PYTHON_SHORT_VERSION}
python/lib/python${PYTHON_SHORT_VERSION}
"*"
)
harvest(openimagedenoise/include openimagedenoise/include "*")
harvest_rpath_lib(openimagedenoise/lib openimagedenoise/lib "*${SHAREDLIBEXT}*")
harvest(openimagedenoise/lib/cmake/OpenImageDenoise-${OIDN_VERSION} openimagedenoise/lib/cmake/OpenImageDenoise "*.cmake")
harvest(embree/include embree/include "*.h")
harvest(embree/lib embree/lib "*.a")
harvest_rpath_lib(embree/lib embree/lib "*${SHAREDLIBEXT}*")
harvest(openpgl/include openpgl/include "*.h")
harvest(openpgl/lib openpgl/lib "*.a")
harvest(openpgl/lib/cmake/openpgl-${OPENPGL_SHORT_VERSION} openpgl/lib/cmake/openpgl "*.cmake")
harvest(openjpeg/include/openjpeg-${OPENJPEG_SHORT_VERSION} openjpeg/include "*.h")
harvest(openjpeg/lib openjpeg/lib "*.a")
harvest(opensubdiv/include opensubdiv/include "*.h")
harvest_rpath_lib(opensubdiv/lib opensubdiv/lib "*${SHAREDLIBEXT}*")
harvest(openvdb/include/openvdb openvdb/include/openvdb "*.h")
harvest(openvdb/include/nanovdb openvdb/include/nanovdb "*.h")
harvest_rpath_lib(openvdb/lib openvdb/lib "*${SHAREDLIBEXT}*")
harvest_rpath_python(
openvdb/lib/python${PYTHON_SHORT_VERSION}
python/lib/python${PYTHON_SHORT_VERSION}
"*pyopenvdb*"
)
harvest(xr_openxr_sdk/include/openxr xr_openxr_sdk/include/openxr "*.h")
harvest(xr_openxr_sdk/lib xr_openxr_sdk/lib "*.a")
harvest_rpath_bin(osl/bin osl/bin "oslc")
harvest(osl/include osl/include "*.h")
harvest_rpath_lib(osl/lib osl/lib "*${SHAREDLIBEXT}*")
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")
harvest(pugixml/lib pugixml/lib "*.a")
harvest(python/bin python/bin "python${PYTHON_SHORT_VERSION}")
harvest(python/include python/include "*h")
harvest(python/lib python/lib "*")
harvest(sdl/include/SDL2 sdl/include "*.h")
harvest(sdl/lib sdl/lib "libSDL2.a")
harvest(sndfile/include sndfile/include "*.h")
harvest(sndfile/lib sndfile/lib "*.a")
harvest(spnav/include spnav/include "*.h")
harvest(spnav/lib spnav/lib "*.a")
harvest(tbb/include tbb/include "*.h")
harvest_rpath_lib(tbb/lib tbb/lib "libtbb${SHAREDLIBEXT}*")
harvest(theora/lib ffmpeg/lib "*.a")
harvest(tiff/include tiff/include "*.h")
harvest(tiff/lib tiff/lib "*.a")
harvest(vorbis/lib ffmpeg/lib "*.a")
harvest(opus/lib ffmpeg/lib "*.a")
harvest(vpx/lib ffmpeg/lib "*.a")
harvest(x264/lib ffmpeg/lib "*.a")
harvest(x265/lib ffmpeg/lib "*.a")
harvest(aom/lib ffmpeg/lib "*.a")
harvest(webp/lib webp/lib "*.a")
harvest(webp/include webp/include "*.h")
harvest(usd/include usd/include "*.h")
harvest(usd/include usd/include "*.hpp")
harvest_rpath_lib(usd/lib usd/lib "libusd_ms${SHAREDLIBEXT}")
harvest(usd/lib/usd usd/lib/usd "*")
harvest_rpath_python(
usd/lib/python/pxr
python/lib/python${PYTHON_SHORT_VERSION}/site-packages/pxr
"*"
)
harvest(usd/plugin usd/plugin "*")
harvest(materialx/include materialx/include "*.h")
harvest_rpath_lib(materialx/lib materialx/lib "*${SHAREDLIBEXT}*")
harvest(materialx/libraries materialx/libraries "*")
harvest(materialx/lib/cmake/MaterialX materialx/lib/cmake/MaterialX "*.cmake")
harvest_rpath_python(
materialx/python/MaterialX
python/lib/python${PYTHON_SHORT_VERSION}/site-packages/MaterialX
"*"
)
# We do not need anything from the resources folder, but the MaterialX config
# file will complain if the folder does not exist, so just copy the readme.md
# files to ensure the folder will exist.
harvest(materialx/resources materialx/resources "README.md")
harvest(potrace/include potrace/include "*.h")
harvest(potrace/lib potrace/lib "*.a")
harvest(haru/include haru/include "*.h")
harvest(haru/lib haru/lib "*.a")
harvest(zstd/include zstd/include "*.h")
harvest(zstd/lib zstd/lib "*.a")
harvest(shaderc shaderc "*")
harvest(vulkan_headers vulkan "*")
harvest_rpath_lib(vulkan_loader/lib vulkan/lib "*${SHAREDLIBEXT}*")
if(APPLE)
harvest(vulkan_loader/loader vulkan/loader "*")
endif()
if(UNIX AND NOT APPLE)
harvest(libglu/lib mesa/lib "*${SHAREDLIBEXT}*")
harvest(mesa/lib64 mesa/lib "*${SHAREDLIBEXT}*")
harvest(dpcpp/bin dpcpp/bin "*")
harvest(dpcpp/include dpcpp/include "*")
harvest(dpcpp/lib dpcpp/lib "libsycl*")
# avoid harvesting libpi_unified_runtime and libur_ as they're optional.
harvest(dpcpp/lib dpcpp/lib "libpi_level_zero*")
harvest(dpcpp/lib/clang dpcpp/lib/clang "*")
harvest(igc dpcpp/lib/igc "*")
harvest(ocloc dpcpp/lib/ocloc "*")
endif()
endif()

View File

@ -92,12 +92,10 @@ set(IGC_EXTRA_ARGS
-DIGC_OPTION__ARCHITECTURE_HOST=${IGC_TARGET}
)
if(UNIX AND NOT APPLE)
list(APPEND IGC_EXTRA_ARGS
-DFLEX_EXECUTABLE=${LIBDIR}/flex/bin/flex
-DFLEX_INCLUDE_DIR=${LIBDIR}/flex/include
)
endif()
list(APPEND IGC_EXTRA_ARGS
-DFLEX_EXECUTABLE=${LIBDIR}/flex/bin/flex
-DFLEX_INCLUDE_DIR=${LIBDIR}/flex/include
)
ExternalProject_Add(external_igc
URL file://${PACKAGE_DIR}/${IGC_FILE}
@ -148,11 +146,7 @@ add_dependencies(
external_igc_spirv_headers
external_igc_spirv_tools
external_igc_spirv_translator
external_flex
)
if(UNIX AND NOT APPLE)
add_dependencies(
external_igc
external_flex
)
endif()
harvest(external_igc igc dpcpp/lib/igc "*")

View File

@ -41,4 +41,7 @@ if(WIN32)
DEPENDEES install
)
else()
harvest(external_imath imath/include imath/include "*.h")
harvest_rpath_lib(external_imath imath/lib imath/lib "*${SHAREDLIBEXT}*")
endif()

View File

@ -22,3 +22,6 @@ ExternalProject_Add(external_jemalloc
INSTALL_DIR ${LIBDIR}/jemalloc
)
harvest(external_jemalloc jemalloc/include jemalloc/include "*.h")
harvest(external_jemalloc jemalloc/lib jemalloc/lib "*.a")

View File

@ -61,4 +61,7 @@ else()
)
set(JPEG_LIBRARY libjpeg${LIBEXT})
harvest(external_jpeg jpeg/include jpeg/include "*.h")
harvest(external_jpeg jpeg/lib jpeg/lib "libjpeg.a")
endif()

View File

@ -65,3 +65,7 @@ ExternalProject_Add(external_lame
INSTALL_COMMAND ${LAME_INSTALL}
INSTALL_DIR ${LIBDIR}/lame
)
if(NOT WIN32)
harvest(external_lame lame/lib ffmpeg/lib "*.a")
endif()

View File

@ -23,11 +23,16 @@ ExternalProject_Add(external_level-zero
INSTALL_DIR ${LIBDIR}/level-zero
)
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_level-zero after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/level-zero
${HARVEST_TARGET}/level-zero
DEPENDEES install
)
if(WIN32)
if(BUILD_MODE STREQUAL Release)
ExternalProject_Add_Step(external_level-zero after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/level-zero
${HARVEST_TARGET}/level-zero
DEPENDEES install
)
endif()
else()
harvest(external_level-zero level-zero/include/level_zero level-zero/include/level_zero "*.h")
harvest(external_level-zero level-zero/lib level-zero/lib "*${SHAREDLIBEXT}*")
endif()

View File

@ -73,7 +73,7 @@ ExternalProject_Add(ll
INSTALL_DIR ${LIBDIR}/llvm
)
if(MSVC)
if(WIN32)
if(BUILD_MODE STREQUAL Release)
set(LLVM_HARVEST_COMMAND
${CMAKE_COMMAND} -E copy_directory
@ -100,6 +100,17 @@ if(MSVC)
COMMAND ${LLVM_HARVEST_COMMAND}
DEPENDEES mkdir update patch download configure build install
)
else()
harvest(ll llvm/bin llvm/bin "clang-format")
if(BUILD_CLANG_TOOLS)
harvest(ll llvm/bin llvm/bin "clang-tidy")
harvest(ll llvm/share/clang llvm/share "run-clang-tidy.py")
endif()
harvest(ll llvm/include llvm/include "*")
harvest(ll llvm/bin llvm/bin "llvm-config")
harvest(ll llvm/lib llvm/lib "libLLVM*.a")
harvest(ll llvm/lib llvm/lib "libclang*.a")
harvest(ll llvm/lib/clang llvm/lib/clang "*.h")
endif()
# We currently do not build libxml2 on Windows.

View File

@ -84,6 +84,21 @@ if(WIN32)
endif()
unset(MATERIALX_PYTHON_TARGET)
unset(MATERIALX_PYTHON_TARGET_DOS)
else()
harvest(external_materialx materialx/include materialx/include "*.h")
# CMake files first because harvest_rpath_lib edits them.
harvest(external_materialx materialx/lib/cmake/MaterialX materialx/lib/cmake/MaterialX "*.cmake")
harvest_rpath_lib(external_materialx materialx/lib materialx/lib "*${SHAREDLIBEXT}*")
harvest(external_materialx materialx/libraries materialx/libraries "*")
harvest_rpath_python(external_materialx
materialx/python/MaterialX
python/lib/python${PYTHON_SHORT_VERSION}/site-packages/MaterialX
"*"
)
# We do not need anything from the resources folder, but the MaterialX config
# file will complain if the folder does not exist, so just copy the readme.md
# files to ensure the folder will exist.
harvest(external_materialx materialx/resources materialx/resources "README.md")
endif()
add_dependencies(

View File

@ -73,3 +73,6 @@ add_dependencies(
# Needed for `MESON`.
external_python_site_packages
)
harvest(external_mesa libglu/lib mesa/lib "*${SHAREDLIBEXT}*")
harvest(external_mesa mesa/lib64 mesa/lib "*${SHAREDLIBEXT}*")

View File

@ -33,3 +33,5 @@ add_dependencies(
external_igc
external_gmmlib
)
harvest(external_ocloc ocloc dpcpp/lib/ocloc "*")

View File

@ -14,3 +14,7 @@ ExternalProject_Add(external_ogg
INSTALL_DIR ${LIBDIR}/ogg
)
if(NOT WIN32)
harvest(external_ogg ogg/lib ffmpeg/lib "*.a")
endif()