From f8e78b82366db407c2e0776815a8ad93595edb07 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 2 Jul 2024 16:49:22 +0200 Subject: [PATCH] Refactor: Move Linux/macOS harvest to individual files More closely matching Windows and easier to update. Pull Request: https://projects.blender.org/blender/blender/pulls/123196 --- build_files/build_environment/CMakeLists.txt | 2 +- .../build_environment/cmake/alembic.cmake | 4 + build_files/build_environment/cmake/aom.cmake | 4 + .../build_environment/cmake/blosc.cmake | 5 + .../build_environment/cmake/boost.cmake | 5 + .../build_environment/cmake/brotli.cmake | 31 +-- .../build_environment/cmake/dpcpp.cmake | 41 ++-- .../build_environment/cmake/embree.cmake | 4 + .../build_environment/cmake/epoxy.cmake | 35 +-- .../build_environment/cmake/ffmpeg.cmake | 25 +- .../build_environment/cmake/fftw.cmake | 10 +- .../build_environment/cmake/flac.cmake | 4 +- .../build_environment/cmake/freetype.cmake | 7 +- .../build_environment/cmake/fribidi.cmake | 25 +- build_files/build_environment/cmake/gmp.cmake | 4 +- .../build_environment/cmake/harfbuzz.cmake | 43 ++-- .../build_environment/cmake/haru.cmake | 3 + .../build_environment/cmake/harvest.cmake | 219 +----------------- build_files/build_environment/cmake/igc.cmake | 18 +- .../build_environment/cmake/imath.cmake | 3 + .../build_environment/cmake/jemalloc.cmake | 3 + .../build_environment/cmake/jpeg.cmake | 3 + .../build_environment/cmake/lame.cmake | 4 + .../build_environment/cmake/level-zero.cmake | 19 +- .../build_environment/cmake/llvm.cmake | 13 +- .../build_environment/cmake/materialx.cmake | 15 ++ .../build_environment/cmake/mesa.cmake | 3 + .../build_environment/cmake/ocloc.cmake | 2 + build_files/build_environment/cmake/ogg.cmake | 4 + .../build_environment/cmake/openal.cmake | 6 +- .../build_environment/cmake/opencollada.cmake | 3 + .../build_environment/cmake/opencolorio.cmake | 9 + .../build_environment/cmake/openexr.cmake | 3 + .../cmake/openimagedenoise.cmake | 8 +- .../build_environment/cmake/openimageio.cmake | 11 + .../build_environment/cmake/openjpeg.cmake | 3 + .../build_environment/cmake/openmp.cmake | 5 + .../build_environment/cmake/openpgl.cmake | 4 + .../build_environment/cmake/opensubdiv.cmake | 3 + .../build_environment/cmake/openvdb.cmake | 10 + .../build_environment/cmake/opus.cmake | 2 + build_files/build_environment/cmake/osl.cmake | 5 + build_files/build_environment/cmake/png.cmake | 45 ++-- .../build_environment/cmake/potrace.cmake | 3 + .../build_environment/cmake/pugixml.cmake | 3 + .../build_environment/cmake/python.cmake | 4 + build_files/build_environment/cmake/sdl.cmake | 31 +-- .../build_environment/cmake/shaderc.cmake | 2 + .../build_environment/cmake/sndfile.cmake | 31 +-- .../build_environment/cmake/spnav.cmake | 5 + .../build_environment/cmake/sse2neon.cmake | 14 +- build_files/build_environment/cmake/tbb.cmake | 3 + .../build_environment/cmake/theora.cmake | 2 + .../build_environment/cmake/tiff.cmake | 4 + build_files/build_environment/cmake/usd.cmake | 12 + .../build_environment/cmake/vorbis.cmake | 4 + build_files/build_environment/cmake/vpx.cmake | 4 +- .../build_environment/cmake/vulkan.cmake | 10 +- .../build_environment/cmake/wayland.cmake | 5 + .../cmake/wayland_libdecor.cmake | 2 + .../cmake/wayland_protocols.cmake | 7 + .../cmake/wayland_weston.cmake | 2 + .../build_environment/cmake/webp.cmake | 3 + .../build_environment/cmake/x264.cmake | 8 +- .../build_environment/cmake/x265.cmake | 2 + .../build_environment/cmake/xml2.cmake | 9 + .../build_environment/cmake/xr_openxr.cmake | 3 + .../build_environment/cmake/zlib.cmake | 5 + .../build_environment/cmake/zstd.cmake | 3 + 69 files changed, 476 insertions(+), 380 deletions(-) diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index f924448c78e..be3c1dccdbd 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -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) diff --git a/build_files/build_environment/cmake/alembic.cmake b/build_files/build_environment/cmake/alembic.cmake index 42241c3ce9a..2a6cb7630f6 100644 --- a/build_files/build_environment/cmake/alembic.cmake +++ b/build_files/build_environment/cmake/alembic.cmake @@ -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() diff --git a/build_files/build_environment/cmake/aom.cmake b/build_files/build_environment/cmake/aom.cmake index 8f65c7afd4b..14ffa90fd58 100644 --- a/build_files/build_environment/cmake/aom.cmake +++ b/build_files/build_environment/cmake/aom.cmake @@ -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() diff --git a/build_files/build_environment/cmake/blosc.cmake b/build_files/build_environment/cmake/blosc.cmake index d84f652e698..8d699349233 100644 --- a/build_files/build_environment/cmake/blosc.cmake +++ b/build_files/build_environment/cmake/blosc.cmake @@ -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() diff --git a/build_files/build_environment/cmake/boost.cmake b/build_files/build_environment/cmake/boost.cmake index a09775112c0..cebfec85fd2 100644 --- a/build_files/build_environment/cmake/boost.cmake +++ b/build_files/build_environment/cmake/boost.cmake @@ -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() diff --git a/build_files/build_environment/cmake/brotli.cmake b/build_files/build_environment/cmake/brotli.cmake index 2258804f969..5cc7bc78005 100644 --- a/build_files/build_environment/cmake/brotli.cmake +++ b/build_files/build_environment/cmake/brotli.cmake @@ -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() diff --git a/build_files/build_environment/cmake/dpcpp.cmake b/build_files/build_environment/cmake/dpcpp.cmake index 2a24f96a115..f04b83c93ed 100644 --- a/build_files/build_environment/cmake/dpcpp.cmake +++ b/build_files/build_environment/cmake/dpcpp.cmake @@ -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() diff --git a/build_files/build_environment/cmake/embree.cmake b/build_files/build_environment/cmake/embree.cmake index 0c503173d05..e194fcf29de 100644 --- a/build_files/build_environment/cmake/embree.cmake +++ b/build_files/build_environment/cmake/embree.cmake @@ -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() diff --git a/build_files/build_environment/cmake/epoxy.cmake b/build_files/build_environment/cmake/epoxy.cmake index f11b07bd626..78c622f9f52 100644 --- a/build_files/build_environment/cmake/epoxy.cmake +++ b/build_files/build_environment/cmake/epoxy.cmake @@ -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() diff --git a/build_files/build_environment/cmake/ffmpeg.cmake b/build_files/build_environment/cmake/ffmpeg.cmake index dacda9fd3d1..c1e2b695b7a 100644 --- a/build_files/build_environment/cmake/ffmpeg.cmake +++ b/build_files/build_environment/cmake/ffmpeg.cmake @@ -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() diff --git a/build_files/build_environment/cmake/fftw.cmake b/build_files/build_environment/cmake/fftw.cmake index 0f2c621862e..4b58aa62215 100644 --- a/build_files/build_environment/cmake/fftw.cmake +++ b/build_files/build_environment/cmake/fftw.cmake @@ -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() diff --git a/build_files/build_environment/cmake/flac.cmake b/build_files/build_environment/cmake/flac.cmake index fb50a6cd119..c8e5386cabf 100644 --- a/build_files/build_environment/cmake/flac.cmake +++ b/build_files/build_environment/cmake/flac.cmake @@ -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 diff --git a/build_files/build_environment/cmake/freetype.cmake b/build_files/build_environment/cmake/freetype.cmake index 1dcc3c11631..d2524936fe0 100644 --- a/build_files/build_environment/cmake/freetype.cmake +++ b/build_files/build_environment/cmake/freetype.cmake @@ -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() diff --git a/build_files/build_environment/cmake/fribidi.cmake b/build_files/build_environment/cmake/fribidi.cmake index 9f1790c6d39..1e5da1aa5e6 100644 --- a/build_files/build_environment/cmake/fribidi.cmake +++ b/build_files/build_environment/cmake/fribidi.cmake @@ -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() diff --git a/build_files/build_environment/cmake/gmp.cmake b/build_files/build_environment/cmake/gmp.cmake index 0fb38a4e214..e03c50d8140 100644 --- a/build_files/build_environment/cmake/gmp.cmake +++ b/build_files/build_environment/cmake/gmp.cmake @@ -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() diff --git a/build_files/build_environment/cmake/harfbuzz.cmake b/build_files/build_environment/cmake/harfbuzz.cmake index ff96b0481ec..9e6998aa662 100644 --- a/build_files/build_environment/cmake/harfbuzz.cmake +++ b/build_files/build_environment/cmake/harfbuzz.cmake @@ -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() diff --git a/build_files/build_environment/cmake/haru.cmake b/build_files/build_environment/cmake/haru.cmake index 3da39d3da63..77a55a02cb7 100644 --- a/build_files/build_environment/cmake/haru.cmake +++ b/build_files/build_environment/cmake/haru.cmake @@ -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() diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake index 953b75b333a..d5fcbff1a67 100644 --- a/build_files/build_environment/cmake/harvest.cmake +++ b/build_files/build_environment/cmake/harvest.cmake @@ -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,8 +78,8 @@ 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 @@ -92,8 +92,8 @@ else() 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 @@ -104,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 @@ -121,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/lib/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(materialx/lib/cmake/MaterialX materialx/lib/cmake/MaterialX "*.cmake") - harvest_rpath_lib(materialx/lib materialx/lib "*${SHAREDLIBEXT}*") - harvest(materialx/libraries materialx/libraries "*") - 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() diff --git a/build_files/build_environment/cmake/igc.cmake b/build_files/build_environment/cmake/igc.cmake index 86bdabca251..9b540caf27f 100644 --- a/build_files/build_environment/cmake/igc.cmake +++ b/build_files/build_environment/cmake/igc.cmake @@ -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 "*") diff --git a/build_files/build_environment/cmake/imath.cmake b/build_files/build_environment/cmake/imath.cmake index 4eff87a70a8..a2e922507d0 100644 --- a/build_files/build_environment/cmake/imath.cmake +++ b/build_files/build_environment/cmake/imath.cmake @@ -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() diff --git a/build_files/build_environment/cmake/jemalloc.cmake b/build_files/build_environment/cmake/jemalloc.cmake index 25a3fade89a..a5213238548 100644 --- a/build_files/build_environment/cmake/jemalloc.cmake +++ b/build_files/build_environment/cmake/jemalloc.cmake @@ -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") diff --git a/build_files/build_environment/cmake/jpeg.cmake b/build_files/build_environment/cmake/jpeg.cmake index 0ab96fcf8e8..f816f38c566 100644 --- a/build_files/build_environment/cmake/jpeg.cmake +++ b/build_files/build_environment/cmake/jpeg.cmake @@ -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() diff --git a/build_files/build_environment/cmake/lame.cmake b/build_files/build_environment/cmake/lame.cmake index 3b23640d4f5..7d30f40f365 100644 --- a/build_files/build_environment/cmake/lame.cmake +++ b/build_files/build_environment/cmake/lame.cmake @@ -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() diff --git a/build_files/build_environment/cmake/level-zero.cmake b/build_files/build_environment/cmake/level-zero.cmake index 1777a761688..829e0dc4b22 100644 --- a/build_files/build_environment/cmake/level-zero.cmake +++ b/build_files/build_environment/cmake/level-zero.cmake @@ -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() diff --git a/build_files/build_environment/cmake/llvm.cmake b/build_files/build_environment/cmake/llvm.cmake index 68214a5208e..2b8dd8c9479 100644 --- a/build_files/build_environment/cmake/llvm.cmake +++ b/build_files/build_environment/cmake/llvm.cmake @@ -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. diff --git a/build_files/build_environment/cmake/materialx.cmake b/build_files/build_environment/cmake/materialx.cmake index 14f153a2bb8..4e064b81fd6 100644 --- a/build_files/build_environment/cmake/materialx.cmake +++ b/build_files/build_environment/cmake/materialx.cmake @@ -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( diff --git a/build_files/build_environment/cmake/mesa.cmake b/build_files/build_environment/cmake/mesa.cmake index 2473867af69..096e0671218 100644 --- a/build_files/build_environment/cmake/mesa.cmake +++ b/build_files/build_environment/cmake/mesa.cmake @@ -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}*") diff --git a/build_files/build_environment/cmake/ocloc.cmake b/build_files/build_environment/cmake/ocloc.cmake index 231fddf9382..a2a97cfcba3 100644 --- a/build_files/build_environment/cmake/ocloc.cmake +++ b/build_files/build_environment/cmake/ocloc.cmake @@ -33,3 +33,5 @@ add_dependencies( external_igc external_gmmlib ) + +harvest(external_ocloc ocloc dpcpp/lib/ocloc "*") diff --git a/build_files/build_environment/cmake/ogg.cmake b/build_files/build_environment/cmake/ogg.cmake index 6896f5a2cd2..4a28027929b 100644 --- a/build_files/build_environment/cmake/ogg.cmake +++ b/build_files/build_environment/cmake/ogg.cmake @@ -14,3 +14,7 @@ ExternalProject_Add(external_ogg INSTALL_DIR ${LIBDIR}/ogg ) + +if(NOT WIN32) + harvest(external_ogg ogg/lib ffmpeg/lib "*.a") +endif() diff --git a/build_files/build_environment/cmake/openal.cmake b/build_files/build_environment/cmake/openal.cmake index 9ed73466f30..430f8927d43 100644 --- a/build_files/build_environment/cmake/openal.cmake +++ b/build_files/build_environment/cmake/openal.cmake @@ -59,6 +59,10 @@ if(BUILD_MODE STREQUAL Release) DEPENDEES install ) + else() + harvest(external_openal openal/include openal/include "*.h") + if(UNIX AND NOT APPLE) + harvest(external_openal openal/lib openal/lib "*.a") + endif() endif() - endif() diff --git a/build_files/build_environment/cmake/opencollada.cmake b/build_files/build_environment/cmake/opencollada.cmake index a9e8fadb5d1..50cb7ba09f1 100644 --- a/build_files/build_environment/cmake/opencollada.cmake +++ b/build_files/build_environment/cmake/opencollada.cmake @@ -77,4 +77,7 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_opencollada opencollada/include/opencollada opencollada/include "*.h") + harvest(external_opencollada opencollada/lib/opencollada opencollada/lib "*.a") endif() diff --git a/build_files/build_environment/cmake/opencolorio.cmake b/build_files/build_environment/cmake/opencolorio.cmake index 8df5b961cea..bfee9e80542 100644 --- a/build_files/build_environment/cmake/opencolorio.cmake +++ b/build_files/build_environment/cmake/opencolorio.cmake @@ -134,4 +134,13 @@ else() DEPENDEES install ) + + harvest(external_opencolorio opencolorio/include opencolorio/include "*.h") + harvest_rpath_lib(external_opencolorio opencolorio/lib opencolorio/lib "*${SHAREDLIBEXT}*") + harvest_rpath_python( + external_opencolorio + opencolorio/lib/python${PYTHON_SHORT_VERSION} + python/lib/python${PYTHON_SHORT_VERSION} + "*" + ) endif() diff --git a/build_files/build_environment/cmake/openexr.cmake b/build_files/build_environment/cmake/openexr.cmake index df076875006..4c87b026afa 100644 --- a/build_files/build_environment/cmake/openexr.cmake +++ b/build_files/build_environment/cmake/openexr.cmake @@ -65,6 +65,9 @@ if(WIN32) DEPENDEES install ) +else() + harvest(external_openexr openexr/include openexr/include "*.h") + harvest_rpath_lib(external_openexr openexr/lib openexr/lib "*${SHAREDLIBEXT}*") endif() add_dependencies( diff --git a/build_files/build_environment/cmake/openimagedenoise.cmake b/build_files/build_environment/cmake/openimagedenoise.cmake index f4e6171ac33..7fde62c5cde 100644 --- a/build_files/build_environment/cmake/openimagedenoise.cmake +++ b/build_files/build_environment/cmake/openimagedenoise.cmake @@ -114,7 +114,8 @@ if(NOT APPLE) ) endif() -if(BUILD_MODE STREQUAL Release AND WIN32) +if(WIN32) + if(BUILD_MODE STREQUAL Release) ExternalProject_Add_Step(external_openimagedenoise after_install COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openimagedenoise/bin @@ -128,4 +129,9 @@ if(BUILD_MODE STREQUAL Release AND WIN32) DEPENDEES install ) + endif() +else() + harvest(external_openimagedenoise openimagedenoise/include openimagedenoise/include "*") + harvest_rpath_lib(external_openimagedenoise openimagedenoise/lib openimagedenoise/lib "*${SHAREDLIBEXT}*") + harvest(external_openimagedenoise openimagedenoise/lib/cmake/OpenImageDenoise-${OIDN_VERSION} openimagedenoise/lib/cmake/OpenImageDenoise "*.cmake") endif() diff --git a/build_files/build_environment/cmake/openimageio.cmake b/build_files/build_environment/cmake/openimageio.cmake index 8dbd13ecb32..5abb6934e40 100644 --- a/build_files/build_environment/cmake/openimageio.cmake +++ b/build_files/build_environment/cmake/openimageio.cmake @@ -228,4 +228,15 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest_rpath_bin(external_openimageio openimageio/bin openimageio/bin "idiff") + harvest_rpath_bin(external_openimageio openimageio/bin openimageio/bin "maketx") + harvest_rpath_bin(external_openimageio openimageio/bin openimageio/bin "oiiotool") + harvest(external_openimageio openimageio/include openimageio/include "*") + harvest_rpath_lib(external_openimageio openimageio/lib openimageio/lib "*${SHAREDLIBEXT}*") + harvest_rpath_python(external_openimageio + openimageio/lib/python${PYTHON_SHORT_VERSION} + python/lib/python${PYTHON_SHORT_VERSION} + "*" + ) endif() diff --git a/build_files/build_environment/cmake/openjpeg.cmake b/build_files/build_environment/cmake/openjpeg.cmake index cc3af20d18f..7e391e87902 100644 --- a/build_files/build_environment/cmake/openjpeg.cmake +++ b/build_files/build_environment/cmake/openjpeg.cmake @@ -37,6 +37,9 @@ if(NOT WIN32) INSTALL_DIR ${LIBDIR}/openjpeg ) + + harvest(external_openjpeg openjpeg/include/openjpeg-${OPENJPEG_SHORT_VERSION} openjpeg/include "*.h") + harvest(external_openjpeg openjpeg/lib openjpeg/lib "*.a") else() set(OPENJPEG_EXTRA_ARGS ${DEFAULT_CMAKE_FLAGS}) ExternalProject_Add(external_openjpeg_msvc diff --git a/build_files/build_environment/cmake/openmp.cmake b/build_files/build_environment/cmake/openmp.cmake index bf3fd94ec0b..6834ca9dfbc 100644 --- a/build_files/build_environment/cmake/openmp.cmake +++ b/build_files/build_environment/cmake/openmp.cmake @@ -35,3 +35,8 @@ add_dependencies( external_openmp ll ) + +if(APPLE) + harvest(external_openmp openmp/lib openmp/lib "libomp.dylib") + harvest(external_openmp openmp/include openmp/include "*.h") +endif() diff --git a/build_files/build_environment/cmake/openpgl.cmake b/build_files/build_environment/cmake/openpgl.cmake index f00d9835c54..26f12ad0cc0 100644 --- a/build_files/build_environment/cmake/openpgl.cmake +++ b/build_files/build_environment/cmake/openpgl.cmake @@ -59,4 +59,8 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_openpgl openpgl/include openpgl/include "*.h") + harvest(external_openpgl openpgl/lib openpgl/lib "*.a") + harvest(external_openpgl openpgl/lib/cmake/openpgl-${OPENPGL_SHORT_VERSION} openpgl/lib/cmake/openpgl "*.cmake") endif() diff --git a/build_files/build_environment/cmake/opensubdiv.cmake b/build_files/build_environment/cmake/opensubdiv.cmake index c3e6613abff..e4e743a776c 100644 --- a/build_files/build_environment/cmake/opensubdiv.cmake +++ b/build_files/build_environment/cmake/opensubdiv.cmake @@ -65,6 +65,9 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_opensubdiv opensubdiv/include opensubdiv/include "*.h") + harvest_rpath_lib(external_opensubdiv opensubdiv/lib opensubdiv/lib "*${SHAREDLIBEXT}*") endif() add_dependencies( diff --git a/build_files/build_environment/cmake/openvdb.cmake b/build_files/build_environment/cmake/openvdb.cmake index cebdc46681d..7fa26ae7228 100644 --- a/build_files/build_environment/cmake/openvdb.cmake +++ b/build_files/build_environment/cmake/openvdb.cmake @@ -125,4 +125,14 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(openvdb openvdb/include/openvdb openvdb/include/openvdb "*.h") + harvest(openvdb openvdb/include/nanovdb openvdb/include/nanovdb "*.h") + harvest_rpath_lib(openvdb openvdb/lib openvdb/lib "*${SHAREDLIBEXT}*") + harvest_rpath_python( + openvdb + openvdb/lib/python${PYTHON_SHORT_VERSION} + python/lib/python${PYTHON_SHORT_VERSION} + "*pyopenvdb*" + ) endif() diff --git a/build_files/build_environment/cmake/opus.cmake b/build_files/build_environment/cmake/opus.cmake index b9b948df60f..cf2cb85b9b8 100644 --- a/build_files/build_environment/cmake/opus.cmake +++ b/build_files/build_environment/cmake/opus.cmake @@ -36,6 +36,8 @@ if(NOT WIN32) INSTALL_DIR ${LIBDIR}/opus ) + + harvest(external_opus opus/lib ffmpeg/lib "*.a") else() ExternalProject_Add(external_opus URL file://${PACKAGE_DIR}/${OPUS_FILE} diff --git a/build_files/build_environment/cmake/osl.cmake b/build_files/build_environment/cmake/osl.cmake index 5db83a02a52..4cf9a9901cc 100644 --- a/build_files/build_environment/cmake/osl.cmake +++ b/build_files/build_environment/cmake/osl.cmake @@ -140,4 +140,9 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest_rpath_bin(external_osl osl/bin osl/bin "oslc") + harvest(external_osl osl/include osl/include "*.h") + harvest_rpath_lib(external_osl osl/lib osl/lib "*${SHAREDLIBEXT}*") + harvest(external_osl osl/share/OSL/shaders osl/share/OSL/shaders "*.h") endif() diff --git a/build_files/build_environment/cmake/png.cmake b/build_files/build_environment/cmake/png.cmake index 9cc3cc55f83..09568d139fe 100644 --- a/build_files/build_environment/cmake/png.cmake +++ b/build_files/build_environment/cmake/png.cmake @@ -36,25 +36,30 @@ add_dependencies( external_zlib ) -if(WIN32 AND BUILD_MODE STREQUAL Release) - ExternalProject_Add_Step(external_png after_install - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${LIBDIR}/png/include/ - ${HARVEST_TARGET}/png/include/ - COMMAND ${CMAKE_COMMAND} -E copy - ${LIBDIR}/png/lib/libpng16_static${LIBEXT} - ${HARVEST_TARGET}/png/lib/libpng${LIBEXT} +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(external_png after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${LIBDIR}/png/include/ + ${HARVEST_TARGET}/png/include/ + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBDIR}/png/lib/libpng16_static${LIBEXT} + ${HARVEST_TARGET}/png/lib/libpng${LIBEXT} - DEPENDEES install - ) -endif() - -if(WIN32 AND BUILD_MODE STREQUAL Debug) - ExternalProject_Add_Step(external_png after_install - COMMAND ${CMAKE_COMMAND} -E copy - ${LIBDIR}/png/lib/libpng16_staticd${LIBEXT} - ${LIBDIR}/png/lib/libpng16${LIBEXT} - - DEPENDEES install - ) + DEPENDEES install + ) + endif() + + if(BUILD_MODE STREQUAL Debug) + ExternalProject_Add_Step(external_png after_install + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBDIR}/png/lib/libpng16_staticd${LIBEXT} + ${LIBDIR}/png/lib/libpng16${LIBEXT} + + DEPENDEES install + ) + endif() +else() + harvest(external_png png/include png/include "*.h") + harvest(external_png png/lib png/lib "*.a") endif() diff --git a/build_files/build_environment/cmake/potrace.cmake b/build_files/build_environment/cmake/potrace.cmake index f23356a34fb..2533466c534 100644 --- a/build_files/build_environment/cmake/potrace.cmake +++ b/build_files/build_environment/cmake/potrace.cmake @@ -31,5 +31,8 @@ if((WIN32 AND BUILD_MODE STREQUAL Release) OR UNIX) DEPENDEES install ) + else() + harvest(external_potrace potrace/include potrace/include "*.h") + harvest(external_potrace potrace/lib potrace/lib "*.a") endif() endif() diff --git a/build_files/build_environment/cmake/pugixml.cmake b/build_files/build_environment/cmake/pugixml.cmake index 6fdc8cf875f..93ad32e284d 100644 --- a/build_files/build_environment/cmake/pugixml.cmake +++ b/build_files/build_environment/cmake/pugixml.cmake @@ -37,4 +37,7 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_pugixml pugixml/include pugixml/include "*.hpp") + harvest(external_pugixml pugixml/lib pugixml/lib "*.a") endif() diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake index 786cb4c4dd4..1f95610917f 100644 --- a/build_files/build_environment/cmake/python.cmake +++ b/build_files/build_environment/cmake/python.cmake @@ -222,4 +222,8 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_python python/bin python/bin "python${PYTHON_SHORT_VERSION}") + harvest(external_python python/include python/include "*h") + harvest(external_python python/lib python/lib "*") endif() diff --git a/build_files/build_environment/cmake/sdl.cmake b/build_files/build_environment/cmake/sdl.cmake index 7c55ce0ddd2..dd9008611bc 100644 --- a/build_files/build_environment/cmake/sdl.cmake +++ b/build_files/build_environment/cmake/sdl.cmake @@ -47,18 +47,23 @@ ExternalProject_Add(external_sdl INSTALL_DIR ${LIBDIR}/sdl ) -if(BUILD_MODE STREQUAL Release AND WIN32) - ExternalProject_Add_Step(external_sdl after_install - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${LIBDIR}/sdl/include/sdl2 - ${HARVEST_TARGET}/sdl/include - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${LIBDIR}/sdl/lib - ${HARVEST_TARGET}/sdl/lib - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${LIBDIR}/sdl/bin - ${HARVEST_TARGET}/sdl/lib +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(external_sdl after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${LIBDIR}/sdl/include/sdl2 + ${HARVEST_TARGET}/sdl/include + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${LIBDIR}/sdl/lib + ${HARVEST_TARGET}/sdl/lib + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${LIBDIR}/sdl/bin + ${HARVEST_TARGET}/sdl/lib - DEPENDEES install - ) + DEPENDEES install + ) + endif() +else() + harvest(external_sdl sdl/include/SDL2 sdl/include "*.h") + harvest(external_sdl sdl/lib sdl/lib "libSDL2.a") endif() diff --git a/build_files/build_environment/cmake/shaderc.cmake b/build_files/build_environment/cmake/shaderc.cmake index e03d0903217..8112565391f 100644 --- a/build_files/build_environment/cmake/shaderc.cmake +++ b/build_files/build_environment/cmake/shaderc.cmake @@ -62,4 +62,6 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_shaderc shaderc shaderc "*") endif() diff --git a/build_files/build_environment/cmake/sndfile.cmake b/build_files/build_environment/cmake/sndfile.cmake index fd3ed945e82..c4d3bce8769 100644 --- a/build_files/build_environment/cmake/sndfile.cmake +++ b/build_files/build_environment/cmake/sndfile.cmake @@ -50,20 +50,25 @@ ExternalProject_Add(external_sndfile INSTALL_DIR ${LIBDIR}/sndfile ) -if(BUILD_MODE STREQUAL Release AND WIN32) - ExternalProject_Add_Step(external_sndfile after_install - COMMAND ${CMAKE_COMMAND} -E copy - ${LIBDIR}/sndfile/bin/sndfile.dll - ${HARVEST_TARGET}/sndfile/lib/sndfile.dll - COMMAND ${CMAKE_COMMAND} -E copy - ${LIBDIR}/sndfile/lib/sndfile.lib - ${HARVEST_TARGET}/sndfile/lib/sndfile.lib - COMMAND ${CMAKE_COMMAND} -E copy - ${LIBDIR}/sndfile/include/sndfile.h - ${HARVEST_TARGET}/sndfile/include/sndfile.h +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(external_sndfile after_install + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBDIR}/sndfile/bin/sndfile.dll + ${HARVEST_TARGET}/sndfile/lib/sndfile.dll + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBDIR}/sndfile/lib/sndfile.lib + ${HARVEST_TARGET}/sndfile/lib/sndfile.lib + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBDIR}/sndfile/include/sndfile.h + ${HARVEST_TARGET}/sndfile/include/sndfile.h - DEPENDEES install - ) + DEPENDEES install + ) + endif() +else() + harvest(external_sndfile sndfile/include sndfile/include "*.h") + harvest(external_sndfile sndfile/lib sndfile/lib "*.a") endif() add_dependencies( diff --git a/build_files/build_environment/cmake/spnav.cmake b/build_files/build_environment/cmake/spnav.cmake index 6535e0d9927..5375312540c 100644 --- a/build_files/build_environment/cmake/spnav.cmake +++ b/build_files/build_environment/cmake/spnav.cmake @@ -30,3 +30,8 @@ ExternalProject_Add(external_spnav INSTALL_DIR ${LIBDIR}/spnav ) + +if(NOT WIN32) + harvest(external_spnav spnav/include spnav/include "*.h") + harvest(external_spnav spnav/lib spnav/lib "*.a") +endif() diff --git a/build_files/build_environment/cmake/sse2neon.cmake b/build_files/build_environment/cmake/sse2neon.cmake index a75c5ac1ded..3ac2b0ce8f0 100644 --- a/build_files/build_environment/cmake/sse2neon.cmake +++ b/build_files/build_environment/cmake/sse2neon.cmake @@ -13,9 +13,13 @@ ExternalProject_Add(external_sse2neon INSTALL_DIR ${LIBDIR}/sse2neon ) -if(BUILD_MODE STREQUAL Release AND WIN32) - ExternalProject_Add_Step(external_sse2neon after_install - COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/sse2neon ${HARVEST_TARGET}/sse2neon - DEPENDEES install - ) +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(external_sse2neon after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/sse2neon ${HARVEST_TARGET}/sse2neon + DEPENDEES install + ) + endif() +else() + harvest(external_sse2neon sse2neon sse2neon "*.h") endif() diff --git a/build_files/build_environment/cmake/tbb.cmake b/build_files/build_environment/cmake/tbb.cmake index 2901d8bd4f2..660120f40f3 100644 --- a/build_files/build_environment/cmake/tbb.cmake +++ b/build_files/build_environment/cmake/tbb.cmake @@ -114,4 +114,7 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_tbb tbb/include tbb/include "*.h") + harvest_rpath_lib(external_tbb tbb/lib tbb/lib "libtbb${SHAREDLIBEXT}*") endif() diff --git a/build_files/build_environment/cmake/theora.cmake b/build_files/build_environment/cmake/theora.cmake index d6b0e6a1bcf..f6941bf1a97 100644 --- a/build_files/build_environment/cmake/theora.cmake +++ b/build_files/build_environment/cmake/theora.cmake @@ -40,6 +40,8 @@ if(NOT WIN32) INSTALL_DIR ${LIBDIR}/theora ) + + harvest(external_theora theora/lib ffmpeg/lib "*.a") else() # We are kind of naughty here and steal vorbis' `FindOgg.cmake`, # but given it's a dependency anyway. diff --git a/build_files/build_environment/cmake/tiff.cmake b/build_files/build_environment/cmake/tiff.cmake index ef3f544ffc7..138447cd30a 100644 --- a/build_files/build_environment/cmake/tiff.cmake +++ b/build_files/build_environment/cmake/tiff.cmake @@ -13,6 +13,7 @@ set(TIFF_EXTRA_ARGS -Djbig=OFF -Dzstd=OFF -Dwebp=OFF + -Dlerc=OFF -Dtiff-tests=OFF -Dsphinx=OFF ) @@ -49,4 +50,7 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_tiff tiff/include tiff/include "*.h") + harvest(external_tiff tiff/lib tiff/lib "*.a") endif() diff --git a/build_files/build_environment/cmake/usd.cmake b/build_files/build_environment/cmake/usd.cmake index 9fcb582a5b3..cd6d732b4d3 100644 --- a/build_files/build_environment/cmake/usd.cmake +++ b/build_files/build_environment/cmake/usd.cmake @@ -181,4 +181,16 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_usd usd/include usd/include "*.h") + harvest(external_usd usd/include usd/include "*.hpp") + harvest_rpath_lib(external_usd usd/lib usd/lib "libusd_ms${SHAREDLIBEXT}") + harvest(external_usd usd/lib/usd usd/lib/usd "*") + harvest_rpath_python( + external_usd + usd/lib/python/pxr + python/lib/python${PYTHON_SHORT_VERSION}/site-packages/pxr + "*" + ) + harvest(external_usd usd/plugin usd/plugin "*") endif() diff --git a/build_files/build_environment/cmake/vorbis.cmake b/build_files/build_environment/cmake/vorbis.cmake index e141c4d0908..bd77f1c62dd 100644 --- a/build_files/build_environment/cmake/vorbis.cmake +++ b/build_files/build_environment/cmake/vorbis.cmake @@ -20,3 +20,7 @@ add_dependencies( external_vorbis external_ogg ) + +if(NOT WIN32) + harvest(external_vorbis vorbis/lib ffmpeg/lib "*.a") +endif() diff --git a/build_files/build_environment/cmake/vpx.cmake b/build_files/build_environment/cmake/vpx.cmake index 9ed28e6fad3..4c09f361cce 100644 --- a/build_files/build_environment/cmake/vpx.cmake +++ b/build_files/build_environment/cmake/vpx.cmake @@ -109,6 +109,8 @@ ExternalProject_Add(external_vpx INSTALL_DIR ${LIBDIR}/vpx ) -if(MSVC) +if(WIN32) set_target_properties(external_vpx PROPERTIES FOLDER Mingw) +else() + harvest(external_vpx vpx/lib ffmpeg/lib "*.a") endif() diff --git a/build_files/build_environment/cmake/vulkan.cmake b/build_files/build_environment/cmake/vulkan.cmake index f882cbc6417..595164dddd7 100644 --- a/build_files/build_environment/cmake/vulkan.cmake +++ b/build_files/build_environment/cmake/vulkan.cmake @@ -61,7 +61,9 @@ if(UNIX AND NOT APPLE) external_vulkan_loader external_wayland ) -elseif(WIN32) +endif() + +if(WIN32) if(BUILD_MODE STREQUAL Release) ExternalProject_Add_Step(external_vulkan_loader after_install COMMAND ${CMAKE_COMMAND} -E copy_directory @@ -73,4 +75,10 @@ elseif(WIN32) DEPENDEES install ) endif() +else() + harvest(external_vulkan_loader vulkan_headers vulkan "*") + harvest_rpath_lib(external_vulkan_loader vulkan_loader/lib vulkan/lib "*${SHAREDLIBEXT}*") + if(APPLE) + harvest(external_vulkan_loader vulkan_loader/loader vulkan/loader "*") + endif() endif() diff --git a/build_files/build_environment/cmake/wayland.cmake b/build_files/build_environment/cmake/wayland.cmake index bbf1f7e5801..d2161b4ecac 100644 --- a/build_files/build_environment/cmake/wayland.cmake +++ b/build_files/build_environment/cmake/wayland.cmake @@ -40,3 +40,8 @@ add_dependencies( # Needed for `MESON`. external_python_site_packages ) + +harvest(external_wayland wayland/bin wayland/bin "wayland-scanner") +harvest(external_wayland wayland/include wayland/include "*.h") +# Only needed for running the WESTON compositor. +harvest(external_wayland wayland/lib64 wayland/lib64 "*") diff --git a/build_files/build_environment/cmake/wayland_libdecor.cmake b/build_files/build_environment/cmake/wayland_libdecor.cmake index 0df79ebfb9d..8e1558cf29c 100644 --- a/build_files/build_environment/cmake/wayland_libdecor.cmake +++ b/build_files/build_environment/cmake/wayland_libdecor.cmake @@ -19,3 +19,5 @@ ExternalProject_Add(external_wayland_libdecor INSTALL_DIR ${LIBDIR}/wayland_libdecor/include/libdecor-0 ) + +harvest(external_wayland_libdecor wayland_libdecor/include wayland_libdecor/include "*.h") diff --git a/build_files/build_environment/cmake/wayland_protocols.cmake b/build_files/build_environment/cmake/wayland_protocols.cmake index 29e37975384..0846953be0a 100644 --- a/build_files/build_environment/cmake/wayland_protocols.cmake +++ b/build_files/build_environment/cmake/wayland_protocols.cmake @@ -28,3 +28,10 @@ add_dependencies( # Needed for `MESON`. external_python_site_packages ) + +harvest( + external_wayland_protocols + wayland-protocols/share/wayland-protocols + wayland-protocols/share/wayland-protocols/ + "*.xml" +) diff --git a/build_files/build_environment/cmake/wayland_weston.cmake b/build_files/build_environment/cmake/wayland_weston.cmake index 2d61b28d081..54c99ba816a 100644 --- a/build_files/build_environment/cmake/wayland_weston.cmake +++ b/build_files/build_environment/cmake/wayland_weston.cmake @@ -62,3 +62,5 @@ add_dependencies( # Needed for `MESON`. external_python_site_packages ) + +harvest(external_wayland_weston wayland_weston/ wayland_weston/ "*") diff --git a/build_files/build_environment/cmake/webp.cmake b/build_files/build_environment/cmake/webp.cmake index 9be9c4fc1a3..1ee5999b422 100644 --- a/build_files/build_environment/cmake/webp.cmake +++ b/build_files/build_environment/cmake/webp.cmake @@ -48,4 +48,7 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_webp webp/lib webp/lib "*.a") + harvest(external_webp webp/include webp/include "*.h") endif() diff --git a/build_files/build_environment/cmake/x264.cmake b/build_files/build_environment/cmake/x264.cmake index be861efcc9a..718ef187950 100644 --- a/build_files/build_environment/cmake/x264.cmake +++ b/build_files/build_environment/cmake/x264.cmake @@ -45,13 +45,13 @@ ExternalProject_Add(external_x264 INSTALL_DIR ${LIBDIR}/x264 ) -if(MSVC) +if(WIN32) set_target_properties(external_x264 PROPERTIES FOLDER Mingw) -endif() - -if(UNIX) +else() add_dependencies( external_x264 external_nasm ) + + harvest(external_x264 x264/lib ffmpeg/lib "*.a") endif() diff --git a/build_files/build_environment/cmake/x265.cmake b/build_files/build_environment/cmake/x265.cmake index d6f4ecf4a47..3ad5aa7d561 100644 --- a/build_files/build_environment/cmake/x265.cmake +++ b/build_files/build_environment/cmake/x265.cmake @@ -174,6 +174,8 @@ execute_process( DEPENDEES install ) endif() + + harvest(external_x265 x265/lib ffmpeg/lib "*.a") endif() unset(LIB_PREFIX) diff --git a/build_files/build_environment/cmake/xml2.cmake b/build_files/build_environment/cmake/xml2.cmake index a9bcb6ccb39..1de53dc3256 100644 --- a/build_files/build_environment/cmake/xml2.cmake +++ b/build_files/build_environment/cmake/xml2.cmake @@ -37,3 +37,12 @@ if(WIN32 AND BUILD_MODE STREQUAL Release) DEPENDEES install ) endif() + +if(UNIX) + if(APPLE) + harvest(external_xml2 xml2/include xml2/include "*.h") + harvest(external_xml2 xml2/lib xml2/lib "*.a") + else() + harvest(external_xml2 xml2/lib opencollada/lib "*.a") + endif() +endif() diff --git a/build_files/build_environment/cmake/xr_openxr.cmake b/build_files/build_environment/cmake/xr_openxr.cmake index eb091506e70..b2ba068fa8a 100644 --- a/build_files/build_environment/cmake/xr_openxr.cmake +++ b/build_files/build_environment/cmake/xr_openxr.cmake @@ -56,4 +56,7 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_xr_openxr_sdk xr_openxr_sdk/include/openxr xr_openxr_sdk/include/openxr "*.h") + harvest(external_xr_openxr_sdk xr_openxr_sdk/lib xr_openxr_sdk/lib "*.a") endif() diff --git a/build_files/build_environment/cmake/zlib.cmake b/build_files/build_environment/cmake/zlib.cmake index eca964d7785..410766c89a6 100644 --- a/build_files/build_environment/cmake/zlib.cmake +++ b/build_files/build_environment/cmake/zlib.cmake @@ -62,3 +62,8 @@ else() DEPENDEES install ) endif() + +if(UNIX AND NOT APPLE) + harvest(external_zlib zlib/include zlib/include "*.h") + harvest(external_zlib zlib/lib zlib/lib "*.a") +endif() diff --git a/build_files/build_environment/cmake/zstd.cmake b/build_files/build_environment/cmake/zstd.cmake index 842a4a87443..39aa549b1a7 100644 --- a/build_files/build_environment/cmake/zstd.cmake +++ b/build_files/build_environment/cmake/zstd.cmake @@ -44,4 +44,7 @@ if(WIN32) DEPENDEES install ) endif() +else() + harvest(external_zstd zstd/include zstd/include "*.h") + harvest(external_zstd zstd/lib zstd/lib "*.a") endif()